Version Description
- Fixed: Bug with Elementor plugin. If you enable options "remove query strings for static resources", elementor plugin stopped its work
- Fixed: [Update manager component]: When you disable WordPress core updates, you still see an update notification for version 5.x.x
- Fixed: [Update manager component]: Clearfy compatibility error. Namely, when the component was activated, the cron tasks for checking for updates were not runned.
- Fixed: [Update manager component]: PHP Notice "Undefined property: stdClass::$plugin"
- Fixed: [Assets manager component]: Php error "Cannot use string offset as an array"
- Fixed: [Assets manager component]: Broken interface and some javascript errors
- Fixed: [Assets manager component]: PHP Notice "Trying to get property 'taxonomy' of non-object"
- Fixed: When you enable the remove meta generator option, meta tag viewport can also be removed.
- Fixed: After enabling the Google Fonts asynchronous option, you could see php notice "Notice: Trying to get property of non-object"
- Fixed: Disabling revisions in Wordpress 5.0 does not work (Gutenberg).
- Fixed: Compatible with Robin Image Optimizer 1.3.6
Download this release
Release Info
Developer | alexkovalevv |
Plugin | Clearfy – WordPress optimization plugin and disable ultimate tweaker |
Version | 1.5.3 |
Comparing to | |
See all releases |
Code changes from version 1.5.0 to 1.5.3
- admin/assets/css/base-statistic.css +405 -405
- admin/assets/css/components.css +107 -107
- admin/assets/css/general.css +16 -0
- admin/assets/css/general.css.map +1 -0
- admin/assets/css/gutenberg-autosave-control.css +19 -0
- admin/assets/css/gutenberg-autosave-control.css.map +1 -0
- admin/assets/css/gutenberg-autosave-control.less +20 -0
- admin/assets/css/install-addons.css +31 -31
- admin/assets/gutenberg/build/index.build.js +100 -0
- admin/assets/gutenberg/build/index.php +2 -0
- admin/assets/gutenberg/index.php +2 -0
- admin/boot.php +10 -4
- admin/includes/classes/class.upgrader.php +43 -110
- admin/pages/advanced.php +0 -198
- admin/pages/clearfy-settings.php +75 -71
- admin/pages/components.php +386 -400
- admin/pages/defence.php +1 -52
- admin/pages/performance.php +470 -264
- assets/css/admin-bar.css +47 -47
- clearfy.php +14 -7
- components/assets-manager/assets/css/assets-manager.css +19 -3
- components/assets-manager/assets/css/assets-manager.css.map +1 -0
- components/assets-manager/assets/css/assets-manager.less +56 -3
- components/assets-manager/assets/css/reset.css +251 -251
- components/assets-manager/assets/js/assets-manager.js +3 -4
- components/assets-manager/gonzales.php +93 -85
- components/assets-manager/includes/class.configurate-assets.php +334 -327
- components/assets-manager/languages/gonzales-es_ES.mo +0 -0
- components/assets-manager/languages/gonzales-es_ES.po +466 -0
- components/assets-manager/languages/gonzales-ru_RU.po +574 -574
- components/comments-plus/comments-plus.php +68 -61
- components/comments-plus/languages/comments-plus-es_ES.mo +0 -0
- components/comments-plus/languages/comments-plus-es_ES.po +369 -0
- components/comments-plus/languages/comments-plus-ru_RU.po +427 -427
- components/cyrlitera/cyrlitera.php +83 -61
- components/cyrlitera/includes/class.helpers.php +598 -571
- components/cyrlitera/includes/classes/class.configurate-cyrlitera.php +11 -10
- components/cyrlitera/languages/cyrlitera-es_ES.mo +0 -0
- components/cyrlitera/languages/cyrlitera-es_ES.po +206 -0
- components/cyrlitera/languages/cyrlitera-ru_RU.mo +0 -0
- components/cyrlitera/languages/cyrlitera-ru_RU.po +618 -618
- components/disable-admin-notices/disable-admin-notices.php +81 -60
- components/disable-admin-notices/includes/classes/class.configurate-notices.php +8 -2
- components/disable-admin-notices/languages/disable-admin-notices-es_ES.mo +0 -0
- components/disable-admin-notices/languages/disable-admin-notices-es_ES.po +182 -0
- components/ga-cache/admin/activation.php +37 -49
- components/ga-cache/admin/boot.php +235 -189
- components/ga-cache/admin/options.php +127 -137
- components/ga-cache/cache/local-ga.js +74 -58
- components/ga-cache/includes/classes/class.configurate-ga.php +150 -119
- components/ga-cache/languages/simple-google-analytics-es_ES.mo +0 -0
- components/ga-cache/languages/simple-google-analytics-es_ES.po +234 -0
- components/ga-cache/languages/simple-google-analytics-ru_RU.po +1 -1
- components/ga-cache/simple_google_analytics.php +87 -66
- components/ga-cache/updates/030002.php +30 -0
- components/ga-cache/updates/index.php +2 -0
- components/html-minify/html-minify.php +116 -95
- components/html-minify/languages/html-minify-es_ES.mo +0 -0
- components/html-minify/languages/html-minify-es_ES.po +83 -0
- components/minify-and-combine/admin/pages/settings.php +1 -1
- components/minify-and-combine/includes/classes/class.mac-base.php +2 -2
- components/minify-and-combine/includes/classes/class.mac-helper.php +2 -87
- components/minify-and-combine/includes/classes/class.mac-main.php +9 -0
- components/minify-and-combine/includes/classes/class.mac-styles.php +3 -26
- components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php +933 -862
- components/minify-and-combine/languages/minify-and-combine-es_ES.mo +0 -0
- components/minify-and-combine/languages/minify-and-combine-es_ES.po +273 -0
- components/minify-and-combine/minify-and-combine.php +113 -93
- components/updates-manager/admin/assets/css/general.css +155 -155
- components/updates-manager/admin/assets/css/themes.css +20 -20
- components/updates-manager/includes/classes/class.configurate-updates.php +324 -281
- components/updates-manager/languages/webcraftic-updates-manager-es_ES.mo +0 -0
- components/updates-manager/languages/webcraftic-updates-manager-es_ES.po +478 -0
- components/updates-manager/webcraftic-updates-manager.php +76 -56
- includes/class.plugin.php +1 -0
- includes/classes/class.configurate-advanced.php +127 -227
- includes/classes/class.configurate-google-performance.php +262 -276
- includes/classes/class.configurate-performance.php +282 -138
- includes/classes/class.configurate-privacy.php +72 -33
- includes/classes/class.configurate-seo.php +357 -373
- languages/clearfy-es_ES.mo +0 -0
- languages/clearfy-es_ES.po +2367 -0
- languages/clearfy-nl_BE.po +0 -72
admin/assets/css/base-statistic.css
CHANGED
@@ -1,405 +1,405 @@
|
|
1 |
-
/**
|
2 |
-
* Styles for the Widget to be displayed in the Clearfy plugin
|
3 |
-
|
4 |
-
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
5 |
-
* @copyright Webcraftic 13.06.2018
|
6 |
-
*/
|
7 |
-
#WBCR {
|
8 |
-
/* Number display */
|
9 |
-
/* Number and bars */
|
10 |
-
/* Doughnut */
|
11 |
-
/* Widget */
|
12 |
-
}
|
13 |
-
#WBCR .wio-clear {
|
14 |
-
clear: both;
|
15 |
-
}
|
16 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers {
|
17 |
-
margin-top: 30px;
|
18 |
-
background: none;
|
19 |
-
padding: 0;
|
20 |
-
}
|
21 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers h4 {
|
22 |
-
font-size: 15px;
|
23 |
-
font-weight: 700;
|
24 |
-
}
|
25 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button {
|
26 |
-
padding: 5px 10px;
|
27 |
-
border: 0;
|
28 |
-
font-size: 11px;
|
29 |
-
text-transform: uppercase !important;
|
30 |
-
font-weight: bold;
|
31 |
-
border-radius: 4px;
|
32 |
-
outline: none;
|
33 |
-
background: #f3f3f3;
|
34 |
-
color: #656565;
|
35 |
-
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
36 |
-
}
|
37 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button:active {
|
38 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
39 |
-
}
|
40 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-loading {
|
41 |
-
width: 56px;
|
42 |
-
font-size: 0;
|
43 |
-
background: #f3f3f3 url("../img/quick-start-loader.gif") center no-repeat;
|
44 |
-
}
|
45 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected {
|
46 |
-
background: #f3efe2;
|
47 |
-
color: #d8d8d8;
|
48 |
-
}
|
49 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected:active {
|
50 |
-
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
51 |
-
}
|
52 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table {
|
53 |
-
width: 100%;
|
54 |
-
box-sizing: border-box;
|
55 |
-
border-spacing: 3px;
|
56 |
-
background: #fff;
|
57 |
-
}
|
58 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th,
|
59 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table td {
|
60 |
-
padding: 16px 10px;
|
61 |
-
text-align: center;
|
62 |
-
}
|
63 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th {
|
64 |
-
background: #efefef;
|
65 |
-
color: #777777;
|
66 |
-
box-shadow: 0 1px 0 #d8d8d8;
|
67 |
-
}
|
68 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-check-proccess {
|
69 |
-
display: inline-block;
|
70 |
-
height: 10px;
|
71 |
-
width: 30px;
|
72 |
-
background: url("../img/quick-start-loader.gif") center no-repeat;
|
73 |
-
}
|
74 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-servers-list-item-selected {
|
75 |
-
background: #fffbed;
|
76 |
-
color: #cec5a8;
|
77 |
-
font-weight: 600;
|
78 |
-
}
|
79 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-success {
|
80 |
-
color: #8CC152;
|
81 |
-
}
|
82 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-error {
|
83 |
-
color: #fb5d49;
|
84 |
-
}
|
85 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-warning {
|
86 |
-
color: #ffb635;
|
87 |
-
}
|
88 |
-
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers .wbcr-rio-warning-message {
|
89 |
-
margin-top: 30px;
|
90 |
-
padding: 20px;
|
91 |
-
border: 1px dashed #bfbfbf;
|
92 |
-
background: #ffffff;
|
93 |
-
margin-bottom: 40px;
|
94 |
-
font-size: 15px;
|
95 |
-
color: #828282;
|
96 |
-
}
|
97 |
-
#WBCR .wio-columns {
|
98 |
-
overflow: hidden;
|
99 |
-
padding: 15px 0;
|
100 |
-
counter-reset: cols;
|
101 |
-
}
|
102 |
-
#WBCR .wio-columns [class^="col-"] {
|
103 |
-
float: left;
|
104 |
-
-webkit-box-sizing: border-box;
|
105 |
-
-moz-box-sizing: border-box;
|
106 |
-
box-sizing: border-box;
|
107 |
-
}
|
108 |
-
#WBCR .wio-columns .col-1-3 {
|
109 |
-
width: 33.333%;
|
110 |
-
padding-left: 28px;
|
111 |
-
}
|
112 |
-
#WBCR .wio-columns .col-2-3 {
|
113 |
-
width: 66.666%;
|
114 |
-
padding-left: 28px;
|
115 |
-
}
|
116 |
-
#WBCR .wio-columns .col-1-2 {
|
117 |
-
width: 50%;
|
118 |
-
padding: 0 20px;
|
119 |
-
}
|
120 |
-
#WBCR .wio-columns .col-statistics.col-statistics {
|
121 |
-
width: 60%;
|
122 |
-
}
|
123 |
-
#WBCR .wio-columns .col-chart.col-chart {
|
124 |
-
width: 40%;
|
125 |
-
position: relative;
|
126 |
-
padding: 20px;
|
127 |
-
font-size: 12px;
|
128 |
-
text-transform: uppercase;
|
129 |
-
background: #f1f1f1b3;
|
130 |
-
color: #abacaf;
|
131 |
-
font-weight: bold;
|
132 |
-
border-radius: 5px;
|
133 |
-
margin-top: 10px;
|
134 |
-
text-align: left;
|
135 |
-
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
136 |
-
}
|
137 |
-
#WBCR .wio-col {
|
138 |
-
float: left;
|
139 |
-
width: 50%;
|
140 |
-
box-sizing: border-box;
|
141 |
-
-webkit-flex-basis: 50%;
|
142 |
-
-ms-flex-preferred-size: 50%;
|
143 |
-
flex-basis: 50%;
|
144 |
-
}
|
145 |
-
#WBCR .wio-col {
|
146 |
-
padding-right: 20px;
|
147 |
-
}
|
148 |
-
#WBCR .wio-col + .wio-col {
|
149 |
-
padding-right: 0;
|
150 |
-
padding-left: 50px;
|
151 |
-
}
|
152 |
-
#WBCR .wio-col:target {
|
153 |
-
animation: wiohello 1s 3 linear backwards;
|
154 |
-
}
|
155 |
-
#WBCR .wio-number-you-optimized {
|
156 |
-
margin-bottom: 1.35em;
|
157 |
-
overflow: hidden;
|
158 |
-
}
|
159 |
-
#WBCR .wio-number-you-optimized #wio-total-optimized-attachments-pct {
|
160 |
-
color: #828282;
|
161 |
-
}
|
162 |
-
#WBCR .wio-number-you-optimized .wio-number {
|
163 |
-
display: table-cell;
|
164 |
-
padding-right: 15px;
|
165 |
-
font-size: 48px;
|
166 |
-
font-weight: bold;
|
167 |
-
line-height: 1;
|
168 |
-
vertical-align: middle;
|
169 |
-
white-space: nowrap;
|
170 |
-
color: #828282;
|
171 |
-
}
|
172 |
-
#WBCR .wio-number-you-optimized .wio-text {
|
173 |
-
display: table-cell;
|
174 |
-
vertical-align: middle;
|
175 |
-
overflow: hidden;
|
176 |
-
font-size: 12px;
|
177 |
-
color: #828282;
|
178 |
-
}
|
179 |
-
#WBCR .wio-number-you-optimized > p {
|
180 |
-
display: table;
|
181 |
-
}
|
182 |
-
#WBCR .wio-bars {
|
183 |
-
padding-right: 15px;
|
184 |
-
}
|
185 |
-
#WBCR .wio-bars p {
|
186 |
-
font-size: 12px;
|
187 |
-
margin-bottom: 5px;
|
188 |
-
}
|
189 |
-
#WBCR .wio-bars + .wio-number-you-optimized {
|
190 |
-
border-bottom: 0;
|
191 |
-
padding-top: 0.85em;
|
192 |
-
}
|
193 |
-
#WBCR .wio-bars + .wio-number-you-optimized p {
|
194 |
-
color: #72a53b;
|
195 |
-
}
|
196 |
-
#WBCR .wio-bar-negative .wio-progress {
|
197 |
-
background: #D2D3D6;
|
198 |
-
}
|
199 |
-
#WBCR .wio-bar-negative .wio-barnb {
|
200 |
-
color: #9d9fa5;
|
201 |
-
}
|
202 |
-
#WBCR .wio-progress {
|
203 |
-
height: 8px;
|
204 |
-
transition: width .3s;
|
205 |
-
/*.wio-bar-negative {
|
206 |
-
width: 92% !important;
|
207 |
-
}*/
|
208 |
-
}
|
209 |
-
#WBCR .wio-bar-positive .wio-progress {
|
210 |
-
background: #8CC152;
|
211 |
-
}
|
212 |
-
#WBCR .wio-bar-positive .wio-barnb {
|
213 |
-
color: #72a53b;
|
214 |
-
}
|
215 |
-
#WBCR .wio-bar-primary .wio-progress {
|
216 |
-
background: #8CC152;
|
217 |
-
}
|
218 |
-
#WBCR .wio-bar-primary .wio-barnb {
|
219 |
-
color: #72a53b;
|
220 |
-
}
|
221 |
-
#WBCR .wio-right-outside-number .wio-barnb {
|
222 |
-
display: block;
|
223 |
-
margin-right: -5.25em;
|
224 |
-
text-align: right;
|
225 |
-
font-weight: bold;
|
226 |
-
line-height: .8;
|
227 |
-
}
|
228 |
-
#WBCR .wio-chart {
|
229 |
-
position: relative;
|
230 |
-
top: 1px;
|
231 |
-
display: inline-block;
|
232 |
-
vertical-align: middle;
|
233 |
-
}
|
234 |
-
#WBCR .wio-chart-container {
|
235 |
-
position: relative;
|
236 |
-
display: inline-block;
|
237 |
-
margin-right: 5px;
|
238 |
-
border: 10px solid #d2d3d6;
|
239 |
-
border-radius: 100%;
|
240 |
-
}
|
241 |
-
#WBCR .wio-chart-container canvas {
|
242 |
-
display: block;
|
243 |
-
}
|
244 |
-
#WBCR .wio-overview-chart-container {
|
245 |
-
float: left;
|
246 |
-
margin-right: 20px;
|
247 |
-
}
|
248 |
-
#WBCR .wio-chart-percent {
|
249 |
-
position: absolute;
|
250 |
-
left: 0;
|
251 |
-
right: 0;
|
252 |
-
top: 50%;
|
253 |
-
margin-top: -0.5em;
|
254 |
-
line-height: 0.8;
|
255 |
-
text-align: center;
|
256 |
-
font-size: 54px;
|
257 |
-
font-weight: bold;
|
258 |
-
color: #afafaf;
|
259 |
-
}
|
260 |
-
#WBCR .wio-chart-percent span {
|
261 |
-
font-size: 20px;
|
262 |
-
vertical-align: super;
|
263 |
-
}
|
264 |
-
#WBCR #wio-overview-chart-legend {
|
265 |
-
overflow: hidden;
|
266 |
-
}
|
267 |
-
#WBCR .wio-doughnut-legend li {
|
268 |
-
display: inline-block;
|
269 |
-
position: relative;
|
270 |
-
margin-bottom: 15px;
|
271 |
-
border-radius: 5px;
|
272 |
-
padding: 3px 8px 2px 31px;
|
273 |
-
font-size: 12px;
|
274 |
-
cursor: default;
|
275 |
-
-webkit-transition: background-color 200ms ease-in-out;
|
276 |
-
-moz-transition: background-color 200ms ease-in-out;
|
277 |
-
-o-transition: background-color 200ms ease-in-out;
|
278 |
-
transition: background-color 200ms ease-in-out;
|
279 |
-
}
|
280 |
-
#WBCR .wio-doughnut-legend li span {
|
281 |
-
display: block;
|
282 |
-
position: absolute;
|
283 |
-
left: 0;
|
284 |
-
top: 0;
|
285 |
-
width: 25px;
|
286 |
-
height: 25px;
|
287 |
-
border-radius: 50%;
|
288 |
-
}
|
289 |
-
#WBCR .wio-optimize-button {
|
290 |
-
width: 180px;
|
291 |
-
padding: 12px 30px;
|
292 |
-
background: #c9deb2;
|
293 |
-
color: #586549;
|
294 |
-
border: 0;
|
295 |
-
box-shadow: none;
|
296 |
-
font-size: 14px;
|
297 |
-
text-transform: uppercase !important;
|
298 |
-
font-weight: bold;
|
299 |
-
border-radius: 4px;
|
300 |
-
outline: none;
|
301 |
-
text-decoration: none;
|
302 |
-
}
|
303 |
-
#WBCR .wio-optimize-button:active {
|
304 |
-
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
305 |
-
}
|
306 |
-
#WBCR .wio-global-optim-phrase {
|
307 |
-
width: 180px;
|
308 |
-
padding-top: 20px;
|
309 |
-
font-size: 14px;
|
310 |
-
text-align: center;
|
311 |
-
}
|
312 |
-
#WBCR .wio-total-percent {
|
313 |
-
color: #587f2e;
|
314 |
-
}
|
315 |
-
#WBCR .wio-text-left {
|
316 |
-
text-align: left;
|
317 |
-
}
|
318 |
-
#WBCR span.wio-num {
|
319 |
-
display: inline !important;
|
320 |
-
position: inherit !important;
|
321 |
-
}
|
322 |
-
#WBCR .wio-image-optimize-board {
|
323 |
-
padding: 20px;
|
324 |
-
}
|
325 |
-
#WBCR .wio-page-statistic {
|
326 |
-
padding-left: 40px;
|
327 |
-
}
|
328 |
-
#WBCR .wio-page-statistic .wio-chart-percent {
|
329 |
-
margin-top: -1.1em;
|
330 |
-
}
|
331 |
-
#WBCR .wio-widget {
|
332 |
-
padding: 0 !important;
|
333 |
-
}
|
334 |
-
#WBCR .wio-widget .wio-chart-percent {
|
335 |
-
font-size: 44px;
|
336 |
-
line-height: 1;
|
337 |
-
}
|
338 |
-
#WBCR .wio-widget .wio-bars {
|
339 |
-
width: 80%;
|
340 |
-
margin-left: 155px;
|
341 |
-
box-sizing: border-box;
|
342 |
-
}
|
343 |
-
#WBCR .wio-widget .col-chart.col-chart {
|
344 |
-
width: 100%;
|
345 |
-
}
|
346 |
-
#WBCR .wio-widget .col-controls {
|
347 |
-
width: 45%;
|
348 |
-
padding-left: 5px;
|
349 |
-
padding-top: 110px;
|
350 |
-
}
|
351 |
-
#WBCR .wio-widget .wio-doughnut-legend {
|
352 |
-
margin-left: 20px;
|
353 |
-
text-align: left;
|
354 |
-
}
|
355 |
-
#WBCR .wio-widget .wio-widget-bottom {
|
356 |
-
display: table;
|
357 |
-
padding-top: 20px !important;
|
358 |
-
width: 100%;
|
359 |
-
text-align: right;
|
360 |
-
}
|
361 |
-
#WBCR .wio-widget .wio-widget-bottom li {
|
362 |
-
display: table-cell;
|
363 |
-
}
|
364 |
-
#WBCR .wio-widget .wio-widget-bottom li:first-child {
|
365 |
-
text-align: left;
|
366 |
-
}
|
367 |
-
@media (max-width: 830px) {
|
368 |
-
#WBCR .wio [class^="col-"] {
|
369 |
-
float: none;
|
370 |
-
margin-bottom: 1.5em;
|
371 |
-
}
|
372 |
-
#WBCR .wio .col-1-3,
|
373 |
-
#WBCR .wio .col-1-2 {
|
374 |
-
width: auto;
|
375 |
-
padding: 0 28px;
|
376 |
-
clear: both;
|
377 |
-
padding-top: 1em;
|
378 |
-
}
|
379 |
-
}
|
380 |
-
@keyframes wiohello {
|
381 |
-
0%,
|
382 |
-
100% {
|
383 |
-
background: #FFF;
|
384 |
-
}
|
385 |
-
50% {
|
386 |
-
background: #F4F7F9;
|
387 |
-
}
|
388 |
-
}
|
389 |
-
@media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
|
390 |
-
#WBCR .wio-columns .col-statistics.col-statistics,
|
391 |
-
#WBCR .wio-columns .col-chart.col-chart {
|
392 |
-
width: 50%;
|
393 |
-
}
|
394 |
-
}
|
395 |
-
@media (max-width: 808px) {
|
396 |
-
#WBCR .wio-columns .col-statistics.col-statistics,
|
397 |
-
#WBCR .wio-columns .col-chart.col-chart {
|
398 |
-
width: auto;
|
399 |
-
float: none;
|
400 |
-
padding: 0;
|
401 |
-
}
|
402 |
-
#WBCR .wio-columns .col-chart.col-chart {
|
403 |
-
margin-top: 3em;
|
404 |
-
}
|
405 |
-
}
|
1 |
+
/**
|
2 |
+
* Styles for the Widget to be displayed in the Clearfy plugin
|
3 |
+
|
4 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
5 |
+
* @copyright Webcraftic 13.06.2018
|
6 |
+
*/
|
7 |
+
#WBCR {
|
8 |
+
/* Number display */
|
9 |
+
/* Number and bars */
|
10 |
+
/* Doughnut */
|
11 |
+
/* Widget */
|
12 |
+
}
|
13 |
+
#WBCR .wio-clear {
|
14 |
+
clear: both;
|
15 |
+
}
|
16 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers {
|
17 |
+
margin-top: 30px;
|
18 |
+
background: none;
|
19 |
+
padding: 0;
|
20 |
+
}
|
21 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers h4 {
|
22 |
+
font-size: 15px;
|
23 |
+
font-weight: 700;
|
24 |
+
}
|
25 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button {
|
26 |
+
padding: 5px 10px;
|
27 |
+
border: 0;
|
28 |
+
font-size: 11px;
|
29 |
+
text-transform: uppercase !important;
|
30 |
+
font-weight: bold;
|
31 |
+
border-radius: 4px;
|
32 |
+
outline: none;
|
33 |
+
background: #f3f3f3;
|
34 |
+
color: #656565;
|
35 |
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
36 |
+
}
|
37 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button:active {
|
38 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
39 |
+
}
|
40 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-loading {
|
41 |
+
width: 56px;
|
42 |
+
font-size: 0;
|
43 |
+
background: #f3f3f3 url("../img/quick-start-loader.gif") center no-repeat;
|
44 |
+
}
|
45 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected {
|
46 |
+
background: #f3efe2;
|
47 |
+
color: #d8d8d8;
|
48 |
+
}
|
49 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers button.wbcr-rio-selected:active {
|
50 |
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
51 |
+
}
|
52 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table {
|
53 |
+
width: 100%;
|
54 |
+
box-sizing: border-box;
|
55 |
+
border-spacing: 3px;
|
56 |
+
background: #fff;
|
57 |
+
}
|
58 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th,
|
59 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table td {
|
60 |
+
padding: 16px 10px;
|
61 |
+
text-align: center;
|
62 |
+
}
|
63 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table th {
|
64 |
+
background: #efefef;
|
65 |
+
color: #777777;
|
66 |
+
box-shadow: 0 1px 0 #d8d8d8;
|
67 |
+
}
|
68 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-check-proccess {
|
69 |
+
display: inline-block;
|
70 |
+
height: 10px;
|
71 |
+
width: 30px;
|
72 |
+
background: url("../img/quick-start-loader.gif") center no-repeat;
|
73 |
+
}
|
74 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-servers-list-item-selected {
|
75 |
+
background: #fffbed;
|
76 |
+
color: #cec5a8;
|
77 |
+
font-weight: 600;
|
78 |
+
}
|
79 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-success {
|
80 |
+
color: #8CC152;
|
81 |
+
}
|
82 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-error {
|
83 |
+
color: #fb5d49;
|
84 |
+
}
|
85 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers table .wbcr-rio-server-warning {
|
86 |
+
color: #ffb635;
|
87 |
+
}
|
88 |
+
#WBCR .wbcr-factory-sidebar-widget.wbcr-rio-servers .wbcr-rio-warning-message {
|
89 |
+
margin-top: 30px;
|
90 |
+
padding: 20px;
|
91 |
+
border: 1px dashed #bfbfbf;
|
92 |
+
background: #ffffff;
|
93 |
+
margin-bottom: 40px;
|
94 |
+
font-size: 15px;
|
95 |
+
color: #828282;
|
96 |
+
}
|
97 |
+
#WBCR .wio-columns {
|
98 |
+
overflow: hidden;
|
99 |
+
padding: 15px 0;
|
100 |
+
counter-reset: cols;
|
101 |
+
}
|
102 |
+
#WBCR .wio-columns [class^="col-"] {
|
103 |
+
float: left;
|
104 |
+
-webkit-box-sizing: border-box;
|
105 |
+
-moz-box-sizing: border-box;
|
106 |
+
box-sizing: border-box;
|
107 |
+
}
|
108 |
+
#WBCR .wio-columns .col-1-3 {
|
109 |
+
width: 33.333%;
|
110 |
+
padding-left: 28px;
|
111 |
+
}
|
112 |
+
#WBCR .wio-columns .col-2-3 {
|
113 |
+
width: 66.666%;
|
114 |
+
padding-left: 28px;
|
115 |
+
}
|
116 |
+
#WBCR .wio-columns .col-1-2 {
|
117 |
+
width: 50%;
|
118 |
+
padding: 0 20px;
|
119 |
+
}
|
120 |
+
#WBCR .wio-columns .col-statistics.col-statistics {
|
121 |
+
width: 60%;
|
122 |
+
}
|
123 |
+
#WBCR .wio-columns .col-chart.col-chart {
|
124 |
+
width: 40%;
|
125 |
+
position: relative;
|
126 |
+
padding: 20px;
|
127 |
+
font-size: 12px;
|
128 |
+
text-transform: uppercase;
|
129 |
+
background: #f1f1f1b3;
|
130 |
+
color: #abacaf;
|
131 |
+
font-weight: bold;
|
132 |
+
border-radius: 5px;
|
133 |
+
margin-top: 10px;
|
134 |
+
text-align: left;
|
135 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
136 |
+
}
|
137 |
+
#WBCR .wio-col {
|
138 |
+
float: left;
|
139 |
+
width: 50%;
|
140 |
+
box-sizing: border-box;
|
141 |
+
-webkit-flex-basis: 50%;
|
142 |
+
-ms-flex-preferred-size: 50%;
|
143 |
+
flex-basis: 50%;
|
144 |
+
}
|
145 |
+
#WBCR .wio-col {
|
146 |
+
padding-right: 20px;
|
147 |
+
}
|
148 |
+
#WBCR .wio-col + .wio-col {
|
149 |
+
padding-right: 0;
|
150 |
+
padding-left: 50px;
|
151 |
+
}
|
152 |
+
#WBCR .wio-col:target {
|
153 |
+
animation: wiohello 1s 3 linear backwards;
|
154 |
+
}
|
155 |
+
#WBCR .wio-number-you-optimized {
|
156 |
+
margin-bottom: 1.35em;
|
157 |
+
overflow: hidden;
|
158 |
+
}
|
159 |
+
#WBCR .wio-number-you-optimized #wio-total-optimized-attachments-pct {
|
160 |
+
color: #828282;
|
161 |
+
}
|
162 |
+
#WBCR .wio-number-you-optimized .wio-number {
|
163 |
+
display: table-cell;
|
164 |
+
padding-right: 15px;
|
165 |
+
font-size: 48px;
|
166 |
+
font-weight: bold;
|
167 |
+
line-height: 1;
|
168 |
+
vertical-align: middle;
|
169 |
+
white-space: nowrap;
|
170 |
+
color: #828282;
|
171 |
+
}
|
172 |
+
#WBCR .wio-number-you-optimized .wio-text {
|
173 |
+
display: table-cell;
|
174 |
+
vertical-align: middle;
|
175 |
+
overflow: hidden;
|
176 |
+
font-size: 12px;
|
177 |
+
color: #828282;
|
178 |
+
}
|
179 |
+
#WBCR .wio-number-you-optimized > p {
|
180 |
+
display: table;
|
181 |
+
}
|
182 |
+
#WBCR .wio-bars {
|
183 |
+
padding-right: 15px;
|
184 |
+
}
|
185 |
+
#WBCR .wio-bars p {
|
186 |
+
font-size: 12px;
|
187 |
+
margin-bottom: 5px;
|
188 |
+
}
|
189 |
+
#WBCR .wio-bars + .wio-number-you-optimized {
|
190 |
+
border-bottom: 0;
|
191 |
+
padding-top: 0.85em;
|
192 |
+
}
|
193 |
+
#WBCR .wio-bars + .wio-number-you-optimized p {
|
194 |
+
color: #72a53b;
|
195 |
+
}
|
196 |
+
#WBCR .wio-bar-negative .wio-progress {
|
197 |
+
background: #D2D3D6;
|
198 |
+
}
|
199 |
+
#WBCR .wio-bar-negative .wio-barnb {
|
200 |
+
color: #9d9fa5;
|
201 |
+
}
|
202 |
+
#WBCR .wio-progress {
|
203 |
+
height: 8px;
|
204 |
+
transition: width .3s;
|
205 |
+
/*.wio-bar-negative {
|
206 |
+
width: 92% !important;
|
207 |
+
}*/
|
208 |
+
}
|
209 |
+
#WBCR .wio-bar-positive .wio-progress {
|
210 |
+
background: #8CC152;
|
211 |
+
}
|
212 |
+
#WBCR .wio-bar-positive .wio-barnb {
|
213 |
+
color: #72a53b;
|
214 |
+
}
|
215 |
+
#WBCR .wio-bar-primary .wio-progress {
|
216 |
+
background: #8CC152;
|
217 |
+
}
|
218 |
+
#WBCR .wio-bar-primary .wio-barnb {
|
219 |
+
color: #72a53b;
|
220 |
+
}
|
221 |
+
#WBCR .wio-right-outside-number .wio-barnb {
|
222 |
+
display: block;
|
223 |
+
margin-right: -5.25em;
|
224 |
+
text-align: right;
|
225 |
+
font-weight: bold;
|
226 |
+
line-height: .8;
|
227 |
+
}
|
228 |
+
#WBCR .wio-chart {
|
229 |
+
position: relative;
|
230 |
+
top: 1px;
|
231 |
+
display: inline-block;
|
232 |
+
vertical-align: middle;
|
233 |
+
}
|
234 |
+
#WBCR .wio-chart-container {
|
235 |
+
position: relative;
|
236 |
+
display: inline-block;
|
237 |
+
margin-right: 5px;
|
238 |
+
border: 10px solid #d2d3d6;
|
239 |
+
border-radius: 100%;
|
240 |
+
}
|
241 |
+
#WBCR .wio-chart-container canvas {
|
242 |
+
display: block;
|
243 |
+
}
|
244 |
+
#WBCR .wio-overview-chart-container {
|
245 |
+
float: left;
|
246 |
+
margin-right: 20px;
|
247 |
+
}
|
248 |
+
#WBCR .wio-chart-percent {
|
249 |
+
position: absolute;
|
250 |
+
left: 0;
|
251 |
+
right: 0;
|
252 |
+
top: 50%;
|
253 |
+
margin-top: -0.5em;
|
254 |
+
line-height: 0.8;
|
255 |
+
text-align: center;
|
256 |
+
font-size: 54px;
|
257 |
+
font-weight: bold;
|
258 |
+
color: #afafaf;
|
259 |
+
}
|
260 |
+
#WBCR .wio-chart-percent span {
|
261 |
+
font-size: 20px;
|
262 |
+
vertical-align: super;
|
263 |
+
}
|
264 |
+
#WBCR #wio-overview-chart-legend {
|
265 |
+
overflow: hidden;
|
266 |
+
}
|
267 |
+
#WBCR .wio-doughnut-legend li {
|
268 |
+
display: inline-block;
|
269 |
+
position: relative;
|
270 |
+
margin-bottom: 15px;
|
271 |
+
border-radius: 5px;
|
272 |
+
padding: 3px 8px 2px 31px;
|
273 |
+
font-size: 12px;
|
274 |
+
cursor: default;
|
275 |
+
-webkit-transition: background-color 200ms ease-in-out;
|
276 |
+
-moz-transition: background-color 200ms ease-in-out;
|
277 |
+
-o-transition: background-color 200ms ease-in-out;
|
278 |
+
transition: background-color 200ms ease-in-out;
|
279 |
+
}
|
280 |
+
#WBCR .wio-doughnut-legend li span {
|
281 |
+
display: block;
|
282 |
+
position: absolute;
|
283 |
+
left: 0;
|
284 |
+
top: 0;
|
285 |
+
width: 25px;
|
286 |
+
height: 25px;
|
287 |
+
border-radius: 50%;
|
288 |
+
}
|
289 |
+
#WBCR .wio-optimize-button {
|
290 |
+
width: 180px;
|
291 |
+
padding: 12px 30px;
|
292 |
+
background: #c9deb2;
|
293 |
+
color: #586549;
|
294 |
+
border: 0;
|
295 |
+
box-shadow: none;
|
296 |
+
font-size: 14px;
|
297 |
+
text-transform: uppercase !important;
|
298 |
+
font-weight: bold;
|
299 |
+
border-radius: 4px;
|
300 |
+
outline: none;
|
301 |
+
text-decoration: none;
|
302 |
+
}
|
303 |
+
#WBCR .wio-optimize-button:active {
|
304 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
|
305 |
+
}
|
306 |
+
#WBCR .wio-global-optim-phrase {
|
307 |
+
width: 180px;
|
308 |
+
padding-top: 20px;
|
309 |
+
font-size: 14px;
|
310 |
+
text-align: center;
|
311 |
+
}
|
312 |
+
#WBCR .wio-total-percent {
|
313 |
+
color: #587f2e;
|
314 |
+
}
|
315 |
+
#WBCR .wio-text-left {
|
316 |
+
text-align: left;
|
317 |
+
}
|
318 |
+
#WBCR span.wio-num {
|
319 |
+
display: inline !important;
|
320 |
+
position: inherit !important;
|
321 |
+
}
|
322 |
+
#WBCR .wio-image-optimize-board {
|
323 |
+
padding: 20px;
|
324 |
+
}
|
325 |
+
#WBCR .wio-page-statistic {
|
326 |
+
padding-left: 40px;
|
327 |
+
}
|
328 |
+
#WBCR .wio-page-statistic .wio-chart-percent {
|
329 |
+
margin-top: -1.1em;
|
330 |
+
}
|
331 |
+
#WBCR .wio-widget {
|
332 |
+
padding: 0 !important;
|
333 |
+
}
|
334 |
+
#WBCR .wio-widget .wio-chart-percent {
|
335 |
+
font-size: 44px;
|
336 |
+
line-height: 1;
|
337 |
+
}
|
338 |
+
#WBCR .wio-widget .wio-bars {
|
339 |
+
width: 80%;
|
340 |
+
margin-left: 155px;
|
341 |
+
box-sizing: border-box;
|
342 |
+
}
|
343 |
+
#WBCR .wio-widget .col-chart.col-chart {
|
344 |
+
width: 100%;
|
345 |
+
}
|
346 |
+
#WBCR .wio-widget .col-controls {
|
347 |
+
width: 45%;
|
348 |
+
padding-left: 5px;
|
349 |
+
padding-top: 110px;
|
350 |
+
}
|
351 |
+
#WBCR .wio-widget .wio-doughnut-legend {
|
352 |
+
margin-left: 20px;
|
353 |
+
text-align: left;
|
354 |
+
}
|
355 |
+
#WBCR .wio-widget .wio-widget-bottom {
|
356 |
+
display: table;
|
357 |
+
padding-top: 20px !important;
|
358 |
+
width: 100%;
|
359 |
+
text-align: right;
|
360 |
+
}
|
361 |
+
#WBCR .wio-widget .wio-widget-bottom li {
|
362 |
+
display: table-cell;
|
363 |
+
}
|
364 |
+
#WBCR .wio-widget .wio-widget-bottom li:first-child {
|
365 |
+
text-align: left;
|
366 |
+
}
|
367 |
+
@media (max-width: 830px) {
|
368 |
+
#WBCR .wio [class^="col-"] {
|
369 |
+
float: none;
|
370 |
+
margin-bottom: 1.5em;
|
371 |
+
}
|
372 |
+
#WBCR .wio .col-1-3,
|
373 |
+
#WBCR .wio .col-1-2 {
|
374 |
+
width: auto;
|
375 |
+
padding: 0 28px;
|
376 |
+
clear: both;
|
377 |
+
padding-top: 1em;
|
378 |
+
}
|
379 |
+
}
|
380 |
+
@keyframes wiohello {
|
381 |
+
0%,
|
382 |
+
100% {
|
383 |
+
background: #FFF;
|
384 |
+
}
|
385 |
+
50% {
|
386 |
+
background: #F4F7F9;
|
387 |
+
}
|
388 |
+
}
|
389 |
+
@media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
|
390 |
+
#WBCR .wio-columns .col-statistics.col-statistics,
|
391 |
+
#WBCR .wio-columns .col-chart.col-chart {
|
392 |
+
width: 50%;
|
393 |
+
}
|
394 |
+
}
|
395 |
+
@media (max-width: 808px) {
|
396 |
+
#WBCR .wio-columns .col-statistics.col-statistics,
|
397 |
+
#WBCR .wio-columns .col-chart.col-chart {
|
398 |
+
width: auto;
|
399 |
+
float: none;
|
400 |
+
padding: 0;
|
401 |
+
}
|
402 |
+
#WBCR .wio-columns .col-chart.col-chart {
|
403 |
+
margin-top: 3em;
|
404 |
+
}
|
405 |
+
}
|
admin/assets/css/components.css
CHANGED
@@ -1,107 +1,107 @@
|
|
1 |
-
/**
|
2 |
-
* Page components
|
3 |
-
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
-
* @copyright Alex Kovalev 30.09.2017
|
5 |
-
*/
|
6 |
-
#WBCR .wbcr-clearfy-components {
|
7 |
-
padding: 0 20px 20px;
|
8 |
-
text-align: center;
|
9 |
-
}
|
10 |
-
#WBCR .wbcr-clearfy-components .plugin-card {
|
11 |
-
position: relative;
|
12 |
-
display: inline-block;
|
13 |
-
width: 32.7%;
|
14 |
-
height: 250px;
|
15 |
-
margin-left: 0;
|
16 |
-
margin-right: 0;
|
17 |
-
text-align: left;
|
18 |
-
float: none;
|
19 |
-
vertical-align: top;
|
20 |
-
}
|
21 |
-
#WBCR .wbcr-clearfy-components .plugin-card:first-child {
|
22 |
-
margin-left: 0;
|
23 |
-
}
|
24 |
-
#WBCR .wbcr-clearfy-components .plugin-card .plugin-card-bottom {
|
25 |
-
position: absolute;
|
26 |
-
bottom: 0;
|
27 |
-
right: 0;
|
28 |
-
left: 0;
|
29 |
-
}
|
30 |
-
#WBCR .wbcr-clearfy-components .plugin-card .plugin-card-top {
|
31 |
-
min-height: 163px;
|
32 |
-
}
|
33 |
-
#WBCR .wbcr-clearfy-components .plugin-card .desc,
|
34 |
-
#WBCR .wbcr-clearfy-components .plugin-card .name {
|
35 |
-
margin-right: 0 !important;
|
36 |
-
}
|
37 |
-
#WBCR .wbcr-clearfy-components .plugin-card .name h3 {
|
38 |
-
font-size: 17px;
|
39 |
-
margin-top: 0 !important;
|
40 |
-
}
|
41 |
-
#WBCR .wbcr-clearfy-components .plugin-card .install-now {
|
42 |
-
float: right;
|
43 |
-
}
|
44 |
-
#WBCR .wbcr-clearfy-components .plugin-card .delete-now {
|
45 |
-
float: right;
|
46 |
-
margin-left: 5px;
|
47 |
-
}
|
48 |
-
#WBCR .wbcr-clearfy-components .plugin-card .delete-now .dashicons,
|
49 |
-
#WBCR .wbcr-clearfy-components .plugin-card .delete-now .dashicons-before:before {
|
50 |
-
font-size: 16px !important;
|
51 |
-
line-height: 1.5 !important;
|
52 |
-
color: #62696f;
|
53 |
-
}
|
54 |
-
#WBCR .wbcr-clearfy-components .plugin-card a.open-plugin-details-modal {
|
55 |
-
color: #5c5d5f;
|
56 |
-
text-decoration: none;
|
57 |
-
font-weight: 600;
|
58 |
-
font-size: 15px;
|
59 |
-
}
|
60 |
-
#WBCR .wbcr-clearfy-components .plugin-card .premium-ribbon {
|
61 |
-
position: absolute;
|
62 |
-
bottom: 60px;
|
63 |
-
right: 0;
|
64 |
-
height: 30px;
|
65 |
-
width: 120px;
|
66 |
-
border-radius: 3px 0 0 3px;
|
67 |
-
background-color: #f7dea9;
|
68 |
-
color: #67532f;
|
69 |
-
text-align: center;
|
70 |
-
font-size: 12px;
|
71 |
-
font-weight: 600;
|
72 |
-
line-height: 2.4;
|
73 |
-
text-transform: uppercase;
|
74 |
-
z-index: 1;
|
75 |
-
}
|
76 |
-
#WBCR .wbcr-clearfy-components .plugin-card.premium {
|
77 |
-
border-color: #e8d7b2;
|
78 |
-
background-color: #fff9eb;
|
79 |
-
}
|
80 |
-
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive {
|
81 |
-
background-color: #f1f1f1;
|
82 |
-
}
|
83 |
-
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
|
84 |
-
color: #ababab;
|
85 |
-
text-decoration: none;
|
86 |
-
font-weight: 600;
|
87 |
-
font-size: 15px;
|
88 |
-
}
|
89 |
-
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .plugin-icon {
|
90 |
-
opacity: 0.3;
|
91 |
-
}
|
92 |
-
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .desc {
|
93 |
-
color: #afafaf;
|
94 |
-
}
|
95 |
-
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive.premium {
|
96 |
-
background-color: #f9f2f1;
|
97 |
-
}
|
98 |
-
@media screen and (max-width: 1750px) {
|
99 |
-
#WBCR .wbcr-clearfy-components .plugin-card {
|
100 |
-
width: 49%;
|
101 |
-
}
|
102 |
-
}
|
103 |
-
@media screen and (max-width: 1350px) {
|
104 |
-
#WBCR .wbcr-clearfy-components .plugin-card {
|
105 |
-
width: 100%;
|
106 |
-
}
|
107 |
-
}
|
1 |
+
/**
|
2 |
+
* Page components
|
3 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
+
* @copyright Alex Kovalev 30.09.2017
|
5 |
+
*/
|
6 |
+
#WBCR .wbcr-clearfy-components {
|
7 |
+
padding: 0 20px 20px;
|
8 |
+
text-align: center;
|
9 |
+
}
|
10 |
+
#WBCR .wbcr-clearfy-components .plugin-card {
|
11 |
+
position: relative;
|
12 |
+
display: inline-block;
|
13 |
+
width: 32.7%;
|
14 |
+
height: 250px;
|
15 |
+
margin-left: 0;
|
16 |
+
margin-right: 0;
|
17 |
+
text-align: left;
|
18 |
+
float: none;
|
19 |
+
vertical-align: top;
|
20 |
+
}
|
21 |
+
#WBCR .wbcr-clearfy-components .plugin-card:first-child {
|
22 |
+
margin-left: 0;
|
23 |
+
}
|
24 |
+
#WBCR .wbcr-clearfy-components .plugin-card .plugin-card-bottom {
|
25 |
+
position: absolute;
|
26 |
+
bottom: 0;
|
27 |
+
right: 0;
|
28 |
+
left: 0;
|
29 |
+
}
|
30 |
+
#WBCR .wbcr-clearfy-components .plugin-card .plugin-card-top {
|
31 |
+
min-height: 163px;
|
32 |
+
}
|
33 |
+
#WBCR .wbcr-clearfy-components .plugin-card .desc,
|
34 |
+
#WBCR .wbcr-clearfy-components .plugin-card .name {
|
35 |
+
margin-right: 0 !important;
|
36 |
+
}
|
37 |
+
#WBCR .wbcr-clearfy-components .plugin-card .name h3 {
|
38 |
+
font-size: 17px;
|
39 |
+
margin-top: 0 !important;
|
40 |
+
}
|
41 |
+
#WBCR .wbcr-clearfy-components .plugin-card .install-now {
|
42 |
+
float: right;
|
43 |
+
}
|
44 |
+
#WBCR .wbcr-clearfy-components .plugin-card .delete-now {
|
45 |
+
float: right;
|
46 |
+
margin-left: 5px;
|
47 |
+
}
|
48 |
+
#WBCR .wbcr-clearfy-components .plugin-card .delete-now .dashicons,
|
49 |
+
#WBCR .wbcr-clearfy-components .plugin-card .delete-now .dashicons-before:before {
|
50 |
+
font-size: 16px !important;
|
51 |
+
line-height: 1.5 !important;
|
52 |
+
color: #62696f;
|
53 |
+
}
|
54 |
+
#WBCR .wbcr-clearfy-components .plugin-card a.open-plugin-details-modal {
|
55 |
+
color: #5c5d5f;
|
56 |
+
text-decoration: none;
|
57 |
+
font-weight: 600;
|
58 |
+
font-size: 15px;
|
59 |
+
}
|
60 |
+
#WBCR .wbcr-clearfy-components .plugin-card .premium-ribbon {
|
61 |
+
position: absolute;
|
62 |
+
bottom: 60px;
|
63 |
+
right: 0;
|
64 |
+
height: 30px;
|
65 |
+
width: 120px;
|
66 |
+
border-radius: 3px 0 0 3px;
|
67 |
+
background-color: #f7dea9;
|
68 |
+
color: #67532f;
|
69 |
+
text-align: center;
|
70 |
+
font-size: 12px;
|
71 |
+
font-weight: 600;
|
72 |
+
line-height: 2.4;
|
73 |
+
text-transform: uppercase;
|
74 |
+
z-index: 1;
|
75 |
+
}
|
76 |
+
#WBCR .wbcr-clearfy-components .plugin-card.premium {
|
77 |
+
border-color: #e8d7b2;
|
78 |
+
background-color: #fff9eb;
|
79 |
+
}
|
80 |
+
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive {
|
81 |
+
background-color: #f1f1f1;
|
82 |
+
}
|
83 |
+
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
|
84 |
+
color: #ababab;
|
85 |
+
text-decoration: none;
|
86 |
+
font-weight: 600;
|
87 |
+
font-size: 15px;
|
88 |
+
}
|
89 |
+
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .plugin-icon {
|
90 |
+
opacity: 0.3;
|
91 |
+
}
|
92 |
+
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .desc {
|
93 |
+
color: #afafaf;
|
94 |
+
}
|
95 |
+
#WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive.premium {
|
96 |
+
background-color: #f9f2f1;
|
97 |
+
}
|
98 |
+
@media screen and (max-width: 1750px) {
|
99 |
+
#WBCR .wbcr-clearfy-components .plugin-card {
|
100 |
+
width: 49%;
|
101 |
+
}
|
102 |
+
}
|
103 |
+
@media screen and (max-width: 1350px) {
|
104 |
+
#WBCR .wbcr-clearfy-components .plugin-card {
|
105 |
+
width: 100%;
|
106 |
+
}
|
107 |
+
}
|
admin/assets/css/general.css
CHANGED
@@ -33,6 +33,21 @@
|
|
33 |
//float: right;
|
34 |
}*/
|
35 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
#WBCR .wbcr-clr-logo-label {
|
37 |
position: relative;
|
38 |
padding: 0 10px 3px;
|
@@ -476,3 +491,4 @@
|
|
476 |
font-size: 0 !important;
|
477 |
}
|
478 |
}
|
|
33 |
//float: right;
|
34 |
}*/
|
35 |
}
|
36 |
+
#WBCR .wbcr-factory-pages-410-impressive-page-template .wbcr-factory-page-header {
|
37 |
+
height: 80px !important;
|
38 |
+
}
|
39 |
+
#WBCR .wbcr-factory-pages-410-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
|
40 |
+
display: inline-block !important;
|
41 |
+
}
|
42 |
+
#WBCR .row {
|
43 |
+
display: block !important;
|
44 |
+
width: auto !important;
|
45 |
+
table-layout: auto !important;
|
46 |
+
}
|
47 |
+
#WBCR .row > div {
|
48 |
+
display: block !important;
|
49 |
+
padding: 0 !important;
|
50 |
+
}
|
51 |
#WBCR .wbcr-clr-logo-label {
|
52 |
position: relative;
|
53 |
padding: 0 10px 3px;
|
491 |
font-size: 0 !important;
|
492 |
}
|
493 |
}
|
494 |
+
/*# sourceMappingURL=general.css.map */
|
admin/assets/css/general.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["general.less"],"names":[],"mappings":";;;;;AAMA;EACE,aAAA;EACA,kBAAA;EACA,MAAA;EACA,WAAA;EACA,QAAA;EACA,SAAA;EACA,oCAAA;EACA,UAAA;;AAGF;;;;;;;;;;;;;;;;;;;;AAAA,KAIE,iDACE;EACE,uBAAA;;AANN,KAIE,iDACE,0BAGE,0BACE;EACE,qBAAA;;AAVV,KAmBE;EACE,yBAAA;EACA,sBAAA;EACA,6BAAA;;AAEA,KALF,KAKI;EACA,yBAAA;EACA,qBAAA;;AA1BN,KA8BE;EACE,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,2CAAA;EACA,8CAAA;;AAEA,KAPF,qBAOG;EACC,SAAS,EAAT;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,YAAA;EACA,6EAAA;;AAGF,KAlBF,qBAkBG;EACC,cAAA;EACA,yBAAA;;AAGF,KAvBF,qBAuBG;EACC,cAAA;EACA,yBAAA;;AAvDN,KA2DE;AA3DF,KA2DyB;EACrB,qBAAA;EACA,mBAAA;;AA7DJ,KAgEE;EACE,WAAA;;AAjEJ,KA6EE,+BACE;EACE,kBAAA;EACA,qBAAA;EACA,iBAAA;EACA,mBAAA;EACA,UAAA;EACA,kBAAA;EACA,aAAA;EACA,gBAAA;EACA,2BAAA;;AAEA,KAZJ,+BACE,2BAWI;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;;AA5FR,KAqGE,kCACE;EACE,8BAAA;;AAvGN,KAqGE,kCAKE;EACE,8BAAA;;AA3GN,KAqGE,kCASE,yBACE;EACE,oBAAA;EACA,WAAA;;AAEA,KAdN,kCASE,yBACE,0BAII;EACA,WAAA;;AApHV,KA0HE;EACE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;;AAEA,KAPF,6BAOG;AAAQ,KAPX,6BAOY;EACR,YAAA;EACA,UAAA;EACA,yBAAA;EACA,SAAS,GAAT;EACA,SAAA;EACA,QAAA;EACA,kBAAA;EACA,oBAAA;;AAGF,KAlBF,6BAkBG;EACC,oCAAA;EACA,4BAAA;EACA,kBAAA;;AAGF,KAxBF,6BAwBG;EACC,oCAAA;EACA,4BAAA;EACA,kBAAA;;AArJN,KAyJE;EACE,mBAAA;EACA,yBAAA;EACA,cAAA;EACA,sCAAA;;AAEA,KANF,2BAMG;EACC,aAAA;;AAhKN,KAyJE,2BAUE;EACE,eAAA;;AApKN,KAyJE,2BAcE;EACE,cAAA;EACA,eAAA;;AAzKN,KAsLE,+BAEE;EACE,gBAAA;;AAzLN,KA6LE,yCACE;EACE,kBAAA;EACA,YAAA;EACA,aAAA;;AAjMN,KA6LE,yCACE,0BAKE;EACE,UAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,wBAAA;EACA,YAAA;EACA,YAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,8BAAA;EACA,yBAAA;EACA,gCAAA;EACA,4BAAA;EACA,2BAAA;EACA,oCAAA;EACA,kBAAA;EACA,aAAA;EAEA,kCAAA;EACA,+BAAA;EACA,6BAAA;EACA,0BAAA;;AAGF,KAjCJ,yCACE,0BAgCG,MAAO;EACN,cAAA;EACA,UAAA;;AAGF,KAtCJ,yCACE,0BAqCG,MAAO,6BAA6B;EACnC,YAAA;;AApOR,KA6LE,yCACE,0BAyCE,6BACE;EACE,WAAA;EAEA,iCAAA;EACA,8BAAA;EACA,4BAAA;EACA,yBAAA;;AA9OV,KAoPE;AApPF,KAoPwC;EACpC,aAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;;AA1PJ,KA6PE;EACE,mBAAA;EACA,gCAAA;EACA,cAAA;;AAhQJ,KAmQE;EACE,mBAAA;EACA,gCAAA;EACA,cAAA;;AAtQJ,KAyQE;EACE,oBAAA;;AA1QJ,KA6QE;EACE,eAAA;EACA,iBAAA;;AA/QJ,KA6QE,4BAIE;EACE,cAAA;EACA,WAAA;EACA,gBAAA;EACA,cAAA;;AArRN,KA6QE,4BAWE;EACE,WAAA;EACA,sBAAA;EACA,aAAA;EACA,oBAAA;EACA,SAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,sBAAA;EACA,yBAAA;EACA,yBAAA;EACA,WAAA;EACA,6BAAA;EACA,wBAAA;;AAtSN,KA6QE,4BA4BE;EACE,qBAAA;EACA,gBAAA;;AA3SN,KAgTE;EAEE,aAAA;;AAlTJ,KAgTE,+BAIE;EACE,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,yBAAA;EACA,mBAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,wCAAA;EAEA,qCAAA;EACA,kCAAA;EACA,gCAAA;EACA,6BAAA;;;;;;;;;;;AAEA,KAtBJ,+BAIE,qBAkBG;EACC,cAAA;EACA,WAAA;;AAxUR,KAgTE,+BAIE,qBAuBE;AA3UN,KAgTE,+BAIE,qBAuBO;EAEH,eAAA;;AA7UR,KAgTE,+BAIE,qBA4BE;AAhVN,KAgTE,+BAIE,qBA4BO;AAhVX,KAgTE,+BAIE,qBA4BmB;EACf,qBAAA;;AAjVR,KAgTE,+BAIE,qBAgCE;EACE,iBAAA;EACA,eAAA;;AAGF,KAzCJ,+BAIE,qBAqCG;;;;;;;;;;;;AAAD,KAzCJ,+BAIE,qBAqCG,oBAYC;EACE,oCAAA;EACA,yBAAA;EACA,eAAA;;AAIJ,KA5DJ,+BAIE,qBAwDG,+BACC;EACE,YAAA;;AAFJ,KA5DJ,+BAIE,qBAwDG,+BACC,kCAGE;EACE,YAAA;EACA,yBAAA;EACA,cAAA;;AAEA,KArEV,+BAIE,qBAwDG,+BACC,kCAGE,mCAKG;EACC,yBAAA;;AAMR,KA5EJ,+BAIE,qBAwEG,qCACC;AADF,KA5EJ,+BAIE,qBAwEG,qCACM,WAAU;EACb,cAAA;;AAFJ,KA5EJ,+BAIE,qBAwEG,qCAKC;EACE,yBAAA;EACA,cAAA;;AAEA,KArFR,+BAIE,qBAwEG,qCAKC,mCAIG;EACC,yBAAA;;AAeN,KArGJ,+BAIE,qBAiGG,qBACC,kCACE;EACE,gBAAgB,wDAAhB;EACA,oCAAA;EACA,YAAA;EACA,0BAAA;;AA3ZZ,KAgTE,+BAIE,qBA4GE;EACE,kBAAA;EAGA,MAAA;EACA,WAAA;EACA,SAAA;EACA,YAAA;EAEA,iBAAA;EACA,qCAAA;EACA,kCAAA;EACA,gCAAA;EACA,6BAAA;;AA7aR,KAgTE,+BAIE,qBA4GE,kCAeE;EACE,qBAAA;EACA,YAAA;EACA,gBAAA;EACA,SAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,aAAA;EACA,yBAAA;EACA,cAAA;;;;;;;;;;;;;;;;;;AAEA,KA7IR,+BAIE,qBA4GE,kCAeE,OAcG;EACC,yBAAA;;AAoBF,KAlKR,+BAIE,qBA4GE,kCAeE,OAmCG;EACC,8CAAA;;AAndZ,KA0dE;EACE,aAAA;EACA,eAAA;EACA,QAAA;EACA,SAAA;EACA,YAAA;EACA,aAAA;EACA,yBAAA;EACA,aAAA;EACA,qCAAA;EACA,sCAAA;EACA,2CAAA;EACA,WAAA;;AAteJ,KA0dE,4BAcE;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;;AA5eN,KA0dE,4BAqBE;EACE,aAAA;EACA,kBAAA;;AAjfN,KA0dE,4BA0BE;EACE,aAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;;AAOF,KAxCF,4BAwCG,qCACC;EACE,cAAA;;AAIJ,KA9CF,4BA8CG;EACC,aAAA;EACA,yBAAA;;AAFF,KA9CF,4BA8CG,mCAIC;EACE,cAAA;EACA,cAAA;;AA9gBR,KA0dE,4BAwDE;EACE,kBAAA;EACA,aAAA;;AAphBN,KA0dE,4BAwDE,4BAIE;EACE,qBAAA;EACA,iBAAA;EACA,gBAAA;EACA,SAAA;EACA,iBAAA;;AAEA,KAnEN,4BAwDE,4BAIE;AAOK,KAnET,4BAwDE,4BAIE,OAOM;EACF,qBAAA;EACA,2BAAA;;AAGF,KAxEN,4BAwDE,4BAIE,OAYG;EACC,mBAAA;EACA,cAAA;;AAGF,KA7EN,4BAwDE,4BAIE,OAiBG;EACC,mBAAA;EACA,cAAA;;AAQV,mBAAsC;EACpC,KACE;IACE,gBAAA;IACA,gBAAA;;EAHJ,KAME;EANF,KAMyB;IACrB,WAAA;;EAPJ,KAUE;IACE,gBAAA;;;AAKN,mBAAqC;EACnC,KACE;IACE,eAAA;;EAFJ,KAKE;EALF,KAKyB;IACrB,WAAA;;EANJ,KASE;IACE,WAAA;IACA,eAAA;;;AAKN,mBAAqC;EACnC,KACE,+BACE,qBAAqB;IACnB,uBAAA","file":"general.css"}
|
admin/assets/css/gutenberg-autosave-control.css
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Gutenber autosave control styles
|
3 |
+
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 10.12.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*
|
8 |
+
* Credits:
|
9 |
+
* This code was used from the plugin: https://wordpress.org/plugins/disable-gutenberg-autosave/
|
10 |
+
* Author websevendev
|
11 |
+
*/
|
12 |
+
h2.disable-gutenberg-autosave-header {
|
13 |
+
margin: 0;
|
14 |
+
}
|
15 |
+
p.disable-gutenberg-autosave-error {
|
16 |
+
color: red;
|
17 |
+
font-family: "Monaco", "Menlo", "Ubuntu Mono", "Consolas", "source-code-pro", monospace;
|
18 |
+
}
|
19 |
+
/*# sourceMappingURL=gutenberg-autosave-control.css.map */
|
admin/assets/css/gutenberg-autosave-control.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["gutenberg-autosave-control.less"],"names":[],"mappings":";;;;;;;;;;;AAYA,EAAE;EACA,SAAA;;AAGF,CAAC;EACC,UAAA;EACA,aAAa,UAAU,SAAS,eAAe,YAAY,4BAA3D","file":"gutenberg-autosave-control.css"}
|
admin/assets/css/gutenberg-autosave-control.less
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Gutenber autosave control styles
|
3 |
+
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 10.12.2018, Webcraftic
|
6 |
+
* @version 1.0
|
7 |
+
*
|
8 |
+
* Credits:
|
9 |
+
* This code was used from the plugin: https://wordpress.org/plugins/disable-gutenberg-autosave/
|
10 |
+
* Author websevendev
|
11 |
+
*/
|
12 |
+
|
13 |
+
h2.disable-gutenberg-autosave-header {
|
14 |
+
margin: 0;
|
15 |
+
}
|
16 |
+
|
17 |
+
p.disable-gutenberg-autosave-error {
|
18 |
+
color: red;
|
19 |
+
font-family: "Monaco", "Menlo", "Ubuntu Mono", "Consolas", "source-code-pro", monospace;
|
20 |
+
}
|
admin/assets/css/install-addons.css
CHANGED
@@ -1,31 +1,31 @@
|
|
1 |
-
/**
|
2 |
-
* Install addons global styles
|
3 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
-
* @copyright Webcraftic 11.07.2018
|
5 |
-
*/
|
6 |
-
.wbcr-clr-new-component {
|
7 |
-
background: #f7f7f7;
|
8 |
-
border: 1px solid #eaeaea;
|
9 |
-
padding: 5px 20px;
|
10 |
-
margin-bottom: 10px;
|
11 |
-
}
|
12 |
-
.wbcr-clr-new-component h4 {
|
13 |
-
margin: 5px 0;
|
14 |
-
display: inline-block;
|
15 |
-
}
|
16 |
-
.wbcr-clr-new-component .wbcr-clr-proccess-button {
|
17 |
-
display: inline-block;
|
18 |
-
margin: 5px 0;
|
19 |
-
}
|
20 |
-
.wbcr-clr-new-component.wbcr-clr-premium {
|
21 |
-
background: #fff6db;
|
22 |
-
border: 1px solid #e4dea9;
|
23 |
-
}
|
24 |
-
.wbcr-clr-new-component.wbcr-clr-premium h4 {
|
25 |
-
color: #88690c;
|
26 |
-
}
|
27 |
-
.wbcr-clr-proccess-button.button-link,
|
28 |
-
.wbcr-clr-proccess-button.button-link:focus {
|
29 |
-
outline: none !important;
|
30 |
-
box-shadow: none !important;
|
31 |
-
}
|
1 |
+
/**
|
2 |
+
* Install addons global styles
|
3 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
+
* @copyright Webcraftic 11.07.2018
|
5 |
+
*/
|
6 |
+
.wbcr-clr-new-component {
|
7 |
+
background: #f7f7f7;
|
8 |
+
border: 1px solid #eaeaea;
|
9 |
+
padding: 5px 20px;
|
10 |
+
margin-bottom: 10px;
|
11 |
+
}
|
12 |
+
.wbcr-clr-new-component h4 {
|
13 |
+
margin: 5px 0;
|
14 |
+
display: inline-block;
|
15 |
+
}
|
16 |
+
.wbcr-clr-new-component .wbcr-clr-proccess-button {
|
17 |
+
display: inline-block;
|
18 |
+
margin: 5px 0;
|
19 |
+
}
|
20 |
+
.wbcr-clr-new-component.wbcr-clr-premium {
|
21 |
+
background: #fff6db;
|
22 |
+
border: 1px solid #e4dea9;
|
23 |
+
}
|
24 |
+
.wbcr-clr-new-component.wbcr-clr-premium h4 {
|
25 |
+
color: #88690c;
|
26 |
+
}
|
27 |
+
.wbcr-clr-proccess-button.button-link,
|
28 |
+
.wbcr-clr-proccess-button.button-link:focus {
|
29 |
+
outline: none !important;
|
30 |
+
box-shadow: none !important;
|
31 |
+
}
|
admin/assets/gutenberg/build/index.build.js
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/******/ (function(modules) { // webpackBootstrap
|
2 |
+
/******/ // The module cache
|
3 |
+
/******/ var installedModules = {};
|
4 |
+
/******/
|
5 |
+
/******/ // The require function
|
6 |
+
/******/ function __webpack_require__(moduleId) {
|
7 |
+
/******/
|
8 |
+
/******/ // Check if module is in cache
|
9 |
+
/******/ if(installedModules[moduleId]) {
|
10 |
+
/******/ return installedModules[moduleId].exports;
|
11 |
+
/******/ }
|
12 |
+
/******/ // Create a new module (and put it into the cache)
|
13 |
+
/******/ var module = installedModules[moduleId] = {
|
14 |
+
/******/ i: moduleId,
|
15 |
+
/******/ l: false,
|
16 |
+
/******/ exports: {}
|
17 |
+
/******/ };
|
18 |
+
/******/
|
19 |
+
/******/ // Execute the module function
|
20 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
21 |
+
/******/
|
22 |
+
/******/ // Flag the module as loaded
|
23 |
+
/******/ module.l = true;
|
24 |
+
/******/
|
25 |
+
/******/ // Return the exports of the module
|
26 |
+
/******/ return module.exports;
|
27 |
+
/******/ }
|
28 |
+
/******/
|
29 |
+
/******/
|
30 |
+
/******/ // expose the modules object (__webpack_modules__)
|
31 |
+
/******/ __webpack_require__.m = modules;
|
32 |
+
/******/
|
33 |
+
/******/ // expose the module cache
|
34 |
+
/******/ __webpack_require__.c = installedModules;
|
35 |
+
/******/
|
36 |
+
/******/ // define getter function for harmony exports
|
37 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
38 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
39 |
+
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
40 |
+
/******/ }
|
41 |
+
/******/ };
|
42 |
+
/******/
|
43 |
+
/******/ // define __esModule on exports
|
44 |
+
/******/ __webpack_require__.r = function(exports) {
|
45 |
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
46 |
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
47 |
+
/******/ }
|
48 |
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
49 |
+
/******/ };
|
50 |
+
/******/
|
51 |
+
/******/ // create a fake namespace object
|
52 |
+
/******/ // mode & 1: value is a module id, require it
|
53 |
+
/******/ // mode & 2: merge all properties of value into the ns
|
54 |
+
/******/ // mode & 4: return value when already ns object
|
55 |
+
/******/ // mode & 8|1: behave like require
|
56 |
+
/******/ __webpack_require__.t = function(value, mode) {
|
57 |
+
/******/ if(mode & 1) value = __webpack_require__(value);
|
58 |
+
/******/ if(mode & 8) return value;
|
59 |
+
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
60 |
+
/******/ var ns = Object.create(null);
|
61 |
+
/******/ __webpack_require__.r(ns);
|
62 |
+
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
63 |
+
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
64 |
+
/******/ return ns;
|
65 |
+
/******/ };
|
66 |
+
/******/
|
67 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
68 |
+
/******/ __webpack_require__.n = function(module) {
|
69 |
+
/******/ var getter = module && module.__esModule ?
|
70 |
+
/******/ function getDefault() { return module['default']; } :
|
71 |
+
/******/ function getModuleExports() { return module; };
|
72 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
73 |
+
/******/ return getter;
|
74 |
+
/******/ };
|
75 |
+
/******/
|
76 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
77 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
78 |
+
/******/
|
79 |
+
/******/ // __webpack_public_path__
|
80 |
+
/******/ __webpack_require__.p = "";
|
81 |
+
/******/
|
82 |
+
/******/
|
83 |
+
/******/ // Load entry module and return exports
|
84 |
+
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
|
85 |
+
/******/ })
|
86 |
+
/************************************************************************/
|
87 |
+
/******/ ({
|
88 |
+
|
89 |
+
/***/ "./src/index.js":
|
90 |
+
/*!**********************!*\
|
91 |
+
!*** ./src/index.js ***!
|
92 |
+
\**********************/
|
93 |
+
/*! no static exports found */
|
94 |
+
/***/ (function(module, exports) {
|
95 |
+
|
96 |
+
eval("function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\n/**\r\n * Gutenber autosave control. A simple solution for managing autosaves in gutenberg editor.\r\n * Previously, we simply turned off autosave using hooks, but in the editor,\r\n * you can’t do this in the gutenber.\r\n *\r\n * This widget for Gutenberg editor adds an icon, when clicked, you can select the autosave interval or full disable it.\r\n *\r\n * @author Webcraftic <wordpress.webraftic@gmail.com>\r\n * @copyright (c) 10.12.2018, Webcraftic\r\n * @version 1.0\r\n *\r\n * Credits:\r\n * This is not our development, we found excellent plugin and used these functions in our plugin. It is foolish to reinvent the wheel.\r\n * I hope in the future we will refine it better and add our ideas.\r\n * In the development of the code used by the author plugin: https://wordpress.org/plugins/disable-gutenberg-autosave/\r\n */\nvar NOT_TODAY = 99999;\nvar INTERVAL_OPTIONS = [{\n label: '10 seconds (default)',\n value: 10\n}, {\n label: '30 seconds',\n value: 30\n}, {\n label: '1 minute',\n value: 60\n}, {\n label: '5 minutes',\n value: 60 * 5\n}, {\n label: '10 minutes',\n value: 60 * 10\n}, {\n label: '30 minutes',\n value: 60 * 30\n}, {\n label: 'Disabled',\n value: NOT_TODAY\n}];\n\nvar ClearfyGutenbergAutosave =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(ClearfyGutenbergAutosave, _React$Component);\n\n function ClearfyGutenbergAutosave(props) {\n var _this;\n\n _classCallCheck(this, ClearfyGutenbergAutosave);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ClearfyGutenbergAutosave).call(this, props));\n _this.state = {\n interval: 0,\n error: false\n };\n _this.apiGetInterval = _this.apiGetInterval.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.apiSetInterval = _this.apiSetInterval.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.editorUpdateInterval = _this.editorUpdateInterval.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(ClearfyGutenbergAutosave, [{\n key: \"apiGetInterval\",\n value: function apiGetInterval() {\n var _this2 = this;\n\n wp.apiFetch({\n path: '/clearfy-gutenberg-autosave/v1/interval'\n }).then(function (interval) {\n _this2.setState({\n interval: interval,\n error: false\n });\n }, function (error) {\n _this2.setState({\n interval: NOT_TODAY,\n error: error.message\n });\n });\n }\n }, {\n key: \"apiSetInterval\",\n value: function apiSetInterval() {\n if (this.state.error) {\n return;\n }\n\n wp.apiFetch({\n path: '/clearfy-gutenberg-autosave/v1/interval?interval=' + parseInt(this.state.interval),\n method: 'POST'\n });\n }\n }, {\n key: \"editorUpdateInterval\",\n value: function editorUpdateInterval() {\n this.props.updateEditorSettings(Object.assign({}, this.props.editorSettings, {\n autosaveInterval: parseInt(this.state.interval)\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.apiGetInterval();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (!this.state.interval) {\n return;\n }\n\n if (prevState.interval && prevState.inverval !== 0 && prevState.interval !== this.state.interval) {\n this.apiSetInterval();\n }\n\n if (this.props.editorSettings.autosaveInterval && this.props.editorSettings.autosaveInterval !== this.state.interval) {\n this.editorUpdateInterval();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(React.Fragment, null, React.createElement(wp.editPost.PluginSidebarMoreMenuItem, {\n target: \"disable-gutenberg-autosave-sidebar\"\n }, 'Clearfy Gutenberg Autosave'), React.createElement(wp.editPost.PluginSidebar, {\n name: \"disable-gutenberg-autosave-sidebar\",\n title: 'Autosave settings'\n }, React.createElement(wp.components.PanelBody, {\n className: \"disable-gutenberg-autosave-settings\"\n }, !this.state.interval && React.createElement(\"p\", null, 'Loading...'), !!this.state.interval && this.state.error && React.createElement(React.Fragment, null, React.createElement(\"h2\", {\n className: \"disable-gutenberg-autosave-header\"\n }, 'API error:'), React.createElement(\"p\", {\n className: \"disable-gutenberg-autosave-error\"\n }, this.state.error), React.createElement(\"p\", null, 'Autosave is disabled anyway, but you cannot set custom intervals.'), React.createElement(wp.components.Button, {\n className: \"button button-primary\",\n onClick: function onClick() {\n _this3.setState({\n interval: 0,\n error: false\n });\n\n _this3.apiGetInterval();\n }\n }, 'Try again')), !!this.state.interval && !this.state.error && React.createElement(wp.components.RadioControl, {\n label: 'Autosave interval',\n options: INTERVAL_OPTIONS,\n selected: parseInt(this.state.interval),\n onChange: function onChange(value) {\n return _this3.setState({\n interval: parseInt(value)\n });\n }\n }))));\n }\n }]);\n\n return ClearfyGutenbergAutosave;\n}(React.Component);\n\nwp.plugins.registerPlugin('clearfy-gutenberg-autosave', {\n icon: 'backup',\n render: wp.compose.compose([wp.data.withSelect(function (select) {\n return {\n editorSettings: select('core/editor').getEditorSettings()\n };\n }), wp.data.withDispatch(function (dispatch) {\n return {\n updateEditorSettings: dispatch('core/editor').updateEditorSettings\n };\n })])(ClearfyGutenbergAutosave)\n});\n\n//# sourceURL=webpack:///./src/index.js?");
|
97 |
+
|
98 |
+
/***/ })
|
99 |
+
|
100 |
+
/******/ });
|
admin/assets/gutenberg/build/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
admin/assets/gutenberg/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
admin/boot.php
CHANGED
@@ -1,9 +1,15 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
-
*
|
5 |
-
*
|
6 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
*/
|
8 |
|
9 |
// Exit if accessed directly
|
1 |
<?php
|
2 |
/**
|
3 |
+
* The boot file is needed to connect backend files, as well as register hooks.
|
4 |
+
* Some hooks are so small that it does not make sense to put them into a file
|
5 |
+
* or put them into a specific group of code.
|
6 |
+
*
|
7 |
+
* I usually register administrator notifications, create handlers before saving
|
8 |
+
* plugin settings or after, register options in the Clearfy plugin.
|
9 |
+
*
|
10 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, Alex Kovalev <alex.kovalevv@gmail.com>
|
11 |
+
* @copyright Webcraftic
|
12 |
+
* @version 1.1
|
13 |
*/
|
14 |
|
15 |
// Exit if accessed directly
|
admin/includes/classes/class.upgrader.php
CHANGED
@@ -1,126 +1,59 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
/**
|
6 |
-
*
|
7 |
*
|
8 |
-
* @since
|
9 |
*
|
10 |
-
* @param
|
11 |
-
*
|
12 |
-
* @
|
|
|
13 |
*/
|
14 |
-
|
15 |
-
{
|
16 |
-
|
17 |
-
|
18 |
-
* Filters whether to return the package.
|
19 |
-
*
|
20 |
-
* @since 3.7.0
|
21 |
-
*
|
22 |
-
* @param bool $reply Whether to bail without returning the package.
|
23 |
-
* Default false.
|
24 |
-
* @param string $package The package file name.
|
25 |
-
* @param WP_Upgrader $this The WP_Upgrader instance.
|
26 |
-
*/
|
27 |
-
$reply = apply_filters('upgrader_pre_download', false, $package, $this);
|
28 |
-
if( false !== $reply ) {
|
29 |
-
return $reply;
|
30 |
-
}
|
31 |
-
|
32 |
-
if( !preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote?
|
33 |
-
{
|
34 |
-
return $package;
|
35 |
-
} //must be a local file..
|
36 |
-
|
37 |
-
if( empty($package) ) {
|
38 |
-
return new WP_Error('no_package', $this->strings['no_package']);
|
39 |
-
}
|
40 |
-
|
41 |
-
$download_file = download_url($package, 1000);
|
42 |
-
|
43 |
-
if( function_exists('mime_content_type') ) {
|
44 |
-
$mime_type = mime_content_type($download_file);
|
45 |
-
} else {
|
46 |
-
$mime_type = $this->mimeContentType($download_file);
|
47 |
-
}
|
48 |
|
49 |
-
|
50 |
-
|
|
|
|
|
51 |
|
52 |
-
|
53 |
-
|
|
|
54 |
|
55 |
-
|
56 |
-
return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message());
|
57 |
-
}
|
58 |
|
59 |
-
|
|
|
60 |
}
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
'php' => 'text/html',
|
69 |
-
'css' => 'text/css',
|
70 |
-
'js' => 'application/javascript',
|
71 |
-
'json' => 'application/json',
|
72 |
-
'xml' => 'application/xml',
|
73 |
-
'swf' => 'application/x-shockwave-flash',
|
74 |
-
'flv' => 'video/x-flv',
|
75 |
-
// images
|
76 |
-
'png' => 'image/png',
|
77 |
-
'jpe' => 'image/jpeg',
|
78 |
-
'jpeg' => 'image/jpeg',
|
79 |
-
'jpg' => 'image/jpeg',
|
80 |
-
'gif' => 'image/gif',
|
81 |
-
'bmp' => 'image/bmp',
|
82 |
-
'ico' => 'image/vnd.microsoft.icon',
|
83 |
-
'tiff' => 'image/tiff',
|
84 |
-
'tif' => 'image/tiff',
|
85 |
-
'svg' => 'image/svg+xml',
|
86 |
-
'svgz' => 'image/svg+xml',
|
87 |
-
// archives
|
88 |
-
'zip' => 'application/zip',
|
89 |
-
'rar' => 'application/x-rar-compressed',
|
90 |
-
'exe' => 'application/x-msdownload',
|
91 |
-
'msi' => 'application/x-msdownload',
|
92 |
-
'cab' => 'application/vnd.ms-cab-compressed',
|
93 |
-
// audio/video
|
94 |
-
'mp3' => 'audio/mpeg',
|
95 |
-
'qt' => 'video/quicktime',
|
96 |
-
'mov' => 'video/quicktime',
|
97 |
-
// adobe
|
98 |
-
'pdf' => 'application/pdf',
|
99 |
-
'psd' => 'image/vnd.adobe.photoshop',
|
100 |
-
'ai' => 'application/postscript',
|
101 |
-
'eps' => 'application/postscript',
|
102 |
-
'ps' => 'application/postscript',
|
103 |
-
// ms office
|
104 |
-
'doc' => 'application/msword',
|
105 |
-
'rtf' => 'application/rtf',
|
106 |
-
'xls' => 'application/vnd.ms-excel',
|
107 |
-
'ppt' => 'application/vnd.ms-powerpoint',
|
108 |
-
// open office
|
109 |
-
'odt' => 'application/vnd.oasis.opendocument.text',
|
110 |
-
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
111 |
-
);
|
112 |
-
|
113 |
-
$ext = strtolower(array_pop(explode('.', $filename)));
|
114 |
-
if( array_key_exists($ext, $mime_types) ) {
|
115 |
-
return $mime_types[$ext];
|
116 |
-
} elseif( function_exists('finfo_open') ) {
|
117 |
-
$finfo = finfo_open(FILEINFO_MIME);
|
118 |
-
$mimetype = finfo_file($finfo, $filename);
|
119 |
-
finfo_close($finfo);
|
120 |
|
121 |
-
|
122 |
-
} else {
|
123 |
-
return 'application/octet-stream';
|
124 |
-
}
|
125 |
}
|
|
|
|
|
126 |
}
|
|
1 |
<?php
|
2 |
|
3 |
+
class WCL_Plugin_Upgrader extends Plugin_Upgrader {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Download a package.
|
7 |
+
*
|
8 |
+
* @since 2.8.0
|
9 |
+
*
|
10 |
+
* @param string $package The URI of the package. If this is the full path to an
|
11 |
+
* existing local file, it will be returned untouched.
|
12 |
+
*
|
13 |
+
* @return string|WP_Error The full path to the downloaded package file, or a WP_Error object.
|
14 |
+
*/
|
15 |
+
public function download_package( $package ) {
|
16 |
|
17 |
/**
|
18 |
+
* Filters whether to return the package.
|
19 |
*
|
20 |
+
* @since 3.7.0
|
21 |
*
|
22 |
+
* @param bool $reply Whether to bail without returning the package.
|
23 |
+
* Default false.
|
24 |
+
* @param string $package The package file name.
|
25 |
+
* @param WP_Upgrader $this The WP_Upgrader instance.
|
26 |
*/
|
27 |
+
$reply = apply_filters( 'upgrader_pre_download', false, $package, $this );
|
28 |
+
if ( false !== $reply ) {
|
29 |
+
return $reply;
|
30 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
+
if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) //Local file or remote?
|
33 |
+
{
|
34 |
+
return $package;
|
35 |
+
} //must be a local file..
|
36 |
|
37 |
+
if ( empty( $package ) ) {
|
38 |
+
return new WP_Error( 'no_package', $this->strings['no_package'] );
|
39 |
+
}
|
40 |
|
41 |
+
$download_file = download_url( $package, 10000 );
|
|
|
|
|
42 |
|
43 |
+
if ( is_wp_error( $download_file ) ) {
|
44 |
+
return new WP_Error( 'download_failed', $this->strings['download_failed'], $download_file->get_error_message() );
|
45 |
}
|
46 |
|
47 |
+
// Temporary fix. Components package is definitely more than 2kb,
|
48 |
+
// if the file weight is less than 2kb, the server returned an error and
|
49 |
+
// empty file saved
|
50 |
+
$filesize = filesize( $download_file );
|
51 |
+
if ( $filesize < ( 2 * 1000 ) ) {
|
52 |
+
@unlink( $download_file );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
+
return new WP_Error( 'download_failed', 'Component package cannot be loaded. The server returned an error.' );
|
|
|
|
|
|
|
55 |
}
|
56 |
+
|
57 |
+
return $download_file;
|
58 |
}
|
59 |
+
}
|
admin/pages/advanced.php
CHANGED
@@ -43,32 +43,6 @@
|
|
43 |
$this->plugin = $plugin;
|
44 |
}
|
45 |
|
46 |
-
protected function isPostRevisionConstant()
|
47 |
-
{
|
48 |
-
$config_path = ABSPATH . '/wp-config.php';
|
49 |
-
|
50 |
-
if( file_exists($config_path) ) {
|
51 |
-
$file = fopen($config_path, 'r');
|
52 |
-
$content = fread($file, filesize($config_path));
|
53 |
-
fclose($file);
|
54 |
-
|
55 |
-
if( !empty($content) && preg_match('/define(.+?)WP_POST_REVISIONS/', $content) ) {
|
56 |
-
return true;
|
57 |
-
}
|
58 |
-
}
|
59 |
-
|
60 |
-
return false;
|
61 |
-
}
|
62 |
-
|
63 |
-
public function warningNotice()
|
64 |
-
{
|
65 |
-
parent::warningNotice();
|
66 |
-
|
67 |
-
if( !$this->plugin->getPopulateOption('revisions_disable') && $this->isPostRevisionConstant() ) {
|
68 |
-
$this->printWarningNotice(__('Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, it determines the number of revisions. Delete it so you can change this value through the admin panel.', 'clearfy'));
|
69 |
-
}
|
70 |
-
}
|
71 |
-
|
72 |
/**
|
73 |
* Permalinks options.
|
74 |
*
|
@@ -80,70 +54,6 @@
|
|
80 |
|
81 |
$options = array();
|
82 |
|
83 |
-
$options[] = array(
|
84 |
-
'type' => 'html',
|
85 |
-
'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>'
|
86 |
-
);
|
87 |
-
|
88 |
-
$options[] = array(
|
89 |
-
'type' => 'dropdown',
|
90 |
-
'name' => 'disable_heartbeat',
|
91 |
-
'way' => 'buttons',
|
92 |
-
'title' => __('Disable Heartbeat', 'clearfy'),
|
93 |
-
'data' => array(
|
94 |
-
array('default', __('Default', 'clearfy')),
|
95 |
-
array('everywhere', __('Everywhere', 'clearfy')),
|
96 |
-
array('on_dashboard_page', __('On dashboard page', 'clearfy')),
|
97 |
-
array('allow_only_on_post_edit_pages', __('Only allow when editing Posts/Pages', 'clearfy'))
|
98 |
-
),
|
99 |
-
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
100 |
-
//'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
|
101 |
-
'events' => array(
|
102 |
-
'default' => array(
|
103 |
-
'show' => '.factory-control-heartbeat_frequency'
|
104 |
-
),
|
105 |
-
'on_dashboard_page' => array(
|
106 |
-
'show' => '.factory-control-heartbeat_frequency'
|
107 |
-
),
|
108 |
-
'allow_only_on_post_edit_pages' => array(
|
109 |
-
'show' => '.factory-control-heartbeat_frequency'
|
110 |
-
),
|
111 |
-
'everywhere' => array(
|
112 |
-
'hide' => '.factory-control-heartbeat_frequency'
|
113 |
-
)
|
114 |
-
),
|
115 |
-
'default' => 'default',
|
116 |
-
);
|
117 |
-
|
118 |
-
$options[] = array(
|
119 |
-
'type' => 'dropdown',
|
120 |
-
'name' => 'heartbeat_frequency',
|
121 |
-
'title' => __('Heartbeat frequency', 'clearfy'),
|
122 |
-
'data' => array(
|
123 |
-
array('default', __('Wordpress default', 'clearfy')),
|
124 |
-
array('20', '20 ' . __('seconds', 'clearfy')),
|
125 |
-
array('25', '25 ' . __('seconds', 'clearfy')),
|
126 |
-
array('30', '30 ' . __('seconds', 'clearfy')),
|
127 |
-
array('35', '35 ' . __('seconds', 'clearfy')),
|
128 |
-
array('40', '40 ' . __('seconds', 'clearfy')),
|
129 |
-
array('45', '45 ' . __('seconds', 'clearfy')),
|
130 |
-
array('50', '50 ' . __('seconds', 'clearfy')),
|
131 |
-
array('55', '55 ' . __('seconds', 'clearfy')),
|
132 |
-
array('60', '60 ' . __('seconds', 'clearfy')),
|
133 |
-
array('80', '80 ' . __('seconds', 'clearfy')),
|
134 |
-
array('120', '120 ' . __('seconds', 'clearfy')),
|
135 |
-
array('150', '150 ' . __('seconds', 'clearfy')),
|
136 |
-
array('200', '200 ' . __('seconds', 'clearfy')),
|
137 |
-
array('250', '250 ' . __('seconds', 'clearfy')),
|
138 |
-
array('300', '300 ' . __('seconds', 'clearfy')),
|
139 |
-
array('400', '400 ' . __('seconds', 'clearfy')),
|
140 |
-
array('500', '500 ' . __('seconds', 'clearfy'))
|
141 |
-
),
|
142 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
143 |
-
'hint' => __('Select the heartbeat frequency wordpress. We recommend you 60 seconds, default is 20 seconds.', 'clearfy'),
|
144 |
-
'default' => 'default'
|
145 |
-
);
|
146 |
-
|
147 |
//============================================================
|
148 |
// ADMINBAR MANAGER COMPONENT
|
149 |
//============================================================
|
@@ -171,114 +81,6 @@
|
|
171 |
'hint' => __('In some cases, you need to disable the floating top admin panel. You can disable this panel.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin top bar.', 'clearfy'),
|
172 |
'default' => 'enable',
|
173 |
);
|
174 |
-
|
175 |
-
$options[] = array(
|
176 |
-
'type' => 'checkbox',
|
177 |
-
'way' => 'buttons',
|
178 |
-
'name' => 'disable_admin_bar_logo',
|
179 |
-
'title' => __('Remove admin bar WP logo', 'clearfy'),
|
180 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
|
181 |
-
'hint' => __('Enable this if you want to remove wp logo from admin bar.', 'clearfy'),
|
182 |
-
'default' => false
|
183 |
-
);
|
184 |
-
|
185 |
-
$options[] = array(
|
186 |
-
'type' => 'checkbox',
|
187 |
-
'way' => 'buttons',
|
188 |
-
'name' => 'replace_howdy_welcome',
|
189 |
-
'title' => __('Replace "Howdy" text with "Welcome"', 'clearfy'),
|
190 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
|
191 |
-
'hint' => __('Replaces the welcome text in admin bar.', 'clearfy'),
|
192 |
-
'default' => false
|
193 |
-
);
|
194 |
-
}
|
195 |
-
|
196 |
-
//============================================================
|
197 |
-
// POST TOOLS COMPONENT
|
198 |
-
//============================================================
|
199 |
-
|
200 |
-
if( $this->plugin->isActivateComponent('post_tools') ) {
|
201 |
-
$options[] = array(
|
202 |
-
'type' => 'html',
|
203 |
-
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Posts', 'clearfy') . '</strong>' . '<p>' . __('In this group of options, you can manage revisions and post autosave.', 'clearfy') . '</p>' . '</div>'
|
204 |
-
);
|
205 |
-
|
206 |
-
$options[] = array(
|
207 |
-
'type' => 'checkbox',
|
208 |
-
'way' => 'buttons',
|
209 |
-
'name' => 'revisions_disable',
|
210 |
-
'title' => __('Disable revision', 'clearfy'),
|
211 |
-
'default' => false,
|
212 |
-
'eventsOn' => array(
|
213 |
-
'hide' => '.factory-control-revision_limit'
|
214 |
-
),
|
215 |
-
'eventsOff' => array(
|
216 |
-
'show' => '.factory-control-revision_limit'
|
217 |
-
),
|
218 |
-
);
|
219 |
-
|
220 |
-
$options[] = array(
|
221 |
-
'type' => 'dropdown',
|
222 |
-
'name' => 'revision_limit',
|
223 |
-
'title' => __('Limit Post Revisions', 'clearfy'),
|
224 |
-
'data' => array(
|
225 |
-
array('default', __('Wordpress default', 'clearfy')),
|
226 |
-
array('15', '15 ' . __('revisions', 'clearfy')),
|
227 |
-
array('20', '20 ' . __('revisions', 'clearfy')),
|
228 |
-
array('25', '25 ' . __('revisions', 'clearfy')),
|
229 |
-
array('30', '30 ' . __('revisions', 'clearfy')),
|
230 |
-
array('35', '35 ' . __('revisions', 'clearfy')),
|
231 |
-
array('40', '40 ' . __('revisions', 'clearfy')),
|
232 |
-
array('45', '45 ' . __('revisions', 'clearfy')),
|
233 |
-
array('50', '50 ' . __('revisions', 'clearfy')),
|
234 |
-
array('55', '55 ' . __('revisions', 'clearfy')),
|
235 |
-
array('60', '60 ' . __('revisions', 'clearfy'))
|
236 |
-
),
|
237 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
238 |
-
'hint' => __('WordPress automatically saves revisions when you are working on posts and pages. These can begin to add up pretty quick. By default, there is no limit in place. We have seen posts with over 1,000 revisions. Multiply this by 50 pages and suddenly you have over 50,000 revisions sitting in your database. The problem with this is that you will most likely never use them and they can start slowing down your database as well as using disk space.
|
239 |
-
So we recommend either disabling or limiting your revisions. ', 'clearfy'),
|
240 |
-
'default' => 'default'
|
241 |
-
);
|
242 |
-
|
243 |
-
$options[] = array(
|
244 |
-
'type' => 'checkbox',
|
245 |
-
'way' => 'buttons',
|
246 |
-
'name' => 'disable_post_autosave',
|
247 |
-
'title' => __('Disable autosave', 'clearfy'),
|
248 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
249 |
-
'hint' => __('WordPress by default automatically saves a draft every 60 seconds (1 minute). There are reasons why you might want to change this.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disables automatic saving of drafts.', 'clearfy'),
|
250 |
-
'default' => false
|
251 |
-
);
|
252 |
-
|
253 |
-
$options[] = array(
|
254 |
-
'type' => 'checkbox',
|
255 |
-
'way' => 'buttons',
|
256 |
-
'name' => 'disable_texturization',
|
257 |
-
'title' => __('Disable Texturization - Smart Quotes', 'clearfy'),
|
258 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
259 |
-
'hint' => __('Function of text formatting. This function makes the text more correct, readable and visually appealing. But sometimes this function may prevent you from using certain codes and symbols.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable Texturization - Smart Quotes.', 'clearfy'),
|
260 |
-
'default' => false
|
261 |
-
);
|
262 |
-
|
263 |
-
$options[] = array(
|
264 |
-
'type' => 'checkbox',
|
265 |
-
'way' => 'buttons',
|
266 |
-
'name' => 'disable_auto_correct_dangit',
|
267 |
-
'title' => __('Disable capitalization in Wordpress branding', 'clearfy'),
|
268 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
269 |
-
'hint' => __('Replaces the incorrectly written letter "p" in the middle of WordPress (you need to write with the capital P in the middle).', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable capitalization in Wordpress branding.', 'clearfy'),
|
270 |
-
'default' => false
|
271 |
-
);
|
272 |
-
|
273 |
-
$options[] = array(
|
274 |
-
'type' => 'checkbox',
|
275 |
-
'way' => 'buttons',
|
276 |
-
'name' => 'disable_auto_paragraph',
|
277 |
-
'title' => __('Disable auto inserted paragraphs (i.e. p tags)', 'clearfy'),
|
278 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
279 |
-
'hint' => __('Replaces the double shifting of a string to an HTML p ... /p construct, and a single one on br.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable auto inserted paragraphs.', 'clearfy'),
|
280 |
-
'default' => false
|
281 |
-
);
|
282 |
}
|
283 |
|
284 |
$formOptions = array();
|
43 |
$this->plugin = $plugin;
|
44 |
}
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
/**
|
47 |
* Permalinks options.
|
48 |
*
|
54 |
|
55 |
$options = array();
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
//============================================================
|
58 |
// ADMINBAR MANAGER COMPONENT
|
59 |
//============================================================
|
81 |
'hint' => __('In some cases, you need to disable the floating top admin panel. You can disable this panel.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin top bar.', 'clearfy'),
|
82 |
'default' => 'enable',
|
83 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
|
86 |
$formOptions = array();
|
admin/pages/clearfy-settings.php
CHANGED
@@ -12,70 +12,71 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
}
|
13 |
|
14 |
class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
15 |
-
|
16 |
/**
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
-
* @see FactoryPages410_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
|
|
|
|
23 |
* @var string
|
24 |
*/
|
25 |
public $id = "clearfy_settings";
|
26 |
-
|
27 |
/**
|
28 |
* @var string
|
29 |
*/
|
30 |
public $page_parent_page = 'none';
|
31 |
-
|
32 |
/**
|
33 |
* @var string
|
34 |
*/
|
35 |
public $page_menu_dashicon = 'dashicons-list-view';
|
36 |
-
|
37 |
/**
|
38 |
* @var bool
|
39 |
*/
|
40 |
public $available_for_multisite = true;
|
41 |
-
|
42 |
/**
|
43 |
* @param WCL_Plugin $plugin
|
44 |
*/
|
45 |
public function __construct( WCL_Plugin $plugin ) {
|
46 |
$this->menu_title = __( 'Clearfy Settings', 'clearfy' );
|
47 |
$this->page_menu_short_description = __( 'Useful tweaks', 'clearfy' );
|
48 |
-
|
49 |
parent::__construct( $plugin );
|
50 |
-
|
51 |
$this->plugin = $plugin;
|
52 |
}
|
53 |
-
|
54 |
-
|
55 |
/**
|
56 |
* Requests assets (js and css) for the page.
|
57 |
*
|
58 |
-
* @see FactoryPages410_AdminPage
|
59 |
-
*
|
60 |
* @since 1.0.0
|
61 |
* @return void
|
|
|
|
|
62 |
*/
|
63 |
public function assets( $scripts, $styles ) {
|
64 |
parent::assets( $scripts, $styles );
|
65 |
-
|
66 |
$this->scripts->add( WCL_PLUGIN_URL . '/admin/assets/js/general.js' );
|
67 |
-
|
68 |
-
$params =
|
69 |
'import_options_nonce' => wp_create_nonce( 'wbcr_clearfy_import_options' ),
|
70 |
-
'i18n' =>
|
71 |
'success_update_settings' => __( 'Settings successfully updated!', 'clearfy' ),
|
72 |
'unknown_error' => __( 'During the setup, an unknown error occurred, please try again or contact the plugin support.', 'clearfy' ),
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
wp_localize_script( 'jquery', 'wbcr_clearfy_ajax', $params );
|
77 |
}
|
78 |
-
|
79 |
/**
|
80 |
* Permalinks options.
|
81 |
*
|
@@ -83,65 +84,65 @@ class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
|
83 |
* @return mixed[]
|
84 |
*/
|
85 |
public function getPageOptions() {
|
86 |
-
|
87 |
-
$options =
|
88 |
-
|
89 |
-
$options[] =
|
90 |
'type' => 'html',
|
91 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Advanced settings', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
92 |
-
|
93 |
-
|
94 |
-
$options[] =
|
95 |
'type' => 'checkbox',
|
96 |
'way' => 'buttons',
|
97 |
'name' => 'disable_clearfy_extra_menu',
|
98 |
'title' => __( 'Disable menu in adminbar', 'clearfy' ),
|
99 |
-
'layout' =>
|
100 |
'hint' => __( 'This setting allows you to disable the additional menu of the Clearfy plugin, in the admin bar. This menu is required to work with the Minify and Combine and Assets Manager components.', 'clearfy' ),
|
101 |
'default' => false
|
102 |
-
|
103 |
-
|
104 |
-
$options[] =
|
105 |
'type' => 'checkbox',
|
106 |
'way' => 'buttons',
|
107 |
'name' => 'complete_uninstall',
|
108 |
'title' => __( 'Complete Uninstall', 'clearfy' ),
|
109 |
-
'layout' =>
|
110 |
'hint' => __( "When the plugin is deleted from the Plugins menu, also delete all plugin settings.", 'clearfy' ),
|
111 |
'default' => false
|
112 |
-
|
113 |
-
|
114 |
-
$options[] =
|
115 |
'type' => 'html',
|
116 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Import/Export', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
117 |
-
|
118 |
-
|
119 |
-
$options[] =
|
120 |
'type' => 'html',
|
121 |
-
'html' =>
|
122 |
-
|
123 |
-
|
124 |
-
$options[] =
|
125 |
'type' => 'html',
|
126 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Support', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
127 |
-
|
128 |
-
|
129 |
-
$options[] =
|
130 |
'type' => 'html',
|
131 |
-
'html' =>
|
132 |
-
|
133 |
-
|
134 |
-
$formOptions =
|
135 |
-
|
136 |
-
$formOptions[] =
|
137 |
'type' => 'form-group',
|
138 |
'items' => $options,
|
139 |
//'cssClass' => 'postbox'
|
140 |
-
|
141 |
-
|
142 |
return apply_filters( 'wbcr/clearfy/settings_form_options', $formOptions, $this );
|
143 |
}
|
144 |
-
|
145 |
public function export() {
|
146 |
?>
|
147 |
<div class="wbcr-clearfy-export-import">
|
@@ -155,7 +156,7 @@ class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
|
155 |
</div>
|
156 |
<?php
|
157 |
}
|
158 |
-
|
159 |
public function supports() {
|
160 |
?>
|
161 |
<div class="wbcr-clearfy-troubleshooting">
|
@@ -175,18 +176,19 @@ class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
|
175 |
</div>
|
176 |
<?php
|
177 |
}
|
178 |
-
|
179 |
/**
|
180 |
* Collects error and system error data
|
|
|
181 |
* @return string
|
182 |
*/
|
183 |
public function getDebugReport() {
|
184 |
$run_time = number_format( microtime( true ), 3 );
|
185 |
-
$pps = number_format( 1 / $run_time, 0 );
|
186 |
$memory_avail = ini_get( 'memory_limit' );
|
187 |
$memory_used = number_format( memory_get_usage( true ) / ( 1024 * 1024 ), 2 );
|
188 |
$memory_peak = number_format( memory_get_peak_usage( true ) / ( 1024 * 1024 ), 2 );
|
189 |
-
|
190 |
$debug = '';
|
191 |
if ( PHP_SAPI == 'cli' ) {
|
192 |
// if run for command line, display some info
|
@@ -196,51 +198,53 @@ class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
|
196 |
$debug = "" //<hr />"
|
197 |
. "<div style=\"text-align: left;\">" . "<hr />" . " Config: " . "<br />" . " | php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . "<br />" . " | Server Timezone: " . date_default_timezone_get() . "<br />" . " Load: " . "<br />" . " | Memory: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . "<br />" . " | Time: {$run_time}s | {$pps} req/sec" . "<br />" . "Url: " . "<br />" . " |" . "<br />" . " | Agent: " . ( @$_SERVER["HTTP_USER_AGENT"] ) . "<br />" . "Version Control: " . "<br />" . " </div>" . "<br />";
|
198 |
}
|
199 |
-
|
200 |
$debug .= "Plugins<br>";
|
201 |
$debug .= "=====================<br>";
|
202 |
-
|
203 |
$plugins = get_plugins();
|
204 |
-
|
205 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
|
|
206 |
foreach ( $plugins as $path => $plugin ) {
|
207 |
if ( is_plugin_active( $path ) ) {
|
208 |
$debug .= $plugin['Name'] . '<br>';
|
209 |
}
|
210 |
}
|
211 |
-
|
212 |
return $debug;
|
213 |
}
|
214 |
-
|
215 |
/**
|
216 |
* Generates a report about the system and plug-in error
|
|
|
217 |
* @return string
|
218 |
*/
|
219 |
public function gererateReportAction() {
|
220 |
require_once( WCL_PLUGIN_DIR . '/includes/classes/class.zip-archive.php' );
|
221 |
-
|
222 |
$reposts_dir = WCL_PLUGIN_DIR . '/reports';
|
223 |
$reports_temp = $reposts_dir . '/temp';
|
224 |
-
|
225 |
if ( ! file_exists( $reposts_dir ) ) {
|
226 |
mkdir( $reposts_dir, 0777, true );
|
227 |
}
|
228 |
-
|
229 |
if ( ! file_exists( $reports_temp ) ) {
|
230 |
mkdir( $reports_temp, 0777, true );
|
231 |
}
|
232 |
-
|
233 |
$file = fopen( $reports_temp . '/site-info.html', 'w+' );
|
234 |
fputs( $file, $this->getDebugReport() );
|
235 |
fclose( $file );
|
236 |
-
|
237 |
$download_file_name = 'webcraftic-clearfy-report-' . date( 'Y.m.d-H.i.s' ) . '.zip';
|
238 |
$download_file_path = WCL_PLUGIN_DIR . '/reports/' . $download_file_name;
|
239 |
-
|
240 |
Wbcr_ExtendedZip::zipTree( WCL_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE );
|
241 |
-
|
242 |
array_map( 'unlink', glob( WCL_PLUGIN_DIR . "/reports/temp/*" ) );
|
243 |
-
|
244 |
wp_redirect( WCL_PLUGIN_URL . '/reports/' . $download_file_name );
|
245 |
exit;
|
246 |
}
|
12 |
}
|
13 |
|
14 |
class WCL_ClearfySettingsPage extends Wbcr_FactoryClearfy206_PageBase {
|
15 |
+
|
16 |
/**
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
|
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
+
* @see FactoryPages410_AdminPage
|
23 |
+
*
|
24 |
* @var string
|
25 |
*/
|
26 |
public $id = "clearfy_settings";
|
27 |
+
|
28 |
/**
|
29 |
* @var string
|
30 |
*/
|
31 |
public $page_parent_page = 'none';
|
32 |
+
|
33 |
/**
|
34 |
* @var string
|
35 |
*/
|
36 |
public $page_menu_dashicon = 'dashicons-list-view';
|
37 |
+
|
38 |
/**
|
39 |
* @var bool
|
40 |
*/
|
41 |
public $available_for_multisite = true;
|
42 |
+
|
43 |
/**
|
44 |
* @param WCL_Plugin $plugin
|
45 |
*/
|
46 |
public function __construct( WCL_Plugin $plugin ) {
|
47 |
$this->menu_title = __( 'Clearfy Settings', 'clearfy' );
|
48 |
$this->page_menu_short_description = __( 'Useful tweaks', 'clearfy' );
|
49 |
+
|
50 |
parent::__construct( $plugin );
|
51 |
+
|
52 |
$this->plugin = $plugin;
|
53 |
}
|
54 |
+
|
55 |
+
|
56 |
/**
|
57 |
* Requests assets (js and css) for the page.
|
58 |
*
|
|
|
|
|
59 |
* @since 1.0.0
|
60 |
* @return void
|
61 |
+
* @see FactoryPages410_AdminPage
|
62 |
+
*
|
63 |
*/
|
64 |
public function assets( $scripts, $styles ) {
|
65 |
parent::assets( $scripts, $styles );
|
66 |
+
|
67 |
$this->scripts->add( WCL_PLUGIN_URL . '/admin/assets/js/general.js' );
|
68 |
+
|
69 |
+
$params = [
|
70 |
'import_options_nonce' => wp_create_nonce( 'wbcr_clearfy_import_options' ),
|
71 |
+
'i18n' => [
|
72 |
'success_update_settings' => __( 'Settings successfully updated!', 'clearfy' ),
|
73 |
'unknown_error' => __( 'During the setup, an unknown error occurred, please try again or contact the plugin support.', 'clearfy' ),
|
74 |
+
]
|
75 |
+
];
|
76 |
+
|
77 |
wp_localize_script( 'jquery', 'wbcr_clearfy_ajax', $params );
|
78 |
}
|
79 |
+
|
80 |
/**
|
81 |
* Permalinks options.
|
82 |
*
|
84 |
* @return mixed[]
|
85 |
*/
|
86 |
public function getPageOptions() {
|
87 |
+
|
88 |
+
$options = [];
|
89 |
+
|
90 |
+
$options[] = [
|
91 |
'type' => 'html',
|
92 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Advanced settings', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
93 |
+
];
|
94 |
+
|
95 |
+
$options[] = [
|
96 |
'type' => 'checkbox',
|
97 |
'way' => 'buttons',
|
98 |
'name' => 'disable_clearfy_extra_menu',
|
99 |
'title' => __( 'Disable menu in adminbar', 'clearfy' ),
|
100 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'red' ],
|
101 |
'hint' => __( 'This setting allows you to disable the additional menu of the Clearfy plugin, in the admin bar. This menu is required to work with the Minify and Combine and Assets Manager components.', 'clearfy' ),
|
102 |
'default' => false
|
103 |
+
];
|
104 |
+
|
105 |
+
$options[] = [
|
106 |
'type' => 'checkbox',
|
107 |
'way' => 'buttons',
|
108 |
'name' => 'complete_uninstall',
|
109 |
'title' => __( 'Complete Uninstall', 'clearfy' ),
|
110 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
111 |
'hint' => __( "When the plugin is deleted from the Plugins menu, also delete all plugin settings.", 'clearfy' ),
|
112 |
'default' => false
|
113 |
+
];
|
114 |
+
|
115 |
+
$options[] = [
|
116 |
'type' => 'html',
|
117 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Import/Export', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
118 |
+
];
|
119 |
+
|
120 |
+
$options[] = [
|
121 |
'type' => 'html',
|
122 |
+
'html' => [ $this, 'export' ]
|
123 |
+
];
|
124 |
+
|
125 |
+
$options[] = [
|
126 |
'type' => 'html',
|
127 |
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Support', 'clearfy' ) . '</strong>' . '<p>' . __( 'This group of settings allows you to configure the work of the Clearfy plugin.', 'clearfy' ) . '</p>' . '</div>'
|
128 |
+
];
|
129 |
+
|
130 |
+
$options[] = [
|
131 |
'type' => 'html',
|
132 |
+
'html' => [ $this, 'supports' ]
|
133 |
+
];
|
134 |
+
|
135 |
+
$formOptions = [];
|
136 |
+
|
137 |
+
$formOptions[] = [
|
138 |
'type' => 'form-group',
|
139 |
'items' => $options,
|
140 |
//'cssClass' => 'postbox'
|
141 |
+
];
|
142 |
+
|
143 |
return apply_filters( 'wbcr/clearfy/settings_form_options', $formOptions, $this );
|
144 |
}
|
145 |
+
|
146 |
public function export() {
|
147 |
?>
|
148 |
<div class="wbcr-clearfy-export-import">
|
156 |
</div>
|
157 |
<?php
|
158 |
}
|
159 |
+
|
160 |
public function supports() {
|
161 |
?>
|
162 |
<div class="wbcr-clearfy-troubleshooting">
|
176 |
</div>
|
177 |
<?php
|
178 |
}
|
179 |
+
|
180 |
/**
|
181 |
* Collects error and system error data
|
182 |
+
*
|
183 |
* @return string
|
184 |
*/
|
185 |
public function getDebugReport() {
|
186 |
$run_time = number_format( microtime( true ), 3 );
|
187 |
+
$pps = number_format( 1 / floatval( $run_time ), 0 );
|
188 |
$memory_avail = ini_get( 'memory_limit' );
|
189 |
$memory_used = number_format( memory_get_usage( true ) / ( 1024 * 1024 ), 2 );
|
190 |
$memory_peak = number_format( memory_get_peak_usage( true ) / ( 1024 * 1024 ), 2 );
|
191 |
+
|
192 |
$debug = '';
|
193 |
if ( PHP_SAPI == 'cli' ) {
|
194 |
// if run for command line, display some info
|
198 |
$debug = "" //<hr />"
|
199 |
. "<div style=\"text-align: left;\">" . "<hr />" . " Config: " . "<br />" . " | php " . phpversion() . " " . php_sapi_name() . " / zend engine " . zend_version() . "<br />" . " | Server Timezone: " . date_default_timezone_get() . "<br />" . " Load: " . "<br />" . " | Memory: {$memory_avail} (avail) / {$memory_used}M (used) / {$memory_peak}M (peak)" . "<br />" . " | Time: {$run_time}s | {$pps} req/sec" . "<br />" . "Url: " . "<br />" . " |" . "<br />" . " | Agent: " . ( @$_SERVER["HTTP_USER_AGENT"] ) . "<br />" . "Version Control: " . "<br />" . " </div>" . "<br />";
|
200 |
}
|
201 |
+
|
202 |
$debug .= "Plugins<br>";
|
203 |
$debug .= "=====================<br>";
|
204 |
+
|
205 |
$plugins = get_plugins();
|
206 |
+
|
207 |
require_once ABSPATH . '/wp-admin/includes/plugin.php';
|
208 |
+
|
209 |
foreach ( $plugins as $path => $plugin ) {
|
210 |
if ( is_plugin_active( $path ) ) {
|
211 |
$debug .= $plugin['Name'] . '<br>';
|
212 |
}
|
213 |
}
|
214 |
+
|
215 |
return $debug;
|
216 |
}
|
217 |
+
|
218 |
/**
|
219 |
* Generates a report about the system and plug-in error
|
220 |
+
*
|
221 |
* @return string
|
222 |
*/
|
223 |
public function gererateReportAction() {
|
224 |
require_once( WCL_PLUGIN_DIR . '/includes/classes/class.zip-archive.php' );
|
225 |
+
|
226 |
$reposts_dir = WCL_PLUGIN_DIR . '/reports';
|
227 |
$reports_temp = $reposts_dir . '/temp';
|
228 |
+
|
229 |
if ( ! file_exists( $reposts_dir ) ) {
|
230 |
mkdir( $reposts_dir, 0777, true );
|
231 |
}
|
232 |
+
|
233 |
if ( ! file_exists( $reports_temp ) ) {
|
234 |
mkdir( $reports_temp, 0777, true );
|
235 |
}
|
236 |
+
|
237 |
$file = fopen( $reports_temp . '/site-info.html', 'w+' );
|
238 |
fputs( $file, $this->getDebugReport() );
|
239 |
fclose( $file );
|
240 |
+
|
241 |
$download_file_name = 'webcraftic-clearfy-report-' . date( 'Y.m.d-H.i.s' ) . '.zip';
|
242 |
$download_file_path = WCL_PLUGIN_DIR . '/reports/' . $download_file_name;
|
243 |
+
|
244 |
Wbcr_ExtendedZip::zipTree( WCL_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE );
|
245 |
+
|
246 |
array_map( 'unlink', glob( WCL_PLUGIN_DIR . "/reports/temp/*" ) );
|
247 |
+
|
248 |
wp_redirect( WCL_PLUGIN_URL . '/reports/' . $download_file_name );
|
249 |
exit;
|
250 |
}
|
admin/pages/components.php
CHANGED
@@ -1,466 +1,452 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
-
*
|
4 |
*
|
5 |
-
*
|
6 |
-
* @copyright (c) 2017, OnePress Ltd
|
7 |
*
|
8 |
* @since 1.0.0
|
|
|
|
|
|
|
9 |
*/
|
|
|
10 |
|
11 |
-
|
12 |
-
if( !defined('ABSPATH') ) {
|
13 |
-
exit;
|
14 |
-
}
|
15 |
|
16 |
-
|
17 |
|
18 |
-
|
19 |
-
* The id of the page in the admin menu.
|
20 |
-
*
|
21 |
-
* Mainly used to navigate between pages.
|
22 |
-
* @see FactoryPages410_AdminPage
|
23 |
-
*
|
24 |
-
* @since 1.0.0
|
25 |
-
* @var string
|
26 |
-
*/
|
27 |
-
public $id = "components";
|
28 |
|
29 |
-
|
30 |
|
31 |
-
|
32 |
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
public $available_for_multisite = true;
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
*/
|
42 |
-
public function __construct(WCL_Plugin $plugin)
|
43 |
-
{
|
44 |
-
$this->menu_title = __('Components', 'clearfy');
|
45 |
-
$this->page_menu_short_description = __('More features for plugin', 'clearfy');
|
46 |
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
-
|
50 |
-
}
|
51 |
|
52 |
/**
|
53 |
-
*
|
54 |
-
*
|
55 |
-
* @see FactoryPages410_AdminPage
|
56 |
*
|
57 |
-
* @
|
58 |
-
* @
|
59 |
*/
|
60 |
-
|
61 |
-
|
62 |
-
parent::assets($scripts, $styles);
|
63 |
-
|
64 |
-
$this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
}
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
*/
|
77 |
-
public function warningNotice()
|
78 |
-
{
|
79 |
-
$package_plugin = WCL_Package::instance();
|
80 |
-
$package_update_notice = $package_plugin->getUpdateNotice();
|
81 |
-
|
82 |
-
if( $package_update_notice ) {
|
83 |
-
$this->printWarningNotice($package_update_notice);
|
84 |
-
}
|
85 |
}
|
|
|
86 |
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
public function forceUpdateComponentsAction()
|
126 |
-
{
|
127 |
-
check_admin_referer('force_update_componetns');
|
128 |
|
129 |
-
|
130 |
-
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
}
|
135 |
|
136 |
-
|
|
|
|
|
137 |
|
138 |
-
|
139 |
-
$result = $package_plugin->update();
|
140 |
|
141 |
-
|
142 |
-
|
143 |
-
}
|
144 |
|
145 |
-
|
146 |
-
|
147 |
-
$this->redirectToAction('index', array('wbcr-force-update-components-error' => 'unknown_error'));
|
148 |
}
|
149 |
|
150 |
-
$this->redirectToAction('index');
|
|
|
|
|
151 |
}
|
152 |
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
$order_key = 'free_active';
|
|
|
|
|
179 |
}
|
180 |
-
}
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
$order_key = 'free_active';
|
185 |
-
} else {
|
186 |
-
$order_key = 'free_deactive';
|
187 |
-
}
|
188 |
} else {
|
189 |
-
|
190 |
-
if( $component['actived'] ) {
|
191 |
-
$order_key = 'premium_active';
|
192 |
-
} else {
|
193 |
-
$order_key = 'premium_deactive';
|
194 |
-
}
|
195 |
}
|
196 |
}
|
197 |
-
$ordered_components[$order_key][] = $component;
|
198 |
}
|
199 |
-
|
200 |
-
return array_merge($ordered_components['premium_active'], $ordered_components['premium_deactive'], $ordered_components['free_active'], $ordered_components['free_deactive']);
|
201 |
}
|
202 |
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
$
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
$
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
'icon' => isset($freemius_addon->icon) ? $freemius_addon->icon : WCL_PLUGIN_URL . '/admin/assets/img/ctr-icon-128x128.png',
|
358 |
-
'description' => isset($freemius_addon->info) ? __($freemius_addon->info->short_description, 'clearfy') : '',
|
359 |
-
);
|
360 |
-
|
361 |
-
if( in_array($component['name'], $freemius_activated_addons) ) {
|
362 |
-
$component['actived'] = true;
|
363 |
-
}
|
364 |
-
|
365 |
-
array_unshift($response, $component);
|
366 |
}
|
|
|
|
|
367 |
}
|
368 |
-
|
|
|
369 |
|
370 |
|
371 |
-
|
372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
/**
|
374 |
-
* @param array $components
|
375 |
* @since 1.4.0
|
376 |
*/
|
377 |
-
|
378 |
-
|
379 |
?>
|
380 |
-
<div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'clearfy') ?>
|
381 |
-
<p>
|
382 |
-
<?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'clearfy') ?>
|
383 |
-
</p>
|
384 |
-
</div>
|
385 |
|
386 |
-
|
387 |
-
<?php
|
388 |
-
|
|
|
389 |
|
390 |
-
|
|
|
|
|
391 |
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
$install_button = WCL_Plugin::app()->getInstallComponentsButton($component['type'], $slug);
|
398 |
-
|
399 |
-
if( !$component['actived'] ) {
|
400 |
-
$status_class = ' plugin-status-deactive';
|
401 |
-
} else {
|
402 |
-
$status_class = ' plugin-status-active';
|
403 |
-
}
|
404 |
-
|
405 |
-
if( !$component['is_free'] ) {
|
406 |
-
$status_class .= ' premium';
|
407 |
-
}
|
408 |
} else {
|
409 |
-
$
|
|
|
410 |
|
411 |
-
|
412 |
-
|
413 |
-
$status_class = ' plugin-status-deactive';
|
414 |
-
}
|
415 |
}
|
|
|
|
|
416 |
|
417 |
-
$
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
?>
|
424 |
-
|
425 |
-
<div class="plugin-card<?= $status_class ?>">
|
426 |
-
<?php if( $component['type'] == 'freemius' && !$component['is_free'] ): ?>
|
427 |
-
<div class="premium-ribbon"><?php _e('Premium', 'clearfy') ?></div>
|
428 |
-
<?php endif; ?>
|
429 |
-
<div class="plugin-card-top">
|
430 |
-
<div class="name column-name">
|
431 |
-
<h3>
|
432 |
-
<a href="<?= $component['url'] ?>" class="thickbox open-plugin-details-modal">
|
433 |
-
<?= $component['title'] ?>
|
434 |
-
<img src="<?= $component['icon'] ?>" class="plugin-icon" alt="">
|
435 |
-
</a>
|
436 |
-
</h3>
|
437 |
-
</div>
|
438 |
-
<div class="desc column-description">
|
439 |
-
<p><?= $component['description']; ?></p>
|
440 |
-
<?php // For the test, we display the current version and the current one ?>
|
441 |
-
<?php if( isset($component['version']) ) : ?><p>
|
442 |
-
Freemius: <?php echo $component['version']; ?>,
|
443 |
-
current: <?php echo $licensing->getAddonCurrentVersion($slug); ?></p><?php endif; ?>
|
444 |
-
</div>
|
445 |
-
</div>
|
446 |
-
<div class="plugin-card-bottom">
|
447 |
-
<?php $delete_button->renderButton(); ?> <?php $install_button->renderButton(); ?>
|
448 |
-
</div>
|
449 |
-
</div>
|
450 |
-
<?php endforeach; ?>
|
451 |
|
|
|
452 |
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
*/
|
457 |
-
do_action('wbcr/clearfy/components/custom_plugins_card', $components);
|
458 |
-
?>
|
459 |
|
460 |
-
|
461 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
462 |
<?php
|
463 |
-
}
|
464 |
}
|
|
|
465 |
|
466 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* This file is the add-ons page.
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex@byonepress.com>
|
6 |
+
* @since 1.0.0
|
7 |
+
* @copyright (c) 2017, OnePress Ltd
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
class WCL_ComponentsPage extends Wbcr_FactoryClearfy206_PageBase {
|
17 |
+
|
18 |
/**
|
19 |
+
* The id of the page in the admin menu.
|
20 |
*
|
21 |
+
* Mainly used to navigate between pages.
|
|
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
+
* @see FactoryPages410_AdminPage
|
25 |
+
*
|
26 |
+
* @var string
|
27 |
*/
|
28 |
+
public $id = "components";
|
29 |
|
30 |
+
public $page_menu_position = 0;
|
|
|
|
|
|
|
31 |
|
32 |
+
public $page_menu_dashicon = 'dashicons-admin-plugins';
|
33 |
|
34 |
+
public $type = 'page';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
+
public $show_right_sidebar_in_options = false;
|
37 |
|
38 |
+
public $available_for_multisite = true;
|
39 |
|
40 |
+
/**
|
41 |
+
* @param WCL_Plugin $plugin
|
42 |
+
*/
|
43 |
+
public function __construct( WCL_Plugin $plugin ) {
|
44 |
+
$this->menu_title = __( 'Components', 'clearfy' );
|
45 |
+
$this->page_menu_short_description = __( 'More features for plugin', 'clearfy' );
|
46 |
|
47 |
+
parent::__construct( $plugin );
|
|
|
|
|
48 |
|
49 |
+
$this->plugin = $plugin;
|
50 |
+
}
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
+
/**
|
53 |
+
* Requests assets (js and css) for the page.
|
54 |
+
*
|
55 |
+
* @since 1.0.0
|
56 |
+
* @return void
|
57 |
+
* @see FactoryPages410_AdminPage
|
58 |
+
*
|
59 |
+
*/
|
60 |
+
public function assets( $scripts, $styles ) {
|
61 |
+
parent::assets( $scripts, $styles );
|
62 |
|
63 |
+
$this->styles->add( WCL_PLUGIN_URL . '/admin/assets/css/components.css' );
|
|
|
64 |
|
65 |
/**
|
66 |
+
* @since 1.4.0
|
|
|
|
|
67 |
*
|
68 |
+
* @param Wbcr_Factory409_StyleList $styles
|
69 |
+
* @param Wbcr_Factory409_ScriptList $scripts
|
70 |
*/
|
71 |
+
do_action( 'wbcr/clearfy/components/page_assets', $scripts, $styles );
|
72 |
+
}
|
|
|
|
|
|
|
73 |
|
74 |
+
/**
|
75 |
+
* Shows notification inside Clearfy interface
|
76 |
+
*/
|
77 |
+
public function warningNotice() {
|
78 |
+
$package_plugin = WCL_Package::instance();
|
79 |
+
$package_update_notice = $package_plugin->getUpdateNotice();
|
|
|
80 |
|
81 |
+
if ( $package_update_notice ) {
|
82 |
+
$this->printWarningNotice( $package_update_notice );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
+
}
|
85 |
|
86 |
|
87 |
+
/**
|
88 |
+
* We register notifications for some actions
|
89 |
+
*
|
90 |
+
* @param $notices
|
91 |
+
* @param Wbcr_Factory409_Plugin $plugin
|
92 |
+
*
|
93 |
+
* @return array
|
94 |
+
* @see libs\factory\pages\themplates\FactoryPages410_ImpressiveThemplate
|
95 |
+
*/
|
96 |
+
public function getActionNotices( $notices ) {
|
97 |
+
$notices[] = [
|
98 |
+
'conditions' => [
|
99 |
+
'wbcr-force-update-components-success' => 1
|
100 |
+
],
|
101 |
+
'type' => 'success',
|
102 |
+
'message' => __( 'Components have been successfully updated to the latest version.', 'clearfy' )
|
103 |
+
];
|
104 |
+
|
105 |
+
$notices[] = [
|
106 |
+
'conditions' => [
|
107 |
+
'wbcr-force-update-components-error' => 'inactive_licence'
|
108 |
+
],
|
109 |
+
'type' => 'danger',
|
110 |
+
'message' => __( 'To use premium components, you need activate a license!', 'clearfy' ) . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __( 'Activate license', 'clearfy' ) . '</a>'
|
111 |
+
];
|
112 |
+
|
113 |
+
$notices[] = [
|
114 |
+
'conditions' => [
|
115 |
+
'wbcr-force-update-components-error' => 'unknown_error'
|
116 |
+
],
|
117 |
+
'type' => 'danger',
|
118 |
+
'message' => __( 'An unknown error occurred while updating plugin components. Please contact the plugin support team to resolve this issue.', 'hide_my_wp' )
|
119 |
+
];
|
120 |
+
|
121 |
+
return $notices;
|
122 |
+
}
|
|
|
|
|
|
|
|
|
123 |
|
124 |
+
public function forceUpdateComponentsAction() {
|
125 |
+
check_admin_referer( 'force_update_componetns' );
|
126 |
|
127 |
+
$licensing = WCL_Licensing::instance();
|
128 |
+
$licensing->getAddons( true ); // обновляем список аддонов
|
|
|
129 |
|
130 |
+
if ( ! $licensing->isLicenseValid() and $licensing->isActivePaidAddons() ) {
|
131 |
+
$this->redirectToAction( 'index', [ 'wbcr-force-update-components-error' => 'inactive_licence' ] );
|
132 |
+
}
|
133 |
|
134 |
+
$package_plugin = WCL_Package::instance();
|
|
|
135 |
|
136 |
+
try {
|
137 |
+
$result = $package_plugin->update();
|
|
|
138 |
|
139 |
+
if ( is_wp_error( $result ) ) {
|
140 |
+
$this->redirectToAction( 'index', [ 'wbcr-force-update-components-error' => 'unknown_error' ] );
|
|
|
141 |
}
|
142 |
|
143 |
+
$this->redirectToAction( 'index', [ 'wbcr-force-update-components-success' => 1 ] );
|
144 |
+
} catch( Exception $e ) {
|
145 |
+
$this->redirectToAction( 'index', [ 'wbcr-force-update-components-error' => 'unknown_error' ] );
|
146 |
}
|
147 |
|
148 |
+
$this->redirectToAction( 'index' );
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* This method simply sorts the list of components.
|
153 |
+
*
|
154 |
+
* @param $components
|
155 |
+
*
|
156 |
+
* @return array
|
157 |
+
*/
|
158 |
+
public function order( $components ) {
|
159 |
+
|
160 |
+
$deactivate_components = WCL_Plugin::app()->getPopulateOption( 'deactive_preinstall_components', [] );
|
161 |
+
|
162 |
+
$ordered_components = [
|
163 |
+
'premium_active' => [],
|
164 |
+
'premium_deactive' => [],
|
165 |
+
'free_active' => [],
|
166 |
+
'free_deactive' => [],
|
167 |
+
];
|
168 |
+
$order_key = 'free_deactive';
|
169 |
+
foreach ( $components as $component ) {
|
170 |
+
if ( in_array( $component['type'], [ 'wordpress', 'internal' ] ) ) {
|
171 |
+
if ( in_array( $component['name'], $deactivate_components ) ) {
|
172 |
+
// free component is deactivated
|
173 |
+
$order_key = 'free_deactive';
|
174 |
+
} else {
|
175 |
+
// free component activated
|
176 |
+
$order_key = 'free_active';
|
177 |
+
}
|
178 |
+
} else if ( $component['type'] == 'freemius' ) {
|
179 |
+
if ( $component['is_free'] ) {
|
180 |
+
// freemius free
|
181 |
+
if ( $component['actived'] ) {
|
182 |
$order_key = 'free_active';
|
183 |
+
} else {
|
184 |
+
$order_key = 'free_deactive';
|
185 |
}
|
186 |
+
} else {
|
187 |
+
// freemius premium
|
188 |
+
if ( $component['actived'] ) {
|
189 |
+
$order_key = 'premium_active';
|
|
|
|
|
|
|
|
|
190 |
} else {
|
191 |
+
$order_key = 'premium_deactive';
|
|
|
|
|
|
|
|
|
|
|
192 |
}
|
193 |
}
|
|
|
194 |
}
|
195 |
+
$ordered_components[ $order_key ][] = $component;
|
|
|
196 |
}
|
197 |
|
198 |
+
return array_merge( $ordered_components['premium_active'], $ordered_components['premium_deactive'], $ordered_components['free_active'], $ordered_components['free_deactive'] );
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* This method simply show contents of the component page.
|
203 |
+
*
|
204 |
+
* @throws Exception
|
205 |
+
*/
|
206 |
+
public function showPageContent() {
|
207 |
+
$freemius_activated_addons = WCL_Plugin::app()->getPopulateOption( 'freemius_activated_addons', [] ); // это только для фримиус
|
208 |
+
|
209 |
+
$default_image = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAiIGhlaWdodD0iMzYwIiB2aWV3Ym94PSIwIDAgMzYwIDM2MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmdiKDcwLCA4MSwgOTMpIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wNTQ2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wNDYiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDU0NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjAyODY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA5OCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIwLCA2MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDYzMzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDg5MzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wODkzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxMjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDE4MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjA1NDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMTE1MzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA4MDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjEzMjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAzMDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjAzNzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTI0IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDMwMCkiIC8+PC9zdmc+';
|
210 |
+
$response = [];
|
211 |
+
|
212 |
+
// Удаляется при компиляции
|
213 |
+
|
214 |
+
$response = array_merge( $response, [
|
215 |
+
[
|
216 |
+
'name' => 'robin_image_optimizer',
|
217 |
+
'title' => __( 'Robin image optimizer', 'clearfy' ),
|
218 |
+
'url' => 'https://wordpress.org/plugins/robin-image-optimizer/',
|
219 |
+
'type' => 'wordpress',
|
220 |
+
'base_path' => 'robin-image-optimizer/robin-image-optimizer.php',
|
221 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/rio-icon-128x128.png',
|
222 |
+
'description' => __( 'Automatic image optimization without any quality loss. No limitations, no paid plans. The best Wordpress image optimization plugin allows optimizing any amount of images for free!', 'clearfy' )
|
223 |
+
],
|
224 |
+
[
|
225 |
+
'name' => 'hide_login_page',
|
226 |
+
'title' => __( 'Hide login page', 'clearfy' ),
|
227 |
+
'url' => 'https://wordpress.org/plugins/hide-login-page/',
|
228 |
+
'type' => 'wordpress',
|
229 |
+
'base_path' => 'hide-login-page/hide-login-page.php',
|
230 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/hlp-icon-128x128.png',
|
231 |
+
'description' => __( 'Hide Login Page is a very light plugin that lets you easily and safely change the url of the login form page to anything you want.', 'clearfy' )
|
232 |
+
],
|
233 |
+
[
|
234 |
+
'name' => 'html_minify',
|
235 |
+
'title' => __( 'Html minify', 'clearfy' ),
|
236 |
+
'url' => '#',
|
237 |
+
'type' => 'internal',
|
238 |
+
'icon' => $default_image,
|
239 |
+
'description' => __( 'Ever look at the HTML markup of your website and notice how sloppy and amateurish it looks? The Minify HTML options cleans up sloppy looking markup and minifies, which also speeds up download', 'clearfy' )
|
240 |
+
],
|
241 |
+
[
|
242 |
+
'name' => 'minify_and_combine',
|
243 |
+
'title' => __( 'Minify and combine (JS, CSS)', 'clearfy' ),
|
244 |
+
'url' => '#',
|
245 |
+
'type' => 'internal',
|
246 |
+
'icon' => $default_image,
|
247 |
+
'description' => __( 'Improve your speed score on GTmetrix, Pingdom Tools and Google PageSpeed Insights by merging and minifying CSS, JavaScript.', 'clearfy' )
|
248 |
+
],
|
249 |
+
[
|
250 |
+
'name' => 'ga_cache',
|
251 |
+
'title' => __( 'Google Analytics Cache', 'clearfy' ),
|
252 |
+
'url' => 'https://wordpress.org/plugins/simple-google-analytics/',
|
253 |
+
'type' => 'internal',
|
254 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/gac-icon-128x128.jpg',
|
255 |
+
'description' => __( 'To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally.', 'clearfy' )
|
256 |
+
],
|
257 |
+
[
|
258 |
+
'name' => 'updates_manager',
|
259 |
+
'title' => __( 'Updates manager', 'clearfy' ),
|
260 |
+
'url' => 'https://wordpress.org/plugins/webcraftic-updates-manager/',
|
261 |
+
'type' => 'internal',
|
262 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/upm-icon-128x128.png',
|
263 |
+
'description' => __( 'Disable updates enable auto updates for themes, plugins and WordPress.', 'clearfy' )
|
264 |
+
],
|
265 |
+
[
|
266 |
+
'name' => 'comments_tools',
|
267 |
+
'title' => __( 'Comments tools', 'clearfy' ),
|
268 |
+
'url' => '#',
|
269 |
+
'type' => 'internal',
|
270 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/dic-icon-128x128.png',
|
271 |
+
'description' => __( 'Bulk disable and remove comments, disable “Website” field, hides external links, disable XML-RPC.', 'clearfy' )
|
272 |
+
],
|
273 |
+
[
|
274 |
+
'name' => 'widget_tools',
|
275 |
+
'title' => __( 'Widgets tools', 'clearfy' ),
|
276 |
+
'url' => '#',
|
277 |
+
'type' => 'internal',
|
278 |
+
'icon' => $default_image,
|
279 |
+
'description' => __( 'Disable unused widgets such as tag cloud, links, calendar etc.', 'clearfy' )
|
280 |
+
],
|
281 |
+
[
|
282 |
+
'name' => 'assets_manager',
|
283 |
+
'title' => __( 'Asset manager', 'clearfy' ),
|
284 |
+
'url' => '#',
|
285 |
+
'type' => 'internal',
|
286 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/asm-icon-128x128.png',
|
287 |
+
'description' => __( 'Selectively disable unused scripts and styles on the pages of your website.', 'clearfy' )
|
288 |
+
],
|
289 |
+
[
|
290 |
+
'name' => 'disable_notices',
|
291 |
+
'title' => __( 'Disable admin notices', 'clearfy' ),
|
292 |
+
'url' => '#',
|
293 |
+
'type' => 'internal',
|
294 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/dan-icon-128x128.png',
|
295 |
+
'description' => __( 'Disables admin notices bulk or individually. Collects notices into the admin bar.', 'clearfy' )
|
296 |
+
],
|
297 |
+
[
|
298 |
+
'name' => 'adminbar_manager',
|
299 |
+
'title' => __( 'Admin bar manager', 'clearfy' ),
|
300 |
+
'url' => '#',
|
301 |
+
'type' => 'internal',
|
302 |
+
'icon' => $default_image,
|
303 |
+
'description' => __( 'Disables admin bar. Allows to change and remove admin bar elements.', 'clearfy' )
|
304 |
+
],
|
305 |
+
[
|
306 |
+
'name' => 'yoast_seo',
|
307 |
+
'title' => __( 'Yoast SEO optimization', 'clearfy' ),
|
308 |
+
'url' => '#',
|
309 |
+
'type' => 'internal',
|
310 |
+
'icon' => $default_image,
|
311 |
+
'description' => __( 'Set of optimization functions for the popular Yoast SEO plugin.', 'clearfy' )
|
312 |
+
]
|
313 |
+
] );
|
314 |
+
|
315 |
+
$response[] = [
|
316 |
+
'name' => 'cyrlitera',
|
317 |
+
'title' => __( 'Transliteration of Cyrillic alphabet', 'clearfy' ),
|
318 |
+
'type' => 'internal',
|
319 |
+
'url' => 'https://wordpress.org/plugins/cyrlitera/',
|
320 |
+
'icon' => WCL_PLUGIN_URL . '/admin/assets/img/ctr-icon-128x128.png',
|
321 |
+
'description' => __( 'Converts Cyrillic permalinks of post, pages, taxonomies and media files to the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages.', 'clearfy' )
|
322 |
+
];
|
323 |
+
$licensing = WCL_Licensing::instance();
|
324 |
+
$freemius_addons_data = $licensing->getAddons(); // получаем все аддоны
|
325 |
+
|
326 |
+
if ( isset( $freemius_addons_data->plugins ) ) {
|
327 |
+
foreach ( $freemius_addons_data->plugins as $freemius_addon ) {
|
328 |
+
$is_free_addon = false;
|
329 |
+
if ( $freemius_addon->free_releases_count ) {
|
330 |
+
$is_free_addon = true;
|
331 |
+
}
|
332 |
+
$actual_version = isset( $freemius_addon->info ) ? $freemius_addon->info->selling_point_0 : '';
|
333 |
+
if ( ! $actual_version ) {
|
334 |
+
$actual_version = $licensing->getAddonCurrentVersion( $freemius_addon->slug );
|
335 |
+
}
|
336 |
+
$component = [
|
337 |
+
'name' => $freemius_addon->slug,
|
338 |
+
'slug' => $freemius_addon->slug,
|
339 |
+
'title' => __( $freemius_addon->title, 'clearfy' ),
|
340 |
+
'type' => 'freemius',
|
341 |
+
'installed' => false,
|
342 |
+
'is_free' => $is_free_addon,
|
343 |
+
'actived' => false,
|
344 |
+
'version' => $actual_version,
|
345 |
+
'url' => isset( $freemius_addon->info ) ? $freemius_addon->info->url : '#',
|
346 |
+
'icon' => isset( $freemius_addon->icon ) ? $freemius_addon->icon : WCL_PLUGIN_URL . '/admin/assets/img/ctr-icon-128x128.png',
|
347 |
+
'description' => isset( $freemius_addon->info ) ? __( $freemius_addon->info->short_description, 'clearfy' ) : '',
|
348 |
+
];
|
349 |
+
|
350 |
+
if ( in_array( $component['name'], $freemius_activated_addons ) ) {
|
351 |
+
$component['actived'] = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
}
|
353 |
+
|
354 |
+
array_unshift( $response, $component );
|
355 |
}
|
356 |
+
}
|
357 |
+
|
358 |
|
359 |
|
360 |
+
$components = $this->order( $response );
|
361 |
|
362 |
+
/**
|
363 |
+
* @since 1.4.0
|
364 |
+
*
|
365 |
+
* @param array $components
|
366 |
+
*/
|
367 |
+
$components = apply_filters( 'wbcr/clearfy/components/items_list', $components );
|
368 |
+
|
369 |
+
?>
|
370 |
+
<div class="wbcr-factory-page-group-header"><?php _e( '<strong>Plugin Components</strong>.', 'clearfy' ) ?>
|
371 |
+
<p>
|
372 |
+
<?php _e( 'These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'clearfy' ) ?>
|
373 |
+
</p>
|
374 |
+
</div>
|
375 |
+
<div class="wbcr-clearfy-components">
|
376 |
+
<?php
|
377 |
/**
|
|
|
378 |
* @since 1.4.0
|
379 |
*/
|
380 |
+
do_action( 'wbcr/clearfy/components/custom_plugins_card', $components );
|
|
|
381 |
?>
|
|
|
|
|
|
|
|
|
|
|
382 |
|
383 |
+
<?php foreach ( $components as $component ): ?>
|
384 |
+
<?php
|
385 |
+
|
386 |
+
$slug = $component['name'];
|
387 |
|
388 |
+
if ( $component['type'] == 'wordpress' ) {
|
389 |
+
$slug = $component['base_path'];
|
390 |
+
}
|
391 |
|
392 |
+
if ( $component['type'] == 'freemius' ) {
|
393 |
+
$install_button = WCL_Plugin::app()->getInstallComponentsButton( $component['type'], $slug );
|
394 |
+
|
395 |
+
if ( ! $component['actived'] ) {
|
396 |
+
$status_class = ' plugin-status-deactive';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
} else {
|
398 |
+
$status_class = ' plugin-status-active';
|
399 |
+
}
|
400 |
|
401 |
+
if ( ! $component['is_free'] ) {
|
402 |
+
$status_class .= ' premium';
|
|
|
|
|
403 |
}
|
404 |
+
} else {
|
405 |
+
$install_button = WCL_Plugin::app()->getInstallComponentsButton( $component['type'], $slug );
|
406 |
|
407 |
+
$status_class = '';
|
408 |
+
if ( ! $install_button->isPluginActivate() ) {
|
409 |
+
$status_class = ' plugin-status-deactive';
|
410 |
+
}
|
411 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
|
413 |
+
$install_button->addClass( 'install-now' );
|
414 |
|
415 |
+
// Delete button
|
416 |
+
$delete_button = WCL_Plugin::app()->getDeleteComponentsButton( $component['type'], $slug );
|
417 |
+
$delete_button->addClass( 'delete-now' );
|
|
|
|
|
|
|
418 |
|
419 |
+
?>
|
420 |
+
<div class="plugin-card<?= $status_class ?>">
|
421 |
+
<?php if ( $component['type'] == 'freemius' && ! $component['is_free'] ): ?>
|
422 |
+
<div class="premium-ribbon"><?php _e( 'Premium', 'clearfy' ) ?></div>
|
423 |
+
<?php endif; ?>
|
424 |
+
<div class="plugin-card-top">
|
425 |
+
<div class="name column-name">
|
426 |
+
<h3>
|
427 |
+
<a href="<?= $component['url'] ?>" class="thickbox open-plugin-details-modal">
|
428 |
+
<?= $component['title'] ?>
|
429 |
+
<img src="<?= $component['icon'] ?>" class="plugin-icon" alt="">
|
430 |
+
</a>
|
431 |
+
</h3>
|
432 |
+
</div>
|
433 |
+
<div class="desc column-description">
|
434 |
+
<p><?= $component['description']; ?></p>
|
435 |
+
<?php // For the test, we display the current version and the current one ?>
|
436 |
+
<?php if ( isset( $component['version'] ) ) : ?><p>
|
437 |
+
Freemius: <?php echo $component['version']; ?>,
|
438 |
+
current: <?php echo $licensing->getAddonCurrentVersion( $slug ); ?></p><?php endif; ?>
|
439 |
+
</div>
|
440 |
+
</div>
|
441 |
+
<div class="plugin-card-bottom">
|
442 |
+
<?php $delete_button->renderButton(); ?><?php $install_button->renderButton(); ?>
|
443 |
+
</div>
|
444 |
+
</div>
|
445 |
+
<?php endforeach; ?>
|
446 |
+
<div class="clearfix"></div>
|
447 |
+
</div>
|
448 |
<?php
|
|
|
449 |
}
|
450 |
+
}
|
451 |
|
452 |
|
admin/pages/defence.php
CHANGED
@@ -123,58 +123,7 @@ class WCL_DefencePage extends Wbcr_FactoryClearfy206_PageBase {
|
|
123 |
'hint' => __( 'Allows attacker to learn the version of WP installed on the site. This meta tag has no useful function.', 'clearfy' ) . '<br><b>Clearfy: </b>' . sprintf( __( 'Removes the meta tag from the %s section', 'clearfy' ), '<head>' ),
|
124 |
'default' => false
|
125 |
);
|
126 |
-
|
127 |
-
$options[] = array(
|
128 |
-
'type' => 'html',
|
129 |
-
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Remove query strings from static resources', 'clearfy' ) . '</strong>' . '<p>' . __( 'This funcitons will remove query strings from static resources like CSS & JS files inside the HTML <head> element to improve your speed scores in services like Pingdom, GTmetrix, PageSpeed and YSlow.', 'clearfy' ) . '</p>' . '</div>'
|
130 |
-
);
|
131 |
-
|
132 |
-
$options[] = array(
|
133 |
-
'type' => 'checkbox',
|
134 |
-
'way' => 'buttons',
|
135 |
-
'name' => 'remove_js_version',
|
136 |
-
'title' => __( 'Remove Version from Script', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
137 |
-
'layout' => array( 'hint-type' => 'icon' ),
|
138 |
-
'hint' => __( 'To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
|
139 |
-
Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes wordpress version number from scripts (not logged in user only).', 'clearfy' ),
|
140 |
-
'default' => false
|
141 |
-
);
|
142 |
-
|
143 |
-
$options[] = array(
|
144 |
-
'type' => 'checkbox',
|
145 |
-
'way' => 'buttons',
|
146 |
-
'name' => 'remove_style_version',
|
147 |
-
'title' => __( 'Remove Version from Stylesheet', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
148 |
-
'layout' => array( 'hint-type' => 'icon' ),
|
149 |
-
'hint' => __( 'To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
|
150 |
-
Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes the wordpress version number from stylesheets (not logged in user only).', 'clearfy' ),
|
151 |
-
'default' => false
|
152 |
-
/*'eventsOn' => array(
|
153 |
-
'show' => '.factory-control-disable_remove_style_version_for_auth_users'
|
154 |
-
),
|
155 |
-
'eventsOff' => array(
|
156 |
-
'hide' => '.factory-control-disable_remove_style_version_for_auth_users'
|
157 |
-
)*/
|
158 |
-
);
|
159 |
-
|
160 |
-
$options[] = array(
|
161 |
-
'type' => 'checkbox',
|
162 |
-
'way' => 'buttons',
|
163 |
-
'name' => 'disable_remove_style_version_for_auth_users',
|
164 |
-
'title' => __( 'Disable remove versions for auth users', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
165 |
-
'layout' => array( 'hint-type' => 'icon' ),
|
166 |
-
'default' => false
|
167 |
-
);
|
168 |
-
|
169 |
-
$options[] = array(
|
170 |
-
'type' => 'textarea',
|
171 |
-
'name' => 'remove_version_exclude',
|
172 |
-
'height' => '120',
|
173 |
-
'title' => __( 'Exclude stylesheet/script file names', 'clearfy' ),
|
174 |
-
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
175 |
-
'hint' => __( 'Enter Stylesheet/Script file names to exclude from version removal (each exclude file starts with a new line)', 'clearfy' ) . '<br><br><b>' . __( 'Example', 'clearfy' ) . ':</b>' . ' http://testwp.dev/wp-includes/js/jquery/jquery.js',
|
176 |
-
);
|
177 |
-
|
178 |
$form_options = array();
|
179 |
|
180 |
$form_options[] = array(
|
123 |
'hint' => __( 'Allows attacker to learn the version of WP installed on the site. This meta tag has no useful function.', 'clearfy' ) . '<br><b>Clearfy: </b>' . sprintf( __( 'Removes the meta tag from the %s section', 'clearfy' ), '<head>' ),
|
124 |
'default' => false
|
125 |
);
|
126 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
$form_options = array();
|
128 |
|
129 |
$form_options[] = array(
|
admin/pages/performance.php
CHANGED
@@ -1,284 +1,490 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
-
* The page
|
|
|
|
|
4 |
*
|
5 |
* @since 1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
*/
|
|
|
|
|
|
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
}
|
12 |
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
* Mainly used to navigate between pages.
|
19 |
-
* @see FactoryPages410_AdminPage
|
20 |
-
*
|
21 |
-
* @since 1.0.0
|
22 |
-
* @var string
|
23 |
-
*/
|
24 |
-
public $id = "performance";
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @var string
|
28 |
-
*/
|
29 |
-
public $page_menu_dashicon = 'dashicons-performance';
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @var int
|
33 |
-
*/
|
34 |
-
public $page_menu_position = 20;
|
35 |
-
|
36 |
-
public $available_for_multisite = true;
|
37 |
-
|
38 |
-
/**
|
39 |
-
* @param WCL_Plugin $plugin
|
40 |
-
*/
|
41 |
-
public function __construct(WCL_Plugin $plugin)
|
42 |
-
{
|
43 |
-
$this->menu_title = __('Performance', 'clearfy');
|
44 |
-
$this->page_menu_short_description = __('Optimization js, css, fonts', 'clearfy');
|
45 |
-
|
46 |
-
parent::__construct($plugin);
|
47 |
-
|
48 |
-
$this->plugin = $plugin;
|
49 |
}
|
|
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
update_option('show_avatars', true);
|
57 |
-
}
|
58 |
}
|
|
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
'
|
84 |
-
|
85 |
-
|
86 |
-
'
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
'
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
'
|
114 |
-
|
115 |
-
|
116 |
-
'
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
'hint' => __('The profile attribute specifies the metadata profile address. Usually, the browser recognizes the value of this attribute and executes some conventions related to the specified profile. Loading the document itself at the specified address does not really happen, moreover, it may not exist at all.
|
181 |
In particular, the profile is used for the XFN microformat (XHTML Friends Network) - a way of representing relationships between people using links and rel attributes with different values. WordPress also actively uses profile in its templates.
|
182 |
-
', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove link tag', 'clearfy') . '<br><code>link rel="profile" href="http://gmpg.org/xfn/11"</code>',
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
If you’re using Identicons or any other generated default avatar, the user should keep a consistent avatar unless they change their registered email.
|
254 |
-
', 'clearfy'),
|
255 |
-
|
256 |
-
|
257 |
|
258 |
-
|
|
|
|
|
|
|
259 |
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
|
266 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
}
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
}
|
|
|
|
|
284 |
}
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The page Settings.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Exit if accessed directly
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
class WCL_PerformancePage extends Wbcr_FactoryClearfy206_PageBase {
|
14 |
+
|
15 |
/**
|
16 |
+
* The id of the page in the admin menu.
|
17 |
+
*
|
18 |
+
* Mainly used to navigate between pages.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
+
* @see FactoryPages410_AdminPage
|
22 |
+
*
|
23 |
+
* @var string
|
24 |
+
*/
|
25 |
+
public $id = "performance";
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $page_menu_dashicon = 'dashicons-performance';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @var int
|
34 |
+
*/
|
35 |
+
public $page_menu_position = 20;
|
36 |
+
|
37 |
+
public $available_for_multisite = true;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param WCL_Plugin $plugin
|
41 |
*/
|
42 |
+
public function __construct( WCL_Plugin $plugin ) {
|
43 |
+
$this->menu_title = __( 'Performance', 'clearfy' );
|
44 |
+
$this->page_menu_short_description = __( 'Optimization js, css, fonts', 'clearfy' );
|
45 |
|
46 |
+
parent::__construct( $plugin );
|
47 |
+
|
48 |
+
$this->plugin = $plugin;
|
49 |
}
|
50 |
|
51 |
+
public function afterFormSave() {
|
52 |
+
if ( $this->getPopulateOption( 'disable_gravatars' ) ) {
|
53 |
+
update_option( 'show_avatars', false );
|
54 |
+
} else {
|
55 |
+
update_option( 'show_avatars', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
+
}
|
58 |
|
59 |
+
public function warningNotice() {
|
60 |
+
parent::warningNotice();
|
61 |
+
|
62 |
+
if ( ! $this->plugin->getPopulateOption( 'revisions_disable' ) && $this->is_post_revision_constant() ) {
|
63 |
+
$this->printWarningNotice( __( 'Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, it determines the number of revisions. Delete it so you can change this value through the admin panel.', 'clearfy' ) );
|
|
|
|
|
64 |
}
|
65 |
+
}
|
66 |
|
67 |
+
/**
|
68 |
+
* Permalinks options.
|
69 |
+
*
|
70 |
+
* @since 1.0.0
|
71 |
+
* @return mixed[]
|
72 |
+
*/
|
73 |
+
public function getPageOptions() {
|
74 |
+
$options = [];
|
75 |
+
|
76 |
+
$options[] = [
|
77 |
+
'type' => 'html',
|
78 |
+
'html' => '<div class="wbcr-factory-page-group-header">' . __( '<strong>Clear the unnecessary scripts</strong>', 'clearfy' ) . '<p>' . __( 'This set of settings will help you remove unnecessary links and code from the head section, as well as reduce your website\'s pages weight.', 'clearfy' ) . '</p></div>'
|
79 |
+
];
|
80 |
+
|
81 |
+
$options[] = [
|
82 |
+
'type' => 'checkbox',
|
83 |
+
'way' => 'buttons',
|
84 |
+
'name' => 'disable_feed',
|
85 |
+
'title' => __( 'Disable RSS feeds', 'clearfy' ),
|
86 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
87 |
+
'hint' => __( 'By default, WordPress generates all types of different RSS feeds for your site. While RSS feeds can be useful if you are running a blog, businesses might not always utilize these. Not every site out there has a blog.', 'clearfy' ) . '<br><b>Clearfy: </b>' . sprintf( __( 'Removes a link to the RSS-feed from the %s section, closes and puts the redirect from all RSS-feeds.', 'clearfy' ), '<head>' ),
|
88 |
+
'default' => false,
|
89 |
+
'eventsOn' => [
|
90 |
+
'show' => '.factory-control-disabled_feed_behaviour'
|
91 |
+
],
|
92 |
+
'eventsOff' => [
|
93 |
+
'hide' => '.factory-control-disabled_feed_behaviour'
|
94 |
+
]
|
95 |
+
];
|
96 |
+
|
97 |
+
$options[] = [
|
98 |
+
'type' => 'dropdown',
|
99 |
+
'way' => 'buttons',
|
100 |
+
'name' => 'disabled_feed_behaviour',
|
101 |
+
'data' => [
|
102 |
+
[ 'redirect_301', __( 'Redirect 301', 'clearfy' ) ],
|
103 |
+
[ 'redirect_404', __( 'Page 404', 'clearfy' ) ],
|
104 |
+
],
|
105 |
+
'title' => __( 'Redirect feed requests', 'clearfy' ),
|
106 |
+
'hint' => __( 'Forward all requests to page 404 or to the main page through 301 redirects.', 'clearfy' ),
|
107 |
+
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
108 |
+
'default' => 'redirect_301'
|
109 |
+
];
|
110 |
+
|
111 |
+
$options[] = [
|
112 |
+
'type' => 'checkbox',
|
113 |
+
'way' => 'buttons',
|
114 |
+
'name' => 'disable_json_rest_api',
|
115 |
+
'title' => __( 'Remove REST API Links', 'clearfy' ),
|
116 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'red' ],
|
117 |
+
'hint' => __( 'The WordPress REST API provides API endpoints for WordPress data types that allow developers to interact with sites remotely by sending and receiving JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use this, and therefore in most cases, it is just unnecessary code.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes REST API link tag from the front end and the REST API header link from page requests.', 'clearfy' ),
|
118 |
+
'default' => false,
|
119 |
+
'eventsOn' => [
|
120 |
+
'show' => '#wbcr-clearfy-rest-api-danger-message'
|
121 |
+
],
|
122 |
+
'eventsOff' => [
|
123 |
+
'hide' => '#wbcr-clearfy-rest-api-danger-message'
|
124 |
+
]
|
125 |
+
];
|
126 |
+
|
127 |
+
$options[] = [
|
128 |
+
'type' => 'html',
|
129 |
+
'html' => [ $this, 'restApiDangerMessage' ]
|
130 |
+
];
|
131 |
+
|
132 |
+
$options[] = [
|
133 |
+
'type' => 'checkbox',
|
134 |
+
'way' => 'buttons',
|
135 |
+
'name' => 'disable_emoji',
|
136 |
+
'title' => __( 'Disable Emojis', 'clearfy' ),
|
137 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
138 |
+
'hint' => __( 'Emojis are fun and all, but if you are aren’t using them they actually load a JavaScript file (wp-emoji-release.min.js) on every page of your website. For a lot of businesses, this is not needed and simply adds load time to your site. So we recommend disabling this.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js).', 'clearfy' ),
|
139 |
+
'default' => false
|
140 |
+
];
|
141 |
+
|
142 |
+
$options[] = [
|
143 |
+
'type' => 'checkbox',
|
144 |
+
'way' => 'buttons',
|
145 |
+
'name' => 'remove_jquery_migrate',
|
146 |
+
'title' => __( 'Remove jQuery Migrate', 'clearfy' ),
|
147 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'red' ],
|
148 |
+
'hint' => __( 'They started adding jQuery migrate in WordPress 3.6. Most up-to-date frontend code and plugins don’t require jquery-migrate.min.js. In most cases, this simply adds unnecessary load to your site. You can see this running if you launch Chrome Devtools console.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes jQuery Migrate JavaScript file (jquery-migrate.min.js).', 'clearfy' ) . '<br>--<br><span class="wbcr-factory-light-orange-color">' . __( 'Warning! If there is a broke on your site, disable this option!', 'clearfy' ) . '</span>',
|
149 |
+
'default' => false
|
150 |
+
];
|
151 |
+
|
152 |
+
$options[] = [
|
153 |
+
'type' => 'checkbox',
|
154 |
+
'way' => 'buttons',
|
155 |
+
'name' => 'disable_embeds',
|
156 |
+
'title' => __( 'Disable Embeds', 'clearfy' ),
|
157 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
158 |
+
'hint' => __( 'Embeds were released with WordPress 4.4. This is basically the magic that auto converts your YouTube videos, Tweets, and URLs into pretty previews while you are editing. However, this actually loads a JavaScript file (wp-embed.min.js) on every page of your website. If you don’t care about the auto converting preview (which we don’t), you can disable this across your site.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes WordPress Embed JavaScript file (wp-embed.min.js)', 'clearfy' ),
|
159 |
+
'default' => false
|
160 |
+
];
|
161 |
+
|
162 |
+
/*$options[] = array(
|
163 |
+
'type' => 'checkbox',
|
164 |
+
'way' => 'buttons',
|
165 |
+
'name' => 'remove_dns_prefetch',
|
166 |
+
'title' => __('Remove dns-prefetch', 'clearfy'),
|
167 |
+
'layout' => array('hint-type' => 'icon'),
|
168 |
+
'hint' => sprintf(__('Since version 4.6.1 in WordPress there are new links in the section %s this type of: ', 'clearfy'), 'head') . ' <code>link rel="dns-prefetch" href="//s.w.org"</code><br><br><b>Clearfy: </b>' . sprintf(__('Removes dns-prefetch links from the %s section', 'clearfy'), 'head'),
|
169 |
+
'default' => false
|
170 |
+
);*/
|
171 |
+
$options[] = [
|
172 |
+
'type' => 'checkbox',
|
173 |
+
'way' => 'buttons',
|
174 |
+
'name' => 'remove_rsd_link',
|
175 |
+
'title' => __( 'Remove RSD Link', 'clearfy' ),
|
176 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
177 |
+
'hint' => __( 'The above link is used by blog clients. If you edit your site from your browser then you don’t need this. It is also used by some 3rd party applications that utilize XML-RPC requests. In most cases, this is just unnecessary code.', 'clearfy' ) . '<br><code>link rel="EditURI" type="application/rsd+xml" title="RSD"</code><br><br><b>Clearfy: </b>' . __( 'Remove RSD (Real Simple Discovery) link tag.', 'clearfy' ),
|
178 |
+
'default' => false
|
179 |
+
];
|
180 |
+
$options[] = [
|
181 |
+
'type' => 'checkbox',
|
182 |
+
'way' => 'buttons',
|
183 |
+
'name' => 'remove_xfn_link',
|
184 |
+
'title' => __( 'Removing XFN (XHTML Friends Network) Profile Link', 'clearfy' ),
|
185 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
186 |
+
'hint' => __( 'The profile attribute specifies the metadata profile address. Usually, the browser recognizes the value of this attribute and executes some conventions related to the specified profile. Loading the document itself at the specified address does not really happen, moreover, it may not exist at all.
|
|
|
187 |
In particular, the profile is used for the XFN microformat (XHTML Friends Network) - a way of representing relationships between people using links and rel attributes with different values. WordPress also actively uses profile in its templates.
|
188 |
+
', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Remove link tag', 'clearfy' ) . '<br><code>link rel="profile" href="http://gmpg.org/xfn/11"</code>',
|
189 |
+
'default' => false
|
190 |
+
];
|
191 |
+
|
192 |
+
$options[] = [
|
193 |
+
'type' => 'checkbox',
|
194 |
+
'way' => 'buttons',
|
195 |
+
'name' => 'remove_wlw_link',
|
196 |
+
'title' => __( 'Remove wlwmanifest Link', 'clearfy' ),
|
197 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
198 |
+
'hint' => '<code>link rel="wlwmanifest" type="application/wlwmanifest+xml"</code><br>' . __( 'This link is actually used by Windows Live Writer. If you don’t know use Windows Live Writer, which we are guessing you don’t, this is just unnecessary code.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Remove wlwmanifest (Windows Live Writer) link tag.', 'clearfy' ),
|
199 |
+
'default' => false
|
200 |
+
];
|
201 |
+
|
202 |
+
$options[] = [
|
203 |
+
'type' => 'checkbox',
|
204 |
+
'way' => 'buttons',
|
205 |
+
'name' => 'remove_shortlink_link',
|
206 |
+
'title' => __( 'Remove Shortlink', 'clearfy' ),
|
207 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
208 |
+
'hint' => sprintf( __( 'By default, the following tag shows up in every WordPress install. %s This is used for a shortlink to your pages and posts. However, if you are already using pretty permalinks, such as domain.com/post, then there is no reason to keep this, it is just unnecessary code.', 'clearfy' ), '<br><code>link rel="shortlink" href="https://domain.com?p=712"</code><br>' ) . '<br><br><b>Clearfy: </b>' . __( 'Remove Shortlink link tag.', 'clearfy' ),
|
209 |
+
'default' => false
|
210 |
+
];
|
211 |
+
|
212 |
+
$options[] = [
|
213 |
+
'type' => 'checkbox',
|
214 |
+
'way' => 'buttons',
|
215 |
+
'name' => 'remove_adjacent_posts_link',
|
216 |
+
'title' => __( 'Remove links to previous, next post', 'clearfy' ),
|
217 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
218 |
+
'hint' => __( 'If you use Wordpress as a CMS, then you can delete these links, they can only come in handy for a blog.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Remove the previous and next post links within the wp_head of your wordpress theme.', 'clearfy' ),
|
219 |
+
'default' => false
|
220 |
+
];
|
221 |
+
|
222 |
+
$options[] = [
|
223 |
+
'type' => 'checkbox',
|
224 |
+
'way' => 'buttons',
|
225 |
+
'name' => 'remove_recent_comments_style',
|
226 |
+
'title' => __( 'Remove .recentcomments styles', 'clearfy' ),
|
227 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
228 |
+
'hint' => __( 'WP by default for the widget "recent comments" prescribes in the code styles that are almost impossible to change, because to them apply! important.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes .recentcomments styles from head section.', 'clearfy' ),
|
229 |
+
'default' => false
|
230 |
+
];
|
231 |
+
|
232 |
+
$options[] = [
|
233 |
+
'type' => 'checkbox',
|
234 |
+
'way' => 'buttons',
|
235 |
+
'name' => 'lazy_load_font_awesome',
|
236 |
+
'title' => __( 'Font Awesome asynchronous', 'clearfy' ),
|
237 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
238 |
+
'hint' => __( 'By default, WordPress loads Font Awesome icons synchronously, that is, your page will not be fully loaded until Font Awesome icons are loaded. This algorithm slows down the loading of your page and leads to errors when checking the site in Google Page Speed. Using this option, your Font Awesome icons will be loaded after your page is fully loaded. This method has a negative — you and visitors of your site will see changes while loading a page, from the placeholders to icons.', 'clearfy' ),
|
239 |
+
'default' => false
|
240 |
+
];
|
241 |
+
|
242 |
+
$options[] = [
|
243 |
+
'type' => 'checkbox',
|
244 |
+
'way' => 'buttons',
|
245 |
+
'name' => 'disable_dashicons',
|
246 |
+
'title' => __( 'Disable Dashicons', 'clearfy' ),
|
247 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
248 |
+
'hint' => __( 'Dashicons is the official icon font of the WordPress admin as of 3.8. Some of you have requested that we add a feature to remove Dashicons. Some themes and developers utilize this (dashicons.min.css) on the front-end of their sites.', 'clearfy' ),
|
249 |
+
'default' => false
|
250 |
+
];
|
251 |
+
|
252 |
+
$options[] = [
|
253 |
+
'type' => 'checkbox',
|
254 |
+
'way' => 'buttons',
|
255 |
+
'name' => 'disable_gravatars',
|
256 |
+
'title' => __( 'Disable gravatars', 'clearfy' ),
|
257 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
258 |
+
'hint' => __( 'This function that prevents the user’s gravatar being automatically obtained from gravatar.com based on their registered email. This would be useful for sites where users require an extra layer of privacy, or if you just want to prevent potentially silly or embarrasing avatar accidents.
|
259 |
If you’re using Identicons or any other generated default avatar, the user should keep a consistent avatar unless they change their registered email.
|
260 |
+
', 'clearfy' ),
|
261 |
+
'default' => false
|
262 |
+
];
|
263 |
|
264 |
+
$options[] = [
|
265 |
+
'type' => 'html',
|
266 |
+
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Classic editor and Gutenberg', 'clearfy' ) . '</strong>' . '<p>' . __( 'In this group of options, you can manage revisions and post autosave.', 'clearfy' ) . '</p>' . '</div>'
|
267 |
+
];
|
268 |
|
269 |
+
$options[] = [
|
270 |
+
'type' => 'checkbox',
|
271 |
+
'way' => 'buttons',
|
272 |
+
'name' => 'revisions_disable',
|
273 |
+
'title' => __( 'Disable revision', 'clearfy' ),
|
274 |
+
'default' => false,
|
275 |
+
'eventsOn' => [
|
276 |
+
'hide' => '.factory-control-revision_limit'
|
277 |
+
],
|
278 |
+
'eventsOff' => [
|
279 |
+
'show' => '.factory-control-revision_limit'
|
280 |
+
],
|
281 |
+
];
|
282 |
|
283 |
+
$options[] = [
|
284 |
+
'type' => 'dropdown',
|
285 |
+
'name' => 'revision_limit',
|
286 |
+
'title' => __( 'Limit Post Revisions', 'clearfy' ),
|
287 |
+
'data' => [
|
288 |
+
[ 'default', __( 'Wordpress default', 'clearfy' ) ],
|
289 |
+
[ '15', '15 ' . __( 'revisions', 'clearfy' ) ],
|
290 |
+
[ '20', '20 ' . __( 'revisions', 'clearfy' ) ],
|
291 |
+
[ '25', '25 ' . __( 'revisions', 'clearfy' ) ],
|
292 |
+
[ '30', '30 ' . __( 'revisions', 'clearfy' ) ],
|
293 |
+
[ '35', '35 ' . __( 'revisions', 'clearfy' ) ],
|
294 |
+
[ '40', '40 ' . __( 'revisions', 'clearfy' ) ],
|
295 |
+
[ '45', '45 ' . __( 'revisions', 'clearfy' ) ],
|
296 |
+
[ '50', '50 ' . __( 'revisions', 'clearfy' ) ],
|
297 |
+
[ '55', '55 ' . __( 'revisions', 'clearfy' ) ],
|
298 |
+
[ '60', '60 ' . __( 'revisions', 'clearfy' ) ]
|
299 |
+
],
|
300 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
301 |
+
'hint' => __( 'WordPress automatically saves revisions when you are working on posts and pages. These can begin to add up pretty quick. By default, there is no limit in place. We have seen posts with over 1,000 revisions. Multiply this by 50 pages and suddenly you have over 50,000 revisions sitting in your database. The problem with this is that you will most likely never use them and they can start slowing down your database as well as using disk space.
|
302 |
+
So we recommend either disabling or limiting your revisions. ', 'clearfy' ),
|
303 |
+
'default' => 'default'
|
304 |
+
];
|
305 |
+
|
306 |
+
if ( version_compare( get_bloginfo( 'version' ), '5.0', '>=' ) ) {
|
307 |
+
$options[] = [
|
308 |
+
'type' => 'checkbox',
|
309 |
+
'way' => 'buttons',
|
310 |
+
'name' => 'gutenberg_autosave_control',
|
311 |
+
'title' => __( 'Gutenberg autosave control', 'clearfy' ),
|
312 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
313 |
+
'hint' => __( 'By activating this option autosave feature in the Gutenberg editor will be disabled. Alternatively it also provides options in the editor to select a longer autosave interval time than the default 10 seconds.', 'clearfy' ),
|
314 |
+
'default' => false
|
315 |
+
];
|
316 |
+
} else {
|
317 |
+
$options[] = [
|
318 |
+
'type' => 'checkbox',
|
319 |
+
'way' => 'buttons',
|
320 |
+
'name' => 'disable_post_autosave',
|
321 |
+
'title' => __( 'Disable autosave', 'clearfy' ),
|
322 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
323 |
+
'hint' => __( 'WordPress by default automatically saves a draft every 60 seconds (1 minute). There are reasons why you might want to change this.', 'clearfy' ) . '<br><b>Clearfy</b>: ' . __( 'Disables automatic saving of drafts.', 'clearfy' ),
|
324 |
+
'default' => false
|
325 |
+
];
|
326 |
}
|
327 |
+
|
328 |
+
$options[] = [
|
329 |
+
'type' => 'html',
|
330 |
+
'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __( 'Remove query strings from static resources', 'clearfy' ) . '</strong>' . '<p>' . __( 'This funcitons will remove query strings from static resources like CSS & JS files inside the HTML <head> element to improve your speed scores in services like Pingdom, GTmetrix, PageSpeed and YSlow. <b style="color:#ff5722">Important:</b> This does not work for authorized users. To avoid problems after plugins update!', 'clearfy' ) . '</p>' . '</div>'
|
331 |
+
];
|
332 |
+
|
333 |
+
$options[] = [
|
334 |
+
'type' => 'checkbox',
|
335 |
+
'way' => 'buttons',
|
336 |
+
'name' => 'remove_js_version',
|
337 |
+
'title' => __( 'Remove Version from Script', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
338 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
339 |
+
'hint' => __( 'To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
|
340 |
+
Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes wordpress version number from scripts (not logged in user only).', 'clearfy' ),
|
341 |
+
'default' => false
|
342 |
+
];
|
343 |
+
|
344 |
+
$options[] = [
|
345 |
+
'type' => 'checkbox',
|
346 |
+
'way' => 'buttons',
|
347 |
+
'name' => 'remove_style_version',
|
348 |
+
'title' => __( 'Remove Version from Stylesheet', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
349 |
+
'layout' => [ 'hint-type' => 'icon' ],
|
350 |
+
'hint' => __( 'To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
|
351 |
+
Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy' ) . '<br><br><b>Clearfy: </b>' . __( 'Removes the wordpress version number from stylesheets (not logged in user only).', 'clearfy' ),
|
352 |
+
'default' => false
|
353 |
+
/*'eventsOn' => array(
|
354 |
+
'show' => '.factory-control-disable_remove_style_version_for_auth_users'
|
355 |
+
),
|
356 |
+
'eventsOff' => array(
|
357 |
+
'hide' => '.factory-control-disable_remove_style_version_for_auth_users'
|
358 |
+
)*/
|
359 |
+
];
|
360 |
+
|
361 |
+
/*$options[] = array(
|
362 |
+
'type' => 'checkbox',
|
363 |
+
'way' => 'buttons',
|
364 |
+
'name' => 'disable_remove_style_version_for_auth_users',
|
365 |
+
'title' => __( 'Disable remove versions for auth users', 'clearfy' ) . ' <span class="wbcr-clearfy-recomended-text">(' . __( 'Recommended', 'clearfy' ) . ')</span>',
|
366 |
+
'layout' => array( 'hint-type' => 'icon' ),
|
367 |
+
'default' => false
|
368 |
+
);*/
|
369 |
+
|
370 |
+
$options[] = [
|
371 |
+
'type' => 'textarea',
|
372 |
+
'name' => 'remove_version_exclude',
|
373 |
+
'height' => '120',
|
374 |
+
'title' => __( 'Exclude stylesheet/script file names', 'clearfy' ),
|
375 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
376 |
+
'hint' => __( 'Enter Stylesheet/Script file names to exclude from version removal (each exclude file starts with a new line)', 'clearfy' ) . '<br><br><b>' . __( 'Example', 'clearfy' ) . ':</b>' . ' http://testwp.dev/wp-includes/js/jquery/jquery.js',
|
377 |
+
];
|
378 |
+
|
379 |
+
$options[] = [
|
380 |
+
'type' => 'html',
|
381 |
+
'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>'
|
382 |
+
];
|
383 |
+
|
384 |
+
$options[] = [
|
385 |
+
'type' => 'dropdown',
|
386 |
+
'name' => 'disable_heartbeat',
|
387 |
+
'way' => 'buttons',
|
388 |
+
'title' => __( 'Disable Heartbeat', 'clearfy' ),
|
389 |
+
'data' => [
|
390 |
+
[ 'default', __( 'Default', 'clearfy' ) ],
|
391 |
+
[ 'everywhere', __( 'Everywhere', 'clearfy' ) ],
|
392 |
+
[ 'on_dashboard_page', __( 'On dashboard page', 'clearfy' ) ],
|
393 |
+
[ 'allow_only_on_post_edit_pages', __( 'Only allow when editing Posts/Pages', 'clearfy' ) ]
|
394 |
+
],
|
395 |
+
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
396 |
+
//'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
|
397 |
+
'events' => [
|
398 |
+
'default' => [
|
399 |
+
'show' => '.factory-control-heartbeat_frequency'
|
400 |
+
],
|
401 |
+
'on_dashboard_page' => [
|
402 |
+
'show' => '.factory-control-heartbeat_frequency'
|
403 |
+
],
|
404 |
+
'allow_only_on_post_edit_pages' => [
|
405 |
+
'show' => '.factory-control-heartbeat_frequency'
|
406 |
+
],
|
407 |
+
'everywhere' => [
|
408 |
+
'hide' => '.factory-control-heartbeat_frequency'
|
409 |
+
]
|
410 |
+
],
|
411 |
+
'default' => 'default',
|
412 |
+
];
|
413 |
+
|
414 |
+
$options[] = [
|
415 |
+
'type' => 'dropdown',
|
416 |
+
'name' => 'heartbeat_frequency',
|
417 |
+
'title' => __( 'Heartbeat frequency', 'clearfy' ),
|
418 |
+
'data' => [
|
419 |
+
[ 'default', __( 'Wordpress default', 'clearfy' ) ],
|
420 |
+
[ '20', '20 ' . __( 'seconds', 'clearfy' ) ],
|
421 |
+
[ '25', '25 ' . __( 'seconds', 'clearfy' ) ],
|
422 |
+
[ '30', '30 ' . __( 'seconds', 'clearfy' ) ],
|
423 |
+
[ '35', '35 ' . __( 'seconds', 'clearfy' ) ],
|
424 |
+
[ '40', '40 ' . __( 'seconds', 'clearfy' ) ],
|
425 |
+
[ '45', '45 ' . __( 'seconds', 'clearfy' ) ],
|
426 |
+
[ '50', '50 ' . __( 'seconds', 'clearfy' ) ],
|
427 |
+
[ '55', '55 ' . __( 'seconds', 'clearfy' ) ],
|
428 |
+
[ '60', '60 ' . __( 'seconds', 'clearfy' ) ],
|
429 |
+
[ '80', '80 ' . __( 'seconds', 'clearfy' ) ],
|
430 |
+
[ '120', '120 ' . __( 'seconds', 'clearfy' ) ],
|
431 |
+
[ '150', '150 ' . __( 'seconds', 'clearfy' ) ],
|
432 |
+
[ '200', '200 ' . __( 'seconds', 'clearfy' ) ],
|
433 |
+
[ '250', '250 ' . __( 'seconds', 'clearfy' ) ],
|
434 |
+
[ '300', '300 ' . __( 'seconds', 'clearfy' ) ],
|
435 |
+
[ '400', '400 ' . __( 'seconds', 'clearfy' ) ],
|
436 |
+
[ '500', '500 ' . __( 'seconds', 'clearfy' ) ]
|
437 |
+
],
|
438 |
+
'layout' => [ 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ],
|
439 |
+
'hint' => __( 'Select the heartbeat frequency wordpress. We recommend you 60 seconds, default is 20 seconds.', 'clearfy' ),
|
440 |
+
'default' => 'default'
|
441 |
+
];
|
442 |
+
|
443 |
+
$form_options = [];
|
444 |
+
|
445 |
+
$form_options[] = [
|
446 |
+
'type' => 'form-group',
|
447 |
+
'items' => $options,
|
448 |
+
//'cssClass' => 'postbox'
|
449 |
+
];
|
450 |
+
|
451 |
+
return apply_filters( 'wbcr_clr_code_clean_form_options', $form_options, $this );
|
452 |
+
}
|
453 |
+
|
454 |
+
/**
|
455 |
+
* Adds an html warning notification html markup.
|
456 |
+
*/
|
457 |
+
public function restApiDangerMessage() {
|
458 |
+
?>
|
459 |
+
<div class="form-group">
|
460 |
+
<label class="col-sm-4 control-label"></label>
|
461 |
+
<div class="control-group col-sm-8">
|
462 |
+
<div id="wbcr-clearfy-rest-api-danger-message" class="wbcr-clearfy-danger-message">
|
463 |
+
<?php _e( '<b>Use this option carefully!</b><br> Plugins like Contact form 7, Anycomments may have problems using this option.', 'clearfy' ) ?>
|
464 |
+
</div>
|
465 |
+
</div>
|
466 |
+
</div>
|
467 |
+
<?php
|
468 |
+
}
|
469 |
+
|
470 |
+
/**
|
471 |
+
* Check if WP_POST_REVISIONS is installed in wp-config file
|
472 |
+
*
|
473 |
+
* @return bool
|
474 |
+
*/
|
475 |
+
protected function is_post_revision_constant() {
|
476 |
+
$config_path = ABSPATH . '/wp-config.php';
|
477 |
+
|
478 |
+
if ( file_exists( $config_path ) ) {
|
479 |
+
$file = fopen( $config_path, 'r' );
|
480 |
+
$content = fread( $file, filesize( $config_path ) );
|
481 |
+
fclose( $file );
|
482 |
+
|
483 |
+
if ( ! empty( $content ) && preg_match( '/define(.+?)WP_POST_REVISIONS/', $content ) ) {
|
484 |
+
return true;
|
485 |
+
}
|
486 |
}
|
487 |
+
|
488 |
+
return false;
|
489 |
}
|
490 |
+
}
|
assets/css/admin-bar.css
CHANGED
@@ -1,47 +1,47 @@
|
|
1 |
-
/**
|
2 |
-
* Admin bar menu
|
3 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
-
* @copyright Webcraftic 01.07.2018
|
5 |
-
*/
|
6 |
-
#wp-admin-bar-clearfy-menu {
|
7 |
-
background: #443a54 !important;
|
8 |
-
}
|
9 |
-
#wp-admin-bar-clearfy-menu::after {
|
10 |
-
clear: both;
|
11 |
-
}
|
12 |
-
#wp-admin-bar-clearfy-menu .dashicons {
|
13 |
-
font: 400 20px/1 dashicons;
|
14 |
-
}
|
15 |
-
#wp-admin-bar-clearfy-menu #wp-admin-bar-clearfy-menu-default {
|
16 |
-
background: #565656 !important;
|
17 |
-
}
|
18 |
-
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-icon {
|
19 |
-
display: inline-block !important;
|
20 |
-
width: 20px;
|
21 |
-
height: 25px;
|
22 |
-
margin-top: 6px;
|
23 |
-
margin-right: 5px;
|
24 |
-
float: left;
|
25 |
-
background: url(../img/webcraftic-plugin-icon.png) 0 0 no-repeat;
|
26 |
-
}
|
27 |
-
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title {
|
28 |
-
display: inline-block !important;
|
29 |
-
overflow: hidden;
|
30 |
-
}
|
31 |
-
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title .dashicons {
|
32 |
-
font-size: 20px !important;
|
33 |
-
padding: 6px 0 !important;
|
34 |
-
}
|
35 |
-
#wp-admin-bar-clearfy-menu .ab-item .dashicons {
|
36 |
-
font-size: 14px;
|
37 |
-
padding: 6px 0;
|
38 |
-
}
|
39 |
-
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-heart {
|
40 |
-
color: #fb7976;
|
41 |
-
}
|
42 |
-
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-sos {
|
43 |
-
color: #c6e9f9;
|
44 |
-
}
|
45 |
-
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-star-filled {
|
46 |
-
color: #ffbe00;
|
47 |
-
}
|
1 |
+
/**
|
2 |
+
* Admin bar menu
|
3 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
+
* @copyright Webcraftic 01.07.2018
|
5 |
+
*/
|
6 |
+
#wp-admin-bar-clearfy-menu {
|
7 |
+
background: #443a54 !important;
|
8 |
+
}
|
9 |
+
#wp-admin-bar-clearfy-menu::after {
|
10 |
+
clear: both;
|
11 |
+
}
|
12 |
+
#wp-admin-bar-clearfy-menu .dashicons {
|
13 |
+
font: 400 20px/1 dashicons;
|
14 |
+
}
|
15 |
+
#wp-admin-bar-clearfy-menu #wp-admin-bar-clearfy-menu-default {
|
16 |
+
background: #565656 !important;
|
17 |
+
}
|
18 |
+
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-icon {
|
19 |
+
display: inline-block !important;
|
20 |
+
width: 20px;
|
21 |
+
height: 25px;
|
22 |
+
margin-top: 6px;
|
23 |
+
margin-right: 5px;
|
24 |
+
float: left;
|
25 |
+
background: url(../img/webcraftic-plugin-icon.png) 0 0 no-repeat;
|
26 |
+
}
|
27 |
+
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title {
|
28 |
+
display: inline-block !important;
|
29 |
+
overflow: hidden;
|
30 |
+
}
|
31 |
+
#wp-admin-bar-clearfy-menu .wbcr-clearfy-admin-bar-menu-title .dashicons {
|
32 |
+
font-size: 20px !important;
|
33 |
+
padding: 6px 0 !important;
|
34 |
+
}
|
35 |
+
#wp-admin-bar-clearfy-menu .ab-item .dashicons {
|
36 |
+
font-size: 14px;
|
37 |
+
padding: 6px 0;
|
38 |
+
}
|
39 |
+
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-heart {
|
40 |
+
color: #fb7976;
|
41 |
+
}
|
42 |
+
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-sos {
|
43 |
+
color: #c6e9f9;
|
44 |
+
}
|
45 |
+
#wp-admin-bar-clearfy-menu .ab-item .dashicons.dashicons-star-filled {
|
46 |
+
color: #ffbe00;
|
47 |
+
}
|
clearfy.php
CHANGED
@@ -4,13 +4,14 @@
|
|
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.5.
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: http://clearfy.pro
|
11 |
* Framework Version: FACTORY_409_VERSION
|
12 |
*/
|
13 |
|
|
|
14 |
// Exit if accessed directly
|
15 |
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
exit;
|
@@ -20,7 +21,7 @@ if ( defined( 'WBCR_CLEARFY_PLUGIN_ACTIVE' ) ) {
|
|
20 |
return;
|
21 |
}
|
22 |
|
23 |
-
define( 'WBCR_CLEARFY_PLUGIN_VERSION', '1.5.
|
24 |
|
25 |
define( 'WBCR_CLEARFY_PLUGIN_ACTIVE', true );
|
26 |
|
@@ -53,17 +54,22 @@ $plugin_info = array(
|
|
53 |
'plugin_name' => 'wbcr_clearfy',
|
54 |
'plugin_title' => __( 'Clearfy', 'clearfy' ),
|
55 |
'plugin_version' => WBCR_CLEARFY_PLUGIN_VERSION,
|
56 |
-
'required_php_version' => '5.3',
|
57 |
-
'required_wp_version' => '4.2',
|
58 |
'freemius_plugin_id' => 2315,
|
59 |
'freemius_plugin_slug' => 'clearfy',
|
60 |
'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
61 |
'plugin_build' => 'free',
|
62 |
'updates' => WCL_PLUGIN_DIR . '/updates/',
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
65 |
);
|
66 |
|
|
|
|
|
67 |
/**
|
68 |
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
69 |
*/
|
@@ -80,5 +86,6 @@ require_once( WCL_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
|
80 |
require_once( WCL_PLUGIN_DIR . '/includes/class.plugin.php' );
|
81 |
|
82 |
new WCL_Plugin( __FILE__, $plugin_info );
|
83 |
-
|
84 |
|
|
|
|
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.5.3
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: http://clearfy.pro
|
11 |
* Framework Version: FACTORY_409_VERSION
|
12 |
*/
|
13 |
|
14 |
+
// @formatter:off
|
15 |
// Exit if accessed directly
|
16 |
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
exit;
|
21 |
return;
|
22 |
}
|
23 |
|
24 |
+
define( 'WBCR_CLEARFY_PLUGIN_VERSION', '1.5.3' );
|
25 |
|
26 |
define( 'WBCR_CLEARFY_PLUGIN_ACTIVE', true );
|
27 |
|
54 |
'plugin_name' => 'wbcr_clearfy',
|
55 |
'plugin_title' => __( 'Clearfy', 'clearfy' ),
|
56 |
'plugin_version' => WBCR_CLEARFY_PLUGIN_VERSION,
|
|
|
|
|
57 |
'freemius_plugin_id' => 2315,
|
58 |
'freemius_plugin_slug' => 'clearfy',
|
59 |
'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
60 |
'plugin_build' => 'free',
|
61 |
'updates' => WCL_PLUGIN_DIR . '/updates/',
|
62 |
+
'plugin_as_component' => false,
|
63 |
+
'plugin_dir' => WCL_PLUGIN_DIR,
|
64 |
+
'plugin_base' => WCL_PLUGIN_BASE,
|
65 |
+
'plugin_url' => WCL_PLUGIN_URL,
|
66 |
+
'required_php_version' => '5.4',
|
67 |
+
'required_wp_version' => '4.2.0',
|
68 |
+
'factory_version' => 'FACTORY_409_VERSION'
|
69 |
);
|
70 |
|
71 |
+
|
72 |
+
|
73 |
/**
|
74 |
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
75 |
*/
|
86 |
require_once( WCL_PLUGIN_DIR . '/includes/class.plugin.php' );
|
87 |
|
88 |
new WCL_Plugin( __FILE__, $plugin_info );
|
|
|
89 |
|
90 |
+
|
91 |
+
// @formatter:on
|
components/assets-manager/assets/css/assets-manager.css
CHANGED
@@ -375,7 +375,7 @@ body p {
|
|
375 |
#WBCR .wbcr-gnz-panel {
|
376 |
position: fixed;
|
377 |
z-index: 50;
|
378 |
-
top:
|
379 |
right: 0;
|
380 |
left: 0;
|
381 |
width: 100%;
|
@@ -391,6 +391,7 @@ body p {
|
|
391 |
color: #FFF;
|
392 |
background: #23282d;
|
393 |
font-size: 16px;
|
|
|
394 |
}
|
395 |
#WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium {
|
396 |
position: relative;
|
@@ -997,6 +998,10 @@ body p {
|
|
997 |
#WBCR .wbcr-gnz-table__note p:not(:last-child) {
|
998 |
margin-bottom: 12px;
|
999 |
}
|
|
|
|
|
|
|
|
|
1000 |
#WBCR .wbcr-gnz-table__select {
|
1001 |
padding: 8px 28px 8px 10px;
|
1002 |
color: #4B4E51;
|
@@ -1024,7 +1029,7 @@ body p {
|
|
1024 |
}
|
1025 |
#WBCR .wbcr-gnz-table__label {
|
1026 |
display: block;
|
1027 |
-
margin:
|
1028 |
padding-bottom: 5px;
|
1029 |
color: #414B56;
|
1030 |
font-size: 13px;
|
@@ -1140,14 +1145,24 @@ body p {
|
|
1140 |
#WBCR .wbcr-gnz-table__also {
|
1141 |
font-size: 12px;
|
1142 |
font-weight: bold;
|
|
|
1143 |
}
|
1144 |
#WBCR .wbcr-gnz-table__also .wbcr-gnz-table__label {
|
1145 |
-
margin-bottom: 5px;
|
1146 |
font-size: 12px;
|
|
|
|
|
1147 |
}
|
1148 |
#WBCR .wbcr-gnz-table__also-url {
|
1149 |
color: #A9AAAA;
|
1150 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1151 |
#WBCR .wbcr-gnz-switch {
|
1152 |
position: relative;
|
1153 |
z-index: 1;
|
@@ -1394,3 +1409,4 @@ body p {
|
|
1394 |
display: block;
|
1395 |
}
|
1396 |
}
|
|
375 |
#WBCR .wbcr-gnz-panel {
|
376 |
position: fixed;
|
377 |
z-index: 50;
|
378 |
+
top: 30px;
|
379 |
right: 0;
|
380 |
left: 0;
|
381 |
width: 100%;
|
391 |
color: #FFF;
|
392 |
background: #23282d;
|
393 |
font-size: 16px;
|
394 |
+
border-top: 2px solid #ffcb1e;
|
395 |
}
|
396 |
#WBCR .wbcr-gnz-panel .wbcr-gnz-panel__premium {
|
397 |
position: relative;
|
998 |
#WBCR .wbcr-gnz-table__note p:not(:last-child) {
|
999 |
margin-bottom: 12px;
|
1000 |
}
|
1001 |
+
#WBCR .wbcr-gnz-table__select-wrapper::before,
|
1002 |
+
#WBCR .wbcr-gnz-table__select-wrapper::after {
|
1003 |
+
display: none !important;
|
1004 |
+
}
|
1005 |
#WBCR .wbcr-gnz-table__select {
|
1006 |
padding: 8px 28px 8px 10px;
|
1007 |
color: #4B4E51;
|
1029 |
}
|
1030 |
#WBCR .wbcr-gnz-table__label {
|
1031 |
display: block;
|
1032 |
+
margin: 15px 0 15px 10px;
|
1033 |
padding-bottom: 5px;
|
1034 |
color: #414B56;
|
1035 |
font-size: 13px;
|
1145 |
#WBCR .wbcr-gnz-table__also {
|
1146 |
font-size: 12px;
|
1147 |
font-weight: bold;
|
1148 |
+
margin-top: 15px;
|
1149 |
}
|
1150 |
#WBCR .wbcr-gnz-table__also .wbcr-gnz-table__label {
|
|
|
1151 |
font-size: 12px;
|
1152 |
+
padding: 5px 5px 5px 0;
|
1153 |
+
margin: 0;
|
1154 |
}
|
1155 |
#WBCR .wbcr-gnz-table__also-url {
|
1156 |
color: #A9AAAA;
|
1157 |
}
|
1158 |
+
#WBCR .wbcr-gnz-table__also-url span {
|
1159 |
+
display: block;
|
1160 |
+
}
|
1161 |
+
#WBCR .wbcr-gnz-table__also-url span a {
|
1162 |
+
text-decoration: underline;
|
1163 |
+
color: #adaeae;
|
1164 |
+
font-size: 12px;
|
1165 |
+
}
|
1166 |
#WBCR .wbcr-gnz-switch {
|
1167 |
position: relative;
|
1168 |
z-index: 1;
|
1409 |
display: block;
|
1410 |
}
|
1411 |
}
|
1412 |
+
/*# sourceMappingURL=assets-manager.css.map */
|
components/assets-manager/assets/css/assets-manager.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["assets-manager.less","reset.less"],"names":[],"mappings":";;;;;AAMA;AAAM;EACJ,2BAAA;;AAGF;EACE,4BAAA;EACA,yCAAA;EACA,sBAAA;;AAGF;EACE,oBAAA;EACA,qBAAA;EACA,2BAAA;;AAEA;AALF,IAKK;EACD,oBAAoB,4BAApB;;AAIJ;;;;;;;;;;;;;AAAA,KCpBA;ADoBA,KCpBG,EAAC;ADoBJ,KCpBa,EAAC;EACZ,8BAAA;EACA,2BAAA;EACA,sBAAA;;AAGF;ADcA,KCbA;ADaA,KCbI;ADaJ,KCbQ;ADaR,KCbY;ADaZ,KCbgB;ADahB,KCZA;ADYA,KCZG;ADYH,KCZW;ADYX,KCZc;ADYd,KCXA;ADWA,KCXI;ADWJ,KCXO;ADWP,KCXU;ADWV,KCXe;ADWf,KCVA;ADUA,KCVS;ADUT,KCVa;ADUb,KCTA,MAAK;ADSL,KCTsB,MAAK;ADS3B,KCRA;EACE,oBAAoB,4BAApB;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,iBAAA;;ADEF,KCCA;EACE,cAAA;EACA,gBAAA;;ADHF,KCMA;EACE,uBAAA;EACA,SAAA;EACA,iBAAA;;ADTF,KCYA;EACE,iCAAA;EACA,cAAA;;ADdF,KCiBA;EACE,6BAAA;;ADlBF,KCqBA,KAAI;EACF,mBAAA;EACA,iCAAA;;ADvBF,KC0BA;AD1BA,KC0BG;EACD,mBAAA;;AD3BF,KC8BA;AD9BA,KC8BM;AD9BN,KC8BW;EACT,iCAAA;EACA,cAAA;;ADhCF,KCmCA;EACE,cAAA;;ADpCF,KCuCA;ADvCA,KCuCK;EACH,cAAA;EACA,cAAA;EACA,kBAAA;EACA,wBAAA;;AD3CF,KC8CA;EACE,eAAA;;AD/CF,KCkDA;EACE,WAAA;;ADnDF,KCsDA;EACE,kBAAA;;ADvDF,KC0DA;AD1DA,KC2DA;AD3DA,KC4DA;AD5DA,KC6DA;AD7DA,KC8DA;EACE,oBAAA;EACA,eAAA;EACA,iBAAA;EACA,SAAA;EACA,YAAA;EACA,WAAA;;AACA,KAXF;AAWE,KAVF;AAUE,KATF;AASE,KARF;AAQE,KAPF;AAOK,KAXL,OAWM;AAAD,KAVL,MAUM;AAAD,KATL,SASM;AAAD,KARL,OAQM;AAAD,KAPL,SAOM;AAAQ,KAXd,OAWe;AAAD,KAVd,MAUe;AAAD,KATd,SASe;AAAD,KARd,OAQe;AAAD,KAPd,SAOe;EACX,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,mBAAA;;ADzEJ,KC6EA;AD7EA,KC8EA;EACE,iBAAA;;AD/EF,KCkFA;ADlFA,KCmFA;EACE,oBAAA;;ADpFF,KCuFA;ADvFA,KCwFA;ADxFA,KCyFA;ADzFA,KC0FA;EACE,0BAAA;;AD3FF,KC8FA,OAAM;AD9FN,KC+FA,gBAAe;AD/Ff,KCgGA,eAAc;ADhGd,KCiGA,gBAAe;EACb,kBAAA;EACA,UAAA;;ADnGF,KCsGA,OAAM;ADtGN,KCuGA,gBAAe;ADvGf,KCwGA,eAAc;ADxGd,KCyGA,gBAAe;EACb,8BAAA;;AD1GF,KC6GA;EACE,8BAAA;;AD9GF,KCiHA;EACE,sBAAA;EACA,cAAA;EACA,cAAA;EACA,eAAA;EACA,UAAA;EACA,mBAAA;;ADvHF,KC0HA;EACE,cAAA;;AD3HF,KC8HA;AD9HA,KC+HA;EACE,sBAAA;EACA,UAAA;;ADjIF,KCoIA,gBAAe;ADpIf,KCqIA,gBAAe;EACb,YAAA;;ADtIF,KCyIA;EACE,6BAAA;EACA,oBAAA;;AD3IF,KC8IA,gBAAe;EACb,wBAAA;;AD/IF,KCkJA;EACE,0BAAA;EACA,aAAA;;ADpJF,KCuJA;EACE,8BAAA;;ADxJF,KC2JA;EACE,sBAAA;EACA,cAAA;EACA,cAAA;EACA,eAAA;EACA,UAAA;EACA,mBAAA;;ADjKF,KCoKA;EACE,wBAAA;;ADrKF,KCwKA;EACE,cAAA;;ADzKF,KC4KA;AD5KA,KC4KiB;EACf,sBAAA;EACA,UAAA;;AD9KF,KCiLA,cAAa;ADjLb,KCiL0C,cAAa;EACrD,YAAA;;ADlLF,KCqLA;EACE,6BAAA;EACA,oBAAA;;ADvLF,KC0LA,cAAa;EACX,wBAAA;;AD3LF,KC8LA;EACE,0BAAA;EACA,aAAA;;ADhMF,KCmMA;EACE,cAAA;;ADpMF,KCuMA;EACE,kBAAA;;ADxMF,KC2MA;EACE,aAAA;;AD5MF,KC+MA;EACE,aAAA;;ADhNF,KCmNA;ADnNA,KCmNO;ADnNP,KCmNgB;ADnNhB,KCmNuB;ADnNvB,KCmN8B;ADnN9B,KCmNqC;ADnNrC,KCmNyC;ADnNzC,KCmN6C;EAC3C,SAAA;EACA,UAAA;EACA,SAAA;EACA,eAAA;EACA,aAAA;EACA,sBAAA;EACA,gBAAA;;AD1NF,KC6NA;EACE,kBAAA;EACA,yBAAA;EACA,iBAAA;;ADhOF,KAOE;EACE,eAAA;EACA,SAAA;;AATJ,KAgBE,MAAK,aAAa;EAChB,cAAA;;AAjBJ,KAoBE,MAAK,aAAa;AApBpB,KAoBiD,SAAQ;EACrD,cAAA;;AArBJ,KAwBE,MAAK,aAAa;AAxBpB,KAwB4C,SAAQ;EAChD,cAAA;;AAzBJ,KA4BE,MAAK,aAAa;AA5BpB,KA4B6C,SAAQ;EACjD,cAAA;;AA7BJ,KAgCE,MAAK,aAAa;AAhCpB,KAgCmC,SAAQ;EACvC,cAAA;;AAjCJ,KAoCE;EACE,qBAAA;EACA,cAAA;EACA,YAAA;EACA,gBAAA;;AAEA,KANF,EAMG;EACC,0BAAA;EACA,eAAA;EACA,mBAAA;;AA7CN,KAiDE;AAjDF,KAiDU;EACN,YAAA;EACA,gBAAA;EACA,UAAA;EACA,gBAAA;;AArDJ,KAwDE;EACE,YAAA;EACA,SAAA;EACA,gBAAA;;AA3DJ,KA8DE;AA9DF,KA8DU;EACN,YAAA;;AA/DJ,KAkEE;EACE,kBAAA;EACA,gBAAA;EACA,MAAM,aAAN;EACA,mBAAmB,WAAnB;EACA,WAAW,WAAX;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,mBAAA;EACA,SAAA;;AAGF,KAAC;EACC,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,gBAAA;EACA,gBAAA;;AAzFJ,KA6FE;EACE,qBAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,UAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,mBAAA;EACA,kBAAA;;AAxGJ,KA6FE,oBAaE;EACE,qBAAA;EACA,mBAAA;;AA5GN,KAgHE;EACE,eAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,sBAAA;EACA,sCAAA;EACA,8BAAA;EACA,YAAA;EACA,eAAA;EACA,SAAA;EACA,WAAA;EACA,mBAAA;EACA,eAAA;EACA,6BAAA;;AAnIJ,KAgHE,gBAqBE;EACE,kBAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;;AAEA,KA7BJ,gBAqBE,yBAQG;EACC,eAAA;;AA9IR,KAgHE,gBAqBE,yBAYE;EACE,kBAAA;EACA,YAAA;EACA,QAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,mBAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,oBAAA;EACA,gBAAA;;AAGF,KAjDJ,gBAqBE,yBA4BG;EACC,cAAA;EACA,SAAS,EAAT;EACA,kBAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;;AAzKR,KA8KE;AA9KF,KA+KE;EACE,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,2BAAA;EACA,mBAAA;EACA,sBAAA;;AArLJ,KAwLE;EACE,gBAAA;EACA,kBAAA;;AA1LJ,KA6LE;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAgB,ymEAAhB;;AAjMJ,KAoME;EACE,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,2BAAA;EACA,mBAAA;EACA,sBAAA;EACA,eAAA;EACA,UAAA;EACA,gBAAA;;AA7MJ,KAgNE,sBAAqB,IAAI;EACvB,kBAAA;;AAjNJ,KAoNE;EACE,cAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;;AAzNJ,KA4NE;EACE,aAAA;EACA,kBAAA;;AA9NJ,KAiOE,6BAA6B;EAC3B,sBAAA;;AAlOJ,KAqOE;EACE,eAAA;EACA,cAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;;AA1OJ,KA6OE,yBACE;EACE,mBAAA;EACA,cAAA;;AAhPN,KAoPE,yBACE;EACE,mBAAA;EACA,cAAA;;AAOF,KAHF;AAGE,KAFF;AAEE,KADF;AACK,KAHL,sBAGM,MAAM;AAAP,KAFL,uBAEM,MAAM;AAAP,KADL,sBACM,MAAM;EACR,qBAAA;EACA,qBAAA;EACA,eAAA;EACA,eAAA;EACA,sBAAA;EACA,oCAAA;EACA,YAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;;AAxQN,KA6QE,sBAAqB;AA7QvB,KA8QE,uBAAsB;AA9QxB,KA+QE,sBAAqB;AA/QvB,KAgRE,sBAAqB;AAhRvB,KAiRE,uBAAsB;AAjRxB,KAkRE,sBAAqB;EACnB,aAAA;EACA,qBAAA;;AApRJ,KAuRE,sBAAqB;AAvRvB,KAwRE,uBAAsB;AAxRxB,KAyRE,sBAAqB;EACnB,mBAAmB,eAAnB;EACA,WAAW,eAAX;;AAIA,KADF;AACK,KADL,sBACM,MAAM;EACR,kBAAA;EACA,SAAA;EACA,QAAA;EACA,SAAA;EACA,yBAAA;EACA,8BAAA;EACA,yBAAA;EACA,gBAAA;EACA,eAAA;;AAMF,KAFF,sBAAqB;AAEnB,KADF,sBAAqB;AAChB,KAFL,sBAAqB,MAEf,MAAM;AAAP,KADL,sBAAqB,MACf,MAAM;EACR,8BAAA;;AAKF,KADF,sBAAqB;AAChB,KADL,sBAAqB,OACf,MAAM;EACR,oCAAA;;AAKF,KADF;AACK,KADL,uBACM,MAAM;EACR,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oCAAA;;AA/TN,KAmUE,uBAAsB;AAnUxB,KAoUE,uBAAsB;EACpB,8BAAA;;AArUJ,KAwUE,uBAAsB;EACpB,oCAAA;;AAIA,KADF;AACK,KADL,sBACM,MAAM;EACR,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,sBAAA;EACA,8BAAA;EACA,oCAAA;;AAGF,KAVF,sBAUG;AAAQ,KAVX,sBAUY;EACR,8BAAA;EACA,oCAAA;;AAGF,KAfF,sBAeG;EACC,8BAAA;EACA,oCAAA;;AAGF,KApBF,sBAoBI;EACA,SAAA;;AAjWN,KAqWE;EACE,eAAA;EACA,eAAA;EACA,eAAA;;AAxWJ,KA2WE;AA3WF,KA2WkC;EAC9B,kBAAA;EACA,mBAAA;;AAEA,KAJF,+BAIG;AAAD,KAJ8B,uCAI7B;EACC,SAAS,EAAT;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;;AAOE,KAHN,gCACG,QACG,iCACC;AAAD,KAHN,gCACG,QACuC,yCACnC;EACC,SAAS,EAAT;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,mBAAmB,cAAnB;EACA,WAAW,cAAX;EACA,kBAAA;EACA,yBAAA;;AAxYV,KA8YE;EACE,eAAA;EACA,+BAAA;;AAhZJ,KA8YE,uCAIE;EACE,qBAAA;EACA,cAAA;EACA,gBAAA;EACA,WAAA;EACA,mBAAA;EACA,WAAA;EACA,cAAA;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;;AAGF,KAlBF,uCAkBG;EACC,oCAAA;;AAjaN,KAqaE;EACE,WAAA;EACA,YAAA;EACA,qBAAA;EACA,eAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,gBAAgB,ijBAAhB;;AAEA,KAVF,uBAUG;EACC,WAAA;;AAGF,KAdF,uBAcG;EACC,WAAA;EACA,aAAA;;AArbN,KAybE;EACE,cAAA;EACA,WAAA;EACA,SAAA;EACA,sBAAA;;AA7bJ,KAgcE;EACE,eAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA;EACA,WAAA;EACA,SAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,wCAAA;;AA1cJ,KAgcE,eAYE;EACE,SAAA;EACA,UAAA;;AA9cN,KAkdE;EACE,kBAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,mBAAA;;AAEA,KAfF,uBAeG;AAAQ,KAfX,uBAeY;AAAQ,KAfpB,uBAeqB;AAAQ,KAf7B,uBAe8B;AAAS,KAfvC,uBAewC,MAAM;AAAQ,KAftD,uBAeuD,OAAO;EAC1D,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,mBAAA;;AAreN,KAyeE,uBAAsB;EACpB,SAAS,EAAT;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;;AAhfJ,KAmfE,6BAA4B;EAC1B,gBAAgB,+8FAAhB;;AApfJ,KAufE,8BAA6B;EAC3B,gBAAgB,unEAAhB;;AAxfJ,KA2fE,gCAA+B;EAC7B,gBAAgB,2iHAAhB;;AA5fJ,KA+fE,uBAAsB;AA/fxB,KAggBE,uBAAsB;EACpB,aAAA;EACA,mBAAA;;AAlgBJ,KAqgBE,uBAAsB,MAAM;AArgB9B,KAsgBE,uBAAsB,MAAM;EAC1B,UAAA;;AAvgBJ,KA0gBE,uBAAsB;EACpB,mBAAA;;AA3gBJ,KA8gBE,uBAAsB,OAAO;EAC3B,UAAA;;AA/gBJ,KAkhBE;EACE,aAAA;;AAnhBJ,KAshBE,uBAAsB;EACpB,cAAA;;AAvhBJ,KA0hBE;EACE,cAAA;EAEA,oBAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;;AAhiBJ,KA0hBE,eAQE;EACE,eAAA;EACA,SAAA;;AAEA,KAZJ,eAQE,EAIG,IAAI;EACH,mBAAA;;AAviBR,KA0hBE,eAiBE;AA3iBJ,KA0hBE,eAiB2B;EACvB,mBAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EAEA,4BAAA;;AAnjBN,KA0hBE,eA6BE;EACE,mBAAA;EAEA,2BAAA;EACA,iBAAA;;AA3jBN,KA0hBE,eA6BE,8BAME;EACE,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;EACA,gCAAA;EACA,sBAAA;;AAnkBR,KA0hBE,eA6BE,8BAME,GAQE;EACE,cAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,yBAAA;;AA1kBV,KA0hBE,eA6BE,8BAuBE;EACE,gBAAA;EACA,gBAAA;EACA,mBAAA;EACA,UAAA;;AAllBR,KA0hBE,eA6BE,8BAuBE,GAME;EACE,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,cAAA;EACA,UAAA;;AAEA,KAjER,eA6BE,8BAuBE,GAME,GAOG;EACC,SAAS,GAAT;EACA,qBAAA;EACA,YAAA;EACA,aAAA;EACA,qBAAA;EACA,6BAAA;EACA,OAAA;EACA,kBAAA;EACA,mBAAmB,aAAnB;EACA,gBAAgB,aAAhB;EACA,cAAc,aAAd;EACA,WAAW,aAAX;;AAvmBZ,KA8mBE;EACE,cAAA;;AA/mBJ,KA8mBE,gBAGE;EACE,WAAA;EACA,yBAAA;;AAnnBN,KA8mBE,gBAQE,MAAK,UAAU;EACb,mBAAA;EACA,+BAAA;;AAxnBN,KA8mBE,gBAaE;EACE,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;;AAhoBN,KA8mBE,gBAqBE,GAAE,IAAI;EACJ,4BAAA;;AApoBN,KA8mBE,gBAyBE;EACE,kBAAA;EACA,mBAAA;EACA,gCAAA;EACA,gBAAA;EACA,gBAAA;EACA,gBAAA;;AA7oBN,KA8mBE,gBAkCE,GAAE,UAAU;AAhpBhB,KA8mBE,gBAmCE,GAAE,UAAU;AAjpBhB,KA8mBE,gBAoCE,GAAE,UAAU;AAlpBhB,KA8mBE,gBAqCE,GAAE,UAAU;EACV,kBAAA;;AAppBN,KAwpBE,2BAA2B;EACzB,mBAAA;EACA,gBAAA;;AA1pBJ,KA6pBE;EACE,mBAAA;EACA,UAAA;;AA/pBJ,KAmqBE,GAAE;EACA,qBAAA;;AApqBJ,KAuqBE,GAAE,8BAA+B;EAC/B,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,oBAAA;;AA5qBJ,KA+qBE,GAAE,8BAA+B;EAC/B,cAAA;EACA,kBAAA;EACA,gBAAA;;AAlrBJ,KAqrBE;EACE,UAAA;;AAtrBJ,KAyrBE;EACE,YAAA;EACA,kBAAA;;AA3rBJ,KA8rBE;EACE,cAAA;EACA,kBAAA;EACA,eAAA;EACA,mBAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;;AArsBJ,KA8rBE,oCASE;EACE,cAAA;EACA,kBAAA;EACA,QAAA;EACA,UAAA;EACA,gBAAA;;AA5sBN,KAgtBE;EACE,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,mBAAA;;AAttBJ,KAytBE,8BAA6B;EAC3B,SAAS,EAAT;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,mBAAmB,cAAnB;EACA,WAAW,cAAX;EACA,kBAAA;EACA,yBAAA;;AAnuBJ,KAsuBE;EACE,8BAAA;;AAvuBJ,KA0uBE;EACE,mBAAA;;AA3uBJ,KA8uBE;EACE,mBAAA;;AA/uBJ,KAkvBE;EACE,WAAA;;AAnvBJ,KAsvBE;EACE,cAAA;EACA,eAAA;EACA,iBAAA;;AAzvBJ,KA4vBE;EACE,cAAA;;AA7vBJ,KAgwBE,GAAE,qBAAqB,UAAU;EAC/B,gBAAA;;AAjwBJ,KAowBE;EACE,eAAA;EACA,yBAAA;EACA,eAAA;EACA,iBAAA;;AAxwBJ,KA2wBE;EACE,eAAA;;AA5wBJ,KA+wBE;EACE,cAAA;EACA,eAAA;EACA,iBAAA;;AAlxBJ,KA+wBE,6BAKE;EACE,qBAAA;EACA,iBAAA;EACA,eAAA;EACA,yBAAA;EACA,kBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;;AAEA,KAfJ,6BAKE,EAUG;EACC,mBAAA;EACA,cAAA;;AAGF,KApBJ,6BAKE,EAeG;EACC,mBAAA;EACA,cAAA;;AAryBR,KA0yBE,6BAA4B,IAAI;EAC9B,kBAAA;;AA3yBJ,KA8yBE;EACE,cAAA;;AAEA,KAHF;AA9yBF,KA8yBE,6BAGK;EACD,eAAA;;AAlzBN,KAszBE;EACE,cAAA;EACA,eAAA;EACA,cAAA;;AAzzBJ,KA4zBE;EACE,YAAA;;AA7zBJ,KAg0BE;EACE,YAAA;;AAj0BJ,KAo0BE;EACE,WAAA;EACA,kBAAA;EACA,iBAAA;;AAv0BJ,KA00BE,sBAAsB;EACpB,SAAA;;AA30BJ,KA80BE,sBAAsB,EAAC,IAAI;EACzB,mBAAA;;AAIA,KADF,gCACG;AAAU,KADb,gCACc;EACV,wBAAA;;AAp1BN,KAw1BE;EACE,0BAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAwB,kSAAxB;EACA,eAAA;EAEA,wBAAA;EACA,qBAAA;EACA,gBAAA;;AAl2BJ,KAq2BE,wBAAuB,IAAI;EACzB,mBAAA;;AAt2BJ,KAy2BE,wBAAuB;EACrB,aAAA;EACA,yBAAA;EACA,6CAAA;;AA52BJ,KA+2BE,wBAAuB;EACrB,aAAA;;AAh3BJ,KAm3BE;EACE,8BAAA;;AAp3BJ,KAu3BE;EACE,cAAA;EACA,wBAAA;EACA,mBAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;EACA,gCAAA;;AA93BJ,KAu3BE,uBASE;EACE,sBAAA;;AAj4BN,KAq4BE;EACE,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;EACA,sBAAA;EACA,UAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;;AAj5BJ,KAo5BE;EACE,aAAA;EACA,sBAAA;;AAt5BJ,KAy5BE;EACE,eAAA;;AA15BJ,KA65BE;EACE,kBAAA;EACA,mBAAA;EACA,cAAA;;AAh6BJ,KAm6BE,+BAA8B;EAC5B,SAAS,EAAT;EACA,kBAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;;AA36BJ,KA86BE,gCAA+B,QAAS;EACtC,cAAA;;AA/6BJ,KAk7BE,gCAA+B,QAAS,iCAAgC;EACtE,mBAAA;;AAn7BJ,KAs7BE,gCAA+B,QAAS,iCAAgC;EACtE,SAAS,EAAT;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,mBAAmB,cAAnB;EACA,WAAW,cAAX;EACA,kBAAA;EACA,yBAAA;;AAh8BJ,KAm8BE;EACE,eAAA;;AAp8BJ,KAu8BE;EACE,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,gBAAA;;AA38BJ,KA88BE;AA98BF,KA+8BE;EACE,UAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,eAAA;;AAv9BJ,KA09BE,6BAA4B;AA19B9B,KA29BE,0BAAyB;EACvB,aAAA;;;AA59BJ,KAg+BE;EACE,WAAA;EACA,iBAAA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;;AAt+BJ,KAy+BE,2BAA0B;EACxB,SAAS,GAAT;EACA,cAAA;;AA3+BJ,KA8+BE,2BAA0B;EACxB,mBAAA;;AA/+BJ,KAk/BE,2BAA0B;EACxB,aAAA;EACA,6CAAA;;AAp/BJ,KAu/BE;EACE,UAAA;EACA,mBAAA;EACA,qBAAA;;AA1/BJ,KA6/BE;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;;AAhgCJ,KAmgCE,sBAAsB;EACpB,eAAA;EACA,sBAAA;EACA,SAAA;;AAtgCJ,KAygCE;EACE,cAAA;;AA1gCJ,KAygCE,0BAGE;EACE,cAAA;;AA7gCN,KAygCE,0BAGE,KAGE;EACE,0BAAA;EACA,cAAA;EACA,eAAA;;AAlhCR,KAuhCE;EACE,kBAAA;EACA,UAAA;EACA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,sBAAA;EACA,mBAAA;EACA,UAAA;;AAjiCJ,KAuhCE,iBAYE;EACE,qBAAA;EACA,oBAAA;EACA,aAAA;EACA,YAAA;EACA,eAAA;EACA,mBAAmB,iBAAnB;EACA,WAAW,iBAAX;EACA,WAAA;EACA,eAAA;EACA,iBAAA;;AA7iCN,KAuhCE,iBAyBE,wBAAuB;AAhjC3B,KAuhCE,iBA0BE,wBAAuB;EACrB,sBAAA;EACA,oBAAA;EACA,cAAA;EACA,WAAA;;AArjCN,KAuhCE,iBAiCE,wBAAuB;EACrB,SAAS,cAAT;EACA,mBAAA;EACA,mBAAA;;AA3jCN,KAuhCE,iBAuCE,wBAAuB;EACrB,SAAS,aAAT;EACA,mBAAA;EACA,iBAAA;EACA,mBAAA;;AAlkCN,KAuhCE,iBA8CE;EACE,kBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,SAAA;;AAGF,KA1DF,iBA0DG,IAAI,0BACH,wBAAuB,QAAS;AADlC,KA1DF,iBA0DG,IAAI,0BAEH,wBAAuB,QAAQ,MAAO;EACpC,mBAAmB,aAAnB;EACA,WAAW,aAAX;;AAJJ,KA1DF,iBA0DG,IAAI,0BAOH,wBAAuB,QAAS;AAPlC,KA1DF,iBA0DG,IAAI,0BAQH,wBAAuB,QAAQ,MAAO;EACpC,UAAA;EACA,mBAAA;;AAIJ,KAxEF,iBAwEG;EACC,kBAAA;EACA,kBAAA;;AAFF,KAxEF,iBAwEG,wBAIC;EACE,mBAAA;;AALJ,KAxEF,iBAwEG,wBAQC,wBAAuB;EACrB,mBAAA;EACA,kBAAA;;AAGF,KArFJ,iBAwEG,wBAaE;EACC,SAAS,KAAT;EACA,cAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,cAAA;EACA,gBAAA;EACA,iBAAA;EACA,WAAA;EACA,mBAAA;EACA,WAAA;EACA,YAAA;;EAEA,kBAAA;EACA,mBAAA;EACA,mBAAA;;AA5nCR,KAioCE;EACE,kBAAA;;AAloCJ,KAqoCE,kBAAiB;EACf,SAAS,EAAT;EACA,kBAAA;EACA,WAAA;EACA,SAAA;EACA,aAAA;EACA,WAAA;EACA,YAAA;;AA5oCJ,KA+oCE,kBAAiB;EACf,SAAS,kBAAT;EACA,kBAAA;EACA,WAAA;EACA,SAAA;EACA,aAAA;EACA,gBAAA;EACA,iBAAA;EACA,cAAA;EACA,mBAAA;EACA,eAAA;EACA,mBAAA;EACA,gBAAA;;AA3pCJ,KA8pCE,sBAAqB;EACnB,YAAA;EACA,YAAY,qFAAZ;;AAhqCJ,KAmqCE,sBAAqB;EACnB,YAAA;EACA,gBAAA;EACA,4BAAA;;AAtqCJ,KAyqCE,yBAAwB;EACtB,SAAA;EACA,YAAY,oFAAZ;;AA3qCJ,KA8qCE,yBAAwB;EACtB,SAAA;EACA,gBAAA;EACA,4BAAA;;AAjrCJ,KAorCE,kBAAiB,MAAM;AAprCzB,KAqrCE,kBAAiB,MAAM;EACrB,cAAA;;AAtrCJ,KAyrCE;EACE,cAAA;EACA,eAAA;;AA3rCJ,KA8rCE,qBAAqB;EACnB,cAAA;;AA/rCJ,KAksCE;AAlsCF,KAksCW;EACP,gBAAA;;AAnsCJ,KAssCE;EACE,qBAAA;;AAIJ,mBAAsC;EACpC,KACE;IACE,eAAA;;EAFJ,KAKE;IACE,sBAAA;;EANJ,KASE,sBACE;IACE,cAAA;;EAXN,KAeE,uBACE;IACE,eAAA;;EAjBN,KAeE,uBAKE;EApBJ,KAeE,uBAK0B;IACtB,eAAA;;EArBN,KAeE,uBASE;IACE,eAAA;IACA,cAAA;IACA,gBAAA;;EA3BN,KAeE,uBAgBE;IACE,WAAA;IACA,YAAA;IACA,qBAAA;IACA,sBAAA;;EAnCN,KAuCE;IACE,UAAA;;EAEA,KAHF;EAvCF,KAuCE,eAGK;IACD,eAAA;;EA3CN,KAuCE,eAOE;IACE,uBAAA;;EA/CN,KAmDE;IACE,eAAA;;EApDJ,KAuDE;IACE,SAAA;;EAxDJ,KAuDE,gBAGE;IACE,eAAA;;EA3DN,KAuDE,gBAOE,sBACE;IACE,eAAA;;EAIA,KAbN,gBAOE,sBAKE;EACE,KAbN,gBAOE,sBAKgC;EAC5B,KAbN,gBAOE,sBAK+D;EAnEnE,KAuDE,gBAOE,sBAKE,6BACK;EApEX,KAuDE,gBAOE,sBAKgC,8BACzB;EApEX,KAuDE,gBAOE,sBAK+D,qBACxD;IACD,eAAA;;EArEV,KAuDE,gBAmBE;IACE,eAAA;;EA3EN,KAuDE,gBAmBE,6BAGE;IACE,eAAA;IACA,oBAAA;IACA,gBAAA;IACA,iBAAA;;EAjFR,KAuDE,gBA8BE,6BACE;IACE,eAAA;;EAvFR,KAuDE,gBAoCE;IACE,UAAA;;EA5FN,KAuDE,gBAoCE,+BAGE;EA9FN,KAuDE,gBAoCE,+BAGuC;IACnC,eAAA;;EA/FR,KAuDE,gBAoCE,+BAOE;IACE,eAAA;;EAnGR,KAuDE,gBAgDE;IACE,UAAA;;;AAMR,mBAAsC;EACpC,KACE;IACE,aAAA;;EAFJ,KAKE;IACE,cAAA","file":"assets-manager.css"}
|
components/assets-manager/assets/css/assets-manager.less
CHANGED
@@ -39,6 +39,7 @@ body {
|
|
39 |
/**
|
40 |
* Placeholders
|
41 |
*/
|
|
|
42 |
input[type="text"]::-moz-placeholder {
|
43 |
color: #cccccc;
|
44 |
}
|
@@ -64,6 +65,7 @@ body {
|
|
64 |
color: #007acc;
|
65 |
border: none;
|
66 |
background: none;
|
|
|
67 |
&:hover {
|
68 |
text-decoration: underline;
|
69 |
border: inherit;
|
@@ -137,7 +139,7 @@ body {
|
|
137 |
.wbcr-gnz-panel {
|
138 |
position: fixed;
|
139 |
z-index: 50;
|
140 |
-
top:
|
141 |
right: 0;
|
142 |
left: 0;
|
143 |
width: 100%;
|
@@ -153,6 +155,7 @@ body {
|
|
153 |
color: #FFF;
|
154 |
background: #23282d;
|
155 |
font-size: 16px;
|
|
|
156 |
|
157 |
.wbcr-gnz-panel__premium {
|
158 |
position: relative;
|
@@ -161,9 +164,11 @@ body {
|
|
161 |
height: 40px;
|
162 |
background: #ffcb1e;
|
163 |
margin-left: -30px;
|
|
|
164 |
&:hover {
|
165 |
cursor: pointer;
|
166 |
}
|
|
|
167 |
.wbcr-gnz-tooltip {
|
168 |
position: relative;
|
169 |
right: -30px;
|
@@ -179,6 +184,7 @@ body {
|
|
179 |
padding: 5px 0 5px 0;
|
180 |
line-height: 1.2;
|
181 |
}
|
|
|
182 |
&:after {
|
183 |
display: block;
|
184 |
content: '';
|
@@ -364,6 +370,7 @@ body {
|
|
364 |
background: #FFD340 !important;
|
365 |
box-shadow: 0 4px #BF9A17 !important;
|
366 |
}
|
|
|
367 |
&:active {
|
368 |
background: #FFD340 !important;
|
369 |
box-shadow: 0 2px #BF9A17 !important;
|
@@ -418,6 +425,7 @@ body {
|
|
418 |
.wbcr-gnz-panel__checkbox-text-premium {
|
419 |
display: inline;
|
420 |
color: rgba(245, 245, 245, 0.3);
|
|
|
421 |
b {
|
422 |
display: inline-block;
|
423 |
font-size: 9px;
|
@@ -431,6 +439,7 @@ body {
|
|
431 |
border-radius: 3px;
|
432 |
line-height: 1.5;
|
433 |
}
|
|
|
434 |
&::before {
|
435 |
background: rgba(245, 245, 245, 0.3);
|
436 |
}
|
@@ -449,6 +458,7 @@ body {
|
|
449 |
&:hover {
|
450 |
opacity: .7;
|
451 |
}
|
|
|
452 |
&:focus {
|
453 |
opacity: .5;
|
454 |
outline: none;
|
@@ -473,6 +483,7 @@ body {
|
|
473 |
list-style: none;
|
474 |
background: #F4F4F4;
|
475 |
box-shadow: 2px 0 5px rgba(0, 0, 0, .2);
|
|
|
476 |
li {
|
477 |
margin: 0;
|
478 |
padding: 0;
|
@@ -493,6 +504,7 @@ body {
|
|
493 |
-ms-box-shadow: none;
|
494 |
-webkit-box-shadow: none;
|
495 |
-o-box-shadow: none;
|
|
|
496 |
&:hover, &:focus, &:after, &:before, &:after:hover, &:before:hover {
|
497 |
-moz-box-shadow: none;
|
498 |
-ms-box-shadow: none;
|
@@ -561,6 +573,7 @@ body {
|
|
561 |
p {
|
562 |
font-size: 15px;
|
563 |
margin: 0;
|
|
|
564 |
&:not(:last-child) {
|
565 |
margin-bottom: 25px;
|
566 |
}
|
@@ -583,6 +596,7 @@ body {
|
|
583 |
//border: 1px dashed #e0cb14;
|
584 |
border-left: 2px solid #fff;
|
585 |
margin-left: 10px;
|
|
|
586 |
h3 {
|
587 |
position: relative;
|
588 |
margin: 0 0 20px;
|
@@ -599,17 +613,20 @@ body {
|
|
599 |
text-transform: uppercase;
|
600 |
}
|
601 |
}
|
|
|
602 |
ul {
|
603 |
list-style: none;
|
604 |
margin-left: 5px;
|
605 |
margin-bottom: 20px;
|
606 |
padding: 0;
|
|
|
607 |
li {
|
608 |
margin-bottom: 5px;
|
609 |
font-weight: 600;
|
610 |
font-size: 15px;
|
611 |
color: #7d8871;
|
612 |
padding: 0;
|
|
|
613 |
&:before {
|
614 |
content: " ";
|
615 |
display: inline-block;
|
@@ -809,6 +826,7 @@ body {
|
|
809 |
background: #ffcb1e;
|
810 |
color: #403102;
|
811 |
}
|
|
|
812 |
&.wbcr-wgz-resource-type-css {
|
813 |
background: #9757a5;
|
814 |
color: #ffffff;
|
@@ -822,6 +840,7 @@ body {
|
|
822 |
|
823 |
.wbcr-gnz-table__script-path {
|
824 |
color: #BBBBBA;
|
|
|
825 |
&, a {
|
826 |
font-size: 12px;
|
827 |
}
|
@@ -855,6 +874,12 @@ body {
|
|
855 |
margin-bottom: 12px;
|
856 |
}
|
857 |
|
|
|
|
|
|
|
|
|
|
|
|
|
858 |
.wbcr-gnz-table__select {
|
859 |
padding: 8px 28px 8px 10px;
|
860 |
color: #4B4E51;
|
@@ -888,7 +913,7 @@ body {
|
|
888 |
|
889 |
.wbcr-gnz-table__label {
|
890 |
display: block;
|
891 |
-
margin:
|
892 |
padding-bottom: 5px;
|
893 |
color: #414B56;
|
894 |
font-size: 13px;
|
@@ -1023,15 +1048,27 @@ body {
|
|
1023 |
.wbcr-gnz-table__also {
|
1024 |
font-size: 12px;
|
1025 |
font-weight: bold;
|
|
|
1026 |
}
|
1027 |
|
1028 |
.wbcr-gnz-table__also .wbcr-gnz-table__label {
|
1029 |
-
margin-bottom: 5px;
|
1030 |
font-size: 12px;
|
|
|
|
|
1031 |
}
|
1032 |
|
1033 |
.wbcr-gnz-table__also-url {
|
1034 |
color: #A9AAAA;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1035 |
}
|
1036 |
|
1037 |
.wbcr-gnz-switch {
|
@@ -1113,6 +1150,7 @@ body {
|
|
1113 |
.wbcr-gnz-switch__slider {
|
1114 |
background: #ababab;
|
1115 |
}
|
|
|
1116 |
.wbcr-gnz-switch__inner::after {
|
1117 |
background: #d3d4d4;
|
1118 |
font-style: normal;
|
@@ -1218,9 +1256,11 @@ body {
|
|
1218 |
p {
|
1219 |
font-size: 13px;
|
1220 |
}
|
|
|
1221 |
.wbcr-gnz-content {
|
1222 |
padding: 32px 0 0 75px;
|
1223 |
}
|
|
|
1224 |
.wbcr-gnz-panel__left {
|
1225 |
.wbcr-gnz-panel__item_value {
|
1226 |
display: block;
|
@@ -1231,6 +1271,7 @@ body {
|
|
1231 |
.wbcr-gnz-table__checkbox-text {
|
1232 |
font-size: 13px;
|
1233 |
}
|
|
|
1234 |
.wbcr-gnz-panel__reset, .wbcr-gnz-panel__save {
|
1235 |
font-size: 12px;
|
1236 |
}
|
@@ -1252,9 +1293,11 @@ body {
|
|
1252 |
|
1253 |
.wbcr-gnz-info {
|
1254 |
padding: 0;
|
|
|
1255 |
&, p {
|
1256 |
font-size: 13px;
|
1257 |
}
|
|
|
1258 |
.wbcr-gnz-info__warning {
|
1259 |
padding: 20px 20px 30px;
|
1260 |
}
|
@@ -1266,21 +1309,26 @@ body {
|
|
1266 |
|
1267 |
.wbcr-gnz-table {
|
1268 |
margin: 0;
|
|
|
1269 |
th {
|
1270 |
font-size: 13px;
|
1271 |
}
|
|
|
1272 |
.wbcr-gnz-table__item {
|
1273 |
.wbcr-gnz-table__item-name {
|
1274 |
font-size: 14px;
|
1275 |
}
|
|
|
1276 |
.wbcr-gnz-table__item-author, .wbcr-gnz-table__item-version, .wbcr-use-by-comment {
|
1277 |
&, a {
|
1278 |
font-size: 12px;
|
1279 |
}
|
1280 |
}
|
1281 |
}
|
|
|
1282 |
.wbcr-gnz-table__script-name {
|
1283 |
font-size: 14px;
|
|
|
1284 |
b {
|
1285 |
font-size: 11px;
|
1286 |
font-weight: lighter;
|
@@ -1288,20 +1336,25 @@ body {
|
|
1288 |
margin-right: 8px;
|
1289 |
}
|
1290 |
}
|
|
|
1291 |
.wbcr-gnz-table__script-path {
|
1292 |
a {
|
1293 |
font-size: 11px;
|
1294 |
}
|
1295 |
}
|
|
|
1296 |
.wbcr-gnz-table__column_switch {
|
1297 |
width: 10%;
|
|
|
1298 |
.wbcr-gnz-table__th-external-plugin, em {
|
1299 |
font-size: 10px;
|
1300 |
}
|
|
|
1301 |
b {
|
1302 |
font-size: 12px;
|
1303 |
}
|
1304 |
}
|
|
|
1305 |
.wbcr-gnz-table__column_condition {
|
1306 |
width: 35%;
|
1307 |
}
|
39 |
/**
|
40 |
* Placeholders
|
41 |
*/
|
42 |
+
|
43 |
input[type="text"]::-moz-placeholder {
|
44 |
color: #cccccc;
|
45 |
}
|
65 |
color: #007acc;
|
66 |
border: none;
|
67 |
background: none;
|
68 |
+
|
69 |
&:hover {
|
70 |
text-decoration: underline;
|
71 |
border: inherit;
|
139 |
.wbcr-gnz-panel {
|
140 |
position: fixed;
|
141 |
z-index: 50;
|
142 |
+
top: 30px;
|
143 |
right: 0;
|
144 |
left: 0;
|
145 |
width: 100%;
|
155 |
color: #FFF;
|
156 |
background: #23282d;
|
157 |
font-size: 16px;
|
158 |
+
border-top: 2px solid #ffcb1e;
|
159 |
|
160 |
.wbcr-gnz-panel__premium {
|
161 |
position: relative;
|
164 |
height: 40px;
|
165 |
background: #ffcb1e;
|
166 |
margin-left: -30px;
|
167 |
+
|
168 |
&:hover {
|
169 |
cursor: pointer;
|
170 |
}
|
171 |
+
|
172 |
.wbcr-gnz-tooltip {
|
173 |
position: relative;
|
174 |
right: -30px;
|
184 |
padding: 5px 0 5px 0;
|
185 |
line-height: 1.2;
|
186 |
}
|
187 |
+
|
188 |
&:after {
|
189 |
display: block;
|
190 |
content: '';
|
370 |
background: #FFD340 !important;
|
371 |
box-shadow: 0 4px #BF9A17 !important;
|
372 |
}
|
373 |
+
|
374 |
&:active {
|
375 |
background: #FFD340 !important;
|
376 |
box-shadow: 0 2px #BF9A17 !important;
|
425 |
.wbcr-gnz-panel__checkbox-text-premium {
|
426 |
display: inline;
|
427 |
color: rgba(245, 245, 245, 0.3);
|
428 |
+
|
429 |
b {
|
430 |
display: inline-block;
|
431 |
font-size: 9px;
|
439 |
border-radius: 3px;
|
440 |
line-height: 1.5;
|
441 |
}
|
442 |
+
|
443 |
&::before {
|
444 |
background: rgba(245, 245, 245, 0.3);
|
445 |
}
|
458 |
&:hover {
|
459 |
opacity: .7;
|
460 |
}
|
461 |
+
|
462 |
&:focus {
|
463 |
opacity: .5;
|
464 |
outline: none;
|
483 |
list-style: none;
|
484 |
background: #F4F4F4;
|
485 |
box-shadow: 2px 0 5px rgba(0, 0, 0, .2);
|
486 |
+
|
487 |
li {
|
488 |
margin: 0;
|
489 |
padding: 0;
|
504 |
-ms-box-shadow: none;
|
505 |
-webkit-box-shadow: none;
|
506 |
-o-box-shadow: none;
|
507 |
+
|
508 |
&:hover, &:focus, &:after, &:before, &:after:hover, &:before:hover {
|
509 |
-moz-box-shadow: none;
|
510 |
-ms-box-shadow: none;
|
573 |
p {
|
574 |
font-size: 15px;
|
575 |
margin: 0;
|
576 |
+
|
577 |
&:not(:last-child) {
|
578 |
margin-bottom: 25px;
|
579 |
}
|
596 |
//border: 1px dashed #e0cb14;
|
597 |
border-left: 2px solid #fff;
|
598 |
margin-left: 10px;
|
599 |
+
|
600 |
h3 {
|
601 |
position: relative;
|
602 |
margin: 0 0 20px;
|
613 |
text-transform: uppercase;
|
614 |
}
|
615 |
}
|
616 |
+
|
617 |
ul {
|
618 |
list-style: none;
|
619 |
margin-left: 5px;
|
620 |
margin-bottom: 20px;
|
621 |
padding: 0;
|
622 |
+
|
623 |
li {
|
624 |
margin-bottom: 5px;
|
625 |
font-weight: 600;
|
626 |
font-size: 15px;
|
627 |
color: #7d8871;
|
628 |
padding: 0;
|
629 |
+
|
630 |
&:before {
|
631 |
content: " ";
|
632 |
display: inline-block;
|
826 |
background: #ffcb1e;
|
827 |
color: #403102;
|
828 |
}
|
829 |
+
|
830 |
&.wbcr-wgz-resource-type-css {
|
831 |
background: #9757a5;
|
832 |
color: #ffffff;
|
840 |
|
841 |
.wbcr-gnz-table__script-path {
|
842 |
color: #BBBBBA;
|
843 |
+
|
844 |
&, a {
|
845 |
font-size: 12px;
|
846 |
}
|
874 |
margin-bottom: 12px;
|
875 |
}
|
876 |
|
877 |
+
.wbcr-gnz-table__select-wrapper {
|
878 |
+
&::before, &::after {
|
879 |
+
display: none !important;
|
880 |
+
}
|
881 |
+
}
|
882 |
+
|
883 |
.wbcr-gnz-table__select {
|
884 |
padding: 8px 28px 8px 10px;
|
885 |
color: #4B4E51;
|
913 |
|
914 |
.wbcr-gnz-table__label {
|
915 |
display: block;
|
916 |
+
margin: 15px 0 15px 10px;
|
917 |
padding-bottom: 5px;
|
918 |
color: #414B56;
|
919 |
font-size: 13px;
|
1048 |
.wbcr-gnz-table__also {
|
1049 |
font-size: 12px;
|
1050 |
font-weight: bold;
|
1051 |
+
margin-top: 15px;
|
1052 |
}
|
1053 |
|
1054 |
.wbcr-gnz-table__also .wbcr-gnz-table__label {
|
|
|
1055 |
font-size: 12px;
|
1056 |
+
padding: 5px 5px 5px 0;
|
1057 |
+
margin: 0;
|
1058 |
}
|
1059 |
|
1060 |
.wbcr-gnz-table__also-url {
|
1061 |
color: #A9AAAA;
|
1062 |
+
|
1063 |
+
span {
|
1064 |
+
display: block;
|
1065 |
+
|
1066 |
+
a {
|
1067 |
+
text-decoration: underline;
|
1068 |
+
color: #adaeae;
|
1069 |
+
font-size: 12px;
|
1070 |
+
}
|
1071 |
+
}
|
1072 |
}
|
1073 |
|
1074 |
.wbcr-gnz-switch {
|
1150 |
.wbcr-gnz-switch__slider {
|
1151 |
background: #ababab;
|
1152 |
}
|
1153 |
+
|
1154 |
.wbcr-gnz-switch__inner::after {
|
1155 |
background: #d3d4d4;
|
1156 |
font-style: normal;
|
1256 |
p {
|
1257 |
font-size: 13px;
|
1258 |
}
|
1259 |
+
|
1260 |
.wbcr-gnz-content {
|
1261 |
padding: 32px 0 0 75px;
|
1262 |
}
|
1263 |
+
|
1264 |
.wbcr-gnz-panel__left {
|
1265 |
.wbcr-gnz-panel__item_value {
|
1266 |
display: block;
|
1271 |
.wbcr-gnz-table__checkbox-text {
|
1272 |
font-size: 13px;
|
1273 |
}
|
1274 |
+
|
1275 |
.wbcr-gnz-panel__reset, .wbcr-gnz-panel__save {
|
1276 |
font-size: 12px;
|
1277 |
}
|
1293 |
|
1294 |
.wbcr-gnz-info {
|
1295 |
padding: 0;
|
1296 |
+
|
1297 |
&, p {
|
1298 |
font-size: 13px;
|
1299 |
}
|
1300 |
+
|
1301 |
.wbcr-gnz-info__warning {
|
1302 |
padding: 20px 20px 30px;
|
1303 |
}
|
1309 |
|
1310 |
.wbcr-gnz-table {
|
1311 |
margin: 0;
|
1312 |
+
|
1313 |
th {
|
1314 |
font-size: 13px;
|
1315 |
}
|
1316 |
+
|
1317 |
.wbcr-gnz-table__item {
|
1318 |
.wbcr-gnz-table__item-name {
|
1319 |
font-size: 14px;
|
1320 |
}
|
1321 |
+
|
1322 |
.wbcr-gnz-table__item-author, .wbcr-gnz-table__item-version, .wbcr-use-by-comment {
|
1323 |
&, a {
|
1324 |
font-size: 12px;
|
1325 |
}
|
1326 |
}
|
1327 |
}
|
1328 |
+
|
1329 |
.wbcr-gnz-table__script-name {
|
1330 |
font-size: 14px;
|
1331 |
+
|
1332 |
b {
|
1333 |
font-size: 11px;
|
1334 |
font-weight: lighter;
|
1336 |
margin-right: 8px;
|
1337 |
}
|
1338 |
}
|
1339 |
+
|
1340 |
.wbcr-gnz-table__script-path {
|
1341 |
a {
|
1342 |
font-size: 11px;
|
1343 |
}
|
1344 |
}
|
1345 |
+
|
1346 |
.wbcr-gnz-table__column_switch {
|
1347 |
width: 10%;
|
1348 |
+
|
1349 |
.wbcr-gnz-table__th-external-plugin, em {
|
1350 |
font-size: 10px;
|
1351 |
}
|
1352 |
+
|
1353 |
b {
|
1354 |
font-size: 12px;
|
1355 |
}
|
1356 |
}
|
1357 |
+
|
1358 |
.wbcr-gnz-table__column_condition {
|
1359 |
width: 35%;
|
1360 |
}
|
components/assets-manager/assets/css/reset.css
CHANGED
@@ -1,251 +1,251 @@
|
|
1 |
-
/**
|
2 |
-
* Reset styles
|
3 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
-
* @copyright Webcraftic 15.10.2018
|
5 |
-
*/
|
6 |
-
*,
|
7 |
-
*:before,
|
8 |
-
*:after {
|
9 |
-
-webkit-box-sizing: border-box;
|
10 |
-
-moz-box-sizing: border-box;
|
11 |
-
box-sizing: border-box;
|
12 |
-
}
|
13 |
-
h2,
|
14 |
-
h3,
|
15 |
-
h4,
|
16 |
-
h5,
|
17 |
-
h6,
|
18 |
-
p,
|
19 |
-
strong,
|
20 |
-
b,
|
21 |
-
span,
|
22 |
-
em,
|
23 |
-
i,
|
24 |
-
a,
|
25 |
-
div,
|
26 |
-
main,
|
27 |
-
section,
|
28 |
-
li,
|
29 |
-
button,
|
30 |
-
input[type="submit"],
|
31 |
-
input[type="reset"],
|
32 |
-
.wbcr-gnz-switch-premium {
|
33 |
-
font-family: Arial, "Helvetica Neue", sans-serif !important;
|
34 |
-
font-size: 14px;
|
35 |
-
font-style: normal;
|
36 |
-
font-weight: normal;
|
37 |
-
text-transform: none;
|
38 |
-
text-shadow: none;
|
39 |
-
}
|
40 |
-
h1 {
|
41 |
-
font-size: 2em;
|
42 |
-
margin: 0.67em 0;
|
43 |
-
}
|
44 |
-
hr {
|
45 |
-
box-sizing: content-box;
|
46 |
-
height: 0;
|
47 |
-
overflow: visible;
|
48 |
-
}
|
49 |
-
pre {
|
50 |
-
font-family: monospace, monospace;
|
51 |
-
font-size: 1em;
|
52 |
-
}
|
53 |
-
a {
|
54 |
-
background-color: transparent;
|
55 |
-
}
|
56 |
-
abbr[title] {
|
57 |
-
border-bottom: none;
|
58 |
-
text-decoration: underline dotted;
|
59 |
-
}
|
60 |
-
b,
|
61 |
-
strong {
|
62 |
-
font-weight: bolder;
|
63 |
-
}
|
64 |
-
code,
|
65 |
-
kbd,
|
66 |
-
samp {
|
67 |
-
font-family: monospace, monospace;
|
68 |
-
font-size: 1em;
|
69 |
-
}
|
70 |
-
small {
|
71 |
-
font-size: 80%;
|
72 |
-
}
|
73 |
-
sub,
|
74 |
-
sup {
|
75 |
-
font-size: 75%;
|
76 |
-
line-height: 0;
|
77 |
-
position: relative;
|
78 |
-
vertical-align: baseline;
|
79 |
-
}
|
80 |
-
sub {
|
81 |
-
bottom: -0.25em;
|
82 |
-
}
|
83 |
-
sup {
|
84 |
-
top: -0.5em;
|
85 |
-
}
|
86 |
-
img {
|
87 |
-
border-style: none;
|
88 |
-
}
|
89 |
-
button,
|
90 |
-
input,
|
91 |
-
optgroup,
|
92 |
-
select,
|
93 |
-
textarea {
|
94 |
-
font-family: inherit;
|
95 |
-
font-size: 100%;
|
96 |
-
line-height: 1.15;
|
97 |
-
margin: 0;
|
98 |
-
height: auto;
|
99 |
-
width: auto;
|
100 |
-
}
|
101 |
-
button,
|
102 |
-
input,
|
103 |
-
optgroup,
|
104 |
-
select,
|
105 |
-
textarea,
|
106 |
-
button:hover,
|
107 |
-
input:hover,
|
108 |
-
optgroup:hover,
|
109 |
-
select:hover,
|
110 |
-
textarea:hover,
|
111 |
-
button:focus,
|
112 |
-
input:focus,
|
113 |
-
optgroup:focus,
|
114 |
-
select:focus,
|
115 |
-
textarea:focus {
|
116 |
-
-moz-box-shadow: none;
|
117 |
-
-ms-box-shadow: none;
|
118 |
-
-webkit-box-shadow: none;
|
119 |
-
-o-box-shadow: none;
|
120 |
-
}
|
121 |
-
button,
|
122 |
-
input {
|
123 |
-
overflow: visible;
|
124 |
-
}
|
125 |
-
button,
|
126 |
-
select {
|
127 |
-
text-transform: none;
|
128 |
-
}
|
129 |
-
button,
|
130 |
-
[type="button"],
|
131 |
-
[type="reset"],
|
132 |
-
[type="submit"] {
|
133 |
-
-webkit-appearance: button;
|
134 |
-
}
|
135 |
-
button::-moz-focus-inner,
|
136 |
-
[type="button"]::-moz-focus-inner,
|
137 |
-
[type="reset"]::-moz-focus-inner,
|
138 |
-
[type="submit"]::-moz-focus-inner {
|
139 |
-
border-style: none;
|
140 |
-
padding: 0;
|
141 |
-
}
|
142 |
-
button:-moz-focusring,
|
143 |
-
[type="button"]:-moz-focusring,
|
144 |
-
[type="reset"]:-moz-focusring,
|
145 |
-
[type="submit"]:-moz-focusring {
|
146 |
-
outline: 1px dotted ButtonText;
|
147 |
-
}
|
148 |
-
fieldset {
|
149 |
-
padding: 0.35em 0.75em 0.625em;
|
150 |
-
}
|
151 |
-
legend {
|
152 |
-
box-sizing: border-box;
|
153 |
-
color: inherit;
|
154 |
-
display: table;
|
155 |
-
max-width: 100%;
|
156 |
-
padding: 0;
|
157 |
-
white-space: normal;
|
158 |
-
}
|
159 |
-
textarea {
|
160 |
-
overflow: auto;
|
161 |
-
}
|
162 |
-
[type="checkbox"],
|
163 |
-
[type="radio"] {
|
164 |
-
box-sizing: border-box;
|
165 |
-
padding: 0;
|
166 |
-
}
|
167 |
-
[type="number"]::-webkit-inner-spin-button,
|
168 |
-
[type="number"]::-webkit-outer-spin-button {
|
169 |
-
height: auto;
|
170 |
-
}
|
171 |
-
[type="search"] {
|
172 |
-
-webkit-appearance: textfield;
|
173 |
-
outline-offset: -2px;
|
174 |
-
}
|
175 |
-
[type="search"]::-webkit-search-decoration {
|
176 |
-
-webkit-appearance: none;
|
177 |
-
}
|
178 |
-
::-webkit-file-upload-button {
|
179 |
-
-webkit-appearance: button;
|
180 |
-
font: inherit;
|
181 |
-
}
|
182 |
-
fieldset {
|
183 |
-
padding: 0.35em 0.75em 0.625em;
|
184 |
-
}
|
185 |
-
legend {
|
186 |
-
box-sizing: border-box;
|
187 |
-
color: inherit;
|
188 |
-
display: table;
|
189 |
-
max-width: 100%;
|
190 |
-
padding: 0;
|
191 |
-
white-space: normal;
|
192 |
-
}
|
193 |
-
progress {
|
194 |
-
vertical-align: baseline;
|
195 |
-
}
|
196 |
-
textarea {
|
197 |
-
overflow: auto;
|
198 |
-
}
|
199 |
-
[type=checkbox],
|
200 |
-
[type=radio] {
|
201 |
-
box-sizing: border-box;
|
202 |
-
padding: 0;
|
203 |
-
}
|
204 |
-
[type=number]::-webkit-inner-spin-button,
|
205 |
-
[type=number]::-webkit-outer-spin-button {
|
206 |
-
height: auto;
|
207 |
-
}
|
208 |
-
[type=search] {
|
209 |
-
-webkit-appearance: textfield;
|
210 |
-
outline-offset: -2px;
|
211 |
-
}
|
212 |
-
[type=search]::-webkit-search-decoration {
|
213 |
-
-webkit-appearance: none;
|
214 |
-
}
|
215 |
-
::-webkit-file-upload-button {
|
216 |
-
-webkit-appearance: button;
|
217 |
-
font: inherit;
|
218 |
-
}
|
219 |
-
details {
|
220 |
-
display: block;
|
221 |
-
}
|
222 |
-
summary {
|
223 |
-
display: list-item;
|
224 |
-
}
|
225 |
-
template {
|
226 |
-
display: none;
|
227 |
-
}
|
228 |
-
[hidden] {
|
229 |
-
display: none;
|
230 |
-
}
|
231 |
-
table,
|
232 |
-
caption,
|
233 |
-
tbody,
|
234 |
-
tfoot,
|
235 |
-
thead,
|
236 |
-
tr,
|
237 |
-
th,
|
238 |
-
td {
|
239 |
-
margin: 0;
|
240 |
-
padding: 0;
|
241 |
-
border: 0;
|
242 |
-
font-size: 100%;
|
243 |
-
font: inherit;
|
244 |
-
vertical-align: middle;
|
245 |
-
line-height: 1.2;
|
246 |
-
}
|
247 |
-
table {
|
248 |
-
table-layout: auto;
|
249 |
-
border-collapse: collapse;
|
250 |
-
border-spacing: 0;
|
251 |
-
}
|
1 |
+
/**
|
2 |
+
* Reset styles
|
3 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
4 |
+
* @copyright Webcraftic 15.10.2018
|
5 |
+
*/
|
6 |
+
*,
|
7 |
+
*:before,
|
8 |
+
*:after {
|
9 |
+
-webkit-box-sizing: border-box;
|
10 |
+
-moz-box-sizing: border-box;
|
11 |
+
box-sizing: border-box;
|
12 |
+
}
|
13 |
+
h2,
|
14 |
+
h3,
|
15 |
+
h4,
|
16 |
+
h5,
|
17 |
+
h6,
|
18 |
+
p,
|
19 |
+
strong,
|
20 |
+
b,
|
21 |
+
span,
|
22 |
+
em,
|
23 |
+
i,
|
24 |
+
a,
|
25 |
+
div,
|
26 |
+
main,
|
27 |
+
section,
|
28 |
+
li,
|
29 |
+
button,
|
30 |
+
input[type="submit"],
|
31 |
+
input[type="reset"],
|
32 |
+
.wbcr-gnz-switch-premium {
|
33 |
+
font-family: Arial, "Helvetica Neue", sans-serif !important;
|
34 |
+
font-size: 14px;
|
35 |
+
font-style: normal;
|
36 |
+
font-weight: normal;
|
37 |
+
text-transform: none;
|
38 |
+
text-shadow: none;
|
39 |
+
}
|
40 |
+
h1 {
|
41 |
+
font-size: 2em;
|
42 |
+
margin: 0.67em 0;
|
43 |
+
}
|
44 |
+
hr {
|
45 |
+
box-sizing: content-box;
|
46 |
+
height: 0;
|
47 |
+
overflow: visible;
|
48 |
+
}
|
49 |
+
pre {
|
50 |
+
font-family: monospace, monospace;
|
51 |
+
font-size: 1em;
|
52 |
+
}
|
53 |
+
a {
|
54 |
+
background-color: transparent;
|
55 |
+
}
|
56 |
+
abbr[title] {
|
57 |
+
border-bottom: none;
|
58 |
+
text-decoration: underline dotted;
|
59 |
+
}
|
60 |
+
b,
|
61 |
+
strong {
|
62 |
+
font-weight: bolder;
|
63 |
+
}
|
64 |
+
code,
|
65 |
+
kbd,
|
66 |
+
samp {
|
67 |
+
font-family: monospace, monospace;
|
68 |
+
font-size: 1em;
|
69 |
+
}
|
70 |
+
small {
|
71 |
+
font-size: 80%;
|
72 |
+
}
|
73 |
+
sub,
|
74 |
+
sup {
|
75 |
+
font-size: 75%;
|
76 |
+
line-height: 0;
|
77 |
+
position: relative;
|
78 |
+
vertical-align: baseline;
|
79 |
+
}
|
80 |
+
sub {
|
81 |
+
bottom: -0.25em;
|
82 |
+
}
|
83 |
+
sup {
|
84 |
+
top: -0.5em;
|
85 |
+
}
|
86 |
+
img {
|
87 |
+
border-style: none;
|
88 |
+
}
|
89 |
+
button,
|
90 |
+
input,
|
91 |
+
optgroup,
|
92 |
+
select,
|
93 |
+
textarea {
|
94 |
+
font-family: inherit;
|
95 |
+
font-size: 100%;
|
96 |
+
line-height: 1.15;
|
97 |
+
margin: 0;
|
98 |
+
height: auto;
|
99 |
+
width: auto;
|
100 |
+
}
|
101 |
+
button,
|
102 |
+
input,
|
103 |
+
optgroup,
|
104 |
+
select,
|
105 |
+
textarea,
|
106 |
+
button:hover,
|
107 |
+
input:hover,
|
108 |
+
optgroup:hover,
|
109 |
+
select:hover,
|
110 |
+
textarea:hover,
|
111 |
+
button:focus,
|
112 |
+
input:focus,
|
113 |
+
optgroup:focus,
|
114 |
+
select:focus,
|
115 |
+
textarea:focus {
|
116 |
+
-moz-box-shadow: none;
|
117 |
+
-ms-box-shadow: none;
|
118 |
+
-webkit-box-shadow: none;
|
119 |
+
-o-box-shadow: none;
|
120 |
+
}
|
121 |
+
button,
|
122 |
+
input {
|
123 |
+
overflow: visible;
|
124 |
+
}
|
125 |
+
button,
|
126 |
+
select {
|
127 |
+
text-transform: none;
|
128 |
+
}
|
129 |
+
button,
|
130 |
+
[type="button"],
|
131 |
+
[type="reset"],
|
132 |
+
[type="submit"] {
|
133 |
+
-webkit-appearance: button;
|
134 |
+
}
|
135 |
+
button::-moz-focus-inner,
|
136 |
+
[type="button"]::-moz-focus-inner,
|
137 |
+
[type="reset"]::-moz-focus-inner,
|
138 |
+
[type="submit"]::-moz-focus-inner {
|
139 |
+
border-style: none;
|
140 |
+
padding: 0;
|
141 |
+
}
|
142 |
+
button:-moz-focusring,
|
143 |
+
[type="button"]:-moz-focusring,
|
144 |
+
[type="reset"]:-moz-focusring,
|
145 |
+
[type="submit"]:-moz-focusring {
|
146 |
+
outline: 1px dotted ButtonText;
|
147 |
+
}
|
148 |
+
fieldset {
|
149 |
+
padding: 0.35em 0.75em 0.625em;
|
150 |
+
}
|
151 |
+
legend {
|
152 |
+
box-sizing: border-box;
|
153 |
+
color: inherit;
|
154 |
+
display: table;
|
155 |
+
max-width: 100%;
|
156 |
+
padding: 0;
|
157 |
+
white-space: normal;
|
158 |
+
}
|
159 |
+
textarea {
|
160 |
+
overflow: auto;
|
161 |
+
}
|
162 |
+
[type="checkbox"],
|
163 |
+
[type="radio"] {
|
164 |
+
box-sizing: border-box;
|
165 |
+
padding: 0;
|
166 |
+
}
|
167 |
+
[type="number"]::-webkit-inner-spin-button,
|
168 |
+
[type="number"]::-webkit-outer-spin-button {
|
169 |
+
height: auto;
|
170 |
+
}
|
171 |
+
[type="search"] {
|
172 |
+
-webkit-appearance: textfield;
|
173 |
+
outline-offset: -2px;
|
174 |
+
}
|
175 |
+
[type="search"]::-webkit-search-decoration {
|
176 |
+
-webkit-appearance: none;
|
177 |
+
}
|
178 |
+
::-webkit-file-upload-button {
|
179 |
+
-webkit-appearance: button;
|
180 |
+
font: inherit;
|
181 |
+
}
|
182 |
+
fieldset {
|
183 |
+
padding: 0.35em 0.75em 0.625em;
|
184 |
+
}
|
185 |
+
legend {
|
186 |
+
box-sizing: border-box;
|
187 |
+
color: inherit;
|
188 |
+
display: table;
|
189 |
+
max-width: 100%;
|
190 |
+
padding: 0;
|
191 |
+
white-space: normal;
|
192 |
+
}
|
193 |
+
progress {
|
194 |
+
vertical-align: baseline;
|
195 |
+
}
|
196 |
+
textarea {
|
197 |
+
overflow: auto;
|
198 |
+
}
|
199 |
+
[type=checkbox],
|
200 |
+
[type=radio] {
|
201 |
+
box-sizing: border-box;
|
202 |
+
padding: 0;
|
203 |
+
}
|
204 |
+
[type=number]::-webkit-inner-spin-button,
|
205 |
+
[type=number]::-webkit-outer-spin-button {
|
206 |
+
height: auto;
|
207 |
+
}
|
208 |
+
[type=search] {
|
209 |
+
-webkit-appearance: textfield;
|
210 |
+
outline-offset: -2px;
|
211 |
+
}
|
212 |
+
[type=search]::-webkit-search-decoration {
|
213 |
+
-webkit-appearance: none;
|
214 |
+
}
|
215 |
+
::-webkit-file-upload-button {
|
216 |
+
-webkit-appearance: button;
|
217 |
+
font: inherit;
|
218 |
+
}
|
219 |
+
details {
|
220 |
+
display: block;
|
221 |
+
}
|
222 |
+
summary {
|
223 |
+
display: list-item;
|
224 |
+
}
|
225 |
+
template {
|
226 |
+
display: none;
|
227 |
+
}
|
228 |
+
[hidden] {
|
229 |
+
display: none;
|
230 |
+
}
|
231 |
+
table,
|
232 |
+
caption,
|
233 |
+
tbody,
|
234 |
+
tfoot,
|
235 |
+
thead,
|
236 |
+
tr,
|
237 |
+
th,
|
238 |
+
td {
|
239 |
+
margin: 0;
|
240 |
+
padding: 0;
|
241 |
+
border: 0;
|
242 |
+
font-size: 100%;
|
243 |
+
font: inherit;
|
244 |
+
vertical-align: middle;
|
245 |
+
line-height: 1.2;
|
246 |
+
}
|
247 |
+
table {
|
248 |
+
table-layout: auto;
|
249 |
+
border-collapse: collapse;
|
250 |
+
border-spacing: 0;
|
251 |
+
}
|
components/assets-manager/assets/js/assets-manager.js
CHANGED
@@ -26,8 +26,7 @@
|
|
26 |
if( typeof wbcrChangeHandleState == 'function' ) {
|
27 |
wbcrChangeHandleState(this, 1);
|
28 |
}
|
29 |
-
}
|
30 |
-
else {
|
31 |
$(this).closest('label').find('input[type="hidden"]').val('');
|
32 |
$(this).closest('tr').find('.wbcr-assets-manager-enable').hide();
|
33 |
$(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').show();
|
@@ -42,10 +41,10 @@
|
|
42 |
|
43 |
$('.wbcr-gnz-action-select').on('change', function(ev) {
|
44 |
var selectElement = $(this).children(':selected');
|
45 |
-
$(this).closest('
|
46 |
|
47 |
if( selectElement.val() != 'current' ) {
|
48 |
-
$(this).closest('
|
49 |
}
|
50 |
});
|
51 |
|
26 |
if( typeof wbcrChangeHandleState == 'function' ) {
|
27 |
wbcrChangeHandleState(this, 1);
|
28 |
}
|
29 |
+
} else {
|
|
|
30 |
$(this).closest('label').find('input[type="hidden"]').val('');
|
31 |
$(this).closest('tr').find('.wbcr-assets-manager-enable').hide();
|
32 |
$(this).closest('tr').find('.wbcr-assets-manager-enable-placeholder').show();
|
41 |
|
42 |
$('.wbcr-gnz-action-select').on('change', function(ev) {
|
43 |
var selectElement = $(this).children(':selected');
|
44 |
+
$(this).closest('.wbcr-assets-manager-enable').find('.wbcr-assets-manager').hide();
|
45 |
|
46 |
if( selectElement.val() != 'current' ) {
|
47 |
+
$(this).closest('.wbcr-assets-manager-enable').find('.wbcr-assets-manager.' + selectElement.val()).show();
|
48 |
}
|
49 |
});
|
50 |
|
components/assets-manager/gonzales.php
CHANGED
@@ -1,88 +1,96 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
define('WGZ_PLUGIN_VERSION', '1.0.7');
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
define('
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
)
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
|
88 |
|
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.7
|
8 |
+
* Text Domain: gonzales
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
+
|
14 |
+
// Exit if accessed directly
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
+
if ( ! defined( 'WGZ_PLUGIN_VERSION' ) ) {
|
19 |
+
define( 'WGZ_PLUGIN_VERSION', '1.0.7' );
|
20 |
+
}
|
21 |
+
|
22 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
23 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
24 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
25 |
+
// --------------------------------------
|
26 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
27 |
+
return;
|
28 |
+
}
|
29 |
+
|
30 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
// ----------------------------------------
|
34 |
+
|
35 |
+
if ( ! defined( 'WGZ_PLUGIN_DIR' ) ) {
|
36 |
+
define( 'WGZ_PLUGIN_DIR', dirname( __FILE__ ) );
|
37 |
+
}
|
38 |
+
if ( ! defined( 'WGZ_PLUGIN_BASE' ) ) {
|
39 |
+
define( 'WGZ_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
40 |
+
}
|
41 |
+
if ( ! defined( 'WGZ_PLUGIN_URL' ) ) {
|
42 |
+
define( 'WGZ_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
43 |
+
}
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
if ( ! defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) ) {
|
48 |
+
require_once( WGZ_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
49 |
+
require_once( WGZ_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
50 |
+
}
|
51 |
+
|
52 |
+
$plugin_info = array(
|
53 |
+
'prefix' => 'wbcr_gnz_',
|
54 |
+
'plugin_name' => 'wbcr_gonzales',
|
55 |
+
'plugin_title' => __( 'Webcraftic assets manager', 'gonzales' ),
|
56 |
+
'plugin_version' => WGZ_PLUGIN_VERSION,
|
57 |
+
'plugin_build' => 'free',
|
58 |
+
'updates' => WGZ_PLUGIN_DIR . '/updates/'
|
59 |
+
);
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
63 |
+
*/
|
64 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
65 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
66 |
+
'plugin_already_activate' => defined( 'WGZ_PLUGIN_ACTIVE' ),
|
67 |
+
'plugin_as_component' => defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ),
|
68 |
+
'plugin_dir' => WGZ_PLUGIN_DIR,
|
69 |
+
'plugin_base' => WGZ_PLUGIN_BASE,
|
70 |
+
'plugin_url' => WGZ_PLUGIN_URL,
|
71 |
+
'required_php_version' => '5.3',
|
72 |
+
'required_wp_version' => '4.2.0',
|
73 |
+
'required_clearfy_check_component' => true
|
74 |
+
) ) );
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
78 |
+
* а пользователь получит предупреждение.
|
79 |
+
*/
|
80 |
+
if ( ! $compatibility->check() ) {
|
81 |
+
return;
|
82 |
+
}
|
83 |
+
|
84 |
+
define( 'WGZ_PLUGIN_ACTIVE', true );
|
85 |
+
|
86 |
+
if ( ! defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) ) {
|
87 |
+
require_once( WGZ_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
88 |
+
}
|
89 |
+
|
90 |
+
require_once( WGZ_PLUGIN_DIR . '/includes/class.plugin.php' );
|
91 |
+
|
92 |
+
if ( ! defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) ) {
|
93 |
+
new WGZ_Plugin( __FILE__, $plugin_info );
|
94 |
+
}
|
95 |
|
96 |
|
components/assets-manager/includes/class.configurate-assets.php
CHANGED
@@ -2,9 +2,10 @@
|
|
2 |
|
3 |
/**
|
4 |
* Assets manager base class
|
5 |
-
*
|
|
|
6 |
* @copyright (c) 05.11.2017, Webcraftic
|
7 |
-
* @version
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly
|
@@ -13,33 +14,33 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
|
15 |
class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
16 |
-
|
17 |
/**
|
18 |
* Stores list of all available assets (used in rendering panel)
|
19 |
*
|
20 |
* @var array
|
21 |
*/
|
22 |
-
public $collection =
|
23 |
-
|
24 |
/**
|
25 |
* Plugins for additional columns
|
26 |
*
|
27 |
* @var array
|
28 |
*/
|
29 |
-
private $sided_plugins =
|
30 |
-
|
31 |
/**
|
32 |
* Css and js files excluded in sided plugins
|
33 |
*
|
34 |
* @var array
|
35 |
*/
|
36 |
-
private $sided_plugin_files =
|
37 |
-
|
38 |
/**
|
39 |
* @var bool
|
40 |
*/
|
41 |
private $is_user_can;
|
42 |
-
|
43 |
/**
|
44 |
* @param Wbcr_Factory409_Plugin $plugin
|
45 |
*/
|
@@ -47,11 +48,11 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
47 |
parent::__construct( $plugin );
|
48 |
$this->plugin = $plugin;
|
49 |
}
|
50 |
-
|
51 |
protected function isUserCan() {
|
52 |
return current_user_can( 'manage_options' ) || current_user_can( 'manage_network' );
|
53 |
}
|
54 |
-
|
55 |
/**
|
56 |
* Initilize entire machine
|
57 |
*/
|
@@ -59,78 +60,78 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
59 |
if ( $this->getPopulateOption( 'disable_assets_manager', false ) ) {
|
60 |
return;
|
61 |
}
|
62 |
-
|
63 |
$on_frontend = $this->getPopulateOption( 'disable_assets_manager_on_front' );
|
64 |
$on_backend = $this->getPopulateOption( 'disable_assets_manager_on_backend', true );
|
65 |
$is_panel = $this->getPopulateOption( 'disable_assets_manager_panel' );
|
66 |
-
|
67 |
if ( ( ! is_admin() && ! $on_frontend ) || ( is_admin() && ! $on_backend ) ) {
|
68 |
-
add_filter( 'script_loader_src',
|
69 |
-
add_filter( 'style_loader_src',
|
70 |
}
|
71 |
-
|
72 |
if ( ! $is_panel && ( ( is_admin() && ! $on_backend ) || ( ! is_admin() && ! $on_frontend ) ) ) {
|
73 |
if ( ! is_admin() ) {
|
74 |
-
add_action( 'wp_enqueue_scripts',
|
75 |
-
add_action( 'wp_footer',
|
76 |
} else {
|
77 |
-
add_action( 'admin_enqueue_scripts',
|
78 |
-
add_action( 'admin_footer',
|
79 |
}
|
80 |
}
|
81 |
-
|
82 |
if ( ! is_admin() && ! $on_frontend ) {
|
83 |
-
add_action( 'wp_head',
|
84 |
-
add_action( 'wp_footer',
|
85 |
}
|
86 |
-
|
87 |
if ( is_admin() && ! $on_backend ) {
|
88 |
-
add_action( 'admin_head',
|
89 |
-
add_action( 'admin_footer',
|
90 |
}
|
91 |
-
|
92 |
if ( ! $is_panel && ( ( is_admin() && ! $on_backend ) || ( ! is_admin() && ! $on_frontend ) ) ) {
|
93 |
if ( defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) ) {
|
94 |
-
add_action( 'wbcr/clearfy/adminbar_menu_items',
|
95 |
} else {
|
96 |
-
add_action( 'admin_bar_menu',
|
97 |
}
|
98 |
}
|
99 |
-
|
100 |
if ( ! is_admin() && ! $on_frontend ) {
|
101 |
-
add_action( 'init',
|
102 |
}
|
103 |
-
|
104 |
if ( is_admin() && ! $on_backend ) {
|
105 |
-
add_action( 'admin_init',
|
106 |
}
|
107 |
-
|
108 |
-
add_action( 'plugins_loaded',
|
109 |
-
add_action( 'wbcr_gnz_form_save',
|
110 |
-
|
111 |
-
add_filter( 'wbcr_gnz_unset_disabled',
|
112 |
-
add_filter( 'wbcr_gnz_get_additional_head_columns',
|
113 |
-
add_filter( 'wbcr_gnz_get_additional_controls_columns',
|
114 |
-
|
115 |
-
add_filter( 'autoptimize_filter_js_exclude',
|
116 |
-
add_filter( 'autoptimize_filter_css_exclude',
|
117 |
-
add_filter( 'wmac_filter_js_exclude',
|
118 |
-
add_filter( 'wmac_filter_css_exclude',
|
119 |
-
add_filter( 'wmac_filter_js_minify_excluded',
|
120 |
-
add_filter( 'wmac_filter_css_minify_excluded',
|
121 |
}
|
122 |
-
|
123 |
function clearfyAdminBarMenu( $menu_items ) {
|
124 |
-
$current_url = add_query_arg(
|
125 |
-
|
126 |
-
$menu_items['assetsManager'] =
|
127 |
'title' => '<span class="dashicons dashicons-list-view"></span> ' . __( 'Assets Manager', 'gonzales' ),
|
128 |
'href' => $current_url
|
129 |
-
|
130 |
-
|
131 |
return $menu_items;
|
132 |
}
|
133 |
-
|
134 |
/**
|
135 |
* @param WP_Admin_Bar $wp_admin_bar
|
136 |
*/
|
@@ -138,61 +139,61 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
138 |
if ( ! $this->isUserCan() ) {
|
139 |
return;
|
140 |
}
|
141 |
-
|
142 |
-
$current_url = add_query_arg(
|
143 |
-
|
144 |
-
$args =
|
145 |
'id' => 'assetsManager',
|
146 |
'title' => __( 'Assets Manager', 'gonzales' ),
|
147 |
'href' => $current_url
|
148 |
-
|
149 |
$wp_admin_bar->add_node( $args );
|
150 |
}
|
151 |
-
|
152 |
/**
|
153 |
* Action plugins loaded
|
154 |
*/
|
155 |
public function pluginsLoaded() {
|
156 |
if ( ! is_admin() ) {
|
157 |
-
$this->sided_plugins =
|
158 |
'aopt' => 'autoptimize/autoptimize.php',
|
159 |
'wmac' => 'minify-and-combine/minify-and-combine.php'
|
160 |
-
|
161 |
}
|
162 |
-
|
163 |
if ( class_exists( 'WCL_Plugin' ) && ( WCL_Plugin::app()->getPopulateOption( 'remove_js_version', false ) || WCL_Plugin::app()->getPopulateOption( 'remove_css_version', false ) ) ) {
|
164 |
$this->sided_plugins['wclp'] = 'clearfy/clearfy.php';
|
165 |
}
|
|
|
166 |
|
167 |
-
|
168 |
-
|
169 |
$this->sided_plugins = apply_filters( 'wbcr_gnz_sided_plugins', $this->sided_plugins );
|
170 |
}
|
171 |
-
|
172 |
function assetsManager() {
|
173 |
if ( ! $this->isUserCan() || ! isset( $_GET['wbcr_assets_manager'] ) ) {
|
174 |
return;
|
175 |
}
|
176 |
-
|
177 |
$current_url = esc_url( $this->getCurrentUrl() );
|
178 |
-
|
179 |
// todo: вынести в метод
|
180 |
if ( is_multisite() && is_network_admin() ) {
|
181 |
-
$options = $this->getNetworkOption( 'assets_manager_options',
|
182 |
} else {
|
183 |
-
$options = $this->getOption( 'assets_manager_options',
|
184 |
}
|
185 |
-
|
186 |
echo '<div id="WBCR" class="wbcr-gnz-wrapper"';
|
187 |
if ( isset( $_GET['wbcr_assets_manager'] ) ) {
|
188 |
echo 'style="display: block;"';
|
189 |
}
|
190 |
echo '>';
|
191 |
-
|
192 |
//Form
|
193 |
echo '<form method="POST">';
|
194 |
wp_nonce_field( 'wbcr_assets_manager_nonce', 'wbcr_assets_manager_save' );
|
195 |
-
|
196 |
//Header
|
197 |
echo '<header class="wbcr-gnz-panel">';
|
198 |
echo '<div class="wbcr-gnz-panel__left">';
|
@@ -216,22 +217,22 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
216 |
echo '<button class="wbcr-gnz-panel__close wbcr-close-button" type="button" aria-label="' . __( 'Close', 'gonzales' ) . '" data-href="' . remove_query_arg( 'wbcr_assets_manager' ) . '"></button>';
|
217 |
echo '</div>';
|
218 |
echo '</header>';
|
219 |
-
|
220 |
// Main content
|
221 |
echo '<main class="wbcr-gnz-content">';
|
222 |
-
|
223 |
uksort( $this->collection, function ( $a, $b ) {
|
224 |
if ( 'plugins' == $a ) {
|
225 |
return - 1;
|
226 |
}
|
227 |
-
|
228 |
if ( 'plugins' == $b ) {
|
229 |
return 1;
|
230 |
}
|
231 |
-
|
232 |
return strcasecmp( $a, $b );
|
233 |
} );
|
234 |
-
|
235 |
// Tabs
|
236 |
echo '<ul class="wbcr-gnz-tabs">';
|
237 |
foreach ( $this->collection as $resource_type => $resources ) {
|
@@ -240,16 +241,16 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
240 |
echo '</li>';
|
241 |
}
|
242 |
echo '</ul>';
|
243 |
-
|
244 |
// Info
|
245 |
echo '<div class="wbcr-gnz-info"><div class="wbcr-gnz-info__warning">';
|
246 |
echo '<p><b>' . __( 'Important! Each page of your website has different sets of scripts and styles files.', 'gonzales' ) . '</b></p>';
|
247 |
echo '<p>' . __( 'Use this feature to disable unwanted scripts and styles by setting up the logic for different types of pages. We recommend working in "Safe mode" because disabling any necessary system script file can corrupt the website. All changes done in Safe mode are available for administrator only. This way only you, as the administrator, can see the result of optimization. To enable the changes for other users, uncheck Safe mode.', 'gonzales' ) . '</p>';
|
248 |
echo '<p>' . sprintf( __( 'For more details and user guides, check the plugin’s <a href="%s" target="_blank" rel="noreferrer noopener">documentation</a>.', 'gonzales' ), WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl( WGZ_Plugin::app()->getPluginName(), 'docs' ) ) . '</p>';
|
249 |
echo '</div>';
|
250 |
-
|
251 |
$premium_button = '<a class="wbcr-gnz-button__pro" href="' . WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl( WGZ_Plugin::app()->getPluginName(), 'assets-manager' ) . '" target="_blank" rel="noreferrer noopener">' . __( 'Upgrade to Premium', 'gonzales' ) . '</a>';
|
252 |
-
|
253 |
$upgrade_to_premium_info = '<div class="wbcr-gnz-info__go-to-premium"><ul>';
|
254 |
$upgrade_to_premium_info .= '<h3><span>' . __( 'MORE IN CLEARFY BUSINESS', 'gonzales' ) . '</span>' . $premium_button . '</h3><ul>';
|
255 |
$upgrade_to_premium_info .= '<li>' . __( 'Disable plugins (groups of scripts)', 'gonzales' ) . '</li>';
|
@@ -261,9 +262,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
261 |
$upgrade_to_premium_info .= '</div>';
|
262 |
echo apply_filters( 'wbcr_gnz_upgrade_to_premium_info', $upgrade_to_premium_info );
|
263 |
echo '</div>';
|
264 |
-
|
265 |
global $plugin_state;
|
266 |
-
|
267 |
foreach ( $this->collection as $resource_type => $resources ) {
|
268 |
// Tabs content
|
269 |
echo '<div class="wbcr-gnz-tabs-content">';
|
@@ -274,31 +275,31 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
274 |
echo '<col class="wbcr-gnz-table__script"/>';
|
275 |
echo '<col class="wbcr-gnz-table__state"/>';
|
276 |
echo '<col class="wbcr-gnz-table__turn-on"/>';
|
277 |
-
|
278 |
foreach ( $resources as $resource_name => $types ) {
|
279 |
$plugin_state = false;
|
280 |
-
|
281 |
if ( 'plugins' == $resource_type && ! empty( $resource_name ) ) {
|
282 |
$plugin_data = $this->getPluginData( $resource_name );
|
283 |
-
|
284 |
echo '<tbody>';
|
285 |
-
|
286 |
if ( ! empty( $plugin_data ) ) {
|
287 |
$is_disabled = $this->getIsDisabled( $options, $resource_type, $resource_name );
|
288 |
$disabled = $this->getDisabled( $is_disabled, $options, $resource_type, $resource_name );
|
289 |
-
|
290 |
$is_enabled = $this->getIsEnabled( $options, $resource_type, $resource_name );
|
291 |
$enabled = $this->getEnabled( $is_enabled, $options, $resource_type, $resource_name );
|
292 |
-
|
293 |
$plugin_state = $this->getState( $is_disabled, $disabled, $current_url );
|
294 |
$plugin_state = apply_filters( 'wbcr_gnz_get_plugin_state', false, $plugin_state );
|
295 |
-
|
296 |
echo '<tr class="wbcr-gnz-table__alternate">';
|
297 |
echo '<th style="width:5%">' . __( 'Loaded', 'gonzales' ) . '</th>';
|
298 |
echo '<th colspan="2">' . __( 'Plugin', 'gonzales' ) . '</th>';
|
299 |
-
|
300 |
echo apply_filters( 'wbcr_gnz_get_additional_head_columns', '' );
|
301 |
-
|
302 |
echo '<th class="wbcr-gnz-table__column_switch"><b>' . __( 'Load resource?', 'gonzales' ) . '</b></th>';
|
303 |
echo '<th class="wbcr-gnz-table__column_condition">' . __( 'Conditions', 'gonzales' ) . '</th>';
|
304 |
echo '</tr>';
|
@@ -311,59 +312,59 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
311 |
echo '<div class="wbcr-gnz-table__item-author"><strong>' . __( 'Author', 'gonzales' ) . ':</strong> ' . $plugin_data['Author'] . '</div>';
|
312 |
echo '<div class="wbcr-gnz-table__item-version"><strong>' . __( 'Version', 'gonzales' ) . ':</strong> ' . $plugin_data['Version'] . '</div>';
|
313 |
echo '</td>';
|
314 |
-
|
315 |
echo apply_filters( 'wbcr_gnz_get_additional_controls_columns', '', $resource_type, $resource_name, $resource_name );
|
316 |
-
|
317 |
// State Controls
|
318 |
$id = '[' . $resource_type . '][' . $resource_name . ']';
|
319 |
echo $this->getStateControrlHTML( $id, $plugin_state, $is_disabled, $is_enabled, $resource_type, $resource_name, $disabled, $enabled, $current_url );
|
320 |
echo '</tr>';
|
321 |
}
|
322 |
}
|
323 |
-
|
324 |
echo '<tr class="wbcr-gnz-table__alternate">';
|
325 |
echo '<th style="width:5%">' . __( 'Loaded', 'gonzales' ) . '</th>';
|
326 |
echo '<th style="width:5%">' . __( 'Size', 'gonzales' ) . '</th>';
|
327 |
echo '<th class="wgz-th">' . __( 'Resource', 'gonzales' ) . '</th>';
|
328 |
-
|
329 |
echo apply_filters( 'wbcr_gnz_get_additional_head_columns', '' );
|
330 |
-
|
331 |
echo '<th class="wbcr-gnz-table__column_switch"><b>' . __( 'Load resource?', 'gonzales' ) . '</b></th>';
|
332 |
echo '<th class="wbcr-gnz-table__column_condition">' . __( 'Conditions', 'gonzales' ) . '</th>';
|
333 |
echo '</tr>';
|
334 |
-
|
335 |
foreach ( $types as $type_name => $rows ) {
|
336 |
-
|
337 |
if ( ! empty( $rows ) ) {
|
338 |
foreach ( $rows as $handle => $row ) {
|
339 |
$is_disabled = $this->getIsDisabled( $options, $type_name, $handle );
|
340 |
$disabled = $this->getDisabled( $is_disabled, $options, $type_name, $handle );
|
341 |
-
|
342 |
$is_enabled = $this->getIsEnabled( $options, $type_name, $handle );
|
343 |
$enabled = $this->getEnabled( $is_enabled, $options, $type_name, $handle );
|
344 |
-
|
345 |
/**
|
346 |
* Find dependency
|
347 |
*/
|
348 |
-
$deps =
|
349 |
foreach ( $rows as $dep_key => $dep_val ) {
|
350 |
if ( in_array( $handle, $dep_val['deps'] ) /*&& $is_disabled*/ ) {
|
351 |
$deps[] = '<a href="#' . $type_name . '-' . $dep_key . '">' . $dep_key . '</a>';
|
352 |
}
|
353 |
}
|
354 |
-
|
355 |
$comment = ( ! empty( $deps ) ? '<span class="wbcr-use-by-comment">' . __( 'In use by', 'gonzales' ) . ' ' . implode( ', ', $deps ) . '</span>' : '' );
|
356 |
$requires = '';
|
357 |
if ( ! empty( $row['deps'] ) ) {
|
358 |
-
$rdeps =
|
359 |
foreach ( $row['deps'] as $dep_val ) {
|
360 |
$rdeps[] = '<a href="#' . $type_name . '-' . $dep_val . '">' . $dep_val . '</a>';
|
361 |
}
|
362 |
$requires = ( $comment ? '<br>' : '' ) . '<span class="wbcr-use-by-comment">' . __( 'Requires', 'gonzales' ) . ' ' . implode( ', ', $rdeps ) . '</span>';
|
363 |
}
|
364 |
-
|
365 |
echo '<tr>';
|
366 |
-
|
367 |
// Loaded
|
368 |
$state = $this->getState( $is_disabled, $disabled, $current_url );
|
369 |
$display_state = $plugin_state === 1 ? 1 : $state;
|
@@ -373,12 +374,12 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
373 |
echo ( 'plugins' == $resource_type ? ' wbcr-state-' . $resource_name : '' ) . '">';
|
374 |
echo '</div>';
|
375 |
echo '</td>';
|
376 |
-
|
377 |
// Size
|
378 |
echo '<td>';
|
379 |
echo '<div class="wbcr-gnz-table__size-value">' . $row['size'] . ' <b>KB</b></div>';
|
380 |
echo '</td>';
|
381 |
-
|
382 |
// Handle + Path + In use
|
383 |
echo '<td class="wgz-td">';
|
384 |
echo '<div class="wbcr-gnz-table__script-name"><b class="wbcr-wgz-resource-type-' . $type_name . '">' . $type_name . '</b>[' . $handle . ']</div>';
|
@@ -392,27 +393,27 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
392 |
echo '</div>';
|
393 |
echo '<div>' . $comment . $requires . '</div>';
|
394 |
echo '</td>';
|
395 |
-
|
396 |
// Controls for other plugins
|
397 |
echo apply_filters( 'wbcr_gnz_get_additional_controls_columns', '', $type_name, $row['url_full'], $resource_name );
|
398 |
-
|
399 |
// State Controls
|
400 |
$id = '[' . $type_name . '][' . $handle . ']';
|
401 |
echo $this->getStateControrlHTML( $id, $state, $is_disabled, $is_enabled, $type_name, $handle, $disabled, $enabled, $current_url );
|
402 |
-
|
403 |
echo "<input type='hidden' class='wbcr-info-data' data-type='{$type_name}' data-off='{$display_state}' value='{$row['size']}'>";
|
404 |
echo '</tr>';
|
405 |
-
|
406 |
echo apply_filters( 'wbcr_gnz_after_scripts_table_row', '', $resource_type, $resource_name, $type_name, $handle );
|
407 |
}
|
408 |
}
|
409 |
}
|
410 |
-
|
411 |
if ( 'plugins' == $resource_type && ! empty( $resource_name ) ) {
|
412 |
echo '</tbody>';
|
413 |
}
|
414 |
}
|
415 |
-
|
416 |
echo '</table>';
|
417 |
echo '</div>';
|
418 |
echo '</div>';
|
@@ -421,7 +422,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
421 |
echo '</form> <!-- /endform -->';
|
422 |
echo '</div> <!-- /div2 -->';
|
423 |
}
|
424 |
-
|
425 |
/**
|
426 |
* Get is disabled
|
427 |
*
|
@@ -434,7 +435,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
434 |
public function getIsDisabled( $options, $type_name, $handle ) {
|
435 |
return isset( $options['disabled'] ) && isset( $options['disabled'][ $type_name ] ) && isset( $options['disabled'][ $type_name ][ $handle ] );
|
436 |
}
|
437 |
-
|
438 |
/**
|
439 |
* Get disabled
|
440 |
*
|
@@ -446,23 +447,23 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
446 |
* @return array
|
447 |
*/
|
448 |
public function getDisabled( $is_disabled, $options, $type_name, $handle ) {
|
449 |
-
$disabled =
|
450 |
-
|
451 |
if ( $is_disabled ) {
|
452 |
$disabled = &$options['disabled'][ $type_name ][ $handle ];
|
453 |
if ( ! isset( $disabled['current'] ) ) {
|
454 |
-
$disabled['current'] =
|
455 |
}
|
456 |
if ( ! isset( $disabled['everywhere'] ) ) {
|
457 |
-
$disabled['everywhere'] =
|
458 |
}
|
459 |
-
|
460 |
$disabled = apply_filters( 'wbcr_gnz_get_disabled', $disabled );
|
461 |
}
|
462 |
-
|
463 |
return $disabled;
|
464 |
}
|
465 |
-
|
466 |
/**
|
467 |
* Get is enabled
|
468 |
*
|
@@ -475,7 +476,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
475 |
public function getIsEnabled( $options, $type_name, $handle ) {
|
476 |
return isset( $options['enabled'] ) && isset( $options['enabled'][ $type_name ] ) && isset( $options['enabled'][ $type_name ][ $handle ] );
|
477 |
}
|
478 |
-
|
479 |
/**
|
480 |
* Get enabled
|
481 |
*
|
@@ -487,24 +488,24 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
487 |
* @return array
|
488 |
*/
|
489 |
public function getEnabled( $is_enabled, $options, $type_name, $handle ) {
|
490 |
-
$enabled =
|
491 |
-
|
492 |
if ( $is_enabled ) {
|
493 |
$enabled = &$options['enabled'][ $type_name ][ $handle ];
|
494 |
-
|
495 |
if ( ! isset( $enabled['current'] ) ) {
|
496 |
-
$enabled['current'] =
|
497 |
}
|
498 |
if ( ! isset( $enabled['everywhere'] ) ) {
|
499 |
-
$enabled['everywhere'] =
|
500 |
}
|
501 |
-
|
502 |
$enabled = apply_filters( 'wbcr_gnz_get_enabled', $enabled );
|
503 |
}
|
504 |
-
|
505 |
return $enabled;
|
506 |
}
|
507 |
-
|
508 |
/**
|
509 |
* Get State
|
510 |
*
|
@@ -519,10 +520,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
519 |
if ( $is_disabled && ( $disabled['everywhere'] == 1 || in_array( $current_url, $disabled['current'] ) || apply_filters( 'wbcr_gnz_check_state_disabled', false, $disabled ) ) ) {
|
520 |
$state = 1;
|
521 |
}
|
522 |
-
|
523 |
return $state;
|
524 |
}
|
525 |
-
|
526 |
/**
|
527 |
* Get state controrl HTML
|
528 |
*
|
@@ -549,7 +550,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
549 |
$html .= '<span class="wbcr-gnz-switch__slider"></span>';
|
550 |
$html .= '</label>';
|
551 |
$html .= '</td>';
|
552 |
-
|
553 |
// Enable
|
554 |
$class_name = 'wbcr-assets-manager-enable';
|
555 |
if ( 'plugins' == $type_name ) {
|
@@ -578,7 +579,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
578 |
$options .= '<option value="regex"' . selected( $is_disabled && ! empty( $disabled['regex'] ), true, false ) . ' class="wbcr-gnz-table__select-pro">' . __( 'Regular expression (PRO)', 'gonzales' ) . '</option>';
|
579 |
$html .= apply_filters( 'wbcr_gnz_select_options', $options, $is_disabled, $disabled );
|
580 |
$html .= '</select>';
|
581 |
-
|
582 |
// Everywhere
|
583 |
$html .= "<span class='wbcr-assets-manager everywhere'";
|
584 |
if ( ! $is_disabled || empty( $disabled['everywhere'] ) ) {
|
@@ -587,7 +588,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
587 |
$html .= ">";
|
588 |
$html .= '<div class="wbcr-gnz-table__label">' . __( 'Exclude', 'gonzales' ) . ': <i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __( 'You can disable this resource for all pages, except sections and page types listed below. Specify sections and page types with the enabled resource.', 'gonzales' ) . '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></div>';
|
589 |
$html .= '<ul class="wbcr-gnz-table__options">';
|
590 |
-
|
591 |
$html .= '<li class="wbcr-gnz-table__options-item">';
|
592 |
$html .= "<input type='hidden' name='enabled{$id}[current]' value='' />";
|
593 |
$html .= '<label class="wbcr-gnz-table__checkbox">';
|
@@ -599,8 +600,8 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
599 |
$html .= '<span class="wbcr-gnz-table__checkbox-text">' . __( 'Current URL', 'gonzales' ) . '</span>';
|
600 |
$html .= '</label>';
|
601 |
$html .= '</li>';
|
602 |
-
|
603 |
-
$post_types = get_post_types(
|
604 |
if ( ! empty( $post_types ) ) {
|
605 |
$html .= "<input type='hidden' name='enabled{$id}[post_types]' value='' />";
|
606 |
foreach ( $post_types as $key => $value ) {
|
@@ -618,9 +619,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
618 |
$html .= '</li>';
|
619 |
}
|
620 |
}
|
621 |
-
|
622 |
-
$taxonomies = get_taxonomies(
|
623 |
-
|
624 |
if ( ! empty( $taxonomies ) ) {
|
625 |
unset( $taxonomies['category'] );
|
626 |
$html .= "<input type='hidden' name='enabled{$id}[taxonomies]' value='' />";
|
@@ -639,9 +640,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
639 |
$html .= '</li>';
|
640 |
}
|
641 |
}
|
642 |
-
|
643 |
$categories = get_categories();
|
644 |
-
|
645 |
if ( ! empty( $categories ) ) {
|
646 |
$html .= "<input type='hidden' name='enabled{$id}[categories]' value='' />";
|
647 |
foreach ( $categories as $key => $cat ) {
|
@@ -659,10 +660,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
659 |
$html .= '</li>';
|
660 |
}
|
661 |
}
|
662 |
-
|
663 |
$html .= '</ul>';
|
664 |
$html .= '</span>';
|
665 |
-
|
666 |
// Custom URL
|
667 |
$control_html = '<div class="wbcr-gnz-table__field wbcr-assets-manager custom"';
|
668 |
if ( ! $is_disabled || empty( $disabled['custom'] ) ) {
|
@@ -686,19 +687,19 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
686 |
$control_html .= '<textarea class="wbcr-gnz-table__textarea" rows="3" name="disabled' . $id . '[regex]" placeholder="^rockstar-[0-9]{2,5}" disabled="disabled"></textarea>';
|
687 |
$control_html .= "</div>";
|
688 |
$html .= apply_filters( 'wbcr_gnz_control_html', $control_html, $id, $is_disabled, $disabled );
|
689 |
-
|
690 |
$html .= '</span>';
|
691 |
-
|
692 |
if ( isset( $disabled['current'] ) && ! empty( $disabled['current'] ) ) {
|
693 |
$custom_urls = "";
|
694 |
-
|
695 |
foreach ( $disabled['current'] as $item_url ) {
|
696 |
if ( $current_url != $item_url ) {
|
697 |
$full_url = site_url() . $item_url;
|
698 |
$custom_urls .= "<span><a href='" . $full_url . "'>" . $full_url . "</a></span>";
|
699 |
}
|
700 |
}
|
701 |
-
|
702 |
if ( ! empty( $custom_urls ) ) {
|
703 |
$html .= '<div class="wbcr-gnz-table__also">';
|
704 |
$html .= '<div class="wbcr-gnz-table__label">' . __( 'Also disabled for pages', 'gonzales' ) . ':</div>';
|
@@ -707,54 +708,55 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
707 |
}
|
708 |
}
|
709 |
$html .= '</td>';
|
710 |
-
|
711 |
return $html;
|
712 |
}
|
713 |
-
|
714 |
public function formSave() {
|
715 |
if ( isset( $_GET['wbcr_assets_manager'] ) && isset( $_POST['wbcr_assets_manager_save'] ) ) {
|
716 |
-
|
717 |
if ( ! $this->isUserCan() || ! wp_verify_nonce( filter_input( INPUT_POST, 'wbcr_assets_manager_save' ), 'wbcr_assets_manager_nonce' ) ) {
|
718 |
wp_die( __( 'You don\'t have enough capability to edit this information.', 'gonzales' ), 403 );
|
719 |
-
|
720 |
return;
|
721 |
}
|
722 |
-
|
723 |
// todo: вынести в метод
|
724 |
if ( is_multisite() && is_network_admin() ) {
|
725 |
-
$options = $this->getNetworkOption( 'assets_manager_options',
|
726 |
} else {
|
727 |
-
$options = $this->getOption( 'assets_manager_options',
|
728 |
}
|
729 |
-
|
730 |
$current_url = esc_url( $this->getCurrentUrl() );
|
731 |
-
|
732 |
if ( isset( $_POST['disabled'] ) && ! empty( $_POST['disabled'] ) ) {
|
733 |
foreach ( $_POST['disabled'] as $type => $assets ) {
|
734 |
if ( ! empty( $assets ) ) {
|
735 |
foreach ( $assets as $handle => $where ) {
|
736 |
$handle = sanitize_text_field( $handle );
|
737 |
$where = sanitize_text_field( $where['state'] );
|
738 |
-
|
739 |
if ( ! isset( $options['disabled'][ $type ][ $handle ] ) ) {
|
740 |
-
$options
|
|
|
741 |
}
|
742 |
$disabled = &$options['disabled'][ $type ][ $handle ];
|
743 |
-
|
744 |
if ( ! empty( $where ) && 'disable' == $where ) {
|
745 |
$action = isset( $_POST['wgz_action'][ $type ][ $handle ] ) ? $_POST['wgz_action'][ $type ][ $handle ] : '';
|
746 |
-
|
747 |
if ( "everywhere" == $action ) {
|
748 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, $action );
|
749 |
-
|
750 |
$disabled['everywhere'] = 1;
|
751 |
} else if ( "current" == $action ) {
|
752 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, $action );
|
753 |
-
|
754 |
if ( ! isset( $disabled['current'] ) || ! is_array( $disabled['current'] ) ) {
|
755 |
-
$disabled['current'] =
|
756 |
}
|
757 |
-
|
758 |
if ( ! in_array( $current_url, $disabled['current'] ) ) {
|
759 |
array_push( $disabled['current'], $current_url );
|
760 |
}
|
@@ -764,10 +766,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
764 |
}
|
765 |
} else {
|
766 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, 'current' );
|
767 |
-
|
768 |
if ( isset( $disabled['current'] ) ) {
|
769 |
$current_key = array_search( $current_url, $disabled['current'] );
|
770 |
-
|
771 |
if ( ! empty( $current_key ) || $current_key === 0 ) {
|
772 |
unset( $disabled['current'][ $current_key ] );
|
773 |
if ( empty( $disabled['current'] ) ) {
|
@@ -776,7 +778,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
776 |
}
|
777 |
}
|
778 |
}
|
779 |
-
|
780 |
if ( empty( $disabled ) ) {
|
781 |
unset( $options['disabled'][ $type ][ $handle ] );
|
782 |
if ( empty( $options['disabled'][ $type ] ) ) {
|
@@ -790,22 +792,23 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
790 |
}
|
791 |
}
|
792 |
}
|
793 |
-
|
794 |
if ( isset( $_POST['enabled'] ) && ! empty( $_POST['enabled'] ) ) {
|
795 |
foreach ( $_POST['enabled'] as $type => $assets ) {
|
796 |
if ( ! empty( $assets ) ) {
|
797 |
foreach ( $assets as $handle => $where ) {
|
798 |
-
|
799 |
if ( ! isset( $options['enabled'][ $type ][ $handle ] ) ) {
|
800 |
-
$options
|
|
|
801 |
}
|
802 |
$enabled = &$options['enabled'][ $type ][ $handle ];
|
803 |
-
|
804 |
$action = isset( $_POST['wgz_action'][ $type ][ $handle ] ) ? $_POST['wgz_action'][ $type ][ $handle ] : '';
|
805 |
-
|
806 |
if ( "everywhere" == $action && ( ! empty( $where['current'] ) || $where['current'] === "0" ) ) {
|
807 |
if ( ! isset( $enabled['current'] ) || ! is_array( $enabled['current'] ) ) {
|
808 |
-
$enabled['current'] =
|
809 |
}
|
810 |
if ( ! in_array( $where['current'], $enabled['current'] ) ) {
|
811 |
array_push( $enabled['current'], $where['current'] );
|
@@ -821,9 +824,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
821 |
}
|
822 |
}
|
823 |
}
|
824 |
-
|
825 |
if ( "everywhere" == $action && ! empty( $where['post_types'] ) ) {
|
826 |
-
$enabled['post_types'] =
|
827 |
foreach ( $where['post_types'] as $key => $post_type ) {
|
828 |
if ( isset( $enabled['post_types'] ) ) {
|
829 |
if ( ! in_array( $post_type, $enabled['post_types'] ) ) {
|
@@ -834,9 +837,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
834 |
} else {
|
835 |
unset( $enabled['post_types'] );
|
836 |
}
|
837 |
-
|
838 |
if ( "everywhere" == $action && ! empty( $where['taxonomies'] ) ) {
|
839 |
-
$enabled['taxonomies'] =
|
840 |
foreach ( $where['taxonomies'] as $key => $taxonomy ) {
|
841 |
if ( isset( $enabled['taxonomies'] ) ) {
|
842 |
if ( ! in_array( $taxonomy, $enabled['taxonomies'] ) ) {
|
@@ -847,9 +850,9 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
847 |
} else {
|
848 |
unset( $enabled['taxonomies'] );
|
849 |
}
|
850 |
-
|
851 |
if ( "everywhere" == $action && ! empty( $where['categories'] ) ) {
|
852 |
-
$enabled['categories'] =
|
853 |
foreach ( $where['categories'] as $key => $category ) {
|
854 |
if ( isset( $enabled['categories'] ) ) {
|
855 |
if ( ! in_array( $category, $enabled['categories'] ) ) {
|
@@ -860,7 +863,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
860 |
} else {
|
861 |
unset( $enabled['categories'] );
|
862 |
}
|
863 |
-
|
864 |
if ( empty( $enabled ) ) {
|
865 |
unset( $options['enabled'][ $type ][ $handle ] );
|
866 |
if ( empty( $options['enabled'][ $type ] ) ) {
|
@@ -874,19 +877,19 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
874 |
}
|
875 |
}
|
876 |
}
|
877 |
-
|
878 |
do_action( 'wbcr_gnz_form_save' );
|
879 |
-
|
880 |
if ( is_multisite() && is_network_admin() ) {
|
881 |
$this->updateNetworkOption( 'assets_manager_options', $options );
|
882 |
} else {
|
883 |
$this->updateOption( 'assets_manager_options', $options );
|
884 |
}
|
885 |
-
|
886 |
WbcrFactoryClearfy206_Helpers::flushPageCache();
|
887 |
}
|
888 |
}
|
889 |
-
|
890 |
/**
|
891 |
* Get disabled from options
|
892 |
*
|
@@ -898,23 +901,23 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
898 |
private function getDisabledFromOptions( $type, $handle ) {
|
899 |
// todo: вынести в метод
|
900 |
if ( is_multisite() && is_network_admin() ) {
|
901 |
-
$options = $this->getNetworkOption( 'assets_manager_options',
|
902 |
} else {
|
903 |
-
$options = $this->getOption( 'assets_manager_options',
|
904 |
}
|
905 |
-
|
906 |
$results = apply_filters( 'wbcr_gnz_get_disabled_from_options', false, $options, $type, $handle );
|
907 |
if ( false !== $results ) {
|
908 |
return $results;
|
909 |
}
|
910 |
-
|
911 |
if ( isset( $options['disabled'] ) && isset( $options['disabled'][ $type ] ) && isset( $options['disabled'][ $type ][ $handle ] ) ) {
|
912 |
return $options['disabled'][ $type ][ $handle ];
|
913 |
}
|
914 |
-
|
915 |
return null;
|
916 |
}
|
917 |
-
|
918 |
/**
|
919 |
* Get enabled from options
|
920 |
*
|
@@ -926,67 +929,71 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
926 |
private function getEnabledFromOptions( $type, $handle ) {
|
927 |
// todo: вынести в метод
|
928 |
if ( is_multisite() && is_network_admin() ) {
|
929 |
-
$options = $this->getNetworkOption( 'assets_manager_options',
|
930 |
} else {
|
931 |
-
$options = $this->getOption( 'assets_manager_options',
|
932 |
}
|
933 |
-
|
934 |
$results = apply_filters( 'wbcr_gnz_get_enabled_from_options', false, $options, $type, $handle );
|
935 |
if ( false !== $results ) {
|
936 |
return $results;
|
937 |
}
|
938 |
-
|
939 |
if ( isset( $options['enabled'] ) && isset( $options['enabled'][ $type ] ) && isset( $options['enabled'][ $type ][ $handle ] ) ) {
|
940 |
return $options['enabled'][ $type ][ $handle ];
|
941 |
}
|
942 |
-
|
943 |
return null;
|
944 |
}
|
945 |
-
|
946 |
function unloadAssets( $src, $handle ) {
|
947 |
if ( isset( $_GET['wbcr_assets_manager'] ) ) {
|
948 |
return $src;
|
949 |
}
|
950 |
-
|
951 |
if ( apply_filters( 'wbcr_gnz_check_unload_assets', false ) ) {
|
952 |
return $src;
|
953 |
}
|
954 |
-
|
955 |
$type = ( current_filter() == 'script_loader_src' ) ? 'js' : 'css';
|
956 |
-
|
957 |
$current_url = esc_url( $this->getCurrentUrl() );
|
958 |
-
|
959 |
$disabled = $this->getDisabledFromOptions( $type, $handle );
|
960 |
$enabled = $this->getEnabledFromOptions( $type, $handle );
|
961 |
-
|
962 |
if ( ( isset( $disabled['everywhere'] ) && $disabled['everywhere'] == 1 ) || ( isset( $disabled['current'] ) && is_array( $disabled['current'] ) && in_array( $current_url, $disabled['current'] ) ) || apply_filters( 'wbcr_gnz_check_disabled_is_set', false, $disabled, $current_url ) ) {
|
963 |
-
|
964 |
if ( isset( $enabled['current'] ) && is_array( $enabled['current'] ) && in_array( $current_url, $enabled['current'] ) ) {
|
965 |
return $src;
|
966 |
}
|
967 |
-
|
968 |
if ( apply_filters( 'wbcr_gnz_check_unload_disabled', false, $disabled, $current_url ) ) {
|
969 |
return $src;
|
970 |
}
|
971 |
-
|
972 |
if ( isset( $enabled['post_types'] ) && is_singular() && in_array( get_post_type(), $enabled['post_types'] ) ) {
|
973 |
return $src;
|
974 |
}
|
975 |
-
|
976 |
-
if ( isset( $enabled['taxonomies'] )
|
977 |
-
|
|
|
|
|
|
|
|
|
978 |
}
|
979 |
-
|
980 |
if ( isset( $enabled['categories'] ) && in_array( get_query_var( 'cat' ), $enabled['categories'] ) ) {
|
981 |
return $src;
|
982 |
}
|
983 |
-
|
984 |
return false;
|
985 |
}
|
986 |
-
|
987 |
return $src;
|
988 |
}
|
989 |
-
|
990 |
/**
|
991 |
* Get information regarding used assets
|
992 |
*
|
@@ -996,22 +1003,22 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
996 |
if ( ! isset( $_GET['wbcr_assets_manager'] ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
997 |
return false;
|
998 |
}
|
999 |
-
|
1000 |
-
$denied =
|
1001 |
-
'js' =>
|
1002 |
-
'css' =>
|
1003 |
-
|
1004 |
$denied = apply_filters( 'wbcr_gnz_denied_assets', $denied );
|
1005 |
-
|
1006 |
/**
|
1007 |
* Imitate full untouched list without dequeued assets
|
1008 |
* Appends part of original table. Safe approach.
|
1009 |
*/
|
1010 |
-
$data_assets =
|
1011 |
'js' => wp_scripts(),
|
1012 |
'css' => wp_styles(),
|
1013 |
-
|
1014 |
-
|
1015 |
foreach ( $data_assets as $type => $data ) {
|
1016 |
//$resource = array();
|
1017 |
foreach ( $data->groups as $el => $val ) {
|
@@ -1021,7 +1028,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1021 |
if ( isset( $data->registered[ $el ]->src ) ) {
|
1022 |
$url = $this->prepareCorrectUrl( $data->registered[ $el ]->src );
|
1023 |
$url_short = str_replace( get_home_url(), '', $url );
|
1024 |
-
|
1025 |
if ( false !== strpos( $url, get_theme_root_uri() ) ) {
|
1026 |
$resource_type = 'theme';
|
1027 |
} else if ( false !== strpos( $url, plugins_url() ) ) {
|
@@ -1029,47 +1036,47 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1029 |
} else {
|
1030 |
$resource_type = 'misc';
|
1031 |
}
|
1032 |
-
|
1033 |
$resource_name = '';
|
1034 |
if ( 'plugins' == $resource_type ) {
|
1035 |
$clean_url = str_replace( WP_PLUGIN_URL . '/', '', $url );
|
1036 |
$url_parts = explode( '/', $clean_url );
|
1037 |
$resource_name = isset( $url_parts[0] ) ? $url_parts[0] : '';
|
1038 |
}
|
1039 |
-
|
1040 |
-
$this->collection[ $resource_type ][ $resource_name ][ $type ][ $el ] =
|
1041 |
'url_full' => $url,
|
1042 |
'url_short' => $url_short,
|
1043 |
//'state' => $this->get_visibility($type, $el),
|
1044 |
'size' => $this->getAssetSize( $url ),
|
1045 |
'ver' => $data->registered[ $el ]->ver,
|
1046 |
-
'deps' => ( isset( $data->registered[ $el ]->deps ) ? $data->registered[ $el ]->deps :
|
1047 |
-
|
1048 |
}
|
1049 |
}
|
1050 |
//}
|
1051 |
}
|
1052 |
}
|
1053 |
}
|
1054 |
-
|
1055 |
return false;
|
1056 |
}
|
1057 |
-
|
1058 |
/**
|
1059 |
* Loads functionality that allows to enable/disable js/css without site reload
|
1060 |
*/
|
1061 |
public function appendAsset() {
|
1062 |
if ( $this->isUserCan() && isset( $_GET['wbcr_assets_manager'] ) ) {
|
1063 |
-
wp_enqueue_style( 'wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/css/assets-manager.css',
|
1064 |
-
wp_enqueue_script( 'wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/js/assets-manager.js',
|
1065 |
}
|
1066 |
}
|
1067 |
-
|
1068 |
/**
|
1069 |
* Exception for address starting from "//example.com" instead of
|
1070 |
* "http://example.com". WooCommerce likes such a format
|
1071 |
*
|
1072 |
-
* @param
|
1073 |
*
|
1074 |
* @return string Correct URL.
|
1075 |
*/
|
@@ -1079,10 +1086,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1079 |
} else {
|
1080 |
$out = $url;
|
1081 |
}
|
1082 |
-
|
1083 |
return $out;
|
1084 |
}
|
1085 |
-
|
1086 |
/**
|
1087 |
* Get current URL
|
1088 |
*
|
@@ -1095,36 +1102,36 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1095 |
} else {
|
1096 |
$out = $url[0];
|
1097 |
}
|
1098 |
-
|
1099 |
return $out;
|
1100 |
}
|
1101 |
-
|
1102 |
/**
|
1103 |
* Checks how heavy is file
|
1104 |
*
|
1105 |
-
* @param
|
1106 |
*
|
1107 |
* @return int Size in KB.
|
1108 |
*/
|
1109 |
private function getAssetSize( $src ) {
|
1110 |
$weight = 0;
|
1111 |
-
|
1112 |
$home = get_theme_root() . '/../..';
|
1113 |
$src = explode( '?', $src );
|
1114 |
-
|
1115 |
if ( ! filter_var( $src[0], FILTER_VALIDATE_URL ) === false && strpos( $src[0], get_home_url() ) === false ) {
|
1116 |
return 0;
|
1117 |
}
|
1118 |
-
|
1119 |
$src_relative = $home . str_replace( get_home_url(), '', $this->prepareCorrectUrl( $src[0] ) );
|
1120 |
-
|
1121 |
if ( file_exists( $src_relative ) ) {
|
1122 |
$weight = round( filesize( $src_relative ) / 1024, 1 );
|
1123 |
}
|
1124 |
-
|
1125 |
return $weight;
|
1126 |
}
|
1127 |
-
|
1128 |
/**
|
1129 |
* Unset disabled
|
1130 |
*
|
@@ -1139,10 +1146,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1139 |
} else if ( "current" == $action ) {
|
1140 |
unset( $disabled['everywhere'] );
|
1141 |
}
|
1142 |
-
|
1143 |
return $disabled;
|
1144 |
}
|
1145 |
-
|
1146 |
/**
|
1147 |
* Get plugin data from folder name
|
1148 |
*
|
@@ -1151,8 +1158,8 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1151 |
* @return array
|
1152 |
*/
|
1153 |
private function getPluginData( $name ) {
|
1154 |
-
$data =
|
1155 |
-
|
1156 |
if ( $name ) {
|
1157 |
if ( ! function_exists( 'get_plugins' ) ) {
|
1158 |
// подключим файл с функцией get_plugins()
|
@@ -1169,10 +1176,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1169 |
}
|
1170 |
}
|
1171 |
}
|
1172 |
-
|
1173 |
return $data;
|
1174 |
}
|
1175 |
-
|
1176 |
/**
|
1177 |
* Get sided plugin name
|
1178 |
*
|
@@ -1190,13 +1197,13 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1190 |
|
1191 |
return "";*/
|
1192 |
}
|
1193 |
-
|
1194 |
/**
|
1195 |
* Get exclude sided plugin files
|
1196 |
*
|
1197 |
* @param string $index
|
1198 |
* @param string $type
|
1199 |
-
* @param bool
|
1200 |
*
|
1201 |
* @return array
|
1202 |
*/
|
@@ -1204,25 +1211,25 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1204 |
if ( isset( $this->sided_plugin_files[ $index ][ $type ] ) && ! empty( $this->sided_plugin_files[ $index ][ $type ] ) ) {
|
1205 |
return $this->sided_plugin_files[ $index ][ $type ];
|
1206 |
}
|
1207 |
-
|
1208 |
-
$this->sided_plugin_files[ $index ][ $type ] =
|
1209 |
-
|
1210 |
// todo: вынести в метод
|
1211 |
if ( is_multisite() && is_network_admin() ) {
|
1212 |
-
$options = $this->getNetworkOption( 'assets_manager_sided_plugins',
|
1213 |
} else {
|
1214 |
-
$options = $this->getOption( 'assets_manager_sided_plugins',
|
1215 |
}
|
1216 |
-
|
1217 |
$plugin = $this->getSidedPluginName( $index );
|
1218 |
-
|
1219 |
if ( $plugin && $options ) {
|
1220 |
if ( isset( $options[ $plugin ][ $type ] ) ) {
|
1221 |
$urls = $options[ $plugin ][ $type ];
|
1222 |
-
|
1223 |
if ( is_array( $urls ) ) {
|
1224 |
foreach ( $urls as $url ) {
|
1225 |
-
|
1226 |
if ( $full ) {
|
1227 |
$file = ( false !== strpos( $url, site_url() ) ? $url : site_url() . '/' . trim( $url, '/\\' ) );
|
1228 |
} else {
|
@@ -1232,16 +1239,16 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1232 |
$file = $url;
|
1233 |
}
|
1234 |
}
|
1235 |
-
|
1236 |
$this->sided_plugin_files[ $index ][ $type ][] = $file;
|
1237 |
}
|
1238 |
}
|
1239 |
}
|
1240 |
}
|
1241 |
-
|
1242 |
return $this->sided_plugin_files[ $index ][ $type ];
|
1243 |
}
|
1244 |
-
|
1245 |
/**
|
1246 |
* Is component active
|
1247 |
*
|
@@ -1251,16 +1258,16 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1251 |
*/
|
1252 |
private function isComponentActive( $index ) {
|
1253 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
1254 |
-
|
1255 |
$plugin_path = isset( $this->sided_plugins[ $index ] ) ? $this->sided_plugins[ $index ] : null;
|
1256 |
-
|
1257 |
if ( $index == 'wmac' && defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) && class_exists( 'WCL_Plugin' ) ) {
|
1258 |
return WCL_Plugin::app()->isActivateComponent( 'minify_and_combine' );
|
1259 |
}
|
1260 |
-
|
1261 |
return is_plugin_active( $plugin_path );
|
1262 |
}
|
1263 |
-
|
1264 |
/**
|
1265 |
* Get component name
|
1266 |
*
|
@@ -1278,10 +1285,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1278 |
$data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path );
|
1279 |
$name = $data['Name'];
|
1280 |
}
|
1281 |
-
|
1282 |
return $name;
|
1283 |
}
|
1284 |
-
|
1285 |
/**
|
1286 |
* Get head columns
|
1287 |
*
|
@@ -1295,7 +1302,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1295 |
if ( $this->isComponentActive( $index ) ) {
|
1296 |
$title = $this->getComponentName( $plugin_path, $index );
|
1297 |
$text = $index == 'wclp' ? __( 'remove version?', 'gonzales' ) : __( 'optimize?', 'gonzales' );
|
1298 |
-
|
1299 |
$hint = '';
|
1300 |
if ( $index == 'wclp' ) {
|
1301 |
$hint = __( 'You’ve enabled "Remove query strings" from static resources in the "Clearfy" plugin. This list of settings helps you to exclude the necessary scripts and styles with remaining query strings. Press No to add a file to the excluded list.', 'gonzales' );
|
@@ -1308,10 +1315,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1308 |
}
|
1309 |
}
|
1310 |
}
|
1311 |
-
|
1312 |
return $html;
|
1313 |
}
|
1314 |
-
|
1315 |
/**
|
1316 |
* Get active status for sided plugin
|
1317 |
*
|
@@ -1325,7 +1332,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1325 |
*/
|
1326 |
private function getActiveStatusForSidedPlugin( $index, $options, $plugin, $type, $handle ) {
|
1327 |
$active = isset( $options[ $plugin ][ $type ] ) && is_array( $options[ $plugin ][ $type ] ) && in_array( $handle, $options[ $plugin ][ $type ] );
|
1328 |
-
|
1329 |
/*if( !$active && !isset($options[$plugin]) ) {
|
1330 |
|
1331 |
switch( $index ) {
|
@@ -1343,10 +1350,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1343 |
break;
|
1344 |
}
|
1345 |
}*/
|
1346 |
-
|
1347 |
return $active;
|
1348 |
}
|
1349 |
-
|
1350 |
/**
|
1351 |
* Get controls columns
|
1352 |
*
|
@@ -1359,23 +1366,23 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1359 |
*/
|
1360 |
public function getAdditionalControlsColumns( $html, $type, $handle, $plugin_handle ) {
|
1361 |
if ( ! empty( $this->sided_plugins ) ) {
|
1362 |
-
|
1363 |
// todo: вынести в метод
|
1364 |
if ( is_multisite() && is_network_admin() ) {
|
1365 |
-
$options = $this->getNetworkOption( 'assets_manager_sided_plugins',
|
1366 |
} else {
|
1367 |
-
$options = $this->getOption( 'assets_manager_sided_plugins',
|
1368 |
}
|
1369 |
-
|
1370 |
foreach ( $this->sided_plugins as $index => $plugin_path ) {
|
1371 |
if ( $this->isComponentActive( $index ) ) {
|
1372 |
$plugin = $this->getSidedPluginName( $index );
|
1373 |
-
|
1374 |
$active = $this->getActiveStatusForSidedPlugin( $index, $options, $plugin, $type, $handle );
|
1375 |
$name = "sided_plugins[{$plugin}][{$type}][{$handle}]";
|
1376 |
-
|
1377 |
$html .= "<td>";
|
1378 |
-
|
1379 |
if ( ! empty( $handle ) && ( 'plugins' != $type && false !== strpos( $handle, '.' . $type ) || 'plugins' == $type ) ) {
|
1380 |
$html .= '<label class="wbcr-gnz-switch">';
|
1381 |
$html .= '<input class="wbcr-gnz-switch__input visually-hidden wbcr-gnz-sided-disable';
|
@@ -1391,10 +1398,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1391 |
}
|
1392 |
}
|
1393 |
}
|
1394 |
-
|
1395 |
return $html;
|
1396 |
}
|
1397 |
-
|
1398 |
/**
|
1399 |
* @param $index
|
1400 |
* @param $type
|
@@ -1404,7 +1411,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1404 |
*/
|
1405 |
private function filterExclusions( $index, $type, $exclude ) {
|
1406 |
$files = $this->getSidedPluginFiles( $index, $type );
|
1407 |
-
|
1408 |
if ( ! empty( $files ) ) {
|
1409 |
if ( is_array( $exclude ) ) {
|
1410 |
$exclude = array_merge( $exclude, $files );
|
@@ -1413,10 +1420,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1413 |
$exclude .= ! empty( $exclude ) ? ',' . $dontmove : $dontmove;
|
1414 |
}
|
1415 |
}
|
1416 |
-
|
1417 |
return $exclude;
|
1418 |
}
|
1419 |
-
|
1420 |
/**
|
1421 |
* aopt filter js exclude
|
1422 |
*
|
@@ -1428,7 +1435,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1428 |
public function aoptFilterJsExclude( $exclude, $content ) {
|
1429 |
return $this->filterExclusions( 'aopt', 'js', $exclude );
|
1430 |
}
|
1431 |
-
|
1432 |
/**
|
1433 |
* aopt filter css exclude
|
1434 |
*
|
@@ -1440,7 +1447,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1440 |
public function aoptFilterCssExclude( $exclude, $content ) {
|
1441 |
return $this->filterExclusions( 'aopt', 'css', $exclude );
|
1442 |
}
|
1443 |
-
|
1444 |
/**
|
1445 |
* wmac filter js exclude
|
1446 |
*
|
@@ -1452,7 +1459,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1452 |
public function wmacFilterJsExclude( $exclude, $content ) {
|
1453 |
return $this->filterExclusions( 'wmac', 'js', $exclude );
|
1454 |
}
|
1455 |
-
|
1456 |
/**
|
1457 |
* wmac filter css exclude
|
1458 |
*
|
@@ -1464,7 +1471,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1464 |
public function wmacFilterCssExclude( $exclude, $content ) {
|
1465 |
return $this->filterExclusions( 'wmac', 'css', $exclude );
|
1466 |
}
|
1467 |
-
|
1468 |
/**
|
1469 |
* Filter js minify exclusions
|
1470 |
*
|
@@ -1477,7 +1484,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1477 |
*/
|
1478 |
private function filterJsMinifyExclusions( $index, $type, $result, $url ) {
|
1479 |
$files = $this->getSidedPluginFiles( $index, $type );
|
1480 |
-
|
1481 |
if ( ! empty( $files ) ) {
|
1482 |
foreach ( $files as $file ) {
|
1483 |
if ( false !== strpos( $url, $file ) ) {
|
@@ -1485,10 +1492,10 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1485 |
}
|
1486 |
}
|
1487 |
}
|
1488 |
-
|
1489 |
return $result;
|
1490 |
}
|
1491 |
-
|
1492 |
/**
|
1493 |
* Action wmac_filter_js_minify_excluded
|
1494 |
*
|
@@ -1500,7 +1507,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1500 |
public function wmacFilterJsMinifyExclude( $result, $url ) {
|
1501 |
return $this->filterJsMinifyExclusions( 'wmac', 'js', $result, $url );
|
1502 |
}
|
1503 |
-
|
1504 |
/**
|
1505 |
* Action wmac_filter_css_minify_excluded
|
1506 |
*
|
@@ -1512,7 +1519,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1512 |
public function wmacFilterCssMinifyExclude( $result, $url ) {
|
1513 |
return $this->filterJsMinifyExclusions( 'wmac', 'css', $result, $url );
|
1514 |
}
|
1515 |
-
|
1516 |
/**
|
1517 |
* Manage excluded files
|
1518 |
*
|
@@ -1546,29 +1553,29 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1546 |
default:
|
1547 |
return;
|
1548 |
}
|
1549 |
-
|
1550 |
// For clearfy need new line
|
1551 |
$delimeter = $index == 'wclp' ? "\n" : ",";
|
1552 |
-
$current_exclude_files = ! empty( $exclude_files ) ? array_filter( array_map( 'trim', explode( $delimeter, $exclude_files ) ) ) :
|
1553 |
-
|
1554 |
$delete_files = array_diff( $sided_exclude_files['before'][ $type ], $sided_exclude_files['after'][ $type ] );
|
1555 |
$new_files = array_diff( $sided_exclude_files['after'][ $type ], $current_exclude_files );
|
1556 |
-
|
1557 |
if ( empty( $current_exclude_files ) && ! empty( $new_files ) ) {
|
1558 |
$current_exclude_files = $new_files;
|
1559 |
} else if ( ! empty( $current_exclude_files ) ) {
|
1560 |
-
$new_exclude_files =
|
1561 |
foreach ( $current_exclude_files as $file ) {
|
1562 |
-
|
1563 |
if ( ! in_array( $file, $delete_files ) ) {
|
1564 |
$new_exclude_files[] = $file;
|
1565 |
}
|
1566 |
}
|
1567 |
$current_exclude_files = array_merge( $new_exclude_files, $new_files );
|
1568 |
}
|
1569 |
-
|
1570 |
$current_exclude_files = array_filter( array_unique( $current_exclude_files ) );
|
1571 |
-
|
1572 |
switch ( $index ) {
|
1573 |
case 'aopt':
|
1574 |
update_option( 'autoptimize_' . $type . '_exclude', implode( ', ', $current_exclude_files ) );
|
@@ -1585,7 +1592,7 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1585 |
break;
|
1586 |
}
|
1587 |
}
|
1588 |
-
|
1589 |
/**
|
1590 |
* Action form save
|
1591 |
*
|
@@ -1594,55 +1601,55 @@ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
|
1594 |
public function actionFormSave( $empty_before = false ) {
|
1595 |
if ( ! empty( $this->sided_plugins ) && ! $empty_before ) {
|
1596 |
foreach ( $this->sided_plugins as $index => $sided_plugin ) {
|
1597 |
-
$sided_exclude_files[ $index ]['before'] =
|
1598 |
-
'js' =>
|
1599 |
-
'css' =>
|
1600 |
-
|
1601 |
// For clearfy need full url
|
1602 |
$full = ( $index == 'wclp' ? true : false );
|
1603 |
-
|
1604 |
$sided_exclude_files[ $index ]['before']['js'] += $this->getSidedPluginFiles( $index, 'js', $full );
|
1605 |
$sided_exclude_files[ $index ]['before']['css'] += $this->getSidedPluginFiles( $index, 'css', $full );
|
1606 |
}
|
1607 |
}
|
1608 |
-
|
1609 |
if ( isset( $_POST['sided_plugins'] ) && ! empty( $_POST['sided_plugins'] ) ) {
|
1610 |
-
$sided_plugins_options =
|
1611 |
foreach ( $_POST['sided_plugins'] as $plugin => $types ) {
|
1612 |
foreach ( $types as $type => $urls ) {
|
1613 |
foreach ( $urls as $url => $active ) {
|
1614 |
-
|
1615 |
if ( ! empty( $url ) && $active ) {
|
1616 |
$sided_plugins_options[ $plugin ][ $type ][] = $url;
|
1617 |
}
|
1618 |
}
|
1619 |
}
|
1620 |
}
|
1621 |
-
|
1622 |
if ( is_multisite() && is_network_admin() ) {
|
1623 |
$this->updateNetworkOption( 'assets_manager_sided_plugins', $sided_plugins_options );
|
1624 |
} else {
|
1625 |
$this->updateOption( 'assets_manager_sided_plugins', $sided_plugins_options );
|
1626 |
}
|
1627 |
}
|
1628 |
-
|
1629 |
if ( ! empty( $this->sided_plugins ) ) {
|
1630 |
-
$this->sided_plugin_files =
|
1631 |
foreach ( $this->sided_plugins as $index => $sided_plugin ) {
|
1632 |
-
$sided_exclude_files[ $index ]['after'] =
|
1633 |
-
'js' =>
|
1634 |
-
'css' =>
|
1635 |
-
|
1636 |
// For clearfy need full url
|
1637 |
$full = ( $index == 'wclp' ? true : false );
|
1638 |
-
|
1639 |
$sided_exclude_files[ $index ]['after']['js'] += $this->getSidedPluginFiles( $index, 'js', $full );
|
1640 |
$sided_exclude_files[ $index ]['after']['css'] += $this->getSidedPluginFiles( $index, 'css', $full );
|
1641 |
-
|
1642 |
if ( ! empty( $sided_exclude_files[ $index ]['before']['js'] ) || ! empty( $sided_exclude_files[ $index ]['after']['js'] ) ) {
|
1643 |
$this->manageExcludeFiles( $sided_exclude_files[ $index ], $index, 'js' );
|
1644 |
}
|
1645 |
-
|
1646 |
if ( ! empty( $sided_exclude_files[ $index ]['before']['css'] ) || ! empty( $sided_exclude_files[ $index ]['after']['css'] ) ) {
|
1647 |
$this->manageExcludeFiles( $sided_exclude_files[ $index ], $index, 'css' );
|
1648 |
}
|
2 |
|
3 |
/**
|
4 |
* Assets manager base class
|
5 |
+
*
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* @copyright (c) 05.11.2017, Webcraftic
|
8 |
+
* @version 1.0
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
14 |
}
|
15 |
|
16 |
class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy206_Configurate {
|
17 |
+
|
18 |
/**
|
19 |
* Stores list of all available assets (used in rendering panel)
|
20 |
*
|
21 |
* @var array
|
22 |
*/
|
23 |
+
public $collection = [];
|
24 |
+
|
25 |
/**
|
26 |
* Plugins for additional columns
|
27 |
*
|
28 |
* @var array
|
29 |
*/
|
30 |
+
private $sided_plugins = [];
|
31 |
+
|
32 |
/**
|
33 |
* Css and js files excluded in sided plugins
|
34 |
*
|
35 |
* @var array
|
36 |
*/
|
37 |
+
private $sided_plugin_files = [];
|
38 |
+
|
39 |
/**
|
40 |
* @var bool
|
41 |
*/
|
42 |
private $is_user_can;
|
43 |
+
|
44 |
/**
|
45 |
* @param Wbcr_Factory409_Plugin $plugin
|
46 |
*/
|
48 |
parent::__construct( $plugin );
|
49 |
$this->plugin = $plugin;
|
50 |
}
|
51 |
+
|
52 |
protected function isUserCan() {
|
53 |
return current_user_can( 'manage_options' ) || current_user_can( 'manage_network' );
|
54 |
}
|
55 |
+
|
56 |
/**
|
57 |
* Initilize entire machine
|
58 |
*/
|
60 |
if ( $this->getPopulateOption( 'disable_assets_manager', false ) ) {
|
61 |
return;
|
62 |
}
|
63 |
+
|
64 |
$on_frontend = $this->getPopulateOption( 'disable_assets_manager_on_front' );
|
65 |
$on_backend = $this->getPopulateOption( 'disable_assets_manager_on_backend', true );
|
66 |
$is_panel = $this->getPopulateOption( 'disable_assets_manager_panel' );
|
67 |
+
|
68 |
if ( ( ! is_admin() && ! $on_frontend ) || ( is_admin() && ! $on_backend ) ) {
|
69 |
+
add_filter( 'script_loader_src', [ $this, 'unloadAssets' ], 10, 2 );
|
70 |
+
add_filter( 'style_loader_src', [ $this, 'unloadAssets' ], 10, 2 );
|
71 |
}
|
72 |
+
|
73 |
if ( ! $is_panel && ( ( is_admin() && ! $on_backend ) || ( ! is_admin() && ! $on_frontend ) ) ) {
|
74 |
if ( ! is_admin() ) {
|
75 |
+
add_action( 'wp_enqueue_scripts', [ $this, 'appendAsset' ], - 100001 );
|
76 |
+
add_action( 'wp_footer', [ $this, 'assetsManager' ], 100001 );
|
77 |
} else {
|
78 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'appendAsset' ], - 100001 );
|
79 |
+
add_action( 'admin_footer', [ $this, 'assetsManager' ], 100001 );
|
80 |
}
|
81 |
}
|
82 |
+
|
83 |
if ( ! is_admin() && ! $on_frontend ) {
|
84 |
+
add_action( 'wp_head', [ $this, 'collectAssets' ], 10000 );
|
85 |
+
add_action( 'wp_footer', [ $this, 'collectAssets' ], 10000 );
|
86 |
}
|
87 |
+
|
88 |
if ( is_admin() && ! $on_backend ) {
|
89 |
+
add_action( 'admin_head', [ $this, 'collectAssets' ], 10000 );
|
90 |
+
add_action( 'admin_footer', [ $this, 'collectAssets' ], 10000 );
|
91 |
}
|
92 |
+
|
93 |
if ( ! $is_panel && ( ( is_admin() && ! $on_backend ) || ( ! is_admin() && ! $on_frontend ) ) ) {
|
94 |
if ( defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) ) {
|
95 |
+
add_action( 'wbcr/clearfy/adminbar_menu_items', [ $this, 'clearfyAdminBarMenu' ] );
|
96 |
} else {
|
97 |
+
add_action( 'admin_bar_menu', [ $this, 'assetsManagerAdminBar' ], 1000 );
|
98 |
}
|
99 |
}
|
100 |
+
|
101 |
if ( ! is_admin() && ! $on_frontend ) {
|
102 |
+
add_action( 'init', [ $this, 'formSave' ] );
|
103 |
}
|
104 |
+
|
105 |
if ( is_admin() && ! $on_backend ) {
|
106 |
+
add_action( 'admin_init', [ $this, 'formSave' ] );
|
107 |
}
|
108 |
+
|
109 |
+
add_action( 'plugins_loaded', [ $this, 'pluginsLoaded' ] );
|
110 |
+
add_action( 'wbcr_gnz_form_save', [ $this, 'actionFormSave' ] );
|
111 |
+
|
112 |
+
add_filter( 'wbcr_gnz_unset_disabled', [ $this, 'unsetDisabled' ], 10, 2 );
|
113 |
+
add_filter( 'wbcr_gnz_get_additional_head_columns', [ $this, 'getAdditionalHeadColumns' ] );
|
114 |
+
add_filter( 'wbcr_gnz_get_additional_controls_columns', [ $this, 'getAdditionalControlsColumns' ], 10, 4 );
|
115 |
+
|
116 |
+
add_filter( 'autoptimize_filter_js_exclude', [ $this, 'aoptFilterJsExclude' ], 10, 2 );
|
117 |
+
add_filter( 'autoptimize_filter_css_exclude', [ $this, 'aoptFilterCssExclude' ], 10, 2 );
|
118 |
+
add_filter( 'wmac_filter_js_exclude', [ $this, 'wmacFilterJsExclude' ], 10, 2 );
|
119 |
+
add_filter( 'wmac_filter_css_exclude', [ $this, 'wmacFilterCssExclude' ], 10, 2 );
|
120 |
+
add_filter( 'wmac_filter_js_minify_excluded', [ $this, 'wmacFilterJsMinifyExclude' ], 10, 2 );
|
121 |
+
add_filter( 'wmac_filter_css_minify_excluded', [ $this, 'wmacFilterCssMinifyExclude' ], 10, 2 );
|
122 |
}
|
123 |
+
|
124 |
function clearfyAdminBarMenu( $menu_items ) {
|
125 |
+
$current_url = add_query_arg( [ 'wbcr_assets_manager' => 1 ] );
|
126 |
+
|
127 |
+
$menu_items['assetsManager'] = [
|
128 |
'title' => '<span class="dashicons dashicons-list-view"></span> ' . __( 'Assets Manager', 'gonzales' ),
|
129 |
'href' => $current_url
|
130 |
+
];
|
131 |
+
|
132 |
return $menu_items;
|
133 |
}
|
134 |
+
|
135 |
/**
|
136 |
* @param WP_Admin_Bar $wp_admin_bar
|
137 |
*/
|
139 |
if ( ! $this->isUserCan() ) {
|
140 |
return;
|
141 |
}
|
142 |
+
|
143 |
+
$current_url = add_query_arg( [ 'wbcr_assets_manager' => 1 ] );
|
144 |
+
|
145 |
+
$args = [
|
146 |
'id' => 'assetsManager',
|
147 |
'title' => __( 'Assets Manager', 'gonzales' ),
|
148 |
'href' => $current_url
|
149 |
+
];
|
150 |
$wp_admin_bar->add_node( $args );
|
151 |
}
|
152 |
+
|
153 |
/**
|
154 |
* Action plugins loaded
|
155 |
*/
|
156 |
public function pluginsLoaded() {
|
157 |
if ( ! is_admin() ) {
|
158 |
+
$this->sided_plugins = [
|
159 |
'aopt' => 'autoptimize/autoptimize.php',
|
160 |
'wmac' => 'minify-and-combine/minify-and-combine.php'
|
161 |
+
];
|
162 |
}
|
163 |
+
|
164 |
if ( class_exists( 'WCL_Plugin' ) && ( WCL_Plugin::app()->getPopulateOption( 'remove_js_version', false ) || WCL_Plugin::app()->getPopulateOption( 'remove_css_version', false ) ) ) {
|
165 |
$this->sided_plugins['wclp'] = 'clearfy/clearfy.php';
|
166 |
}
|
167 |
+
|
168 |
|
169 |
+
|
|
|
170 |
$this->sided_plugins = apply_filters( 'wbcr_gnz_sided_plugins', $this->sided_plugins );
|
171 |
}
|
172 |
+
|
173 |
function assetsManager() {
|
174 |
if ( ! $this->isUserCan() || ! isset( $_GET['wbcr_assets_manager'] ) ) {
|
175 |
return;
|
176 |
}
|
177 |
+
|
178 |
$current_url = esc_url( $this->getCurrentUrl() );
|
179 |
+
|
180 |
// todo: вынести в метод
|
181 |
if ( is_multisite() && is_network_admin() ) {
|
182 |
+
$options = $this->getNetworkOption( 'assets_manager_options', [] );
|
183 |
} else {
|
184 |
+
$options = $this->getOption( 'assets_manager_options', [] );
|
185 |
}
|
186 |
+
|
187 |
echo '<div id="WBCR" class="wbcr-gnz-wrapper"';
|
188 |
if ( isset( $_GET['wbcr_assets_manager'] ) ) {
|
189 |
echo 'style="display: block;"';
|
190 |
}
|
191 |
echo '>';
|
192 |
+
|
193 |
//Form
|
194 |
echo '<form method="POST">';
|
195 |
wp_nonce_field( 'wbcr_assets_manager_nonce', 'wbcr_assets_manager_save' );
|
196 |
+
|
197 |
//Header
|
198 |
echo '<header class="wbcr-gnz-panel">';
|
199 |
echo '<div class="wbcr-gnz-panel__left">';
|
217 |
echo '<button class="wbcr-gnz-panel__close wbcr-close-button" type="button" aria-label="' . __( 'Close', 'gonzales' ) . '" data-href="' . remove_query_arg( 'wbcr_assets_manager' ) . '"></button>';
|
218 |
echo '</div>';
|
219 |
echo '</header>';
|
220 |
+
|
221 |
// Main content
|
222 |
echo '<main class="wbcr-gnz-content">';
|
223 |
+
|
224 |
uksort( $this->collection, function ( $a, $b ) {
|
225 |
if ( 'plugins' == $a ) {
|
226 |
return - 1;
|
227 |
}
|
228 |
+
|
229 |
if ( 'plugins' == $b ) {
|
230 |
return 1;
|
231 |
}
|
232 |
+
|
233 |
return strcasecmp( $a, $b );
|
234 |
} );
|
235 |
+
|
236 |
// Tabs
|
237 |
echo '<ul class="wbcr-gnz-tabs">';
|
238 |
foreach ( $this->collection as $resource_type => $resources ) {
|
241 |
echo '</li>';
|
242 |
}
|
243 |
echo '</ul>';
|
244 |
+
|
245 |
// Info
|
246 |
echo '<div class="wbcr-gnz-info"><div class="wbcr-gnz-info__warning">';
|
247 |
echo '<p><b>' . __( 'Important! Each page of your website has different sets of scripts and styles files.', 'gonzales' ) . '</b></p>';
|
248 |
echo '<p>' . __( 'Use this feature to disable unwanted scripts and styles by setting up the logic for different types of pages. We recommend working in "Safe mode" because disabling any necessary system script file can corrupt the website. All changes done in Safe mode are available for administrator only. This way only you, as the administrator, can see the result of optimization. To enable the changes for other users, uncheck Safe mode.', 'gonzales' ) . '</p>';
|
249 |
echo '<p>' . sprintf( __( 'For more details and user guides, check the plugin’s <a href="%s" target="_blank" rel="noreferrer noopener">documentation</a>.', 'gonzales' ), WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl( WGZ_Plugin::app()->getPluginName(), 'docs' ) ) . '</p>';
|
250 |
echo '</div>';
|
251 |
+
|
252 |
$premium_button = '<a class="wbcr-gnz-button__pro" href="' . WbcrFactoryClearfy206_Helpers::getWebcrafticSitePageUrl( WGZ_Plugin::app()->getPluginName(), 'assets-manager' ) . '" target="_blank" rel="noreferrer noopener">' . __( 'Upgrade to Premium', 'gonzales' ) . '</a>';
|
253 |
+
|
254 |
$upgrade_to_premium_info = '<div class="wbcr-gnz-info__go-to-premium"><ul>';
|
255 |
$upgrade_to_premium_info .= '<h3><span>' . __( 'MORE IN CLEARFY BUSINESS', 'gonzales' ) . '</span>' . $premium_button . '</h3><ul>';
|
256 |
$upgrade_to_premium_info .= '<li>' . __( 'Disable plugins (groups of scripts)', 'gonzales' ) . '</li>';
|
262 |
$upgrade_to_premium_info .= '</div>';
|
263 |
echo apply_filters( 'wbcr_gnz_upgrade_to_premium_info', $upgrade_to_premium_info );
|
264 |
echo '</div>';
|
265 |
+
|
266 |
global $plugin_state;
|
267 |
+
|
268 |
foreach ( $this->collection as $resource_type => $resources ) {
|
269 |
// Tabs content
|
270 |
echo '<div class="wbcr-gnz-tabs-content">';
|
275 |
echo '<col class="wbcr-gnz-table__script"/>';
|
276 |
echo '<col class="wbcr-gnz-table__state"/>';
|
277 |
echo '<col class="wbcr-gnz-table__turn-on"/>';
|
278 |
+
|
279 |
foreach ( $resources as $resource_name => $types ) {
|
280 |
$plugin_state = false;
|
281 |
+
|
282 |
if ( 'plugins' == $resource_type && ! empty( $resource_name ) ) {
|
283 |
$plugin_data = $this->getPluginData( $resource_name );
|
284 |
+
|
285 |
echo '<tbody>';
|
286 |
+
|
287 |
if ( ! empty( $plugin_data ) ) {
|
288 |
$is_disabled = $this->getIsDisabled( $options, $resource_type, $resource_name );
|
289 |
$disabled = $this->getDisabled( $is_disabled, $options, $resource_type, $resource_name );
|
290 |
+
|
291 |
$is_enabled = $this->getIsEnabled( $options, $resource_type, $resource_name );
|
292 |
$enabled = $this->getEnabled( $is_enabled, $options, $resource_type, $resource_name );
|
293 |
+
|
294 |
$plugin_state = $this->getState( $is_disabled, $disabled, $current_url );
|
295 |
$plugin_state = apply_filters( 'wbcr_gnz_get_plugin_state', false, $plugin_state );
|
296 |
+
|
297 |
echo '<tr class="wbcr-gnz-table__alternate">';
|
298 |
echo '<th style="width:5%">' . __( 'Loaded', 'gonzales' ) . '</th>';
|
299 |
echo '<th colspan="2">' . __( 'Plugin', 'gonzales' ) . '</th>';
|
300 |
+
|
301 |
echo apply_filters( 'wbcr_gnz_get_additional_head_columns', '' );
|
302 |
+
|
303 |
echo '<th class="wbcr-gnz-table__column_switch"><b>' . __( 'Load resource?', 'gonzales' ) . '</b></th>';
|
304 |
echo '<th class="wbcr-gnz-table__column_condition">' . __( 'Conditions', 'gonzales' ) . '</th>';
|
305 |
echo '</tr>';
|
312 |
echo '<div class="wbcr-gnz-table__item-author"><strong>' . __( 'Author', 'gonzales' ) . ':</strong> ' . $plugin_data['Author'] . '</div>';
|
313 |
echo '<div class="wbcr-gnz-table__item-version"><strong>' . __( 'Version', 'gonzales' ) . ':</strong> ' . $plugin_data['Version'] . '</div>';
|
314 |
echo '</td>';
|
315 |
+
|
316 |
echo apply_filters( 'wbcr_gnz_get_additional_controls_columns', '', $resource_type, $resource_name, $resource_name );
|
317 |
+
|
318 |
// State Controls
|
319 |
$id = '[' . $resource_type . '][' . $resource_name . ']';
|
320 |
echo $this->getStateControrlHTML( $id, $plugin_state, $is_disabled, $is_enabled, $resource_type, $resource_name, $disabled, $enabled, $current_url );
|
321 |
echo '</tr>';
|
322 |
}
|
323 |
}
|
324 |
+
|
325 |
echo '<tr class="wbcr-gnz-table__alternate">';
|
326 |
echo '<th style="width:5%">' . __( 'Loaded', 'gonzales' ) . '</th>';
|
327 |
echo '<th style="width:5%">' . __( 'Size', 'gonzales' ) . '</th>';
|
328 |
echo '<th class="wgz-th">' . __( 'Resource', 'gonzales' ) . '</th>';
|
329 |
+
|
330 |
echo apply_filters( 'wbcr_gnz_get_additional_head_columns', '' );
|
331 |
+
|
332 |
echo '<th class="wbcr-gnz-table__column_switch"><b>' . __( 'Load resource?', 'gonzales' ) . '</b></th>';
|
333 |
echo '<th class="wbcr-gnz-table__column_condition">' . __( 'Conditions', 'gonzales' ) . '</th>';
|
334 |
echo '</tr>';
|
335 |
+
|
336 |
foreach ( $types as $type_name => $rows ) {
|
337 |
+
|
338 |
if ( ! empty( $rows ) ) {
|
339 |
foreach ( $rows as $handle => $row ) {
|
340 |
$is_disabled = $this->getIsDisabled( $options, $type_name, $handle );
|
341 |
$disabled = $this->getDisabled( $is_disabled, $options, $type_name, $handle );
|
342 |
+
|
343 |
$is_enabled = $this->getIsEnabled( $options, $type_name, $handle );
|
344 |
$enabled = $this->getEnabled( $is_enabled, $options, $type_name, $handle );
|
345 |
+
|
346 |
/**
|
347 |
* Find dependency
|
348 |
*/
|
349 |
+
$deps = [];
|
350 |
foreach ( $rows as $dep_key => $dep_val ) {
|
351 |
if ( in_array( $handle, $dep_val['deps'] ) /*&& $is_disabled*/ ) {
|
352 |
$deps[] = '<a href="#' . $type_name . '-' . $dep_key . '">' . $dep_key . '</a>';
|
353 |
}
|
354 |
}
|
355 |
+
|
356 |
$comment = ( ! empty( $deps ) ? '<span class="wbcr-use-by-comment">' . __( 'In use by', 'gonzales' ) . ' ' . implode( ', ', $deps ) . '</span>' : '' );
|
357 |
$requires = '';
|
358 |
if ( ! empty( $row['deps'] ) ) {
|
359 |
+
$rdeps = [];
|
360 |
foreach ( $row['deps'] as $dep_val ) {
|
361 |
$rdeps[] = '<a href="#' . $type_name . '-' . $dep_val . '">' . $dep_val . '</a>';
|
362 |
}
|
363 |
$requires = ( $comment ? '<br>' : '' ) . '<span class="wbcr-use-by-comment">' . __( 'Requires', 'gonzales' ) . ' ' . implode( ', ', $rdeps ) . '</span>';
|
364 |
}
|
365 |
+
|
366 |
echo '<tr>';
|
367 |
+
|
368 |
// Loaded
|
369 |
$state = $this->getState( $is_disabled, $disabled, $current_url );
|
370 |
$display_state = $plugin_state === 1 ? 1 : $state;
|
374 |
echo ( 'plugins' == $resource_type ? ' wbcr-state-' . $resource_name : '' ) . '">';
|
375 |
echo '</div>';
|
376 |
echo '</td>';
|
377 |
+
|
378 |
// Size
|
379 |
echo '<td>';
|
380 |
echo '<div class="wbcr-gnz-table__size-value">' . $row['size'] . ' <b>KB</b></div>';
|
381 |
echo '</td>';
|
382 |
+
|
383 |
// Handle + Path + In use
|
384 |
echo '<td class="wgz-td">';
|
385 |
echo '<div class="wbcr-gnz-table__script-name"><b class="wbcr-wgz-resource-type-' . $type_name . '">' . $type_name . '</b>[' . $handle . ']</div>';
|
393 |
echo '</div>';
|
394 |
echo '<div>' . $comment . $requires . '</div>';
|
395 |
echo '</td>';
|
396 |
+
|
397 |
// Controls for other plugins
|
398 |
echo apply_filters( 'wbcr_gnz_get_additional_controls_columns', '', $type_name, $row['url_full'], $resource_name );
|
399 |
+
|
400 |
// State Controls
|
401 |
$id = '[' . $type_name . '][' . $handle . ']';
|
402 |
echo $this->getStateControrlHTML( $id, $state, $is_disabled, $is_enabled, $type_name, $handle, $disabled, $enabled, $current_url );
|
403 |
+
|
404 |
echo "<input type='hidden' class='wbcr-info-data' data-type='{$type_name}' data-off='{$display_state}' value='{$row['size']}'>";
|
405 |
echo '</tr>';
|
406 |
+
|
407 |
echo apply_filters( 'wbcr_gnz_after_scripts_table_row', '', $resource_type, $resource_name, $type_name, $handle );
|
408 |
}
|
409 |
}
|
410 |
}
|
411 |
+
|
412 |
if ( 'plugins' == $resource_type && ! empty( $resource_name ) ) {
|
413 |
echo '</tbody>';
|
414 |
}
|
415 |
}
|
416 |
+
|
417 |
echo '</table>';
|
418 |
echo '</div>';
|
419 |
echo '</div>';
|
422 |
echo '</form> <!-- /endform -->';
|
423 |
echo '</div> <!-- /div2 -->';
|
424 |
}
|
425 |
+
|
426 |
/**
|
427 |
* Get is disabled
|
428 |
*
|
435 |
public function getIsDisabled( $options, $type_name, $handle ) {
|
436 |
return isset( $options['disabled'] ) && isset( $options['disabled'][ $type_name ] ) && isset( $options['disabled'][ $type_name ][ $handle ] );
|
437 |
}
|
438 |
+
|
439 |
/**
|
440 |
* Get disabled
|
441 |
*
|
447 |
* @return array
|
448 |
*/
|
449 |
public function getDisabled( $is_disabled, $options, $type_name, $handle ) {
|
450 |
+
$disabled = [];
|
451 |
+
|
452 |
if ( $is_disabled ) {
|
453 |
$disabled = &$options['disabled'][ $type_name ][ $handle ];
|
454 |
if ( ! isset( $disabled['current'] ) ) {
|
455 |
+
$disabled['current'] = [];
|
456 |
}
|
457 |
if ( ! isset( $disabled['everywhere'] ) ) {
|
458 |
+
$disabled['everywhere'] = [];
|
459 |
}
|
460 |
+
|
461 |
$disabled = apply_filters( 'wbcr_gnz_get_disabled', $disabled );
|
462 |
}
|
463 |
+
|
464 |
return $disabled;
|
465 |
}
|
466 |
+
|
467 |
/**
|
468 |
* Get is enabled
|
469 |
*
|
476 |
public function getIsEnabled( $options, $type_name, $handle ) {
|
477 |
return isset( $options['enabled'] ) && isset( $options['enabled'][ $type_name ] ) && isset( $options['enabled'][ $type_name ][ $handle ] );
|
478 |
}
|
479 |
+
|
480 |
/**
|
481 |
* Get enabled
|
482 |
*
|
488 |
* @return array
|
489 |
*/
|
490 |
public function getEnabled( $is_enabled, $options, $type_name, $handle ) {
|
491 |
+
$enabled = [];
|
492 |
+
|
493 |
if ( $is_enabled ) {
|
494 |
$enabled = &$options['enabled'][ $type_name ][ $handle ];
|
495 |
+
|
496 |
if ( ! isset( $enabled['current'] ) ) {
|
497 |
+
$enabled['current'] = [];
|
498 |
}
|
499 |
if ( ! isset( $enabled['everywhere'] ) ) {
|
500 |
+
$enabled['everywhere'] = [];
|
501 |
}
|
502 |
+
|
503 |
$enabled = apply_filters( 'wbcr_gnz_get_enabled', $enabled );
|
504 |
}
|
505 |
+
|
506 |
return $enabled;
|
507 |
}
|
508 |
+
|
509 |
/**
|
510 |
* Get State
|
511 |
*
|
520 |
if ( $is_disabled && ( $disabled['everywhere'] == 1 || in_array( $current_url, $disabled['current'] ) || apply_filters( 'wbcr_gnz_check_state_disabled', false, $disabled ) ) ) {
|
521 |
$state = 1;
|
522 |
}
|
523 |
+
|
524 |
return $state;
|
525 |
}
|
526 |
+
|
527 |
/**
|
528 |
* Get state controrl HTML
|
529 |
*
|
550 |
$html .= '<span class="wbcr-gnz-switch__slider"></span>';
|
551 |
$html .= '</label>';
|
552 |
$html .= '</td>';
|
553 |
+
|
554 |
// Enable
|
555 |
$class_name = 'wbcr-assets-manager-enable';
|
556 |
if ( 'plugins' == $type_name ) {
|
579 |
$options .= '<option value="regex"' . selected( $is_disabled && ! empty( $disabled['regex'] ), true, false ) . ' class="wbcr-gnz-table__select-pro">' . __( 'Regular expression (PRO)', 'gonzales' ) . '</option>';
|
580 |
$html .= apply_filters( 'wbcr_gnz_select_options', $options, $is_disabled, $disabled );
|
581 |
$html .= '</select>';
|
582 |
+
|
583 |
// Everywhere
|
584 |
$html .= "<span class='wbcr-assets-manager everywhere'";
|
585 |
if ( ! $is_disabled || empty( $disabled['everywhere'] ) ) {
|
588 |
$html .= ">";
|
589 |
$html .= '<div class="wbcr-gnz-table__label">' . __( 'Exclude', 'gonzales' ) . ': <i class="wbcr-gnz-help-hint wbcr-gnz-tooltip wbcr-gnz-tooltip-bottom" data-tooltip="' . __( 'You can disable this resource for all pages, except sections and page types listed below. Specify sections and page types with the enabled resource.', 'gonzales' ) . '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""></i></div>';
|
590 |
$html .= '<ul class="wbcr-gnz-table__options">';
|
591 |
+
|
592 |
$html .= '<li class="wbcr-gnz-table__options-item">';
|
593 |
$html .= "<input type='hidden' name='enabled{$id}[current]' value='' />";
|
594 |
$html .= '<label class="wbcr-gnz-table__checkbox">';
|
600 |
$html .= '<span class="wbcr-gnz-table__checkbox-text">' . __( 'Current URL', 'gonzales' ) . '</span>';
|
601 |
$html .= '</label>';
|
602 |
$html .= '</li>';
|
603 |
+
|
604 |
+
$post_types = get_post_types( [ 'public' => true ], 'objects', 'and' );
|
605 |
if ( ! empty( $post_types ) ) {
|
606 |
$html .= "<input type='hidden' name='enabled{$id}[post_types]' value='' />";
|
607 |
foreach ( $post_types as $key => $value ) {
|
619 |
$html .= '</li>';
|
620 |
}
|
621 |
}
|
622 |
+
|
623 |
+
$taxonomies = get_taxonomies( [ 'public' => true ], 'objects', 'and' );
|
624 |
+
|
625 |
if ( ! empty( $taxonomies ) ) {
|
626 |
unset( $taxonomies['category'] );
|
627 |
$html .= "<input type='hidden' name='enabled{$id}[taxonomies]' value='' />";
|
640 |
$html .= '</li>';
|
641 |
}
|
642 |
}
|
643 |
+
|
644 |
$categories = get_categories();
|
645 |
+
|
646 |
if ( ! empty( $categories ) ) {
|
647 |
$html .= "<input type='hidden' name='enabled{$id}[categories]' value='' />";
|
648 |
foreach ( $categories as $key => $cat ) {
|
660 |
$html .= '</li>';
|
661 |
}
|
662 |
}
|
663 |
+
|
664 |
$html .= '</ul>';
|
665 |
$html .= '</span>';
|
666 |
+
|
667 |
// Custom URL
|
668 |
$control_html = '<div class="wbcr-gnz-table__field wbcr-assets-manager custom"';
|
669 |
if ( ! $is_disabled || empty( $disabled['custom'] ) ) {
|
687 |
$control_html .= '<textarea class="wbcr-gnz-table__textarea" rows="3" name="disabled' . $id . '[regex]" placeholder="^rockstar-[0-9]{2,5}" disabled="disabled"></textarea>';
|
688 |
$control_html .= "</div>";
|
689 |
$html .= apply_filters( 'wbcr_gnz_control_html', $control_html, $id, $is_disabled, $disabled );
|
690 |
+
|
691 |
$html .= '</span>';
|
692 |
+
|
693 |
if ( isset( $disabled['current'] ) && ! empty( $disabled['current'] ) ) {
|
694 |
$custom_urls = "";
|
695 |
+
|
696 |
foreach ( $disabled['current'] as $item_url ) {
|
697 |
if ( $current_url != $item_url ) {
|
698 |
$full_url = site_url() . $item_url;
|
699 |
$custom_urls .= "<span><a href='" . $full_url . "'>" . $full_url . "</a></span>";
|
700 |
}
|
701 |
}
|
702 |
+
|
703 |
if ( ! empty( $custom_urls ) ) {
|
704 |
$html .= '<div class="wbcr-gnz-table__also">';
|
705 |
$html .= '<div class="wbcr-gnz-table__label">' . __( 'Also disabled for pages', 'gonzales' ) . ':</div>';
|
708 |
}
|
709 |
}
|
710 |
$html .= '</td>';
|
711 |
+
|
712 |
return $html;
|
713 |
}
|
714 |
+
|
715 |
public function formSave() {
|
716 |
if ( isset( $_GET['wbcr_assets_manager'] ) && isset( $_POST['wbcr_assets_manager_save'] ) ) {
|
717 |
+
|
718 |
if ( ! $this->isUserCan() || ! wp_verify_nonce( filter_input( INPUT_POST, 'wbcr_assets_manager_save' ), 'wbcr_assets_manager_nonce' ) ) {
|
719 |
wp_die( __( 'You don\'t have enough capability to edit this information.', 'gonzales' ), 403 );
|
720 |
+
|
721 |
return;
|
722 |
}
|
723 |
+
|
724 |
// todo: вынести в метод
|
725 |
if ( is_multisite() && is_network_admin() ) {
|
726 |
+
$options = $this->getNetworkOption( 'assets_manager_options', [] );
|
727 |
} else {
|
728 |
+
$options = $this->getOption( 'assets_manager_options', [] );
|
729 |
}
|
730 |
+
|
731 |
$current_url = esc_url( $this->getCurrentUrl() );
|
732 |
+
|
733 |
if ( isset( $_POST['disabled'] ) && ! empty( $_POST['disabled'] ) ) {
|
734 |
foreach ( $_POST['disabled'] as $type => $assets ) {
|
735 |
if ( ! empty( $assets ) ) {
|
736 |
foreach ( $assets as $handle => $where ) {
|
737 |
$handle = sanitize_text_field( $handle );
|
738 |
$where = sanitize_text_field( $where['state'] );
|
739 |
+
|
740 |
if ( ! isset( $options['disabled'][ $type ][ $handle ] ) ) {
|
741 |
+
$options = is_array( $options ) ? $options : [];
|
742 |
+
$options['disabled'][ $type ][ $handle ] = [];
|
743 |
}
|
744 |
$disabled = &$options['disabled'][ $type ][ $handle ];
|
745 |
+
|
746 |
if ( ! empty( $where ) && 'disable' == $where ) {
|
747 |
$action = isset( $_POST['wgz_action'][ $type ][ $handle ] ) ? $_POST['wgz_action'][ $type ][ $handle ] : '';
|
748 |
+
|
749 |
if ( "everywhere" == $action ) {
|
750 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, $action );
|
751 |
+
|
752 |
$disabled['everywhere'] = 1;
|
753 |
} else if ( "current" == $action ) {
|
754 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, $action );
|
755 |
+
|
756 |
if ( ! isset( $disabled['current'] ) || ! is_array( $disabled['current'] ) ) {
|
757 |
+
$disabled['current'] = [];
|
758 |
}
|
759 |
+
|
760 |
if ( ! in_array( $current_url, $disabled['current'] ) ) {
|
761 |
array_push( $disabled['current'], $current_url );
|
762 |
}
|
766 |
}
|
767 |
} else {
|
768 |
$disabled = apply_filters( 'wbcr_gnz_unset_disabled', $disabled, 'current' );
|
769 |
+
|
770 |
if ( isset( $disabled['current'] ) ) {
|
771 |
$current_key = array_search( $current_url, $disabled['current'] );
|
772 |
+
|
773 |
if ( ! empty( $current_key ) || $current_key === 0 ) {
|
774 |
unset( $disabled['current'][ $current_key ] );
|
775 |
if ( empty( $disabled['current'] ) ) {
|
778 |
}
|
779 |
}
|
780 |
}
|
781 |
+
|
782 |
if ( empty( $disabled ) ) {
|
783 |
unset( $options['disabled'][ $type ][ $handle ] );
|
784 |
if ( empty( $options['disabled'][ $type ] ) ) {
|
792 |
}
|
793 |
}
|
794 |
}
|
795 |
+
|
796 |
if ( isset( $_POST['enabled'] ) && ! empty( $_POST['enabled'] ) ) {
|
797 |
foreach ( $_POST['enabled'] as $type => $assets ) {
|
798 |
if ( ! empty( $assets ) ) {
|
799 |
foreach ( $assets as $handle => $where ) {
|
800 |
+
|
801 |
if ( ! isset( $options['enabled'][ $type ][ $handle ] ) ) {
|
802 |
+
$options = is_array( $options ) ? $options : [];
|
803 |
+
$options['enabled'][ $type ][ $handle ] = [];
|
804 |
}
|
805 |
$enabled = &$options['enabled'][ $type ][ $handle ];
|
806 |
+
|
807 |
$action = isset( $_POST['wgz_action'][ $type ][ $handle ] ) ? $_POST['wgz_action'][ $type ][ $handle ] : '';
|
808 |
+
|
809 |
if ( "everywhere" == $action && ( ! empty( $where['current'] ) || $where['current'] === "0" ) ) {
|
810 |
if ( ! isset( $enabled['current'] ) || ! is_array( $enabled['current'] ) ) {
|
811 |
+
$enabled['current'] = [];
|
812 |
}
|
813 |
if ( ! in_array( $where['current'], $enabled['current'] ) ) {
|
814 |
array_push( $enabled['current'], $where['current'] );
|
824 |
}
|
825 |
}
|
826 |
}
|
827 |
+
|
828 |
if ( "everywhere" == $action && ! empty( $where['post_types'] ) ) {
|
829 |
+
$enabled['post_types'] = [];
|
830 |
foreach ( $where['post_types'] as $key => $post_type ) {
|
831 |
if ( isset( $enabled['post_types'] ) ) {
|
832 |
if ( ! in_array( $post_type, $enabled['post_types'] ) ) {
|
837 |
} else {
|
838 |
unset( $enabled['post_types'] );
|
839 |
}
|
840 |
+
|
841 |
if ( "everywhere" == $action && ! empty( $where['taxonomies'] ) ) {
|
842 |
+
$enabled['taxonomies'] = [];
|
843 |
foreach ( $where['taxonomies'] as $key => $taxonomy ) {
|
844 |
if ( isset( $enabled['taxonomies'] ) ) {
|
845 |
if ( ! in_array( $taxonomy, $enabled['taxonomies'] ) ) {
|
850 |
} else {
|
851 |
unset( $enabled['taxonomies'] );
|
852 |
}
|
853 |
+
|
854 |
if ( "everywhere" == $action && ! empty( $where['categories'] ) ) {
|
855 |
+
$enabled['categories'] = [];
|
856 |
foreach ( $where['categories'] as $key => $category ) {
|
857 |
if ( isset( $enabled['categories'] ) ) {
|
858 |
if ( ! in_array( $category, $enabled['categories'] ) ) {
|
863 |
} else {
|
864 |
unset( $enabled['categories'] );
|
865 |
}
|
866 |
+
|
867 |
if ( empty( $enabled ) ) {
|
868 |
unset( $options['enabled'][ $type ][ $handle ] );
|
869 |
if ( empty( $options['enabled'][ $type ] ) ) {
|
877 |
}
|
878 |
}
|
879 |
}
|
880 |
+
|
881 |
do_action( 'wbcr_gnz_form_save' );
|
882 |
+
|
883 |
if ( is_multisite() && is_network_admin() ) {
|
884 |
$this->updateNetworkOption( 'assets_manager_options', $options );
|
885 |
} else {
|
886 |
$this->updateOption( 'assets_manager_options', $options );
|
887 |
}
|
888 |
+
|
889 |
WbcrFactoryClearfy206_Helpers::flushPageCache();
|
890 |
}
|
891 |
}
|
892 |
+
|
893 |
/**
|
894 |
* Get disabled from options
|
895 |
*
|
901 |
private function getDisabledFromOptions( $type, $handle ) {
|
902 |
// todo: вынести в метод
|
903 |
if ( is_multisite() && is_network_admin() ) {
|
904 |
+
$options = $this->getNetworkOption( 'assets_manager_options', [] );
|
905 |
} else {
|
906 |
+
$options = $this->getOption( 'assets_manager_options', [] );
|
907 |
}
|
908 |
+
|
909 |
$results = apply_filters( 'wbcr_gnz_get_disabled_from_options', false, $options, $type, $handle );
|
910 |
if ( false !== $results ) {
|
911 |
return $results;
|
912 |
}
|
913 |
+
|
914 |
if ( isset( $options['disabled'] ) && isset( $options['disabled'][ $type ] ) && isset( $options['disabled'][ $type ][ $handle ] ) ) {
|
915 |
return $options['disabled'][ $type ][ $handle ];
|
916 |
}
|
917 |
+
|
918 |
return null;
|
919 |
}
|
920 |
+
|
921 |
/**
|
922 |
* Get enabled from options
|
923 |
*
|
929 |
private function getEnabledFromOptions( $type, $handle ) {
|
930 |
// todo: вынести в метод
|
931 |
if ( is_multisite() && is_network_admin() ) {
|
932 |
+
$options = $this->getNetworkOption( 'assets_manager_options', [] );
|
933 |
} else {
|
934 |
+
$options = $this->getOption( 'assets_manager_options', [] );
|
935 |
}
|
936 |
+
|
937 |
$results = apply_filters( 'wbcr_gnz_get_enabled_from_options', false, $options, $type, $handle );
|
938 |
if ( false !== $results ) {
|
939 |
return $results;
|
940 |
}
|
941 |
+
|
942 |
if ( isset( $options['enabled'] ) && isset( $options['enabled'][ $type ] ) && isset( $options['enabled'][ $type ][ $handle ] ) ) {
|
943 |
return $options['enabled'][ $type ][ $handle ];
|
944 |
}
|
945 |
+
|
946 |
return null;
|
947 |
}
|
948 |
+
|
949 |
function unloadAssets( $src, $handle ) {
|
950 |
if ( isset( $_GET['wbcr_assets_manager'] ) ) {
|
951 |
return $src;
|
952 |
}
|
953 |
+
|
954 |
if ( apply_filters( 'wbcr_gnz_check_unload_assets', false ) ) {
|
955 |
return $src;
|
956 |
}
|
957 |
+
|
958 |
$type = ( current_filter() == 'script_loader_src' ) ? 'js' : 'css';
|
959 |
+
|
960 |
$current_url = esc_url( $this->getCurrentUrl() );
|
961 |
+
|
962 |
$disabled = $this->getDisabledFromOptions( $type, $handle );
|
963 |
$enabled = $this->getEnabledFromOptions( $type, $handle );
|
964 |
+
|
965 |
if ( ( isset( $disabled['everywhere'] ) && $disabled['everywhere'] == 1 ) || ( isset( $disabled['current'] ) && is_array( $disabled['current'] ) && in_array( $current_url, $disabled['current'] ) ) || apply_filters( 'wbcr_gnz_check_disabled_is_set', false, $disabled, $current_url ) ) {
|
966 |
+
|
967 |
if ( isset( $enabled['current'] ) && is_array( $enabled['current'] ) && in_array( $current_url, $enabled['current'] ) ) {
|
968 |
return $src;
|
969 |
}
|
970 |
+
|
971 |
if ( apply_filters( 'wbcr_gnz_check_unload_disabled', false, $disabled, $current_url ) ) {
|
972 |
return $src;
|
973 |
}
|
974 |
+
|
975 |
if ( isset( $enabled['post_types'] ) && is_singular() && in_array( get_post_type(), $enabled['post_types'] ) ) {
|
976 |
return $src;
|
977 |
}
|
978 |
+
|
979 |
+
if ( isset( $enabled['taxonomies'] ) ) {
|
980 |
+
$query = get_queried_object();
|
981 |
+
|
982 |
+
if ( ! empty( $query ) && isset( $query->taxonomy ) && in_array( $query->taxonomy, $enabled['taxonomies'] ) ) {
|
983 |
+
return $src;
|
984 |
+
}
|
985 |
}
|
986 |
+
|
987 |
if ( isset( $enabled['categories'] ) && in_array( get_query_var( 'cat' ), $enabled['categories'] ) ) {
|
988 |
return $src;
|
989 |
}
|
990 |
+
|
991 |
return false;
|
992 |
}
|
993 |
+
|
994 |
return $src;
|
995 |
}
|
996 |
+
|
997 |
/**
|
998 |
* Get information regarding used assets
|
999 |
*
|
1003 |
if ( ! isset( $_GET['wbcr_assets_manager'] ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
1004 |
return false;
|
1005 |
}
|
1006 |
+
|
1007 |
+
$denied = [
|
1008 |
+
'js' => [ 'wbcr-assets-manager', 'admin-bar' ],
|
1009 |
+
'css' => [ 'wbcr-assets-manager', 'admin-bar', 'dashicons' ],
|
1010 |
+
];
|
1011 |
$denied = apply_filters( 'wbcr_gnz_denied_assets', $denied );
|
1012 |
+
|
1013 |
/**
|
1014 |
* Imitate full untouched list without dequeued assets
|
1015 |
* Appends part of original table. Safe approach.
|
1016 |
*/
|
1017 |
+
$data_assets = [
|
1018 |
'js' => wp_scripts(),
|
1019 |
'css' => wp_styles(),
|
1020 |
+
];
|
1021 |
+
|
1022 |
foreach ( $data_assets as $type => $data ) {
|
1023 |
//$resource = array();
|
1024 |
foreach ( $data->groups as $el => $val ) {
|
1028 |
if ( isset( $data->registered[ $el ]->src ) ) {
|
1029 |
$url = $this->prepareCorrectUrl( $data->registered[ $el ]->src );
|
1030 |
$url_short = str_replace( get_home_url(), '', $url );
|
1031 |
+
|
1032 |
if ( false !== strpos( $url, get_theme_root_uri() ) ) {
|
1033 |
$resource_type = 'theme';
|
1034 |
} else if ( false !== strpos( $url, plugins_url() ) ) {
|
1036 |
} else {
|
1037 |
$resource_type = 'misc';
|
1038 |
}
|
1039 |
+
|
1040 |
$resource_name = '';
|
1041 |
if ( 'plugins' == $resource_type ) {
|
1042 |
$clean_url = str_replace( WP_PLUGIN_URL . '/', '', $url );
|
1043 |
$url_parts = explode( '/', $clean_url );
|
1044 |
$resource_name = isset( $url_parts[0] ) ? $url_parts[0] : '';
|
1045 |
}
|
1046 |
+
|
1047 |
+
$this->collection[ $resource_type ][ $resource_name ][ $type ][ $el ] = [
|
1048 |
'url_full' => $url,
|
1049 |
'url_short' => $url_short,
|
1050 |
//'state' => $this->get_visibility($type, $el),
|
1051 |
'size' => $this->getAssetSize( $url ),
|
1052 |
'ver' => $data->registered[ $el ]->ver,
|
1053 |
+
'deps' => ( isset( $data->registered[ $el ]->deps ) ? $data->registered[ $el ]->deps : [] ),
|
1054 |
+
];
|
1055 |
}
|
1056 |
}
|
1057 |
//}
|
1058 |
}
|
1059 |
}
|
1060 |
}
|
1061 |
+
|
1062 |
return false;
|
1063 |
}
|
1064 |
+
|
1065 |
/**
|
1066 |
* Loads functionality that allows to enable/disable js/css without site reload
|
1067 |
*/
|
1068 |
public function appendAsset() {
|
1069 |
if ( $this->isUserCan() && isset( $_GET['wbcr_assets_manager'] ) ) {
|
1070 |
+
wp_enqueue_style( 'wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/css/assets-manager.css', [], $this->plugin->getPluginVersion() );
|
1071 |
+
wp_enqueue_script( 'wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/js/assets-manager.js', [ 'jquery' ], $this->plugin->getPluginVersion(), true );
|
1072 |
}
|
1073 |
}
|
1074 |
+
|
1075 |
/**
|
1076 |
* Exception for address starting from "//example.com" instead of
|
1077 |
* "http://example.com". WooCommerce likes such a format
|
1078 |
*
|
1079 |
+
* @param string $url Incorrect URL.
|
1080 |
*
|
1081 |
* @return string Correct URL.
|
1082 |
*/
|
1086 |
} else {
|
1087 |
$out = $url;
|
1088 |
}
|
1089 |
+
|
1090 |
return $out;
|
1091 |
}
|
1092 |
+
|
1093 |
/**
|
1094 |
* Get current URL
|
1095 |
*
|
1102 |
} else {
|
1103 |
$out = $url[0];
|
1104 |
}
|
1105 |
+
|
1106 |
return $out;
|
1107 |
}
|
1108 |
+
|
1109 |
/**
|
1110 |
* Checks how heavy is file
|
1111 |
*
|
1112 |
+
* @param string $src URL.
|
1113 |
*
|
1114 |
* @return int Size in KB.
|
1115 |
*/
|
1116 |
private function getAssetSize( $src ) {
|
1117 |
$weight = 0;
|
1118 |
+
|
1119 |
$home = get_theme_root() . '/../..';
|
1120 |
$src = explode( '?', $src );
|
1121 |
+
|
1122 |
if ( ! filter_var( $src[0], FILTER_VALIDATE_URL ) === false && strpos( $src[0], get_home_url() ) === false ) {
|
1123 |
return 0;
|
1124 |
}
|
1125 |
+
|
1126 |
$src_relative = $home . str_replace( get_home_url(), '', $this->prepareCorrectUrl( $src[0] ) );
|
1127 |
+
|
1128 |
if ( file_exists( $src_relative ) ) {
|
1129 |
$weight = round( filesize( $src_relative ) / 1024, 1 );
|
1130 |
}
|
1131 |
+
|
1132 |
return $weight;
|
1133 |
}
|
1134 |
+
|
1135 |
/**
|
1136 |
* Unset disabled
|
1137 |
*
|
1146 |
} else if ( "current" == $action ) {
|
1147 |
unset( $disabled['everywhere'] );
|
1148 |
}
|
1149 |
+
|
1150 |
return $disabled;
|
1151 |
}
|
1152 |
+
|
1153 |
/**
|
1154 |
* Get plugin data from folder name
|
1155 |
*
|
1158 |
* @return array
|
1159 |
*/
|
1160 |
private function getPluginData( $name ) {
|
1161 |
+
$data = [];
|
1162 |
+
|
1163 |
if ( $name ) {
|
1164 |
if ( ! function_exists( 'get_plugins' ) ) {
|
1165 |
// подключим файл с функцией get_plugins()
|
1176 |
}
|
1177 |
}
|
1178 |
}
|
1179 |
+
|
1180 |
return $data;
|
1181 |
}
|
1182 |
+
|
1183 |
/**
|
1184 |
* Get sided plugin name
|
1185 |
*
|
1197 |
|
1198 |
return "";*/
|
1199 |
}
|
1200 |
+
|
1201 |
/**
|
1202 |
* Get exclude sided plugin files
|
1203 |
*
|
1204 |
* @param string $index
|
1205 |
* @param string $type
|
1206 |
+
* @param bool $full
|
1207 |
*
|
1208 |
* @return array
|
1209 |
*/
|
1211 |
if ( isset( $this->sided_plugin_files[ $index ][ $type ] ) && ! empty( $this->sided_plugin_files[ $index ][ $type ] ) ) {
|
1212 |
return $this->sided_plugin_files[ $index ][ $type ];
|
1213 |
}
|
1214 |
+
|
1215 |
+
$this->sided_plugin_files[ $index ][ $type ] = [];
|
1216 |
+
|
1217 |
// todo: вынести в метод
|
1218 |
if ( is_multisite() && is_network_admin() ) {
|
1219 |
+
$options = $this->getNetworkOption( 'assets_manager_sided_plugins', [] );
|
1220 |
} else {
|
1221 |
+
$options = $this->getOption( 'assets_manager_sided_plugins', [] );
|
1222 |
}
|
1223 |
+
|
1224 |
$plugin = $this->getSidedPluginName( $index );
|
1225 |
+
|
1226 |
if ( $plugin && $options ) {
|
1227 |
if ( isset( $options[ $plugin ][ $type ] ) ) {
|
1228 |
$urls = $options[ $plugin ][ $type ];
|
1229 |
+
|
1230 |
if ( is_array( $urls ) ) {
|
1231 |
foreach ( $urls as $url ) {
|
1232 |
+
|
1233 |
if ( $full ) {
|
1234 |
$file = ( false !== strpos( $url, site_url() ) ? $url : site_url() . '/' . trim( $url, '/\\' ) );
|
1235 |
} else {
|
1239 |
$file = $url;
|
1240 |
}
|
1241 |
}
|
1242 |
+
|
1243 |
$this->sided_plugin_files[ $index ][ $type ][] = $file;
|
1244 |
}
|
1245 |
}
|
1246 |
}
|
1247 |
}
|
1248 |
+
|
1249 |
return $this->sided_plugin_files[ $index ][ $type ];
|
1250 |
}
|
1251 |
+
|
1252 |
/**
|
1253 |
* Is component active
|
1254 |
*
|
1258 |
*/
|
1259 |
private function isComponentActive( $index ) {
|
1260 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
1261 |
+
|
1262 |
$plugin_path = isset( $this->sided_plugins[ $index ] ) ? $this->sided_plugins[ $index ] : null;
|
1263 |
+
|
1264 |
if ( $index == 'wmac' && defined( 'LOADING_ASSETS_MANAGER_AS_ADDON' ) && class_exists( 'WCL_Plugin' ) ) {
|
1265 |
return WCL_Plugin::app()->isActivateComponent( 'minify_and_combine' );
|
1266 |
}
|
1267 |
+
|
1268 |
return is_plugin_active( $plugin_path );
|
1269 |
}
|
1270 |
+
|
1271 |
/**
|
1272 |
* Get component name
|
1273 |
*
|
1285 |
$data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path );
|
1286 |
$name = $data['Name'];
|
1287 |
}
|
1288 |
+
|
1289 |
return $name;
|
1290 |
}
|
1291 |
+
|
1292 |
/**
|
1293 |
* Get head columns
|
1294 |
*
|
1302 |
if ( $this->isComponentActive( $index ) ) {
|
1303 |
$title = $this->getComponentName( $plugin_path, $index );
|
1304 |
$text = $index == 'wclp' ? __( 'remove version?', 'gonzales' ) : __( 'optimize?', 'gonzales' );
|
1305 |
+
|
1306 |
$hint = '';
|
1307 |
if ( $index == 'wclp' ) {
|
1308 |
$hint = __( 'You’ve enabled "Remove query strings" from static resources in the "Clearfy" plugin. This list of settings helps you to exclude the necessary scripts and styles with remaining query strings. Press No to add a file to the excluded list.', 'gonzales' );
|
1315 |
}
|
1316 |
}
|
1317 |
}
|
1318 |
+
|
1319 |
return $html;
|
1320 |
}
|
1321 |
+
|
1322 |
/**
|
1323 |
* Get active status for sided plugin
|
1324 |
*
|
1332 |
*/
|
1333 |
private function getActiveStatusForSidedPlugin( $index, $options, $plugin, $type, $handle ) {
|
1334 |
$active = isset( $options[ $plugin ][ $type ] ) && is_array( $options[ $plugin ][ $type ] ) && in_array( $handle, $options[ $plugin ][ $type ] );
|
1335 |
+
|
1336 |
/*if( !$active && !isset($options[$plugin]) ) {
|
1337 |
|
1338 |
switch( $index ) {
|
1350 |
break;
|
1351 |
}
|
1352 |
}*/
|
1353 |
+
|
1354 |
return $active;
|
1355 |
}
|
1356 |
+
|
1357 |
/**
|
1358 |
* Get controls columns
|
1359 |
*
|
1366 |
*/
|
1367 |
public function getAdditionalControlsColumns( $html, $type, $handle, $plugin_handle ) {
|
1368 |
if ( ! empty( $this->sided_plugins ) ) {
|
1369 |
+
|
1370 |
// todo: вынести в метод
|
1371 |
if ( is_multisite() && is_network_admin() ) {
|
1372 |
+
$options = $this->getNetworkOption( 'assets_manager_sided_plugins', [] );
|
1373 |
} else {
|
1374 |
+
$options = $this->getOption( 'assets_manager_sided_plugins', [] );
|
1375 |
}
|
1376 |
+
|
1377 |
foreach ( $this->sided_plugins as $index => $plugin_path ) {
|
1378 |
if ( $this->isComponentActive( $index ) ) {
|
1379 |
$plugin = $this->getSidedPluginName( $index );
|
1380 |
+
|
1381 |
$active = $this->getActiveStatusForSidedPlugin( $index, $options, $plugin, $type, $handle );
|
1382 |
$name = "sided_plugins[{$plugin}][{$type}][{$handle}]";
|
1383 |
+
|
1384 |
$html .= "<td>";
|
1385 |
+
|
1386 |
if ( ! empty( $handle ) && ( 'plugins' != $type && false !== strpos( $handle, '.' . $type ) || 'plugins' == $type ) ) {
|
1387 |
$html .= '<label class="wbcr-gnz-switch">';
|
1388 |
$html .= '<input class="wbcr-gnz-switch__input visually-hidden wbcr-gnz-sided-disable';
|
1398 |
}
|
1399 |
}
|
1400 |
}
|
1401 |
+
|
1402 |
return $html;
|
1403 |
}
|
1404 |
+
|
1405 |
/**
|
1406 |
* @param $index
|
1407 |
* @param $type
|
1411 |
*/
|
1412 |
private function filterExclusions( $index, $type, $exclude ) {
|
1413 |
$files = $this->getSidedPluginFiles( $index, $type );
|
1414 |
+
|
1415 |
if ( ! empty( $files ) ) {
|
1416 |
if ( is_array( $exclude ) ) {
|
1417 |
$exclude = array_merge( $exclude, $files );
|
1420 |
$exclude .= ! empty( $exclude ) ? ',' . $dontmove : $dontmove;
|
1421 |
}
|
1422 |
}
|
1423 |
+
|
1424 |
return $exclude;
|
1425 |
}
|
1426 |
+
|
1427 |
/**
|
1428 |
* aopt filter js exclude
|
1429 |
*
|
1435 |
public function aoptFilterJsExclude( $exclude, $content ) {
|
1436 |
return $this->filterExclusions( 'aopt', 'js', $exclude );
|
1437 |
}
|
1438 |
+
|
1439 |
/**
|
1440 |
* aopt filter css exclude
|
1441 |
*
|
1447 |
public function aoptFilterCssExclude( $exclude, $content ) {
|
1448 |
return $this->filterExclusions( 'aopt', 'css', $exclude );
|
1449 |
}
|
1450 |
+
|
1451 |
/**
|
1452 |
* wmac filter js exclude
|
1453 |
*
|
1459 |
public function wmacFilterJsExclude( $exclude, $content ) {
|
1460 |
return $this->filterExclusions( 'wmac', 'js', $exclude );
|
1461 |
}
|
1462 |
+
|
1463 |
/**
|
1464 |
* wmac filter css exclude
|
1465 |
*
|
1471 |
public function wmacFilterCssExclude( $exclude, $content ) {
|
1472 |
return $this->filterExclusions( 'wmac', 'css', $exclude );
|
1473 |
}
|
1474 |
+
|
1475 |
/**
|
1476 |
* Filter js minify exclusions
|
1477 |
*
|
1484 |
*/
|
1485 |
private function filterJsMinifyExclusions( $index, $type, $result, $url ) {
|
1486 |
$files = $this->getSidedPluginFiles( $index, $type );
|
1487 |
+
|
1488 |
if ( ! empty( $files ) ) {
|
1489 |
foreach ( $files as $file ) {
|
1490 |
if ( false !== strpos( $url, $file ) ) {
|
1492 |
}
|
1493 |
}
|
1494 |
}
|
1495 |
+
|
1496 |
return $result;
|
1497 |
}
|
1498 |
+
|
1499 |
/**
|
1500 |
* Action wmac_filter_js_minify_excluded
|
1501 |
*
|
1507 |
public function wmacFilterJsMinifyExclude( $result, $url ) {
|
1508 |
return $this->filterJsMinifyExclusions( 'wmac', 'js', $result, $url );
|
1509 |
}
|
1510 |
+
|
1511 |
/**
|
1512 |
* Action wmac_filter_css_minify_excluded
|
1513 |
*
|
1519 |
public function wmacFilterCssMinifyExclude( $result, $url ) {
|
1520 |
return $this->filterJsMinifyExclusions( 'wmac', 'css', $result, $url );
|
1521 |
}
|
1522 |
+
|
1523 |
/**
|
1524 |
* Manage excluded files
|
1525 |
*
|
1553 |
default:
|
1554 |
return;
|
1555 |
}
|
1556 |
+
|
1557 |
// For clearfy need new line
|
1558 |
$delimeter = $index == 'wclp' ? "\n" : ",";
|
1559 |
+
$current_exclude_files = ! empty( $exclude_files ) ? array_filter( array_map( 'trim', explode( $delimeter, $exclude_files ) ) ) : [];
|
1560 |
+
|
1561 |
$delete_files = array_diff( $sided_exclude_files['before'][ $type ], $sided_exclude_files['after'][ $type ] );
|
1562 |
$new_files = array_diff( $sided_exclude_files['after'][ $type ], $current_exclude_files );
|
1563 |
+
|
1564 |
if ( empty( $current_exclude_files ) && ! empty( $new_files ) ) {
|
1565 |
$current_exclude_files = $new_files;
|
1566 |
} else if ( ! empty( $current_exclude_files ) ) {
|
1567 |
+
$new_exclude_files = [];
|
1568 |
foreach ( $current_exclude_files as $file ) {
|
1569 |
+
|
1570 |
if ( ! in_array( $file, $delete_files ) ) {
|
1571 |
$new_exclude_files[] = $file;
|
1572 |
}
|
1573 |
}
|
1574 |
$current_exclude_files = array_merge( $new_exclude_files, $new_files );
|
1575 |
}
|
1576 |
+
|
1577 |
$current_exclude_files = array_filter( array_unique( $current_exclude_files ) );
|
1578 |
+
|
1579 |
switch ( $index ) {
|
1580 |
case 'aopt':
|
1581 |
update_option( 'autoptimize_' . $type . '_exclude', implode( ', ', $current_exclude_files ) );
|
1592 |
break;
|
1593 |
}
|
1594 |
}
|
1595 |
+
|
1596 |
/**
|
1597 |
* Action form save
|
1598 |
*
|
1601 |
public function actionFormSave( $empty_before = false ) {
|
1602 |
if ( ! empty( $this->sided_plugins ) && ! $empty_before ) {
|
1603 |
foreach ( $this->sided_plugins as $index => $sided_plugin ) {
|
1604 |
+
$sided_exclude_files[ $index ]['before'] = [
|
1605 |
+
'js' => [],
|
1606 |
+
'css' => []
|
1607 |
+
];
|
1608 |
// For clearfy need full url
|
1609 |
$full = ( $index == 'wclp' ? true : false );
|
1610 |
+
|
1611 |
$sided_exclude_files[ $index ]['before']['js'] += $this->getSidedPluginFiles( $index, 'js', $full );
|
1612 |
$sided_exclude_files[ $index ]['before']['css'] += $this->getSidedPluginFiles( $index, 'css', $full );
|
1613 |
}
|
1614 |
}
|
1615 |
+
|
1616 |
if ( isset( $_POST['sided_plugins'] ) && ! empty( $_POST['sided_plugins'] ) ) {
|
1617 |
+
$sided_plugins_options = [];
|
1618 |
foreach ( $_POST['sided_plugins'] as $plugin => $types ) {
|
1619 |
foreach ( $types as $type => $urls ) {
|
1620 |
foreach ( $urls as $url => $active ) {
|
1621 |
+
|
1622 |
if ( ! empty( $url ) && $active ) {
|
1623 |
$sided_plugins_options[ $plugin ][ $type ][] = $url;
|
1624 |
}
|
1625 |
}
|
1626 |
}
|
1627 |
}
|
1628 |
+
|
1629 |
if ( is_multisite() && is_network_admin() ) {
|
1630 |
$this->updateNetworkOption( 'assets_manager_sided_plugins', $sided_plugins_options );
|
1631 |
} else {
|
1632 |
$this->updateOption( 'assets_manager_sided_plugins', $sided_plugins_options );
|
1633 |
}
|
1634 |
}
|
1635 |
+
|
1636 |
if ( ! empty( $this->sided_plugins ) ) {
|
1637 |
+
$this->sided_plugin_files = [];
|
1638 |
foreach ( $this->sided_plugins as $index => $sided_plugin ) {
|
1639 |
+
$sided_exclude_files[ $index ]['after'] = [
|
1640 |
+
'js' => [],
|
1641 |
+
'css' => []
|
1642 |
+
];
|
1643 |
// For clearfy need full url
|
1644 |
$full = ( $index == 'wclp' ? true : false );
|
1645 |
+
|
1646 |
$sided_exclude_files[ $index ]['after']['js'] += $this->getSidedPluginFiles( $index, 'js', $full );
|
1647 |
$sided_exclude_files[ $index ]['after']['css'] += $this->getSidedPluginFiles( $index, 'css', $full );
|
1648 |
+
|
1649 |
if ( ! empty( $sided_exclude_files[ $index ]['before']['js'] ) || ! empty( $sided_exclude_files[ $index ]['after']['js'] ) ) {
|
1650 |
$this->manageExcludeFiles( $sided_exclude_files[ $index ], $index, 'js' );
|
1651 |
}
|
1652 |
+
|
1653 |
if ( ! empty( $sided_exclude_files[ $index ]['before']['css'] ) || ! empty( $sided_exclude_files[ $index ]['after']['css'] ) ) {
|
1654 |
$this->manageExcludeFiles( $sided_exclude_files[ $index ], $index, 'css' );
|
1655 |
}
|
components/assets-manager/languages/gonzales-es_ES.mo
ADDED
Binary file
|
components/assets-manager/languages/gonzales-es_ES.po
ADDED
@@ -0,0 +1,466 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:23+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:23+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:30
|
29 |
+
msgid ""
|
30 |
+
"We detected that you used the Assets manager plugin. Do you want to import "
|
31 |
+
"settings from this plugin to the Clearfy plugin?"
|
32 |
+
msgstr ""
|
33 |
+
"Configuración de activos detectada. ¿Desea importar esta configuración al "
|
34 |
+
"plugin Clearfy?"
|
35 |
+
|
36 |
+
#: admin/boot.php:31
|
37 |
+
msgid "Import options"
|
38 |
+
msgstr "Importar opciones"
|
39 |
+
|
40 |
+
#: admin/boot.php:48
|
41 |
+
msgid "Settings has been successfully imported!"
|
42 |
+
msgstr "¡Configuración importada exitosamente!"
|
43 |
+
|
44 |
+
#: admin/boot.php:140 admin/pages/assets-manager.php:96
|
45 |
+
msgid "Disable assets manager"
|
46 |
+
msgstr "Deshabilitar gestor de activos"
|
47 |
+
|
48 |
+
#: admin/boot.php:147 admin/pages/assets-manager.php:120
|
49 |
+
msgid "Disable assets manager panel"
|
50 |
+
msgstr "Deshabilitar el panel de Gestor de Activos"
|
51 |
+
|
52 |
+
#: admin/boot.php:153 admin/pages/assets-manager.php:129
|
53 |
+
msgid "Disable assets manager on front"
|
54 |
+
msgstr "Deshabilitar el administrador de activos en el frontend"
|
55 |
+
|
56 |
+
#: admin/boot.php:159 admin/pages/assets-manager.php:138
|
57 |
+
msgid "Disable assets manager on back-end"
|
58 |
+
msgstr "Deshabilitar el administrador de activos en el back-end"
|
59 |
+
|
60 |
+
#: admin/boot.php:165
|
61 |
+
msgid "Assets manager options"
|
62 |
+
msgstr "Opciiones del Gestor de Activos"
|
63 |
+
|
64 |
+
#: admin/boot.php:205 includes/class.configurate-assets.php:266
|
65 |
+
msgid "Disable plugins (groups of scripts)"
|
66 |
+
msgstr "Deshabilitar plugins (grupos de scripts)"
|
67 |
+
|
68 |
+
#: admin/boot.php:206 includes/class.configurate-assets.php:267
|
69 |
+
msgid "Conditions by the link template"
|
70 |
+
msgstr "Condiciones para enlace de plantilla."
|
71 |
+
|
72 |
+
#: admin/boot.php:207 includes/class.configurate-assets.php:268
|
73 |
+
msgid "Conditions by the regular expression"
|
74 |
+
msgstr "Condiciones para la expresión regular."
|
75 |
+
|
76 |
+
#: admin/boot.php:208 includes/class.configurate-assets.php:269
|
77 |
+
msgid "Safe mode"
|
78 |
+
msgstr "Modo seguro"
|
79 |
+
|
80 |
+
#: admin/boot.php:209 includes/class.configurate-assets.php:270
|
81 |
+
msgid "Statistics and optimization results"
|
82 |
+
msgstr "Estadísticas y resultados de optimización."
|
83 |
+
|
84 |
+
#: admin/boot.php:220
|
85 |
+
msgid "Get premium"
|
86 |
+
msgstr "Obtener premium"
|
87 |
+
|
88 |
+
#: admin/pages/assets-manager.php:48 admin/pages/assets-manager.php:67
|
89 |
+
#: admin/pages/assets-manager.php:75
|
90 |
+
msgid "Assets manager"
|
91 |
+
msgstr "Gestor de Activos"
|
92 |
+
|
93 |
+
#: admin/pages/assets-manager.php:67 admin/pages/assets-manager.php:75
|
94 |
+
msgid "General"
|
95 |
+
msgstr "General"
|
96 |
+
|
97 |
+
#: admin/pages/assets-manager.php:89
|
98 |
+
msgid "Disable unused scripts, styles, and fonts"
|
99 |
+
msgstr "Deshabilitar los scripts, estilos y fuentes no utilizados"
|
100 |
+
|
101 |
+
#: admin/pages/assets-manager.php:89
|
102 |
+
msgid ""
|
103 |
+
"There is a button in the adminbar called \"Script Manager\". If you click on "
|
104 |
+
"it you will see a list of loaded scripts, styles and fonts on the current "
|
105 |
+
"page of your site. If you think that one of the assets is superfluous on "
|
106 |
+
"this page, you can disable it individually, so that it does not create "
|
107 |
+
"unnecessary queries when page loading. Use the script manager very carefull "
|
108 |
+
"to non-corrupt your website. We recommend to test this function at a local "
|
109 |
+
"server."
|
110 |
+
msgstr ""
|
111 |
+
"Hay un botón en la barra de administración llamado \"Administrador de "
|
112 |
+
"secuencias de comandos\". Si hace clic en él, verá una lista de los scripts, "
|
113 |
+
"estilos y fuentes cargados en la página actual de su sitio. Si cree que uno "
|
114 |
+
"de los recursos es superfluo en esta página, puede deshabilitarlo "
|
115 |
+
"individualmente, para que no cree consultas innecesarias cuando se carga la "
|
116 |
+
"página. Utilice el administrador de scripts con mucho cuidado para no dañar "
|
117 |
+
"su sitio web. Recomendamos probar esta función en un servidor local."
|
118 |
+
|
119 |
+
#: admin/pages/assets-manager.php:98
|
120 |
+
msgid "Full disable of the module."
|
121 |
+
msgstr "Deshabilitación completa del módulo."
|
122 |
+
|
123 |
+
#: admin/pages/assets-manager.php:122
|
124 |
+
msgid ""
|
125 |
+
"By default in your admin bar there is a button for control the assets "
|
126 |
+
"scripts and styles. With this option, you can turn off the script manager on "
|
127 |
+
"front and back-end."
|
128 |
+
msgstr ""
|
129 |
+
"De forma predeterminada, en la barra de administración hay un botón para "
|
130 |
+
"controlar los scripts y estilos de activos. Con esta opción, puede "
|
131 |
+
"desactivar el administrador de secuencias de comandos en la parte frontal y "
|
132 |
+
"posterior."
|
133 |
+
|
134 |
+
#: admin/pages/assets-manager.php:131
|
135 |
+
msgid "Disables assets manager initialization for frontend."
|
136 |
+
msgstr "Desactiva el inicio del administrador de activos para el frontend."
|
137 |
+
|
138 |
+
#: admin/pages/assets-manager.php:140
|
139 |
+
msgid "Disables assets manager initialization for backend."
|
140 |
+
msgstr "Desactiva el inicio del administrador de activos para el backend."
|
141 |
+
|
142 |
+
#: gonzales.php:84
|
143 |
+
msgid "Webcraftic assets manager"
|
144 |
+
msgstr "Gestor de activos webcraftic"
|
145 |
+
|
146 |
+
#: includes/class.configurate-assets.php:128
|
147 |
+
#: includes/class.configurate-assets.php:147
|
148 |
+
msgid "Assets Manager"
|
149 |
+
msgstr "Gestor de Activos"
|
150 |
+
|
151 |
+
#: includes/class.configurate-assets.php:212
|
152 |
+
msgid "Total requests"
|
153 |
+
msgstr "Total de solicitudes"
|
154 |
+
|
155 |
+
#: includes/class.configurate-assets.php:213
|
156 |
+
msgid "Total size"
|
157 |
+
msgstr "Tamaño total"
|
158 |
+
|
159 |
+
#: includes/class.configurate-assets.php:214
|
160 |
+
msgid "Optimized size"
|
161 |
+
msgstr "Tamaño optimizado"
|
162 |
+
|
163 |
+
#: includes/class.configurate-assets.php:215
|
164 |
+
msgid "Disabled js"
|
165 |
+
msgstr "JS desactivado"
|
166 |
+
|
167 |
+
#: includes/class.configurate-assets.php:216
|
168 |
+
msgid "Disabled css"
|
169 |
+
msgstr "CSS desactivado"
|
170 |
+
|
171 |
+
#: includes/class.configurate-assets.php:218
|
172 |
+
msgid ""
|
173 |
+
"This is the general statistics to see the optimization result. Available in "
|
174 |
+
"the paid version only."
|
175 |
+
msgstr ""
|
176 |
+
"Esta es la estadística general para ver el resultado de la optimización. "
|
177 |
+
"Disponible solo en la versión de pago."
|
178 |
+
|
179 |
+
#: includes/class.configurate-assets.php:222
|
180 |
+
msgid "Reset"
|
181 |
+
msgstr "Resetear"
|
182 |
+
|
183 |
+
#: includes/class.configurate-assets.php:223
|
184 |
+
msgid "Save"
|
185 |
+
msgstr "Guardar"
|
186 |
+
|
187 |
+
#: includes/class.configurate-assets.php:224
|
188 |
+
msgid ""
|
189 |
+
"In test mode, you can experiment with disabling unused scripts safely for "
|
190 |
+
"your site. The resources that you disabled will be visible only to you (the "
|
191 |
+
"administrator), and all other users will receive an unoptimized version of "
|
192 |
+
"the site, until you remove this tick"
|
193 |
+
msgstr ""
|
194 |
+
"En el modo de prueba, puede experimentar con la desactivación segura de "
|
195 |
+
"scripts no utilizados para su sitio. Los recursos que desactivó solo serán "
|
196 |
+
"visibles para usted (el administrador), y todos los demás usuarios recibirán "
|
197 |
+
"una versión no optimizada del sitio, hasta que elimine esta marca"
|
198 |
+
|
199 |
+
#: includes/class.configurate-assets.php:225
|
200 |
+
msgid "Safe mode <b>PRO</b>"
|
201 |
+
msgstr "Modo seguro <b>PRO</b>"
|
202 |
+
|
203 |
+
#: includes/class.configurate-assets.php:227
|
204 |
+
msgid "Close"
|
205 |
+
msgstr "Cerrar"
|
206 |
+
|
207 |
+
#: includes/class.configurate-assets.php:257
|
208 |
+
msgid ""
|
209 |
+
"Important! Each page of your website has different sets of scripts and "
|
210 |
+
"styles files."
|
211 |
+
msgstr ""
|
212 |
+
"¡Importante! Cada página de su sitio web tiene diferentes conjuntos de "
|
213 |
+
"scripts y archivos de estilos."
|
214 |
+
|
215 |
+
#: includes/class.configurate-assets.php:258
|
216 |
+
msgid ""
|
217 |
+
"Use this feature to disable unwanted scripts and styles by setting up the "
|
218 |
+
"logic for different types of pages. We recommend working in \"Safe mode\" "
|
219 |
+
"because disabling any necessary system script file can corrupt the website. "
|
220 |
+
"All changes done in Safe mode are available for administrator only. This way "
|
221 |
+
"only you, as the administrator, can see the result of optimization. To "
|
222 |
+
"enable the changes for other users, uncheck Safe mode."
|
223 |
+
msgstr ""
|
224 |
+
"Utilice esta función para deshabilitar los scripts y estilos no deseados "
|
225 |
+
"configurando la mejor lógica para diferentes tipos de páginas. Recomendamos "
|
226 |
+
"trabajar en \"Safe mode\" ya que deshabilitar cualquier archivo importante "
|
227 |
+
"del script del sistema podría dañar el sitio web. Todos los cambios "
|
228 |
+
"realizados en Modo seguro están disponibles solo para el administrador. De "
|
229 |
+
"esta manera solo usted, como administrador, puede ver el resultado de la "
|
230 |
+
"optimización. Para habilitar los cambios para otros usuarios, desmarque Modo "
|
231 |
+
"seguro."
|
232 |
+
|
233 |
+
#: includes/class.configurate-assets.php:259
|
234 |
+
#, php-format
|
235 |
+
msgid ""
|
236 |
+
"For more details and user guides, check the plugin’s <a href=\"%s\" target="
|
237 |
+
"\"_blank\" rel=\"noreferrer noopener\">documentation</a>."
|
238 |
+
msgstr ""
|
239 |
+
"Para más detalles y guías de usuario del plugin, consulte la <a href=\"%s\" "
|
240 |
+
"target=\"_blank\" rel=\"noreferrer noopener\">documentación</a>."
|
241 |
+
|
242 |
+
#: includes/class.configurate-assets.php:262
|
243 |
+
msgid "Upgrade to Premium"
|
244 |
+
msgstr "Actualizar a Premium"
|
245 |
+
|
246 |
+
#: includes/class.configurate-assets.php:265
|
247 |
+
msgid "MORE IN CLEARFY BUSINESS"
|
248 |
+
msgstr "MÁS EN CLEARFY BUSINESS"
|
249 |
+
|
250 |
+
#: includes/class.configurate-assets.php:308
|
251 |
+
#: includes/class.configurate-assets.php:336
|
252 |
+
msgid "Loaded"
|
253 |
+
msgstr "Cargado"
|
254 |
+
|
255 |
+
#: includes/class.configurate-assets.php:309
|
256 |
+
msgid "Plugin"
|
257 |
+
msgstr "Plugin"
|
258 |
+
|
259 |
+
#: includes/class.configurate-assets.php:313
|
260 |
+
#: includes/class.configurate-assets.php:342
|
261 |
+
msgid "Load resource?"
|
262 |
+
msgstr "¿Cargar recurso?"
|
263 |
+
|
264 |
+
#: includes/class.configurate-assets.php:314
|
265 |
+
#: includes/class.configurate-assets.php:343
|
266 |
+
msgid "Conditions"
|
267 |
+
msgstr "Condiciones"
|
268 |
+
|
269 |
+
#: includes/class.configurate-assets.php:322
|
270 |
+
msgid "Author"
|
271 |
+
msgstr "Autor"
|
272 |
+
|
273 |
+
#: includes/class.configurate-assets.php:323
|
274 |
+
#: includes/class.configurate-assets.php:402
|
275 |
+
msgid "Version"
|
276 |
+
msgstr "Versión"
|
277 |
+
|
278 |
+
#: includes/class.configurate-assets.php:337
|
279 |
+
msgid "Size"
|
280 |
+
msgstr "Tamaño"
|
281 |
+
|
282 |
+
#: includes/class.configurate-assets.php:338
|
283 |
+
msgid "Resource"
|
284 |
+
msgstr "Recurso"
|
285 |
+
|
286 |
+
#: includes/class.configurate-assets.php:366
|
287 |
+
msgid "In use by"
|
288 |
+
msgstr "En uso por"
|
289 |
+
|
290 |
+
#: includes/class.configurate-assets.php:373
|
291 |
+
msgid "Requires"
|
292 |
+
msgstr "Requiere"
|
293 |
+
|
294 |
+
#: includes/class.configurate-assets.php:402
|
295 |
+
msgid "--"
|
296 |
+
msgstr "--"
|
297 |
+
|
298 |
+
#: includes/class.configurate-assets.php:559
|
299 |
+
#: includes/class.configurate-assets.php:1403
|
300 |
+
msgid "No"
|
301 |
+
msgstr "No"
|
302 |
+
|
303 |
+
#: includes/class.configurate-assets.php:559
|
304 |
+
#: includes/class.configurate-assets.php:1403
|
305 |
+
msgid "Yes"
|
306 |
+
msgstr "Sí"
|
307 |
+
|
308 |
+
#: includes/class.configurate-assets.php:575
|
309 |
+
msgid ""
|
310 |
+
"Click the switch in the <b>Load resource?</b> column to display the "
|
311 |
+
"conditions for loading the resource."
|
312 |
+
msgstr ""
|
313 |
+
"Haga clic en el switch de la columna <b>¿Cargar recurso?</b> para mostrar "
|
314 |
+
"las condiciones para cargar el recurso."
|
315 |
+
|
316 |
+
#: includes/class.configurate-assets.php:577
|
317 |
+
msgid ""
|
318 |
+
"Set the plugin logic to apply it to all plugin’s resources. This feature "
|
319 |
+
"available at the paid version."
|
320 |
+
msgstr ""
|
321 |
+
"Configure el \"plugin logic\" para aplicarlo a todos los recursos del "
|
322 |
+
"complemento. Esta característica está disponible en la versión de pago."
|
323 |
+
|
324 |
+
#: includes/class.configurate-assets.php:586
|
325 |
+
#: includes/class.configurate-assets.php:610
|
326 |
+
msgid "Current URL"
|
327 |
+
msgstr "URL actual"
|
328 |
+
|
329 |
+
#: includes/class.configurate-assets.php:587
|
330 |
+
msgid "Everywhere"
|
331 |
+
msgstr "Donde sea"
|
332 |
+
|
333 |
+
#: includes/class.configurate-assets.php:588
|
334 |
+
msgid "Custom URL (PRO)"
|
335 |
+
msgstr "URL personalizada (PRO)"
|
336 |
+
|
337 |
+
#: includes/class.configurate-assets.php:589
|
338 |
+
msgid "Regular expression (PRO)"
|
339 |
+
msgstr "Expresión regular (PRO)"
|
340 |
+
|
341 |
+
#: includes/class.configurate-assets.php:599
|
342 |
+
msgid "Exclude"
|
343 |
+
msgstr "Excluir"
|
344 |
+
|
345 |
+
#: includes/class.configurate-assets.php:599
|
346 |
+
msgid ""
|
347 |
+
"You can disable this resource for all pages, except sections and page types "
|
348 |
+
"listed below. Specify sections and page types with the enabled resource."
|
349 |
+
msgstr ""
|
350 |
+
"Puede deshabilitar este recurso para todas las páginas, excepto las "
|
351 |
+
"secciones y los tipos de página que se enumeran a continuación. Especifique "
|
352 |
+
"secciones y tipos de página con el recurso habilitado."
|
353 |
+
|
354 |
+
#: includes/class.configurate-assets.php:683
|
355 |
+
msgid "Example"
|
356 |
+
msgstr "Ejemplo"
|
357 |
+
|
358 |
+
#: includes/class.configurate-assets.php:683
|
359 |
+
msgid "Enter URL (set * for mask)"
|
360 |
+
msgstr "Ingrese URL (set * for mask)"
|
361 |
+
|
362 |
+
#: includes/class.configurate-assets.php:683
|
363 |
+
msgid ""
|
364 |
+
"You can disable the resource only for the pages with the matched to the "
|
365 |
+
"template address. For example, if you set the template for the link as "
|
366 |
+
"http://yoursite.test/profile/*, then the resource is disabled for the "
|
367 |
+
"following pages: http://yoursite.test/profile/12, http://yoursite.test/"
|
368 |
+
"profile/43, http://yoursite.test/profile/999. If you don’t use the asterisk "
|
369 |
+
"symbol in the template then the plugin will disable the resource only for "
|
370 |
+
"the pages with 100% match in the specified link type. This feature is "
|
371 |
+
"available at the paid version."
|
372 |
+
msgstr ""
|
373 |
+
"Puede deshabilitar el recurso solo para las páginas que coincidan con la "
|
374 |
+
"dirección de la plantilla. Por ejemplo, si configura la plantilla para el "
|
375 |
+
"enlace como http://yoursite.test/profile/*, el recurso se deshabilita para "
|
376 |
+
"las siguientes páginas: http://yoursite.test/profile/12, http://yoursite."
|
377 |
+
"test/profile/43, http://yoursite.test/profile/999. Si no usa el símbolo de "
|
378 |
+
"asterisco en la plantilla, el complemento deshabilitará el recurso solo para "
|
379 |
+
"las páginas con una coincidencia del 100% en el tipo de enlace especificado. "
|
380 |
+
"Esta característica está disponible en la versión de pago."
|
381 |
+
|
382 |
+
#: includes/class.configurate-assets.php:686
|
383 |
+
msgid "Add field"
|
384 |
+
msgstr "Añadir campo"
|
385 |
+
|
386 |
+
#: includes/class.configurate-assets.php:696
|
387 |
+
msgid "Enter regular expression"
|
388 |
+
msgstr "Ingrese la expresión regular"
|
389 |
+
|
390 |
+
#: includes/class.configurate-assets.php:696
|
391 |
+
msgid ""
|
392 |
+
"Regular expressions can be used by experts. This tool creates flexible "
|
393 |
+
"conditions to disable the resource. For example, if you specify this "
|
394 |
+
"expression: ^([A-z0-9]+-)?gifts? then the resource will be disabled at the "
|
395 |
+
"following pages http://yoursite.test/get-gift/, http://yoursite.test/gift/, "
|
396 |
+
"http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. The plugin "
|
397 |
+
"ignores the backslash at the beginning of the query string, so you can "
|
398 |
+
"dismiss it. Check your regular expressions in here: https://regex101.com, "
|
399 |
+
"this will prevent you from the mistakes. This feature is available at the "
|
400 |
+
"paid version."
|
401 |
+
msgstr ""
|
402 |
+
"Las expresiones regulares pueden ser utilizadas por expertos. Esta "
|
403 |
+
"herramienta crea condiciones flexibles para deshabilitar el recurso. Por "
|
404 |
+
"ejemplo, si especifica esta expresión: ^ ([A-z0-9] + -)?Gifts? significa que "
|
405 |
+
"el recurso se deshabilitará en las siguientes páginas http: //yoursite.test/"
|
406 |
+
"get-gift/, http: //yoursite.test/gift/, http: //yoursite.test/get-gifts/, "
|
407 |
+
"http: / /yoursite.test/gifts/. El plugin ignora la barra diagonal inversa al "
|
408 |
+
"principio de la cadena de consulta, por lo que puede descartarla. Verifique "
|
409 |
+
"sus expresiones regulares aquí: https://regex101.com, esto evitará que "
|
410 |
+
"cometa errores. Esta característica está disponible en la versión de pago."
|
411 |
+
|
412 |
+
#: includes/class.configurate-assets.php:715
|
413 |
+
msgid "Also disabled for pages"
|
414 |
+
msgstr "También deshabilitado para páginas"
|
415 |
+
|
416 |
+
#: includes/class.configurate-assets.php:729
|
417 |
+
msgid "You don't have enough capability to edit this information."
|
418 |
+
msgstr "No tienes suficiente permisos para editar esta información."
|
419 |
+
|
420 |
+
#: includes/class.configurate-assets.php:1293
|
421 |
+
msgid "Minify and Combine"
|
422 |
+
msgstr "Minificar y Combinar"
|
423 |
+
|
424 |
+
#: includes/class.configurate-assets.php:1314
|
425 |
+
msgid "remove version?"
|
426 |
+
msgstr "¿Eliminar versión?"
|
427 |
+
|
428 |
+
#: includes/class.configurate-assets.php:1314
|
429 |
+
msgid "optimize?"
|
430 |
+
msgstr "¿optimizar?"
|
431 |
+
|
432 |
+
#: includes/class.configurate-assets.php:1318
|
433 |
+
msgid ""
|
434 |
+
"You’ve enabled "Remove query strings" from static resources in the "
|
435 |
+
""Clearfy" plugin. This list of settings helps you to exclude the "
|
436 |
+
"necessary scripts and styles with remaining query strings. Press No to add a "
|
437 |
+
"file to the excluded list."
|
438 |
+
msgstr ""
|
439 |
+
"Has habilitado "Eliminar cadenas de consulta" de los recursos "
|
440 |
+
"estáticos en el "Clearfy" plugin. Esta lista de configuraciones le "
|
441 |
+
"ayuda a excluir los scripts y estilos necesarios con las cadenas de consulta "
|
442 |
+
"restantes. Presione No para agregar un archivo a la lista excluida."
|
443 |
+
|
444 |
+
#: includes/class.configurate-assets.php:1320
|
445 |
+
msgid ""
|
446 |
+
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
447 |
+
"options" in the "Minify & Combine plugin". These settings "
|
448 |
+
"exclude scripts and styles that you don’t want to optimize. Press No to add "
|
449 |
+
"a file to the excluded list."
|
450 |
+
msgstr ""
|
451 |
+
"Has habilitado "Optimizar js scripts?" y "Optimizar CSS "
|
452 |
+
"options" en el "plugin Minify & Combine". Esta configuración "
|
453 |
+
"excluye los scripts y los estilos que no desea optimizar. Presione No para "
|
454 |
+
"agregar un archivo a la lista excluida."
|
455 |
+
|
456 |
+
#: includes/class.configurate-assets.php:1322
|
457 |
+
msgid ""
|
458 |
+
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
459 |
+
"options" in the "Autoptimize". These settings exclude scripts "
|
460 |
+
"and styles that you don’t want to optimize. Press No to add a file to the "
|
461 |
+
"excluded list."
|
462 |
+
msgstr ""
|
463 |
+
"Has habilitado "Optimizar js scripts?" y "Optimizar CSS "
|
464 |
+
"options" en el "Autoptimize". Esta configuración excluye los "
|
465 |
+
"scripts y los estilos que no desea optimizar. Presione No para agregar un "
|
466 |
+
"archivo a la lista excluida."
|
components/assets-manager/languages/gonzales-ru_RU.po
CHANGED
@@ -1,574 +1,574 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2018-10-16 15:56+0300\n"
|
5 |
-
"PO-Revision-Date: 2018-10-19 22:37+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 2.1.1\n"
|
13 |
-
"X-Poedit-Basepath: ../..\n"
|
14 |
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
-
"X-Poedit-SearchPath-0: assets-manager\n"
|
19 |
-
"X-Poedit-SearchPath-1: assets-manager-premium\n"
|
20 |
-
"X-Poedit-SearchPathExcluded-0: assets-manager/libs\n"
|
21 |
-
|
22 |
-
#: assets-manager-premium/admin/boot.php:46
|
23 |
-
msgid ""
|
24 |
-
"<strong>Assets manager Premium</strong><br>We did not find the installed "
|
25 |
-
"plugin \"Assets manager\". Please install the plugin \"Assets manager\" "
|
26 |
-
"first for premium functions!"
|
27 |
-
msgstr ""
|
28 |
-
"<strong>Менеджер скриптов премиум</strong><br> Мы не нашли установленный "
|
29 |
-
"копонент \"Менеджер скриптов\". Пожалуйста, установите копонент \"Менеджер "
|
30 |
-
"скриптов\" в первую очередь для премиум-функций!"
|
31 |
-
|
32 |
-
#: assets-manager-premium/assets-manager-premium.php:63
|
33 |
-
msgid "Webcraftic assets manager Premium"
|
34 |
-
msgstr "Webcraftic менеджер скриптов премиум"
|
35 |
-
|
36 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:92
|
37 |
-
#: assets-manager/includes/class.configurate-assets.php:204
|
38 |
-
#: assets-manager/includes/class.configurate-assets.php:208
|
39 |
-
msgid "Total requests"
|
40 |
-
msgstr "Всего запросов"
|
41 |
-
|
42 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:93
|
43 |
-
#: assets-manager/includes/class.configurate-assets.php:205
|
44 |
-
msgid "Total size"
|
45 |
-
msgstr "Общий вес"
|
46 |
-
|
47 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:94
|
48 |
-
#: assets-manager/includes/class.configurate-assets.php:206
|
49 |
-
msgid "Optimized size"
|
50 |
-
msgstr "Оптим. вес"
|
51 |
-
|
52 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:95
|
53 |
-
#: assets-manager/includes/class.configurate-assets.php:212
|
54 |
-
msgid "Disabled js"
|
55 |
-
msgstr "Отключено js"
|
56 |
-
|
57 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:96
|
58 |
-
#: assets-manager/includes/class.configurate-assets.php:213
|
59 |
-
msgid "Disabled css"
|
60 |
-
msgstr "Отключено css"
|
61 |
-
|
62 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:119
|
63 |
-
#: assets-manager/includes/class.configurate-assets.php:266
|
64 |
-
msgid "Safe mode"
|
65 |
-
msgstr "Безопасный режим"
|
66 |
-
|
67 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:300
|
68 |
-
#: assets-manager/includes/class.configurate-assets.php:685
|
69 |
-
msgid "Example"
|
70 |
-
msgstr "Пример"
|
71 |
-
|
72 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:300
|
73 |
-
#: assets-manager/includes/class.configurate-assets.php:685
|
74 |
-
msgid "Enter URL (set * for mask)"
|
75 |
-
msgstr "Введите URL (добавьте * для маски)"
|
76 |
-
|
77 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:308
|
78 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:316
|
79 |
-
#: assets-manager/includes/class.configurate-assets.php:688
|
80 |
-
msgid "Add field"
|
81 |
-
msgstr "Добавить"
|
82 |
-
|
83 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:327
|
84 |
-
#: assets-manager/includes/class.configurate-assets.php:698
|
85 |
-
msgid "Enter regular expression"
|
86 |
-
msgstr "Введите регулярное выражение"
|
87 |
-
|
88 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:532
|
89 |
-
msgid "Custom URL"
|
90 |
-
msgstr "Произвольный URL"
|
91 |
-
|
92 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:533
|
93 |
-
msgid "Regular expression"
|
94 |
-
msgstr "Регулярное выражение"
|
95 |
-
|
96 |
-
#: assets-manager-premium/includes/class.configurate-assets.php:595
|
97 |
-
msgid "Set the plugin logic to apply it to all plugin’s resources."
|
98 |
-
msgstr ""
|
99 |
-
"Установите логику плагина, чтобы применить его ко всем ресурсам плагина."
|
100 |
-
|
101 |
-
#: assets-manager/admin/boot.php:48
|
102 |
-
#: assets-manager/admin/pages/assets-manager.php:89
|
103 |
-
msgid "Disable assets manager"
|
104 |
-
msgstr "Отключить менеджер скриптов"
|
105 |
-
|
106 |
-
#: assets-manager/admin/boot.php:55
|
107 |
-
#: assets-manager/admin/pages/assets-manager.php:113
|
108 |
-
msgid "Disable assets manager panel"
|
109 |
-
msgstr "Скрыть панель в админбаре"
|
110 |
-
|
111 |
-
#: assets-manager/admin/boot.php:61
|
112 |
-
#: assets-manager/admin/pages/assets-manager.php:122
|
113 |
-
msgid "Disable assets manager on front"
|
114 |
-
msgstr "Отключить менеджер скриптов на внешней стороне сайта"
|
115 |
-
|
116 |
-
#: assets-manager/admin/boot.php:67
|
117 |
-
#: assets-manager/admin/pages/assets-manager.php:131
|
118 |
-
msgid "Disable assets manager on back-end"
|
119 |
-
msgstr "Отключить менеджер скриптов в админпанели"
|
120 |
-
|
121 |
-
#: assets-manager/admin/boot.php:73
|
122 |
-
msgid "Assets manager options"
|
123 |
-
msgstr "Настройки менеджера скриптов"
|
124 |
-
|
125 |
-
#: assets-manager/admin/boot.php:86
|
126 |
-
msgid "Get ultimate plugin free"
|
127 |
-
msgstr "Получите полную версию плагина бесплатно"
|
128 |
-
|
129 |
-
#: assets-manager/admin/pages/assets-manager.php:48
|
130 |
-
#: assets-manager/admin/pages/assets-manager.php:67
|
131 |
-
msgid "Assets manager"
|
132 |
-
msgstr "Менеджер скриптов"
|
133 |
-
|
134 |
-
#: assets-manager/admin/pages/assets-manager.php:68
|
135 |
-
msgid "General"
|
136 |
-
msgstr "Основные"
|
137 |
-
|
138 |
-
#: assets-manager/admin/pages/assets-manager.php:82
|
139 |
-
msgid "Disable unused scripts, styles, and fonts"
|
140 |
-
msgstr "Отключите неиспользуемые скрипты, стили и шрифты"
|
141 |
-
|
142 |
-
#: assets-manager/admin/pages/assets-manager.php:82
|
143 |
-
msgid ""
|
144 |
-
"There is a button in the adminbar called \"Script Manager\". If you click on "
|
145 |
-
"it you will see a list of loaded scripts, styles and fonts on the current "
|
146 |
-
"page of your site. If you think that one of the assets is superfluous on "
|
147 |
-
"this page, you can disable it individually, so that it does not create "
|
148 |
-
"unnecessary queries when page loading. Use the script manager very carefull "
|
149 |
-
"to non-corrupt your website. We recommend to test this function at a local "
|
150 |
-
"server."
|
151 |
-
msgstr ""
|
152 |
-
"В админбаре есть кнопка под названием “Менеджер скриптов”, если на нее "
|
153 |
-
"нажать вы увидите список загружаемых скриптов, стилей и шрифтов на текущей "
|
154 |
-
"странице вашего сайта. Если вы считаете, что какой-то из ресурсов лишний на "
|
155 |
-
"этой странице, вы можете индивидуально его отключить, чтобы он не создавал "
|
156 |
-
"лишних запросов при загрузке. Используйте менеджер скриптов аккуратно, чтобы "
|
157 |
-
"не нарушить работу вашего сайта. Мы рекомендуем вам использовать локальный "
|
158 |
-
"сервер для тестирования этой функции."
|
159 |
-
|
160 |
-
#: assets-manager/admin/pages/assets-manager.php:91
|
161 |
-
msgid "Full disable of the module."
|
162 |
-
msgstr "Полностью отключает работу модуля."
|
163 |
-
|
164 |
-
#: assets-manager/admin/pages/assets-manager.php:115
|
165 |
-
msgid ""
|
166 |
-
"By default in your admin bar there is a button for control the assets "
|
167 |
-
"scripts and styles. With this option, you can turn off the script manager on "
|
168 |
-
"front and back-end."
|
169 |
-
msgstr ""
|
170 |
-
"По умолчанию в панели администратора есть кнопка для управления подключамыми "
|
171 |
-
"скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
|
172 |
-
"админбара, чтобы она не занимала место."
|
173 |
-
|
174 |
-
#: assets-manager/admin/pages/assets-manager.php:124
|
175 |
-
msgid "Disables assets manager initialization for frontend."
|
176 |
-
msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
|
177 |
-
|
178 |
-
#: assets-manager/admin/pages/assets-manager.php:133
|
179 |
-
msgid "Disables assets manager initialization for backend."
|
180 |
-
msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
|
181 |
-
|
182 |
-
#: assets-manager/gonzales.php:63
|
183 |
-
msgid "Webcraftic assets manager"
|
184 |
-
msgstr "Webcraftic менеджер скриптов"
|
185 |
-
|
186 |
-
#: assets-manager/includes/class.configurate-assets.php:121
|
187 |
-
#: assets-manager/includes/class.configurate-assets.php:141
|
188 |
-
msgid "Script Manager"
|
189 |
-
msgstr "Менеджер скриптов"
|
190 |
-
|
191 |
-
#: assets-manager/includes/class.configurate-assets.php:208
|
192 |
-
msgid "Total weight"
|
193 |
-
msgstr "Общий вес"
|
194 |
-
|
195 |
-
#: assets-manager/includes/class.configurate-assets.php:208
|
196 |
-
msgid "Optimized weight"
|
197 |
-
msgstr "Оптим. вес"
|
198 |
-
|
199 |
-
#: assets-manager/includes/class.configurate-assets.php:215
|
200 |
-
msgid ""
|
201 |
-
"This is the general statistics to see the optimization result. Available in "
|
202 |
-
"the paid version only."
|
203 |
-
msgstr ""
|
204 |
-
"Это общая статистика, чтобы увидеть результат оптимизации. Доступно только в "
|
205 |
-
"платной версии."
|
206 |
-
|
207 |
-
#: assets-manager/includes/class.configurate-assets.php:219
|
208 |
-
msgid "Reset"
|
209 |
-
msgstr "Сбросить"
|
210 |
-
|
211 |
-
#: assets-manager/includes/class.configurate-assets.php:220
|
212 |
-
msgid "Save"
|
213 |
-
msgstr "Сохранить"
|
214 |
-
|
215 |
-
#: assets-manager/includes/class.configurate-assets.php:221
|
216 |
-
msgid ""
|
217 |
-
"In test mode, you can experiment with disabling unused scripts safely for "
|
218 |
-
"your site. The resources that you disabled will be visible only to you (the "
|
219 |
-
"administrator), and all other users will receive an unoptimized version of "
|
220 |
-
"the site, until you remove this tick"
|
221 |
-
msgstr ""
|
222 |
-
"В тестовом режиме можно поэкспериментировать с отключением неиспользуемых "
|
223 |
-
"скриптов безопасно для вашего сайта. Отключенные ресурсы будут видны только "
|
224 |
-
"вам (администратору), и все остальные пользователи получат "
|
225 |
-
"неоптимизированную версию сайта, пока вы не снимите галочку с этого элемента."
|
226 |
-
|
227 |
-
#: assets-manager/includes/class.configurate-assets.php:222
|
228 |
-
msgid "Safe mode <b>PRO</b>"
|
229 |
-
msgstr "Безопасный режим <b>PRO</b>"
|
230 |
-
|
231 |
-
#: assets-manager/includes/class.configurate-assets.php:224
|
232 |
-
msgid "Close"
|
233 |
-
msgstr "Закрыть"
|
234 |
-
|
235 |
-
#: assets-manager/includes/class.configurate-assets.php:254
|
236 |
-
msgid ""
|
237 |
-
"Important! Each page of your website has different sets of scripts and "
|
238 |
-
"styles files."
|
239 |
-
msgstr ""
|
240 |
-
"Важно! На каждой странице вашего сайта подключаются разные наборы файлов "
|
241 |
-
"скриптов и стилей. "
|
242 |
-
|
243 |
-
#: assets-manager/includes/class.configurate-assets.php:255
|
244 |
-
msgid ""
|
245 |
-
"Use this feature to disable unwanted scripts and styles by setting up the "
|
246 |
-
"logic for different types of pages. We recommend working in \"Safe mode\" "
|
247 |
-
"because disabling any necessary system script file can corrupt the website. "
|
248 |
-
"All changes done in Safe mode are available for administrator only. This way "
|
249 |
-
"only you, as the administrator, can see the result of optimization. To "
|
250 |
-
"enable the changes for other users, uncheck Safe mode."
|
251 |
-
msgstr ""
|
252 |
-
"Используйте этот инструмент для отключения неиспользуемых скриптов и стилей, "
|
253 |
-
"устанавливая логику для разных типов страниц. Мы рекомендуем вам работать в "
|
254 |
-
"“Безопасном режиме”, так как вы можете нарушить работу сайта, если отключите "
|
255 |
-
"системные файлы скриптов, без которых невозможна полноценная работа сайта. В "
|
256 |
-
"безопасном режиме, все ваши изменения будут работать только для "
|
257 |
-
"администратора, это необходимо для того, чтобы только вы могли увидеть "
|
258 |
-
"результат оптимизации. Чтобы изменения вступили в силу для всех остальных "
|
259 |
-
"пользователей, просто снимите галочку “Безопасный режим”. "
|
260 |
-
|
261 |
-
#: assets-manager/includes/class.configurate-assets.php:256
|
262 |
-
#, php-format
|
263 |
-
msgid ""
|
264 |
-
"For more details and user guides, check the plugin’s <a href=\"%s\" target="
|
265 |
-
"\"_blank\" rel=\"noreferrer noopener\">documentation</a>."
|
266 |
-
msgstr ""
|
267 |
-
"Более подробную информацию о работе с плагином можно найти в нашей <a href="
|
268 |
-
"\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">документации</a>."
|
269 |
-
|
270 |
-
#: assets-manager/includes/class.configurate-assets.php:259
|
271 |
-
msgid "Upgrade to Premium"
|
272 |
-
msgstr "Обновить до премиум"
|
273 |
-
|
274 |
-
#: assets-manager/includes/class.configurate-assets.php:262
|
275 |
-
msgid "MORE IN CLEARFY BUSINESS"
|
276 |
-
msgstr "БОЛЬШЕ В CLEARFY БИЗНЕС"
|
277 |
-
|
278 |
-
#: assets-manager/includes/class.configurate-assets.php:263
|
279 |
-
msgid "Disable plugins (groups of scripts)"
|
280 |
-
msgstr "Отключить плагины (группы скриптов)"
|
281 |
-
|
282 |
-
#: assets-manager/includes/class.configurate-assets.php:264
|
283 |
-
msgid "Conditions by the link template"
|
284 |
-
msgstr "Условия по шаблону ссылки"
|
285 |
-
|
286 |
-
#: assets-manager/includes/class.configurate-assets.php:265
|
287 |
-
msgid "Conditions by the regular expression"
|
288 |
-
msgstr "Условия по регулярному выражению"
|
289 |
-
|
290 |
-
#: assets-manager/includes/class.configurate-assets.php:267
|
291 |
-
msgid "Statistics and optimization results"
|
292 |
-
msgstr "Статистика и результаты оптимизации"
|
293 |
-
|
294 |
-
#: assets-manager/includes/class.configurate-assets.php:304
|
295 |
-
#: assets-manager/includes/class.configurate-assets.php:332
|
296 |
-
msgid "Loaded"
|
297 |
-
msgstr "Загружен"
|
298 |
-
|
299 |
-
#: assets-manager/includes/class.configurate-assets.php:305
|
300 |
-
msgid "Plugin"
|
301 |
-
msgstr "Плагин"
|
302 |
-
|
303 |
-
#: assets-manager/includes/class.configurate-assets.php:309
|
304 |
-
#: assets-manager/includes/class.configurate-assets.php:338
|
305 |
-
msgid "Load resource?"
|
306 |
-
msgstr "Загружать ресурс?"
|
307 |
-
|
308 |
-
#: assets-manager/includes/class.configurate-assets.php:310
|
309 |
-
#: assets-manager/includes/class.configurate-assets.php:339
|
310 |
-
msgid "Conditions"
|
311 |
-
msgstr "Условия"
|
312 |
-
|
313 |
-
#: assets-manager/includes/class.configurate-assets.php:318
|
314 |
-
msgid "Author"
|
315 |
-
msgstr "Автор"
|
316 |
-
|
317 |
-
#: assets-manager/includes/class.configurate-assets.php:319
|
318 |
-
#: assets-manager/includes/class.configurate-assets.php:398
|
319 |
-
msgid "Version"
|
320 |
-
msgstr "Версия"
|
321 |
-
|
322 |
-
#: assets-manager/includes/class.configurate-assets.php:333
|
323 |
-
msgid "Size"
|
324 |
-
msgstr "Размер"
|
325 |
-
|
326 |
-
#: assets-manager/includes/class.configurate-assets.php:334
|
327 |
-
msgid "Resource"
|
328 |
-
msgstr "Ресурс"
|
329 |
-
|
330 |
-
#: assets-manager/includes/class.configurate-assets.php:362
|
331 |
-
msgid "In use by"
|
332 |
-
msgstr "Используется "
|
333 |
-
|
334 |
-
#: assets-manager/includes/class.configurate-assets.php:369
|
335 |
-
msgid "Requires"
|
336 |
-
msgstr "Зависимости"
|
337 |
-
|
338 |
-
#: assets-manager/includes/class.configurate-assets.php:398
|
339 |
-
msgid "--"
|
340 |
-
msgstr ""
|
341 |
-
|
342 |
-
#: assets-manager/includes/class.configurate-assets.php:561
|
343 |
-
#: assets-manager/includes/class.configurate-assets.php:1406
|
344 |
-
msgid "No"
|
345 |
-
msgstr "Нет"
|
346 |
-
|
347 |
-
#: assets-manager/includes/class.configurate-assets.php:561
|
348 |
-
#: assets-manager/includes/class.configurate-assets.php:1406
|
349 |
-
msgid "Yes"
|
350 |
-
msgstr "Да"
|
351 |
-
|
352 |
-
#: assets-manager/includes/class.configurate-assets.php:577
|
353 |
-
msgid ""
|
354 |
-
"Click the switch in the <b>Load resource?</b> column to display the "
|
355 |
-
"conditions for loading the resource."
|
356 |
-
msgstr ""
|
357 |
-
"Щелкните переключатель в этой колонке <b>Загрузить ресурс?</b>, чтобы "
|
358 |
-
"отобразить условия для загрузки ресурса."
|
359 |
-
|
360 |
-
#: assets-manager/includes/class.configurate-assets.php:579
|
361 |
-
msgid ""
|
362 |
-
"Set the plugin logic to apply it to all plugin’s resources. This feature "
|
363 |
-
"available at the paid version."
|
364 |
-
msgstr ""
|
365 |
-
"Устанавливая логику для плагина, она будет примена для всех его ресурсов. "
|
366 |
-
"Данная возможность доступна только в платной версии плагина."
|
367 |
-
|
368 |
-
#: assets-manager/includes/class.configurate-assets.php:588
|
369 |
-
#: assets-manager/includes/class.configurate-assets.php:612
|
370 |
-
msgid "Current URL"
|
371 |
-
msgstr "Текущий URL"
|
372 |
-
|
373 |
-
#: assets-manager/includes/class.configurate-assets.php:589
|
374 |
-
msgid "Everywhere"
|
375 |
-
msgstr "Повсюду"
|
376 |
-
|
377 |
-
#: assets-manager/includes/class.configurate-assets.php:590
|
378 |
-
msgid "Custom URL (PRO)"
|
379 |
-
msgstr "Произвольная ссылка (PRO)"
|
380 |
-
|
381 |
-
#: assets-manager/includes/class.configurate-assets.php:591
|
382 |
-
msgid "Regular expression (PRO)"
|
383 |
-
msgstr "Регулярное выражение (PRO)"
|
384 |
-
|
385 |
-
#: assets-manager/includes/class.configurate-assets.php:601
|
386 |
-
msgid "Exclude"
|
387 |
-
msgstr "Исключить"
|
388 |
-
|
389 |
-
#: assets-manager/includes/class.configurate-assets.php:601
|
390 |
-
msgid ""
|
391 |
-
"You can disable this resource for all pages, except sections and page types "
|
392 |
-
"listed below. Specify sections and page types with the enabled resource."
|
393 |
-
msgstr ""
|
394 |
-
"Вы можете отключить этот ресурс на всех страницах вашего сайта, кроме "
|
395 |
-
"нижеперечисленных разделов и типов страниц. Отметьте разделы и типы страниц, "
|
396 |
-
"в которых вы не хотите отключать ресурс"
|
397 |
-
|
398 |
-
#: assets-manager/includes/class.configurate-assets.php:685
|
399 |
-
msgid ""
|
400 |
-
"You can disable the resource only for the pages with the matched to the "
|
401 |
-
"template address. For example, if you set the template for the link as "
|
402 |
-
"http://yoursite.test/profile/*, then the resource is disabled for the "
|
403 |
-
"following pages: http://yoursite.test/profile/12, http://yoursite.test/"
|
404 |
-
"profile/43, http://yoursite.test/profile/999. If you don’t use the asterisk "
|
405 |
-
"symbol in the template then the plugin will disable the resource only for "
|
406 |
-
"the pages with 100% match in the specified link type. This feature is "
|
407 |
-
"available at the paid version."
|
408 |
-
msgstr ""
|
409 |
-
"Вы можете отключить этот ресурс только на тех страницах, адрес которых будет "
|
410 |
-
"соответствовать установленному вами шаблону. К примеру, если вы установите "
|
411 |
-
"шаблон ссылки http://yoursite.test/profile/*, то ресурс будет отключен на "
|
412 |
-
"следующих страницах http://yoursite.test/profile/12, http://yoursite.test/"
|
413 |
-
"profile/43, http://yoursite.test/profile/999. Если вы не будете использовать "
|
414 |
-
"звездочку в вашем шаблоне, то плагин отключит ресурс, только на странице где "
|
415 |
-
"будет точное совпадение с установленной вами ссылкой. Эта функция доступна "
|
416 |
-
"только в платной версии плагина."
|
417 |
-
|
418 |
-
#: assets-manager/includes/class.configurate-assets.php:698
|
419 |
-
msgid ""
|
420 |
-
"Regular expressions can be used by experts. This tool creates flexible "
|
421 |
-
"conditions to disable the resource. For example, if you specify this "
|
422 |
-
"expression: ^([A-z0-9]+-)?gifts? then the resource will be disabled at the "
|
423 |
-
"following pages http://yoursite.test/get-gift/, http://yoursite.test/gift/, "
|
424 |
-
"http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. The plugin "
|
425 |
-
"ignores the backslash at the beginning of the query string, so you can "
|
426 |
-
"dismiss it. Check your regular expressions in here: https://regex101.com, "
|
427 |
-
"this will prevent you from the mistakes. This feature is available at the "
|
428 |
-
"paid version."
|
429 |
-
msgstr ""
|
430 |
-
"Регулярные выражения используются экспертами. С помощью этого инструмента вы "
|
431 |
-
"можете создать более гибкие условия для отключения ресурса. К примеру, если "
|
432 |
-
"вы установите такое выражение: ^([A-z0-9]+-)?gifts?, то ресурс будет "
|
433 |
-
"отключен на страницах http://yoursite.test/get-gift/, http://yoursite.test/"
|
434 |
-
"gift/, http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. Плагин "
|
435 |
-
"игнорирует обратный слеш в начале строки запроса, поэтому вы можете его "
|
436 |
-
"пропустить. Проверяйте свое регулярное выражение с помощью сервиса https://"
|
437 |
-
"regex101.com, чтобы вы были точно уверены, что в вашем регулярном выражении "
|
438 |
-
"нет ошибки. Эта функция доступна только в платной версии плагина."
|
439 |
-
|
440 |
-
#: assets-manager/includes/class.configurate-assets.php:718
|
441 |
-
msgid "Also disabled for pages"
|
442 |
-
msgstr "Также отключен для страниц"
|
443 |
-
|
444 |
-
#: assets-manager/includes/class.configurate-assets.php:1293
|
445 |
-
msgid "Minify and Combine"
|
446 |
-
msgstr "Минификация"
|
447 |
-
|
448 |
-
#: assets-manager/includes/class.configurate-assets.php:1315
|
449 |
-
msgid "remove version?"
|
450 |
-
msgstr "Удалить версию?"
|
451 |
-
|
452 |
-
#: assets-manager/includes/class.configurate-assets.php:1315
|
453 |
-
msgid "optimize?"
|
454 |
-
msgstr "оптимизировать?"
|
455 |
-
|
456 |
-
#: assets-manager/includes/class.configurate-assets.php:1319
|
457 |
-
msgid ""
|
458 |
-
"You’ve enabled "Remove query strings" from static resources in the "
|
459 |
-
""Clearfy" plugin. This list of settings helps you to exclude the "
|
460 |
-
"necessary scripts and styles with remaining query strings. Press No to add a "
|
461 |
-
"file to the excluded list."
|
462 |
-
msgstr ""
|
463 |
-
"Вы включили опцию "Удалить переменные запроса для статических "
|
464 |
-
"ресурсов" в плагине "Clearfy", в этой колонке настроек вы можете "
|
465 |
-
"исключить скрипты и стили, для которых вы хотите оставить переменые запроса. "
|
466 |
-
"Просто выберите \"Нет\", чтобы добавить файл в исключения.."
|
467 |
-
|
468 |
-
#: assets-manager/includes/class.configurate-assets.php:1321
|
469 |
-
msgid ""
|
470 |
-
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
471 |
-
"options" in the "Minify & Combine plugin". These settings "
|
472 |
-
"exclude scripts and styles that you don’t want to optimize. Press No to add "
|
473 |
-
"a file to the excluded list."
|
474 |
-
msgstr ""
|
475 |
-
"Вы включили опцию "Оптимизировать js скрипты?" и "Оптимизировать "
|
476 |
-
"css" в плагине "Сжатие и Объединения". С помощью этой колонки "
|
477 |
-
"настроек, вы можете исключить скрипты и стили, которые вы не хотите "
|
478 |
-
"оптимизировать. Чтобы добавить файл в исключения просто нажмите кнопку \"Нет"
|
479 |
-
"\"."
|
480 |
-
|
481 |
-
#: assets-manager/includes/class.configurate-assets.php:1323
|
482 |
-
msgid ""
|
483 |
-
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
484 |
-
"options" in the "Autoptimize". These settings exclude scripts "
|
485 |
-
"and styles that you don’t want to optimize. Press No to add a file to the "
|
486 |
-
"excluded list."
|
487 |
-
msgstr ""
|
488 |
-
"Вы включили опцию "Оптимизировать js скрипты?" и "Оптимизировать "
|
489 |
-
"css" в плагине "Autoptimize". С помощью этой колонки настроек, "
|
490 |
-
"вы можете исключить скрипты и стили, которые вы не хотите оптимизировать. "
|
491 |
-
"Чтобы добавить файл в исключения просто нажмите кнопку \"Нет\"."
|
492 |
-
|
493 |
-
#~ msgid ""
|
494 |
-
#~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
|
495 |
-
#~ "this plugin already has the same functions as \"Assets manager\", so you "
|
496 |
-
#~ "can disable the \"Assets manager\" plugin!"
|
497 |
-
#~ msgstr ""
|
498 |
-
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
499 |
-
#~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
|
500 |
-
#~ "можете деактивировать плагин \"Менеджер скриптов\"!"
|
501 |
-
|
502 |
-
#~ msgid ""
|
503 |
-
#~ "Below you can disable/enable CSS and JS files on a per page/post basis, "
|
504 |
-
#~ "as well as by custom post types. We recommend testing this locally or on "
|
505 |
-
#~ "a staging site first, as you could break the appearance of your live "
|
506 |
-
#~ "site. If you aren't sure about a certain script, you can try clicking on "
|
507 |
-
#~ "it, as a lot of authors will mention their plugin or theme in the header "
|
508 |
-
#~ "of the source code."
|
509 |
-
#~ msgstr ""
|
510 |
-
#~ "Ниже вы можете включить/отключить использование CSS и JS файлов в "
|
511 |
-
#~ "записях, произвольных типах записей или страницах. Мы рекомендуем вам "
|
512 |
-
#~ "эксперементировать со скриптами на локальном хостинге или тестом сайте, "
|
513 |
-
#~ "так как вы можете нарушить работу сайта, если отключите системные файлы "
|
514 |
-
#~ "скриптов, без которых невозможна полноценная работа сайта. Если вы не "
|
515 |
-
#~ "уверены, для чего используется тот или иной файл, попробуйте нажать на "
|
516 |
-
#~ "ссылку под его заголовком, в открывшемся файле вы можете увидеть "
|
517 |
-
#~ "комментарий разработчика с ссылкой на описание плагина. Получив "
|
518 |
-
#~ "достаточную информацию о функциях плагина, вы сможете более уверенно "
|
519 |
-
#~ "включать или отключать его стили и скрипты."
|
520 |
-
|
521 |
-
#~ msgid ""
|
522 |
-
#~ "If for some reason you run into trouble, you can always enable everything "
|
523 |
-
#~ "again to reset the settings."
|
524 |
-
#~ msgstr ""
|
525 |
-
#~ "Если по какой-то причине вы столкнулись с проблемами, вы всегда можете "
|
526 |
-
#~ "включить все опции, чтобы сбросить настройки."
|
527 |
-
|
528 |
-
#~ msgid "Save settings"
|
529 |
-
#~ msgstr "Сохранить"
|
530 |
-
|
531 |
-
#~ msgid "Hide panel in adminbar?"
|
532 |
-
#~ msgstr "Скрыть панель из админбара?"
|
533 |
-
|
534 |
-
#~ msgid "State"
|
535 |
-
#~ msgstr "Состояние"
|
536 |
-
|
537 |
-
#~ msgid "Script"
|
538 |
-
#~ msgstr "Скрипт"
|
539 |
-
|
540 |
-
#~ msgid "In use"
|
541 |
-
#~ msgstr "Используется"
|
542 |
-
|
543 |
-
#~ msgid "Disable"
|
544 |
-
#~ msgstr "Отключить"
|
545 |
-
|
546 |
-
#~ msgid "Enable"
|
547 |
-
#~ msgstr "Включить"
|
548 |
-
|
549 |
-
#~ msgid "Enabled"
|
550 |
-
#~ msgstr "Включить"
|
551 |
-
|
552 |
-
#~ msgid "Disable everwhere to view enable settings."
|
553 |
-
#~ msgstr ""
|
554 |
-
#~ "Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
|
555 |
-
|
556 |
-
#~ msgid ""
|
557 |
-
#~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
|
558 |
-
#~ "this plugin already has the same functions as \"WP Asset CleanUp\", so "
|
559 |
-
#~ "you can disable the \"WP Asset CleanUp\" plugin!"
|
560 |
-
#~ msgstr ""
|
561 |
-
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
562 |
-
#~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
|
563 |
-
#~ "можете деактивировать плагин \"WP Asset CleanUp\"!"
|
564 |
-
|
565 |
-
#~ msgid "Webcraftic Assets manager"
|
566 |
-
#~ msgstr "Webcraftic менеджер скриптов"
|
567 |
-
|
568 |
-
#~ msgid ""
|
569 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
570 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
571 |
-
#~ "deactivate plugin \"WP Asset CleanUp\"!"
|
572 |
-
#~ msgstr ""
|
573 |
-
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
574 |
-
#~ "features\", этот плагин"
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-10-16 15:56+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-10-19 22:37+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 2.1.1\n"
|
13 |
+
"X-Poedit-Basepath: ../..\n"
|
14 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
+
"X-Poedit-SearchPath-0: assets-manager\n"
|
19 |
+
"X-Poedit-SearchPath-1: assets-manager-premium\n"
|
20 |
+
"X-Poedit-SearchPathExcluded-0: assets-manager/libs\n"
|
21 |
+
|
22 |
+
#: assets-manager-premium/admin/boot.php:46
|
23 |
+
msgid ""
|
24 |
+
"<strong>Assets manager Premium</strong><br>We did not find the installed "
|
25 |
+
"plugin \"Assets manager\". Please install the plugin \"Assets manager\" "
|
26 |
+
"first for premium functions!"
|
27 |
+
msgstr ""
|
28 |
+
"<strong>Менеджер скриптов премиум</strong><br> Мы не нашли установленный "
|
29 |
+
"копонент \"Менеджер скриптов\". Пожалуйста, установите копонент \"Менеджер "
|
30 |
+
"скриптов\" в первую очередь для премиум-функций!"
|
31 |
+
|
32 |
+
#: assets-manager-premium/assets-manager-premium.php:63
|
33 |
+
msgid "Webcraftic assets manager Premium"
|
34 |
+
msgstr "Webcraftic менеджер скриптов премиум"
|
35 |
+
|
36 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:92
|
37 |
+
#: assets-manager/includes/class.configurate-assets.php:204
|
38 |
+
#: assets-manager/includes/class.configurate-assets.php:208
|
39 |
+
msgid "Total requests"
|
40 |
+
msgstr "Всего запросов"
|
41 |
+
|
42 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:93
|
43 |
+
#: assets-manager/includes/class.configurate-assets.php:205
|
44 |
+
msgid "Total size"
|
45 |
+
msgstr "Общий вес"
|
46 |
+
|
47 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:94
|
48 |
+
#: assets-manager/includes/class.configurate-assets.php:206
|
49 |
+
msgid "Optimized size"
|
50 |
+
msgstr "Оптим. вес"
|
51 |
+
|
52 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:95
|
53 |
+
#: assets-manager/includes/class.configurate-assets.php:212
|
54 |
+
msgid "Disabled js"
|
55 |
+
msgstr "Отключено js"
|
56 |
+
|
57 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:96
|
58 |
+
#: assets-manager/includes/class.configurate-assets.php:213
|
59 |
+
msgid "Disabled css"
|
60 |
+
msgstr "Отключено css"
|
61 |
+
|
62 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:119
|
63 |
+
#: assets-manager/includes/class.configurate-assets.php:266
|
64 |
+
msgid "Safe mode"
|
65 |
+
msgstr "Безопасный режим"
|
66 |
+
|
67 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:300
|
68 |
+
#: assets-manager/includes/class.configurate-assets.php:685
|
69 |
+
msgid "Example"
|
70 |
+
msgstr "Пример"
|
71 |
+
|
72 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:300
|
73 |
+
#: assets-manager/includes/class.configurate-assets.php:685
|
74 |
+
msgid "Enter URL (set * for mask)"
|
75 |
+
msgstr "Введите URL (добавьте * для маски)"
|
76 |
+
|
77 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:308
|
78 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:316
|
79 |
+
#: assets-manager/includes/class.configurate-assets.php:688
|
80 |
+
msgid "Add field"
|
81 |
+
msgstr "Добавить"
|
82 |
+
|
83 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:327
|
84 |
+
#: assets-manager/includes/class.configurate-assets.php:698
|
85 |
+
msgid "Enter regular expression"
|
86 |
+
msgstr "Введите регулярное выражение"
|
87 |
+
|
88 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:532
|
89 |
+
msgid "Custom URL"
|
90 |
+
msgstr "Произвольный URL"
|
91 |
+
|
92 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:533
|
93 |
+
msgid "Regular expression"
|
94 |
+
msgstr "Регулярное выражение"
|
95 |
+
|
96 |
+
#: assets-manager-premium/includes/class.configurate-assets.php:595
|
97 |
+
msgid "Set the plugin logic to apply it to all plugin’s resources."
|
98 |
+
msgstr ""
|
99 |
+
"Установите логику плагина, чтобы применить его ко всем ресурсам плагина."
|
100 |
+
|
101 |
+
#: assets-manager/admin/boot.php:48
|
102 |
+
#: assets-manager/admin/pages/assets-manager.php:89
|
103 |
+
msgid "Disable assets manager"
|
104 |
+
msgstr "Отключить менеджер скриптов"
|
105 |
+
|
106 |
+
#: assets-manager/admin/boot.php:55
|
107 |
+
#: assets-manager/admin/pages/assets-manager.php:113
|
108 |
+
msgid "Disable assets manager panel"
|
109 |
+
msgstr "Скрыть панель в админбаре"
|
110 |
+
|
111 |
+
#: assets-manager/admin/boot.php:61
|
112 |
+
#: assets-manager/admin/pages/assets-manager.php:122
|
113 |
+
msgid "Disable assets manager on front"
|
114 |
+
msgstr "Отключить менеджер скриптов на внешней стороне сайта"
|
115 |
+
|
116 |
+
#: assets-manager/admin/boot.php:67
|
117 |
+
#: assets-manager/admin/pages/assets-manager.php:131
|
118 |
+
msgid "Disable assets manager on back-end"
|
119 |
+
msgstr "Отключить менеджер скриптов в админпанели"
|
120 |
+
|
121 |
+
#: assets-manager/admin/boot.php:73
|
122 |
+
msgid "Assets manager options"
|
123 |
+
msgstr "Настройки менеджера скриптов"
|
124 |
+
|
125 |
+
#: assets-manager/admin/boot.php:86
|
126 |
+
msgid "Get ultimate plugin free"
|
127 |
+
msgstr "Получите полную версию плагина бесплатно"
|
128 |
+
|
129 |
+
#: assets-manager/admin/pages/assets-manager.php:48
|
130 |
+
#: assets-manager/admin/pages/assets-manager.php:67
|
131 |
+
msgid "Assets manager"
|
132 |
+
msgstr "Менеджер скриптов"
|
133 |
+
|
134 |
+
#: assets-manager/admin/pages/assets-manager.php:68
|
135 |
+
msgid "General"
|
136 |
+
msgstr "Основные"
|
137 |
+
|
138 |
+
#: assets-manager/admin/pages/assets-manager.php:82
|
139 |
+
msgid "Disable unused scripts, styles, and fonts"
|
140 |
+
msgstr "Отключите неиспользуемые скрипты, стили и шрифты"
|
141 |
+
|
142 |
+
#: assets-manager/admin/pages/assets-manager.php:82
|
143 |
+
msgid ""
|
144 |
+
"There is a button in the adminbar called \"Script Manager\". If you click on "
|
145 |
+
"it you will see a list of loaded scripts, styles and fonts on the current "
|
146 |
+
"page of your site. If you think that one of the assets is superfluous on "
|
147 |
+
"this page, you can disable it individually, so that it does not create "
|
148 |
+
"unnecessary queries when page loading. Use the script manager very carefull "
|
149 |
+
"to non-corrupt your website. We recommend to test this function at a local "
|
150 |
+
"server."
|
151 |
+
msgstr ""
|
152 |
+
"В админбаре есть кнопка под названием “Менеджер скриптов”, если на нее "
|
153 |
+
"нажать вы увидите список загружаемых скриптов, стилей и шрифтов на текущей "
|
154 |
+
"странице вашего сайта. Если вы считаете, что какой-то из ресурсов лишний на "
|
155 |
+
"этой странице, вы можете индивидуально его отключить, чтобы он не создавал "
|
156 |
+
"лишних запросов при загрузке. Используйте менеджер скриптов аккуратно, чтобы "
|
157 |
+
"не нарушить работу вашего сайта. Мы рекомендуем вам использовать локальный "
|
158 |
+
"сервер для тестирования этой функции."
|
159 |
+
|
160 |
+
#: assets-manager/admin/pages/assets-manager.php:91
|
161 |
+
msgid "Full disable of the module."
|
162 |
+
msgstr "Полностью отключает работу модуля."
|
163 |
+
|
164 |
+
#: assets-manager/admin/pages/assets-manager.php:115
|
165 |
+
msgid ""
|
166 |
+
"By default in your admin bar there is a button for control the assets "
|
167 |
+
"scripts and styles. With this option, you can turn off the script manager on "
|
168 |
+
"front and back-end."
|
169 |
+
msgstr ""
|
170 |
+
"По умолчанию в панели администратора есть кнопка для управления подключамыми "
|
171 |
+
"скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
|
172 |
+
"админбара, чтобы она не занимала место."
|
173 |
+
|
174 |
+
#: assets-manager/admin/pages/assets-manager.php:124
|
175 |
+
msgid "Disables assets manager initialization for frontend."
|
176 |
+
msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
|
177 |
+
|
178 |
+
#: assets-manager/admin/pages/assets-manager.php:133
|
179 |
+
msgid "Disables assets manager initialization for backend."
|
180 |
+
msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
|
181 |
+
|
182 |
+
#: assets-manager/gonzales.php:63
|
183 |
+
msgid "Webcraftic assets manager"
|
184 |
+
msgstr "Webcraftic менеджер скриптов"
|
185 |
+
|
186 |
+
#: assets-manager/includes/class.configurate-assets.php:121
|
187 |
+
#: assets-manager/includes/class.configurate-assets.php:141
|
188 |
+
msgid "Script Manager"
|
189 |
+
msgstr "Менеджер скриптов"
|
190 |
+
|
191 |
+
#: assets-manager/includes/class.configurate-assets.php:208
|
192 |
+
msgid "Total weight"
|
193 |
+
msgstr "Общий вес"
|
194 |
+
|
195 |
+
#: assets-manager/includes/class.configurate-assets.php:208
|
196 |
+
msgid "Optimized weight"
|
197 |
+
msgstr "Оптим. вес"
|
198 |
+
|
199 |
+
#: assets-manager/includes/class.configurate-assets.php:215
|
200 |
+
msgid ""
|
201 |
+
"This is the general statistics to see the optimization result. Available in "
|
202 |
+
"the paid version only."
|
203 |
+
msgstr ""
|
204 |
+
"Это общая статистика, чтобы увидеть результат оптимизации. Доступно только в "
|
205 |
+
"платной версии."
|
206 |
+
|
207 |
+
#: assets-manager/includes/class.configurate-assets.php:219
|
208 |
+
msgid "Reset"
|
209 |
+
msgstr "Сбросить"
|
210 |
+
|
211 |
+
#: assets-manager/includes/class.configurate-assets.php:220
|
212 |
+
msgid "Save"
|
213 |
+
msgstr "Сохранить"
|
214 |
+
|
215 |
+
#: assets-manager/includes/class.configurate-assets.php:221
|
216 |
+
msgid ""
|
217 |
+
"In test mode, you can experiment with disabling unused scripts safely for "
|
218 |
+
"your site. The resources that you disabled will be visible only to you (the "
|
219 |
+
"administrator), and all other users will receive an unoptimized version of "
|
220 |
+
"the site, until you remove this tick"
|
221 |
+
msgstr ""
|
222 |
+
"В тестовом режиме можно поэкспериментировать с отключением неиспользуемых "
|
223 |
+
"скриптов безопасно для вашего сайта. Отключенные ресурсы будут видны только "
|
224 |
+
"вам (администратору), и все остальные пользователи получат "
|
225 |
+
"неоптимизированную версию сайта, пока вы не снимите галочку с этого элемента."
|
226 |
+
|
227 |
+
#: assets-manager/includes/class.configurate-assets.php:222
|
228 |
+
msgid "Safe mode <b>PRO</b>"
|
229 |
+
msgstr "Безопасный режим <b>PRO</b>"
|
230 |
+
|
231 |
+
#: assets-manager/includes/class.configurate-assets.php:224
|
232 |
+
msgid "Close"
|
233 |
+
msgstr "Закрыть"
|
234 |
+
|
235 |
+
#: assets-manager/includes/class.configurate-assets.php:254
|
236 |
+
msgid ""
|
237 |
+
"Important! Each page of your website has different sets of scripts and "
|
238 |
+
"styles files."
|
239 |
+
msgstr ""
|
240 |
+
"Важно! На каждой странице вашего сайта подключаются разные наборы файлов "
|
241 |
+
"скриптов и стилей. "
|
242 |
+
|
243 |
+
#: assets-manager/includes/class.configurate-assets.php:255
|
244 |
+
msgid ""
|
245 |
+
"Use this feature to disable unwanted scripts and styles by setting up the "
|
246 |
+
"logic for different types of pages. We recommend working in \"Safe mode\" "
|
247 |
+
"because disabling any necessary system script file can corrupt the website. "
|
248 |
+
"All changes done in Safe mode are available for administrator only. This way "
|
249 |
+
"only you, as the administrator, can see the result of optimization. To "
|
250 |
+
"enable the changes for other users, uncheck Safe mode."
|
251 |
+
msgstr ""
|
252 |
+
"Используйте этот инструмент для отключения неиспользуемых скриптов и стилей, "
|
253 |
+
"устанавливая логику для разных типов страниц. Мы рекомендуем вам работать в "
|
254 |
+
"“Безопасном режиме”, так как вы можете нарушить работу сайта, если отключите "
|
255 |
+
"системные файлы скриптов, без которых невозможна полноценная работа сайта. В "
|
256 |
+
"безопасном режиме, все ваши изменения будут работать только для "
|
257 |
+
"администратора, это необходимо для того, чтобы только вы могли увидеть "
|
258 |
+
"результат оптимизации. Чтобы изменения вступили в силу для всех остальных "
|
259 |
+
"пользователей, просто снимите галочку “Безопасный режим”. "
|
260 |
+
|
261 |
+
#: assets-manager/includes/class.configurate-assets.php:256
|
262 |
+
#, php-format
|
263 |
+
msgid ""
|
264 |
+
"For more details and user guides, check the plugin’s <a href=\"%s\" target="
|
265 |
+
"\"_blank\" rel=\"noreferrer noopener\">documentation</a>."
|
266 |
+
msgstr ""
|
267 |
+
"Более подробную информацию о работе с плагином можно найти в нашей <a href="
|
268 |
+
"\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">документации</a>."
|
269 |
+
|
270 |
+
#: assets-manager/includes/class.configurate-assets.php:259
|
271 |
+
msgid "Upgrade to Premium"
|
272 |
+
msgstr "Обновить до премиум"
|
273 |
+
|
274 |
+
#: assets-manager/includes/class.configurate-assets.php:262
|
275 |
+
msgid "MORE IN CLEARFY BUSINESS"
|
276 |
+
msgstr "БОЛЬШЕ В CLEARFY БИЗНЕС"
|
277 |
+
|
278 |
+
#: assets-manager/includes/class.configurate-assets.php:263
|
279 |
+
msgid "Disable plugins (groups of scripts)"
|
280 |
+
msgstr "Отключить плагины (группы скриптов)"
|
281 |
+
|
282 |
+
#: assets-manager/includes/class.configurate-assets.php:264
|
283 |
+
msgid "Conditions by the link template"
|
284 |
+
msgstr "Условия по шаблону ссылки"
|
285 |
+
|
286 |
+
#: assets-manager/includes/class.configurate-assets.php:265
|
287 |
+
msgid "Conditions by the regular expression"
|
288 |
+
msgstr "Условия по регулярному выражению"
|
289 |
+
|
290 |
+
#: assets-manager/includes/class.configurate-assets.php:267
|
291 |
+
msgid "Statistics and optimization results"
|
292 |
+
msgstr "Статистика и результаты оптимизации"
|
293 |
+
|
294 |
+
#: assets-manager/includes/class.configurate-assets.php:304
|
295 |
+
#: assets-manager/includes/class.configurate-assets.php:332
|
296 |
+
msgid "Loaded"
|
297 |
+
msgstr "Загружен"
|
298 |
+
|
299 |
+
#: assets-manager/includes/class.configurate-assets.php:305
|
300 |
+
msgid "Plugin"
|
301 |
+
msgstr "Плагин"
|
302 |
+
|
303 |
+
#: assets-manager/includes/class.configurate-assets.php:309
|
304 |
+
#: assets-manager/includes/class.configurate-assets.php:338
|
305 |
+
msgid "Load resource?"
|
306 |
+
msgstr "Загружать ресурс?"
|
307 |
+
|
308 |
+
#: assets-manager/includes/class.configurate-assets.php:310
|
309 |
+
#: assets-manager/includes/class.configurate-assets.php:339
|
310 |
+
msgid "Conditions"
|
311 |
+
msgstr "Условия"
|
312 |
+
|
313 |
+
#: assets-manager/includes/class.configurate-assets.php:318
|
314 |
+
msgid "Author"
|
315 |
+
msgstr "Автор"
|
316 |
+
|
317 |
+
#: assets-manager/includes/class.configurate-assets.php:319
|
318 |
+
#: assets-manager/includes/class.configurate-assets.php:398
|
319 |
+
msgid "Version"
|
320 |
+
msgstr "Версия"
|
321 |
+
|
322 |
+
#: assets-manager/includes/class.configurate-assets.php:333
|
323 |
+
msgid "Size"
|
324 |
+
msgstr "Размер"
|
325 |
+
|
326 |
+
#: assets-manager/includes/class.configurate-assets.php:334
|
327 |
+
msgid "Resource"
|
328 |
+
msgstr "Ресурс"
|
329 |
+
|
330 |
+
#: assets-manager/includes/class.configurate-assets.php:362
|
331 |
+
msgid "In use by"
|
332 |
+
msgstr "Используется "
|
333 |
+
|
334 |
+
#: assets-manager/includes/class.configurate-assets.php:369
|
335 |
+
msgid "Requires"
|
336 |
+
msgstr "Зависимости"
|
337 |
+
|
338 |
+
#: assets-manager/includes/class.configurate-assets.php:398
|
339 |
+
msgid "--"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: assets-manager/includes/class.configurate-assets.php:561
|
343 |
+
#: assets-manager/includes/class.configurate-assets.php:1406
|
344 |
+
msgid "No"
|
345 |
+
msgstr "Нет"
|
346 |
+
|
347 |
+
#: assets-manager/includes/class.configurate-assets.php:561
|
348 |
+
#: assets-manager/includes/class.configurate-assets.php:1406
|
349 |
+
msgid "Yes"
|
350 |
+
msgstr "Да"
|
351 |
+
|
352 |
+
#: assets-manager/includes/class.configurate-assets.php:577
|
353 |
+
msgid ""
|
354 |
+
"Click the switch in the <b>Load resource?</b> column to display the "
|
355 |
+
"conditions for loading the resource."
|
356 |
+
msgstr ""
|
357 |
+
"Щелкните переключатель в этой колонке <b>Загрузить ресурс?</b>, чтобы "
|
358 |
+
"отобразить условия для загрузки ресурса."
|
359 |
+
|
360 |
+
#: assets-manager/includes/class.configurate-assets.php:579
|
361 |
+
msgid ""
|
362 |
+
"Set the plugin logic to apply it to all plugin’s resources. This feature "
|
363 |
+
"available at the paid version."
|
364 |
+
msgstr ""
|
365 |
+
"Устанавливая логику для плагина, она будет примена для всех его ресурсов. "
|
366 |
+
"Данная возможность доступна только в платной версии плагина."
|
367 |
+
|
368 |
+
#: assets-manager/includes/class.configurate-assets.php:588
|
369 |
+
#: assets-manager/includes/class.configurate-assets.php:612
|
370 |
+
msgid "Current URL"
|
371 |
+
msgstr "Текущий URL"
|
372 |
+
|
373 |
+
#: assets-manager/includes/class.configurate-assets.php:589
|
374 |
+
msgid "Everywhere"
|
375 |
+
msgstr "Повсюду"
|
376 |
+
|
377 |
+
#: assets-manager/includes/class.configurate-assets.php:590
|
378 |
+
msgid "Custom URL (PRO)"
|
379 |
+
msgstr "Произвольная ссылка (PRO)"
|
380 |
+
|
381 |
+
#: assets-manager/includes/class.configurate-assets.php:591
|
382 |
+
msgid "Regular expression (PRO)"
|
383 |
+
msgstr "Регулярное выражение (PRO)"
|
384 |
+
|
385 |
+
#: assets-manager/includes/class.configurate-assets.php:601
|
386 |
+
msgid "Exclude"
|
387 |
+
msgstr "Исключить"
|
388 |
+
|
389 |
+
#: assets-manager/includes/class.configurate-assets.php:601
|
390 |
+
msgid ""
|
391 |
+
"You can disable this resource for all pages, except sections and page types "
|
392 |
+
"listed below. Specify sections and page types with the enabled resource."
|
393 |
+
msgstr ""
|
394 |
+
"Вы можете отключить этот ресурс на всех страницах вашего сайта, кроме "
|
395 |
+
"нижеперечисленных разделов и типов страниц. Отметьте разделы и типы страниц, "
|
396 |
+
"в которых вы не хотите отключать ресурс"
|
397 |
+
|
398 |
+
#: assets-manager/includes/class.configurate-assets.php:685
|
399 |
+
msgid ""
|
400 |
+
"You can disable the resource only for the pages with the matched to the "
|
401 |
+
"template address. For example, if you set the template for the link as "
|
402 |
+
"http://yoursite.test/profile/*, then the resource is disabled for the "
|
403 |
+
"following pages: http://yoursite.test/profile/12, http://yoursite.test/"
|
404 |
+
"profile/43, http://yoursite.test/profile/999. If you don’t use the asterisk "
|
405 |
+
"symbol in the template then the plugin will disable the resource only for "
|
406 |
+
"the pages with 100% match in the specified link type. This feature is "
|
407 |
+
"available at the paid version."
|
408 |
+
msgstr ""
|
409 |
+
"Вы можете отключить этот ресурс только на тех страницах, адрес которых будет "
|
410 |
+
"соответствовать установленному вами шаблону. К примеру, если вы установите "
|
411 |
+
"шаблон ссылки http://yoursite.test/profile/*, то ресурс будет отключен на "
|
412 |
+
"следующих страницах http://yoursite.test/profile/12, http://yoursite.test/"
|
413 |
+
"profile/43, http://yoursite.test/profile/999. Если вы не будете использовать "
|
414 |
+
"звездочку в вашем шаблоне, то плагин отключит ресурс, только на странице где "
|
415 |
+
"будет точное совпадение с установленной вами ссылкой. Эта функция доступна "
|
416 |
+
"только в платной версии плагина."
|
417 |
+
|
418 |
+
#: assets-manager/includes/class.configurate-assets.php:698
|
419 |
+
msgid ""
|
420 |
+
"Regular expressions can be used by experts. This tool creates flexible "
|
421 |
+
"conditions to disable the resource. For example, if you specify this "
|
422 |
+
"expression: ^([A-z0-9]+-)?gifts? then the resource will be disabled at the "
|
423 |
+
"following pages http://yoursite.test/get-gift/, http://yoursite.test/gift/, "
|
424 |
+
"http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. The plugin "
|
425 |
+
"ignores the backslash at the beginning of the query string, so you can "
|
426 |
+
"dismiss it. Check your regular expressions in here: https://regex101.com, "
|
427 |
+
"this will prevent you from the mistakes. This feature is available at the "
|
428 |
+
"paid version."
|
429 |
+
msgstr ""
|
430 |
+
"Регулярные выражения используются экспертами. С помощью этого инструмента вы "
|
431 |
+
"можете создать более гибкие условия для отключения ресурса. К примеру, если "
|
432 |
+
"вы установите такое выражение: ^([A-z0-9]+-)?gifts?, то ресурс будет "
|
433 |
+
"отключен на страницах http://yoursite.test/get-gift/, http://yoursite.test/"
|
434 |
+
"gift/, http://yoursite.test/get-gifts/, http://yoursite.test/gifts/. Плагин "
|
435 |
+
"игнорирует обратный слеш в начале строки запроса, поэтому вы можете его "
|
436 |
+
"пропустить. Проверяйте свое регулярное выражение с помощью сервиса https://"
|
437 |
+
"regex101.com, чтобы вы были точно уверены, что в вашем регулярном выражении "
|
438 |
+
"нет ошибки. Эта функция доступна только в платной версии плагина."
|
439 |
+
|
440 |
+
#: assets-manager/includes/class.configurate-assets.php:718
|
441 |
+
msgid "Also disabled for pages"
|
442 |
+
msgstr "Также отключен для страниц"
|
443 |
+
|
444 |
+
#: assets-manager/includes/class.configurate-assets.php:1293
|
445 |
+
msgid "Minify and Combine"
|
446 |
+
msgstr "Минификация"
|
447 |
+
|
448 |
+
#: assets-manager/includes/class.configurate-assets.php:1315
|
449 |
+
msgid "remove version?"
|
450 |
+
msgstr "Удалить версию?"
|
451 |
+
|
452 |
+
#: assets-manager/includes/class.configurate-assets.php:1315
|
453 |
+
msgid "optimize?"
|
454 |
+
msgstr "оптимизировать?"
|
455 |
+
|
456 |
+
#: assets-manager/includes/class.configurate-assets.php:1319
|
457 |
+
msgid ""
|
458 |
+
"You’ve enabled "Remove query strings" from static resources in the "
|
459 |
+
""Clearfy" plugin. This list of settings helps you to exclude the "
|
460 |
+
"necessary scripts and styles with remaining query strings. Press No to add a "
|
461 |
+
"file to the excluded list."
|
462 |
+
msgstr ""
|
463 |
+
"Вы включили опцию "Удалить переменные запроса для статических "
|
464 |
+
"ресурсов" в плагине "Clearfy", в этой колонке настроек вы можете "
|
465 |
+
"исключить скрипты и стили, для которых вы хотите оставить переменые запроса. "
|
466 |
+
"Просто выберите \"Нет\", чтобы добавить файл в исключения.."
|
467 |
+
|
468 |
+
#: assets-manager/includes/class.configurate-assets.php:1321
|
469 |
+
msgid ""
|
470 |
+
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
471 |
+
"options" in the "Minify & Combine plugin". These settings "
|
472 |
+
"exclude scripts and styles that you don’t want to optimize. Press No to add "
|
473 |
+
"a file to the excluded list."
|
474 |
+
msgstr ""
|
475 |
+
"Вы включили опцию "Оптимизировать js скрипты?" и "Оптимизировать "
|
476 |
+
"css" в плагине "Сжатие и Объединения". С помощью этой колонки "
|
477 |
+
"настроек, вы можете исключить скрипты и стили, которые вы не хотите "
|
478 |
+
"оптимизировать. Чтобы добавить файл в исключения просто нажмите кнопку \"Нет"
|
479 |
+
"\"."
|
480 |
+
|
481 |
+
#: assets-manager/includes/class.configurate-assets.php:1323
|
482 |
+
msgid ""
|
483 |
+
"You’ve enabled the "Optimize js scripts?" and "Optimize CSS "
|
484 |
+
"options" in the "Autoptimize". These settings exclude scripts "
|
485 |
+
"and styles that you don’t want to optimize. Press No to add a file to the "
|
486 |
+
"excluded list."
|
487 |
+
msgstr ""
|
488 |
+
"Вы включили опцию "Оптимизировать js скрипты?" и "Оптимизировать "
|
489 |
+
"css" в плагине "Autoptimize". С помощью этой колонки настроек, "
|
490 |
+
"вы можете исключить скрипты и стили, которые вы не хотите оптимизировать. "
|
491 |
+
"Чтобы добавить файл в исключения просто нажмите кнопку \"Нет\"."
|
492 |
+
|
493 |
+
#~ msgid ""
|
494 |
+
#~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
|
495 |
+
#~ "this plugin already has the same functions as \"Assets manager\", so you "
|
496 |
+
#~ "can disable the \"Assets manager\" plugin!"
|
497 |
+
#~ msgstr ""
|
498 |
+
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
499 |
+
#~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
|
500 |
+
#~ "можете деактивировать плагин \"Менеджер скриптов\"!"
|
501 |
+
|
502 |
+
#~ msgid ""
|
503 |
+
#~ "Below you can disable/enable CSS and JS files on a per page/post basis, "
|
504 |
+
#~ "as well as by custom post types. We recommend testing this locally or on "
|
505 |
+
#~ "a staging site first, as you could break the appearance of your live "
|
506 |
+
#~ "site. If you aren't sure about a certain script, you can try clicking on "
|
507 |
+
#~ "it, as a lot of authors will mention their plugin or theme in the header "
|
508 |
+
#~ "of the source code."
|
509 |
+
#~ msgstr ""
|
510 |
+
#~ "Ниже вы можете включить/отключить использование CSS и JS файлов в "
|
511 |
+
#~ "записях, произвольных типах записей или страницах. Мы рекомендуем вам "
|
512 |
+
#~ "эксперементировать со скриптами на локальном хостинге или тестом сайте, "
|
513 |
+
#~ "так как вы можете нарушить работу сайта, если отключите системные файлы "
|
514 |
+
#~ "скриптов, без которых невозможна полноценная работа сайта. Если вы не "
|
515 |
+
#~ "уверены, для чего используется тот или иной файл, попробуйте нажать на "
|
516 |
+
#~ "ссылку под его заголовком, в открывшемся файле вы можете увидеть "
|
517 |
+
#~ "комментарий разработчика с ссылкой на описание плагина. Получив "
|
518 |
+
#~ "достаточную информацию о функциях плагина, вы сможете более уверенно "
|
519 |
+
#~ "включать или отключать его стили и скрипты."
|
520 |
+
|
521 |
+
#~ msgid ""
|
522 |
+
#~ "If for some reason you run into trouble, you can always enable everything "
|
523 |
+
#~ "again to reset the settings."
|
524 |
+
#~ msgstr ""
|
525 |
+
#~ "Если по какой-то причине вы столкнулись с проблемами, вы всегда можете "
|
526 |
+
#~ "включить все опции, чтобы сбросить настройки."
|
527 |
+
|
528 |
+
#~ msgid "Save settings"
|
529 |
+
#~ msgstr "Сохранить"
|
530 |
+
|
531 |
+
#~ msgid "Hide panel in adminbar?"
|
532 |
+
#~ msgstr "Скрыть панель из админбара?"
|
533 |
+
|
534 |
+
#~ msgid "State"
|
535 |
+
#~ msgstr "Состояние"
|
536 |
+
|
537 |
+
#~ msgid "Script"
|
538 |
+
#~ msgstr "Скрипт"
|
539 |
+
|
540 |
+
#~ msgid "In use"
|
541 |
+
#~ msgstr "Используется"
|
542 |
+
|
543 |
+
#~ msgid "Disable"
|
544 |
+
#~ msgstr "Отключить"
|
545 |
+
|
546 |
+
#~ msgid "Enable"
|
547 |
+
#~ msgstr "Включить"
|
548 |
+
|
549 |
+
#~ msgid "Enabled"
|
550 |
+
#~ msgstr "Включить"
|
551 |
+
|
552 |
+
#~ msgid "Disable everwhere to view enable settings."
|
553 |
+
#~ msgstr ""
|
554 |
+
#~ "Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
|
555 |
+
|
556 |
+
#~ msgid ""
|
557 |
+
#~ "We found that you use the plugin \"Clearfy - disable unused functions\", "
|
558 |
+
#~ "this plugin already has the same functions as \"WP Asset CleanUp\", so "
|
559 |
+
#~ "you can disable the \"WP Asset CleanUp\" plugin!"
|
560 |
+
#~ msgstr ""
|
561 |
+
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
562 |
+
#~ "features\", этот плагин включает функционал \"WP Asset CleanUp\", вы "
|
563 |
+
#~ "можете деактивировать плагин \"WP Asset CleanUp\"!"
|
564 |
+
|
565 |
+
#~ msgid "Webcraftic Assets manager"
|
566 |
+
#~ msgstr "Webcraftic менеджер скриптов"
|
567 |
+
|
568 |
+
#~ msgid ""
|
569 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
570 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
571 |
+
#~ "deactivate plugin \"WP Asset CleanUp\"!"
|
572 |
+
#~ msgstr ""
|
573 |
+
#~ "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused "
|
574 |
+
#~ "features\", этот плагин"
|
components/comments-plus/comments-plus.php
CHANGED
@@ -1,73 +1,80 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
-
define('WCM_PLUGIN_VERSION', '1.0.9');
|
20 |
|
21 |
-
define('WCM_PLUGIN_DIR', dirname(__FILE__));
|
22 |
-
define('WCM_PLUGIN_BASE', plugin_basename(__FILE__));
|
23 |
-
define('WCM_PLUGIN_URL', plugins_url(null, __FILE__));
|
24 |
|
25 |
-
|
|
|
|
|
|
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
'plugin_base' => WCM_PLUGIN_BASE,
|
49 |
-
'plugin_url' => WCM_PLUGIN_URL,
|
50 |
-
'required_php_version' => '5.3',
|
51 |
-
'required_wp_version' => '4.2.0',
|
52 |
-
'required_clearfy_check_component' => true
|
53 |
-
)));
|
54 |
|
55 |
-
|
56 |
-
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
57 |
-
* а пользователь получит предупреждение.
|
58 |
-
*/
|
59 |
-
if( !$compatibility->check() ) {
|
60 |
-
return;
|
61 |
-
}
|
62 |
|
63 |
-
|
|
|
|
|
64 |
|
65 |
-
|
66 |
-
require_once(WCM_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
67 |
-
}
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
new WCM_Plugin(__FILE__, $plugin_info);
|
73 |
-
}
|
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.9
|
8 |
+
* Text Domain: comments-plus
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
|
14 |
+
// Exit if accessed directly
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
+
if ( ! defined( 'WCM_PLUGIN_VERSION' ) ) {
|
19 |
+
define( 'WCM_PLUGIN_VERSION', '1.0.9' );
|
20 |
+
}
|
21 |
+
if ( ! defined( 'WCM_PLUGIN_DIR' ) ) {
|
22 |
+
define( 'WCM_PLUGIN_DIR', dirname( __FILE__ ) );
|
23 |
+
}
|
24 |
+
if ( ! defined( 'WCM_PLUGIN_BASE' ) ) {
|
25 |
+
define( 'WCM_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
26 |
+
}
|
27 |
+
if ( ! defined( 'WCM_PLUGIN_URL' ) ) {
|
28 |
+
define( 'WCM_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
29 |
+
}
|
30 |
|
|
|
31 |
|
|
|
|
|
|
|
32 |
|
33 |
+
if ( ! defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ) ) {
|
34 |
+
require_once( WCM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
35 |
+
require_once( WCM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
36 |
+
}
|
37 |
|
38 |
+
$plugin_info = array(
|
39 |
+
'prefix' => 'wbcr_comments_plus_', // wbcr_cmp
|
40 |
+
'plugin_name' => 'wbcr_comments_plus',
|
41 |
+
'plugin_title' => __( 'Webcraftic Disable comments', 'comments-plus' ),
|
42 |
+
'plugin_version' => WCM_PLUGIN_VERSION,
|
43 |
+
'plugin_build' => 'free',
|
44 |
+
//'updates' => WCM_PLUGIN_DIR . '/updates/'
|
45 |
+
);
|
46 |
|
47 |
+
/**
|
48 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
49 |
+
*/
|
50 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
51 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
52 |
+
'plugin_already_activate' => defined( 'WCM_PLUGIN_ACTIVE' ),
|
53 |
+
'plugin_as_component' => defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ),
|
54 |
+
'plugin_dir' => WCM_PLUGIN_DIR,
|
55 |
+
'plugin_base' => WCM_PLUGIN_BASE,
|
56 |
+
'plugin_url' => WCM_PLUGIN_URL,
|
57 |
+
'required_php_version' => '5.3',
|
58 |
+
'required_wp_version' => '4.2.0',
|
59 |
+
'required_clearfy_check_component' => true
|
60 |
+
) ) );
|
61 |
|
62 |
+
/**
|
63 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
64 |
+
* а пользователь получит предупреждение.
|
65 |
+
*/
|
66 |
+
if ( ! $compatibility->check() ) {
|
67 |
+
return;
|
68 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
+
define( 'WCM_PLUGIN_ACTIVE', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
+
if ( ! defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ) ) {
|
73 |
+
require_once( WCM_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
74 |
+
}
|
75 |
|
76 |
+
require_once( WCM_PLUGIN_DIR . '/includes/class.plugin.php' );
|
|
|
|
|
77 |
|
78 |
+
if ( ! defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ) ) {
|
79 |
+
new WCM_Plugin( __FILE__, $plugin_info );
|
80 |
+
}
|
|
|
|
components/comments-plus/languages/comments-plus-es_ES.mo
ADDED
Binary file
|
components/comments-plus/languages/comments-plus-es_ES.po
ADDED
@@ -0,0 +1,369 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:24+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:24+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:72
|
29 |
+
msgid "Disable comments on the entire site"
|
30 |
+
msgstr "Deshabilitar comentarios en todo el sitio"
|
31 |
+
|
32 |
+
#: admin/boot.php:78 admin/pages/comments.php:127
|
33 |
+
msgid "Select post types"
|
34 |
+
msgstr "Seleccionar tipos publicaciones"
|
35 |
+
|
36 |
+
#: admin/boot.php:83 admin/pages/comments.php:138
|
37 |
+
msgid "Custom post types"
|
38 |
+
msgstr "Custom post types"
|
39 |
+
|
40 |
+
#: admin/boot.php:88 admin/pages/comments.php:149
|
41 |
+
msgid "Use persistent mode"
|
42 |
+
msgstr "Usa el modo persistente"
|
43 |
+
|
44 |
+
#: admin/boot.php:93 admin/pages/comments.php:176
|
45 |
+
msgid "Replace external links in comments on the JavaScript code"
|
46 |
+
msgstr "Reemplazar enlaces externos decomentarios en el código JavaScript"
|
47 |
+
|
48 |
+
#: admin/boot.php:98 admin/pages/comments.php:185
|
49 |
+
msgid "Replace external links from comment authors on the JavaScript code"
|
50 |
+
msgstr ""
|
51 |
+
"Reemplace los enlaces externos de los autores en comentarios del código "
|
52 |
+
"JavaScript"
|
53 |
+
|
54 |
+
#: admin/boot.php:103 admin/pages/comments.php:167
|
55 |
+
msgid "Remove field \"site\" in comment form"
|
56 |
+
msgstr "Eliminar campo \"sitio \" en formulario de comentario"
|
57 |
+
|
58 |
+
#: admin/boot.php:115
|
59 |
+
msgid "One click disable all comments"
|
60 |
+
msgstr "Un clic deshabilita todos los comentarios"
|
61 |
+
|
62 |
+
#: admin/boot.php:136
|
63 |
+
msgid "Get ultimate plugin free"
|
64 |
+
msgstr "Obtener el ultimate plugin gratis"
|
65 |
+
|
66 |
+
#: admin/pages/comments.php:37 admin/pages/comments.php:91
|
67 |
+
msgid "Disable comments"
|
68 |
+
msgstr "Desactivar Comentarios"
|
69 |
+
|
70 |
+
#: admin/pages/comments.php:38
|
71 |
+
msgid "Manage site comments"
|
72 |
+
msgstr "Administrar los comentarios del sitio"
|
73 |
+
|
74 |
+
#: admin/pages/comments.php:51
|
75 |
+
msgid "Comments"
|
76 |
+
msgstr "Comentarios"
|
77 |
+
|
78 |
+
#: admin/pages/comments.php:51
|
79 |
+
msgid "General"
|
80 |
+
msgstr "General"
|
81 |
+
|
82 |
+
#: admin/pages/comments.php:66
|
83 |
+
msgid "Global disabling of comments"
|
84 |
+
msgstr "Deshabilitación global de comentarios."
|
85 |
+
|
86 |
+
#: admin/pages/comments.php:66
|
87 |
+
msgid ""
|
88 |
+
"What is the difference between these and native WordPress functions? "
|
89 |
+
"WordPress disables comments only for new posts! Using the functions below, "
|
90 |
+
"you can disable comments globally, even for old posts, and you can choose "
|
91 |
+
"which post types comments to disable. The plugin also disables the comment "
|
92 |
+
"functionality itself, which creates a certain load on the site."
|
93 |
+
msgstr ""
|
94 |
+
"¿Cuál es la diferencia entre estas y las funciones nativas de WordPress? "
|
95 |
+
"¡WordPress deshabilita comentarios solo para nuevas publicaciones! Al usar "
|
96 |
+
"las funciones a continuación, puede deshabilitar los comentarios "
|
97 |
+
"globalmente, incluso para las publicaciones anteriores, y puede elegir qué "
|
98 |
+
"tipo de comentarios deshabilitar. El plugin también desactiva la "
|
99 |
+
"funcionalidad de comentarios, lo que crea una cierta carga en el sitio."
|
100 |
+
|
101 |
+
#: admin/pages/comments.php:93
|
102 |
+
msgid "Not disable"
|
103 |
+
msgstr "No deshabilitar"
|
104 |
+
|
105 |
+
#: admin/pages/comments.php:96
|
106 |
+
msgid "Everywhere"
|
107 |
+
msgstr "Donde sea"
|
108 |
+
|
109 |
+
#: admin/pages/comments.php:97
|
110 |
+
#, php-format
|
111 |
+
msgid ""
|
112 |
+
"You can delete all comments in the database by clicking on this link (<a "
|
113 |
+
"href=\"%s\">cleaning comments in database</a>)."
|
114 |
+
msgstr ""
|
115 |
+
"Puede eliminar los comentarios en la base de datos haciendo clic en este "
|
116 |
+
"enlace (<a href=\"%s\">limpiando comentarios en la base de datos</a>)."
|
117 |
+
|
118 |
+
#: admin/pages/comments.php:101
|
119 |
+
msgid "On certain post types"
|
120 |
+
msgstr "Para ciertos tipos de correos"
|
121 |
+
|
122 |
+
#: admin/pages/comments.php:102
|
123 |
+
#, php-format
|
124 |
+
msgid ""
|
125 |
+
"You can delete all comments for the selected post types. Select the post "
|
126 |
+
"types below and save the settings. After that, click the link (<a href=\"%s"
|
127 |
+
"\">delete all comments for the selected post types in database</a>)."
|
128 |
+
msgstr ""
|
129 |
+
"Puede eliminar los comentarios para los tipos de publicación seleccionados. "
|
130 |
+
"Seleccione los tipos de publicación y guarde la configuración. Después, haga "
|
131 |
+
"clic en el enlace (<a href=\"%s\">eliminar todos los comentarios de los "
|
132 |
+
"tipos de publicaciones seleccionados en la base de datos</a>)."
|
133 |
+
|
134 |
+
#: admin/pages/comments.php:106
|
135 |
+
msgid ""
|
136 |
+
"Everywhere - Warning: This option is global and will affect your entire "
|
137 |
+
"site. Use it only if you want to disable comments everywhere. A complete "
|
138 |
+
"description of what this option does is available here"
|
139 |
+
msgstr ""
|
140 |
+
"Donde sea - Advertencia: Esta opción es global y afectará a todo su sitio. "
|
141 |
+
"Úselo solo si desea deshabilitar comentarios en todas partes. Una "
|
142 |
+
"descripción completa de lo que hace esta opción está disponible aquí."
|
143 |
+
|
144 |
+
#: admin/pages/comments.php:106
|
145 |
+
msgid ""
|
146 |
+
"On certain post types - Disabling comments will also disable trackbacks and "
|
147 |
+
"pingbacks. All comment-related fields will also be hidden from the edit/"
|
148 |
+
"quick-edit screens of the affected posts. These settings cannot be "
|
149 |
+
"overridden for individual posts."
|
150 |
+
msgstr ""
|
151 |
+
"Para ciertas publicaciones, al deshabilitar los comentarios, se deshabilita "
|
152 |
+
"los trackbacks y los pingbacks. Los campos relacionados con comentarios se "
|
153 |
+
"ocultarán de las pantallas de edición/edición-rápida de las publicaciones "
|
154 |
+
"afectadas. Estas configuraciones no se pueden anular para publicaciones "
|
155 |
+
"individuales."
|
156 |
+
|
157 |
+
#: admin/pages/comments.php:130
|
158 |
+
msgid "Select the post types for which comments will be disabled"
|
159 |
+
msgstr ""
|
160 |
+
"Seleccione los tipos de publicación para los cuales se deshabilitarán los "
|
161 |
+
"comentarios."
|
162 |
+
|
163 |
+
#: admin/pages/comments.php:141
|
164 |
+
msgid ""
|
165 |
+
"Only the built-in post types appear above. If you want to disable comments "
|
166 |
+
"on other custom post types on the entire network, you can supply a comma-"
|
167 |
+
"separated list of post types below (use the slug that identifies the post "
|
168 |
+
"type)."
|
169 |
+
msgstr ""
|
170 |
+
"Solo los tipos de post types incorporados aparecen arriba. Si desea "
|
171 |
+
"deshabilitar los comentarios sobre otros tipos de post types personalizadas "
|
172 |
+
"en toda la red, puede proporcionar una lista separada por comas de los tipos "
|
173 |
+
"de post types a continuación (use la barra que identifica el tipo de "
|
174 |
+
"publicación)."
|
175 |
+
|
176 |
+
#: admin/pages/comments.php:151
|
177 |
+
msgid ""
|
178 |
+
"This will make persistent changes to your database — comments will "
|
179 |
+
"remain closed even if you later disable the plugin! You should not use it if "
|
180 |
+
"you only want to disable comments temporarily."
|
181 |
+
msgstr ""
|
182 |
+
"Esto hará cambios persistentes en su base de datos — Los comentarios "
|
183 |
+
"permanecerán cerrados incluso si luego deshabilitas el plugin. No lo use si "
|
184 |
+
"solo desea deshabilitar los comentarios temporalmente."
|
185 |
+
|
186 |
+
#: admin/pages/comments.php:161
|
187 |
+
msgid "General settings for comments"
|
188 |
+
msgstr "Configuraciones generales para comentarios"
|
189 |
+
|
190 |
+
#: admin/pages/comments.php:161
|
191 |
+
msgid "These settings will help you improve SEO and reduce the amount of spam."
|
192 |
+
msgstr ""
|
193 |
+
"Estas configuraciones te ayudarán a mejorar el SEO y reducir la cantidad de "
|
194 |
+
"spam."
|
195 |
+
|
196 |
+
#: admin/pages/comments.php:169
|
197 |
+
msgid ""
|
198 |
+
"Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
|
199 |
+
"sake of a link to their site?"
|
200 |
+
msgstr ""
|
201 |
+
"¿Cansado de spam en los comentarios? ¿Los visitantes dejan \"en blanco\" "
|
202 |
+
"los comentarios por un enlace a su sitio?"
|
203 |
+
|
204 |
+
#: admin/pages/comments.php:169
|
205 |
+
msgid "Removes the \"Site\" field from the comment form."
|
206 |
+
msgstr "Elimina el campo \"Sitio \" del formulario de comentarios."
|
207 |
+
|
208 |
+
#: admin/pages/comments.php:169
|
209 |
+
msgid ""
|
210 |
+
"Works with the standard comment form, if the form is manually written in "
|
211 |
+
"your theme-it probably will not work!"
|
212 |
+
msgstr ""
|
213 |
+
"Funciona con el formulario de comentarios estándar, si el formulario está "
|
214 |
+
"escrito manualmente en su tema, ¡probablemente no funcionará!"
|
215 |
+
|
216 |
+
#: admin/pages/comments.php:178
|
217 |
+
msgid ""
|
218 |
+
"Superfluous external links from comments, which can be typed from a dozen "
|
219 |
+
"and more for one article, do not bring anything good for promotion."
|
220 |
+
msgstr ""
|
221 |
+
"Los enlaces externos superfluos en los comentarios y en cantidades mayores "
|
222 |
+
"de 12 no aportan nada bueno para el SEO o algunas promociones."
|
223 |
+
|
224 |
+
#: admin/pages/comments.php:178
|
225 |
+
#, php-format
|
226 |
+
msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
227 |
+
msgstr "Reemplaza los enlaces del tipo %s, en enlaces de este tipo %s"
|
228 |
+
|
229 |
+
#: admin/pages/comments.php:187
|
230 |
+
msgid ""
|
231 |
+
"Up to 90 percent of comments in the blog can be left for the sake of an "
|
232 |
+
"external link. Even nofollow from page weight loss here does not help."
|
233 |
+
msgstr ""
|
234 |
+
"Hasta un 90 por ciento de los comentarios del Blog pueden ser usados para "
|
235 |
+
"enlaces externos, incluso, usar la etiqueta \"nofollow\" no ayudará. "
|
236 |
+
|
237 |
+
#: admin/pages/comments.php:187
|
238 |
+
msgid ""
|
239 |
+
"Replaces the links of the authors of comments on the JavaScript code, it is "
|
240 |
+
"impossible to distinguish it from usual links."
|
241 |
+
msgstr ""
|
242 |
+
"Reemplaza los enlaces de los autores de los comentarios sobre el código "
|
243 |
+
"JavaScript, es imposible distinguirlo de los enlaces habituales."
|
244 |
+
|
245 |
+
#: admin/pages/comments.php:187
|
246 |
+
msgid "In some Wordpress topics this may not work."
|
247 |
+
msgstr "En algunos tópicos de Wordpress, ésto podría no trabajar"
|
248 |
+
|
249 |
+
#: admin/pages/delete-comments.php:41
|
250 |
+
msgid "Comments cleaner"
|
251 |
+
msgstr "Limpieza de comentarios"
|
252 |
+
|
253 |
+
#: admin/pages/delete-comments.php:62
|
254 |
+
msgid "All comments have been deleted."
|
255 |
+
msgstr "Todos los comentarios han sido eliminados."
|
256 |
+
|
257 |
+
#: admin/pages/delete-comments.php:71
|
258 |
+
msgid ""
|
259 |
+
"An error occurred while trying to delete comments. Internal error occured. "
|
260 |
+
"Please try again later."
|
261 |
+
msgstr ""
|
262 |
+
"Se ha producido un error al intentar eliminar comentarios. Se produjo un "
|
263 |
+
"error interno. Por favor, inténtelo de nuevo más tarde."
|
264 |
+
|
265 |
+
#: admin/pages/delete-comments.php:211
|
266 |
+
msgid ""
|
267 |
+
"Are you sure you want to delete comments from the database without restoring?"
|
268 |
+
msgstr ""
|
269 |
+
"¿Está seguro de que desea eliminar los comentarios de la base de datos sin "
|
270 |
+
"restaurar?"
|
271 |
+
|
272 |
+
#: admin/pages/delete-comments.php:226
|
273 |
+
msgid "Delete "
|
274 |
+
msgstr "Borrar"
|
275 |
+
|
276 |
+
#: admin/pages/delete-comments.php:232
|
277 |
+
msgid "Comments clearing tools"
|
278 |
+
msgstr "Herramientas de limpieza de comentarios"
|
279 |
+
|
280 |
+
#: admin/pages/delete-comments.php:235
|
281 |
+
msgid ""
|
282 |
+
"These functions can be useful for global disabling comments or bulk cleaning "
|
283 |
+
"spam comments."
|
284 |
+
msgstr ""
|
285 |
+
"Estas funciones pueden ser útiles para deshabilitar los comentarios globales "
|
286 |
+
"o limpiar de forma masiva los comentarios de spam."
|
287 |
+
|
288 |
+
#: admin/pages/delete-comments.php:240
|
289 |
+
msgid "Remove all comments"
|
290 |
+
msgstr "Eliminar todos los comentarios"
|
291 |
+
|
292 |
+
#: admin/pages/delete-comments.php:242
|
293 |
+
msgid "You can delete all comments in your database with one click."
|
294 |
+
msgstr "Borrar todos los comentarios en la basa de datos con un click"
|
295 |
+
|
296 |
+
#: admin/pages/delete-comments.php:244
|
297 |
+
msgid "Choose post types"
|
298 |
+
msgstr "Elegir tipos de publicaciones"
|
299 |
+
|
300 |
+
#: admin/pages/delete-comments.php:249
|
301 |
+
msgid "Select all"
|
302 |
+
msgstr "Seleccionar todo"
|
303 |
+
|
304 |
+
#: admin/pages/delete-comments.php:266
|
305 |
+
#, php-format
|
306 |
+
msgid "Delete Woocommerce order notices? (%d)"
|
307 |
+
msgstr "¿Desea eliminar los avisos de pedidos de Woocommerce? (%d)"
|
308 |
+
|
309 |
+
#: admin/pages/delete-comments.php:272
|
310 |
+
#, php-format
|
311 |
+
msgid "Delete (%s)"
|
312 |
+
msgstr "Borrar (%s)"
|
313 |
+
|
314 |
+
#: admin/pages/delete-comments.php:279
|
315 |
+
msgid "Remove spam comments"
|
316 |
+
msgstr "Eliminar comentarios spam"
|
317 |
+
|
318 |
+
#: admin/pages/delete-comments.php:281
|
319 |
+
msgid "You can remove only spam comments from the database with one click."
|
320 |
+
msgstr ""
|
321 |
+
"Puede eliminar solo los comentarios spam de la base de datos con un solo "
|
322 |
+
"clic."
|
323 |
+
|
324 |
+
#: admin/pages/delete-comments.php:283 admin/pages/delete-comments.php:290
|
325 |
+
#: admin/pages/delete-comments.php:297
|
326 |
+
#, php-format
|
327 |
+
msgid "Delete (%d)"
|
328 |
+
msgstr "Borrar (%d)"
|
329 |
+
|
330 |
+
#: admin/pages/delete-comments.php:286
|
331 |
+
msgid "Remove unapproved comments"
|
332 |
+
msgstr "Eliminar comentarios no aprobados"
|
333 |
+
|
334 |
+
#: admin/pages/delete-comments.php:288
|
335 |
+
msgid ""
|
336 |
+
"You can remove only unapproved comments from the database with one click."
|
337 |
+
msgstr ""
|
338 |
+
"Puede eliminar solo los comentarios no aprobados de la base de datos con un "
|
339 |
+
"solo click."
|
340 |
+
|
341 |
+
#: admin/pages/delete-comments.php:293
|
342 |
+
msgid "Remove trashed comments"
|
343 |
+
msgstr "Eliminar comentarios en la papelera"
|
344 |
+
|
345 |
+
#: admin/pages/delete-comments.php:295
|
346 |
+
msgid "You can remove only trashed comments from the database with one click."
|
347 |
+
msgstr ""
|
348 |
+
"Puede borrar solo los comentarios eliminados de la base de datos con un solo "
|
349 |
+
"click."
|
350 |
+
|
351 |
+
#: comments-plus.php:70
|
352 |
+
msgid "Webcraftic Disable comments"
|
353 |
+
msgstr "Deshabilitar comentarios Webcraftic "
|
354 |
+
|
355 |
+
#: includes/classes/class.configurate-comments.php:180
|
356 |
+
#: includes/classes/class.configurate-comments.php:236
|
357 |
+
msgid "Comments are closed."
|
358 |
+
msgstr "Cerrados los comentarios"
|
359 |
+
|
360 |
+
#: includes/classes/class.configurate-comments.php:224
|
361 |
+
#, php-format
|
362 |
+
msgid ""
|
363 |
+
"Note: The <em>%s</em> plugin is currently active, and comments are "
|
364 |
+
"completely disabled on: %s. Many of the settings below will not be "
|
365 |
+
"applicable for those post types."
|
366 |
+
msgstr ""
|
367 |
+
"Nota: el plugin <em>%s</em> está activo y los comentarios están "
|
368 |
+
"completamente deshabilitados en: %s. Muchas de las configuraciones a "
|
369 |
+
"continuación no serán aplicables para esos tipos de publicaciones."
|
components/comments-plus/languages/comments-plus-ru_RU.po
CHANGED
@@ -1,427 +1,427 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2018-10-16 22:46+0300\n"
|
5 |
-
"PO-Revision-Date: 2018-10-16 23: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"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 2.1.1\n"
|
13 |
-
"X-Poedit-Basepath: ..\n"
|
14 |
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
-
"X-Poedit-SearchPath-0: .\n"
|
19 |
-
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
-
|
21 |
-
#: admin/boot.php:18
|
22 |
-
msgid "Disable comments on the entire site"
|
23 |
-
msgstr "Отключить комментарии на всем сайте"
|
24 |
-
|
25 |
-
#: admin/boot.php:24 admin/pages/comments.php:127
|
26 |
-
msgid "Select post types"
|
27 |
-
msgstr "Выбрать тип записи"
|
28 |
-
|
29 |
-
#: admin/boot.php:29 admin/pages/comments.php:167
|
30 |
-
msgid "Replace external links in comments on the JavaScript code"
|
31 |
-
msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
32 |
-
|
33 |
-
#: admin/boot.php:34 admin/pages/comments.php:176
|
34 |
-
msgid "Replace external links from comment authors on the JavaScript code"
|
35 |
-
msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
36 |
-
|
37 |
-
#: admin/boot.php:39
|
38 |
-
msgid "Disable X-Pingback"
|
39 |
-
msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
40 |
-
|
41 |
-
#: admin/boot.php:44 admin/pages/comments.php:158
|
42 |
-
msgid "Remove field \"site\" in comment form"
|
43 |
-
msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
44 |
-
|
45 |
-
#: admin/boot.php:56
|
46 |
-
msgid "One click disable all comments"
|
47 |
-
msgstr "Отключить все комментарии в один клик"
|
48 |
-
|
49 |
-
#: admin/boot.php:77
|
50 |
-
msgid "Get ultimate plugin free"
|
51 |
-
msgstr "Получите полную версию плагина бесплатно"
|
52 |
-
|
53 |
-
#: admin/pages/comments.php:38 admin/pages/comments.php:92
|
54 |
-
msgid "Disable comments"
|
55 |
-
msgstr "Отключить комментарии"
|
56 |
-
|
57 |
-
#: admin/pages/comments.php:39
|
58 |
-
msgid "Manage site comments"
|
59 |
-
msgstr "Упр. комментариями"
|
60 |
-
|
61 |
-
#: admin/pages/comments.php:52
|
62 |
-
msgid "Comments"
|
63 |
-
msgstr "Комментарии"
|
64 |
-
|
65 |
-
#: admin/pages/comments.php:52
|
66 |
-
msgid "General"
|
67 |
-
msgstr "Основные"
|
68 |
-
|
69 |
-
#: admin/pages/comments.php:67
|
70 |
-
msgid "Global disabling of comments"
|
71 |
-
msgstr "Глобальное отключение комментариев"
|
72 |
-
|
73 |
-
#: admin/pages/comments.php:67
|
74 |
-
msgid ""
|
75 |
-
"What is the difference between these and native WordPress functions? "
|
76 |
-
"WordPress disables comments only for new posts! Using the functions below, "
|
77 |
-
"you can disable comments globally, even for old posts, and you can choose "
|
78 |
-
"which post types comments to disable. The plugin also disables the comment "
|
79 |
-
"functionality itself, which creates a certain load on the site."
|
80 |
-
msgstr ""
|
81 |
-
"Чем отличается эти функции от нативных функций Wordpress? Wordpress "
|
82 |
-
"отключает комментарии только для новых записей! С помощью функций ниже, вы "
|
83 |
-
"можете отключить комментарии глобально, даже для старых записей, причем вы "
|
84 |
-
"можете выбрать для каких типов записей нужно отключить комментарии. Плагин "
|
85 |
-
"также отключает сам функционал комментариев, который создает определенную "
|
86 |
-
"нагрузку на сайт."
|
87 |
-
|
88 |
-
#: admin/pages/comments.php:94
|
89 |
-
msgid "Not disable"
|
90 |
-
msgstr "Не отключать"
|
91 |
-
|
92 |
-
#: admin/pages/comments.php:97
|
93 |
-
msgid "Everywhere"
|
94 |
-
msgstr "Повсюду"
|
95 |
-
|
96 |
-
#: admin/pages/comments.php:98
|
97 |
-
#, php-format
|
98 |
-
msgid ""
|
99 |
-
"You can delete all comments in the database by clicking on this link (<a "
|
100 |
-
"href=\"%s\">cleaning comments in database</a>)."
|
101 |
-
msgstr ""
|
102 |
-
"Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
103 |
-
"href=\"%s\">очистка комментариев в базе данных</a> )."
|
104 |
-
|
105 |
-
#: admin/pages/comments.php:102
|
106 |
-
msgid "On certain post types"
|
107 |
-
msgstr "Только выбранные типы записей"
|
108 |
-
|
109 |
-
#: admin/pages/comments.php:103
|
110 |
-
#, php-format
|
111 |
-
msgid ""
|
112 |
-
"You can delete all comments for the selected post types. Select the post "
|
113 |
-
"types below and save the settings. After that, click the link (<a href=\"%s"
|
114 |
-
"\">delete all comments for the selected post types in database</a>)."
|
115 |
-
msgstr ""
|
116 |
-
"Вы можете удалить все комментарии для выбранных типов записей. Выберите типы "
|
117 |
-
"записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
|
118 |
-
"\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
|
119 |
-
|
120 |
-
#: admin/pages/comments.php:107
|
121 |
-
msgid ""
|
122 |
-
"Everywhere - Warning: This option is global and will affect your entire "
|
123 |
-
"site. Use it only if you want to disable comments everywhere. A complete "
|
124 |
-
"description of what this option does is available here"
|
125 |
-
msgstr ""
|
126 |
-
"Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
127 |
-
"весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
|
128 |
-
"комментарии повсюду. "
|
129 |
-
|
130 |
-
#: admin/pages/comments.php:107
|
131 |
-
msgid ""
|
132 |
-
"On certain post types - Disabling comments will also disable trackbacks and "
|
133 |
-
"pingbacks. All comment-related fields will also be hidden from the edit/"
|
134 |
-
"quick-edit screens of the affected posts. These settings cannot be "
|
135 |
-
"overridden for individual posts."
|
136 |
-
msgstr ""
|
137 |
-
"В некоторых типах сообщений - отключение комментариев также отключает "
|
138 |
-
"трекбэки и pingback. Все поля, связанные с комментариями, также будут скрыты "
|
139 |
-
"от экранов редактирования / быстрого редактирования затронутых сообщений. "
|
140 |
-
"Эти настройки нельзя переопределять для отдельных сообщений."
|
141 |
-
|
142 |
-
#: admin/pages/comments.php:130
|
143 |
-
msgid "Select the post types for which comments will be disabled"
|
144 |
-
msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
145 |
-
|
146 |
-
#: admin/pages/comments.php:138
|
147 |
-
msgid "Custom post types"
|
148 |
-
msgstr "Произвольные типы записей"
|
149 |
-
|
150 |
-
#: admin/pages/comments.php:141
|
151 |
-
msgid ""
|
152 |
-
"Only the built-in post types appear above. If you want to disable comments "
|
153 |
-
"on other custom post types on the entire network, you can supply a comma-"
|
154 |
-
"separated list of post types below (use the slug that identifies the post "
|
155 |
-
"type)."
|
156 |
-
msgstr ""
|
157 |
-
"Только встроенные типы записей отображаются выше. Если вы хотите отключить "
|
158 |
-
"комментарии к другим пользовательским типам записей во всей сети, вы можете "
|
159 |
-
"предоставить список типов сообщений, разделенных запятыми (используйте имя, "
|
160 |
-
"которое идентифицирует тип записей)."
|
161 |
-
|
162 |
-
#: admin/pages/comments.php:152
|
163 |
-
msgid "General settings for comments"
|
164 |
-
msgstr "Общие настройки комментариев"
|
165 |
-
|
166 |
-
#: admin/pages/comments.php:152
|
167 |
-
msgid "These settings will help you improve SEO and reduce the amount of spam."
|
168 |
-
msgstr "Эти настройки помогут вам улучшить SEO и уменьшить количество спама."
|
169 |
-
|
170 |
-
#: admin/pages/comments.php:160
|
171 |
-
msgid ""
|
172 |
-
"Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
|
173 |
-
"sake of a link to their site?"
|
174 |
-
msgstr ""
|
175 |
-
"Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
|
176 |
-
"ссылки на свой сайт?"
|
177 |
-
|
178 |
-
#: admin/pages/comments.php:160
|
179 |
-
msgid "Removes the \"Site\" field from the comment form."
|
180 |
-
msgstr "Убирает поле «Сайт» из формы комментирования."
|
181 |
-
|
182 |
-
#: admin/pages/comments.php:160
|
183 |
-
msgid ""
|
184 |
-
"Works with the standard comment form, if the form is manually written in "
|
185 |
-
"your theme-it probably will not work!"
|
186 |
-
msgstr ""
|
187 |
-
"Работает со стандартной формой комментирования, если в Вашей теме форма "
|
188 |
-
"прописана вручную - скорей всего не сработает!"
|
189 |
-
|
190 |
-
#: admin/pages/comments.php:169
|
191 |
-
msgid ""
|
192 |
-
"Superfluous external links from comments, which can be typed from a dozen "
|
193 |
-
"and more for one article, do not bring anything good for promotion."
|
194 |
-
msgstr ""
|
195 |
-
"Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
196 |
-
"одной странице, могут ухудшить продвижение вашего сайта."
|
197 |
-
|
198 |
-
#: admin/pages/comments.php:169
|
199 |
-
#, php-format
|
200 |
-
msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
201 |
-
msgstr ""
|
202 |
-
"Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
|
203 |
-
"%s"
|
204 |
-
|
205 |
-
#: admin/pages/comments.php:178
|
206 |
-
msgid ""
|
207 |
-
"Up to 90 percent of comments in the blog can be left for the sake of an "
|
208 |
-
"external link. Even nofollow from page weight loss here does not help."
|
209 |
-
msgstr ""
|
210 |
-
"До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
211 |
-
"поможет даже nofollow от потери веса страницы."
|
212 |
-
|
213 |
-
#: admin/pages/comments.php:178
|
214 |
-
msgid ""
|
215 |
-
"Replaces the links of the authors of comments on the JavaScript code, it is "
|
216 |
-
"impossible to distinguish it from usual links."
|
217 |
-
msgstr ""
|
218 |
-
"Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
219 |
-
"отличить от обычной ссылки."
|
220 |
-
|
221 |
-
#: admin/pages/comments.php:178
|
222 |
-
msgid "In some Wordpress topics this may not work."
|
223 |
-
msgstr "В некоторых темах Wordpress это может не сработать."
|
224 |
-
|
225 |
-
#: admin/pages/comments.php:185
|
226 |
-
msgid "Disable XML-RPC"
|
227 |
-
msgstr "Отключить XML-RPC"
|
228 |
-
|
229 |
-
#: admin/pages/comments.php:187
|
230 |
-
msgid ""
|
231 |
-
"A pingback is basically an automated comment that gets created when another "
|
232 |
-
"blog links to you. A self-pingback is created when you link to an article "
|
233 |
-
"within your own blog. Pingbacks are essentially nothing more than spam and "
|
234 |
-
"simply waste resources."
|
235 |
-
msgstr ""
|
236 |
-
"Pingback по-существу автоматизированных комментарий, который создается, "
|
237 |
-
"когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
238 |
-
"оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
|
239 |
-
"более чем спам и пустая трата ресурсов вашего сайта."
|
240 |
-
|
241 |
-
#: admin/pages/comments.php:187
|
242 |
-
msgid "Removes the server responses a reference to the xmlrpc file."
|
243 |
-
msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
244 |
-
|
245 |
-
#: admin/pages/delete-comments.php:41
|
246 |
-
msgid "Comments cleaner"
|
247 |
-
msgstr "Очистка комментариев"
|
248 |
-
|
249 |
-
#: admin/pages/delete-comments.php:62
|
250 |
-
msgid "All comments have been deleted."
|
251 |
-
msgstr "Все комментарии были удалены."
|
252 |
-
|
253 |
-
#: admin/pages/delete-comments.php:71
|
254 |
-
msgid ""
|
255 |
-
"An error occurred while trying to delete comments. Internal error occured. "
|
256 |
-
"Please try again later."
|
257 |
-
msgstr ""
|
258 |
-
"При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
259 |
-
"попытку позже."
|
260 |
-
|
261 |
-
#: admin/pages/delete-comments.php:211
|
262 |
-
msgid ""
|
263 |
-
"Are you sure you want to delete comments from the database without restoring?"
|
264 |
-
msgstr ""
|
265 |
-
"Вы уверены, что вы хотите удалить комментарии из базы данных без "
|
266 |
-
"восстановления?"
|
267 |
-
|
268 |
-
#: admin/pages/delete-comments.php:226
|
269 |
-
msgid "Delete "
|
270 |
-
msgstr "Удалить"
|
271 |
-
|
272 |
-
#: admin/pages/delete-comments.php:232
|
273 |
-
msgid "Comments clearing tools"
|
274 |
-
msgstr "Комментарии очищающие инструменты"
|
275 |
-
|
276 |
-
#: admin/pages/delete-comments.php:235
|
277 |
-
msgid ""
|
278 |
-
"These functions can be useful for global disabling comments or bulk cleaning "
|
279 |
-
"spam comments."
|
280 |
-
msgstr ""
|
281 |
-
"Эти функции могут быть полезны для глобальных отключений комментариев или "
|
282 |
-
"массовой очистки спама комментариев."
|
283 |
-
|
284 |
-
#: admin/pages/delete-comments.php:240
|
285 |
-
msgid "Remove all comments"
|
286 |
-
msgstr "Удалить все комментарии"
|
287 |
-
|
288 |
-
#: admin/pages/delete-comments.php:242
|
289 |
-
msgid "You can delete all comments in your database with one click."
|
290 |
-
msgstr "Вы можете удалить все комментарии в базе данных с одним щелчком мыши."
|
291 |
-
|
292 |
-
#: admin/pages/delete-comments.php:244
|
293 |
-
msgid "Choose post types"
|
294 |
-
msgstr "Выберите типы записей"
|
295 |
-
|
296 |
-
#: admin/pages/delete-comments.php:249
|
297 |
-
msgid "Select all"
|
298 |
-
msgstr "Выбрать все"
|
299 |
-
|
300 |
-
#: admin/pages/delete-comments.php:266
|
301 |
-
#, php-format
|
302 |
-
msgid "Delete Woocommerce order notices? (%d)"
|
303 |
-
msgstr "Удалять заметки от заказов Woocommerce? (%d)"
|
304 |
-
|
305 |
-
#: admin/pages/delete-comments.php:272
|
306 |
-
#, php-format
|
307 |
-
msgid "Delete (%s)"
|
308 |
-
msgstr "Удалить (%s)"
|
309 |
-
|
310 |
-
#: admin/pages/delete-comments.php:279
|
311 |
-
msgid "Remove spam comments"
|
312 |
-
msgstr "Удалить спам комментарии"
|
313 |
-
|
314 |
-
#: admin/pages/delete-comments.php:281
|
315 |
-
msgid "You can remove only spam comments from the database with one click."
|
316 |
-
msgstr ""
|
317 |
-
"Вы можете одним нажатием удалить только спам комментарии из базы данных."
|
318 |
-
|
319 |
-
#: admin/pages/delete-comments.php:283 admin/pages/delete-comments.php:290
|
320 |
-
#: admin/pages/delete-comments.php:297
|
321 |
-
#, php-format
|
322 |
-
msgid "Delete (%d)"
|
323 |
-
msgstr "Удалить (%d)"
|
324 |
-
|
325 |
-
#: admin/pages/delete-comments.php:286
|
326 |
-
msgid "Remove unapproved comments"
|
327 |
-
msgstr "Удалить неподтвержденные комментарии"
|
328 |
-
|
329 |
-
#: admin/pages/delete-comments.php:288
|
330 |
-
msgid ""
|
331 |
-
"You can remove only unapproved comments from the database with one click."
|
332 |
-
msgstr ""
|
333 |
-
"Вы можете одним нажатием удалить только не подтвержденные комментарии из "
|
334 |
-
"базы данных."
|
335 |
-
|
336 |
-
#: admin/pages/delete-comments.php:293
|
337 |
-
msgid "Remove trashed comments"
|
338 |
-
msgstr "Удалить комментарии из корзины"
|
339 |
-
|
340 |
-
#: admin/pages/delete-comments.php:295
|
341 |
-
msgid "You can remove only trashed comments from the database with one click."
|
342 |
-
msgstr "Вы можете одним нажатием удалить только комментарии из корзины."
|
343 |
-
|
344 |
-
#: comments-plus.php:63
|
345 |
-
msgid "Webcraftic Disable comments"
|
346 |
-
msgstr "Webcraftic отключить комментарии"
|
347 |
-
|
348 |
-
#: includes/classes/class.configurate-comments.php:204
|
349 |
-
#: includes/classes/class.configurate-comments.php:256
|
350 |
-
msgid "Comments are closed."
|
351 |
-
msgstr "Комментарии Закрыты."
|
352 |
-
|
353 |
-
#: includes/classes/class.configurate-comments.php:244
|
354 |
-
#, php-format
|
355 |
-
msgid ""
|
356 |
-
"Note: The <em>%s</em> plugin is currently active, and comments are "
|
357 |
-
"completely disabled on: %s. Many of the settings below will not be "
|
358 |
-
"applicable for those post types."
|
359 |
-
msgstr ""
|
360 |
-
"Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
361 |
-
"полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
362 |
-
"применяться для этих типов сообщений."
|
363 |
-
|
364 |
-
#~ msgid ""
|
365 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
366 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
367 |
-
#~ "deactivate plugin \"Disable comments\"!"
|
368 |
-
#~ msgstr ""
|
369 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
370 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
371 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
372 |
-
|
373 |
-
#~ msgid "Recommended"
|
374 |
-
#~ msgstr "Рекомендовано"
|
375 |
-
|
376 |
-
#~ msgid "You are not allowed to view this page."
|
377 |
-
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
378 |
-
|
379 |
-
#~ msgid "You do not have the selected post types!"
|
380 |
-
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
381 |
-
|
382 |
-
#~ msgid "No comments available for deletion."
|
383 |
-
#~ msgstr "Нет комментариев для удаления."
|
384 |
-
|
385 |
-
#~ msgid ""
|
386 |
-
#~ "Are you sure that you desire to delete all comments from the database?"
|
387 |
-
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
388 |
-
|
389 |
-
#~ msgid ""
|
390 |
-
#~ "Deleting comments will remove existing comment entries in the database "
|
391 |
-
#~ "and cannot be reverted without a database backup."
|
392 |
-
#~ msgstr ""
|
393 |
-
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
394 |
-
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
395 |
-
#~ "базы данных."
|
396 |
-
|
397 |
-
#~ msgid "You have %s comments"
|
398 |
-
#~ msgstr "У вас есть %s комментариев"
|
399 |
-
|
400 |
-
#~ msgid "Yes, I'm sure"
|
401 |
-
#~ msgstr "Да, я уверен"
|
402 |
-
|
403 |
-
#~ msgid "No, return back"
|
404 |
-
#~ msgstr "Нет, вернуться"
|
405 |
-
|
406 |
-
#~ msgid ""
|
407 |
-
#~ "Are you sure that you desire to delete all comments from the database for "
|
408 |
-
#~ "the selected post types (%s)?"
|
409 |
-
#~ msgstr ""
|
410 |
-
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
411 |
-
#~ "выбранных типов записей (%s)?"
|
412 |
-
|
413 |
-
#~ msgid "Webcraftic comments tweaks"
|
414 |
-
#~ msgstr "Webcraftic инструменты комментариев"
|
415 |
-
|
416 |
-
#~ msgid ""
|
417 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
418 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
419 |
-
#~ "deactivate plugin \"Comments tweaks\"!"
|
420 |
-
#~ msgstr ""
|
421 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
422 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
423 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
424 |
-
#~ "комментариев»!"
|
425 |
-
|
426 |
-
#~ msgid "Disable all comments"
|
427 |
-
#~ msgstr "Отключить все комментарии"
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-10-16 22:46+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-10-16 23: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"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 2.1.1\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
+
|
21 |
+
#: admin/boot.php:18
|
22 |
+
msgid "Disable comments on the entire site"
|
23 |
+
msgstr "Отключить комментарии на всем сайте"
|
24 |
+
|
25 |
+
#: admin/boot.php:24 admin/pages/comments.php:127
|
26 |
+
msgid "Select post types"
|
27 |
+
msgstr "Выбрать тип записи"
|
28 |
+
|
29 |
+
#: admin/boot.php:29 admin/pages/comments.php:167
|
30 |
+
msgid "Replace external links in comments on the JavaScript code"
|
31 |
+
msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
32 |
+
|
33 |
+
#: admin/boot.php:34 admin/pages/comments.php:176
|
34 |
+
msgid "Replace external links from comment authors on the JavaScript code"
|
35 |
+
msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
36 |
+
|
37 |
+
#: admin/boot.php:39
|
38 |
+
msgid "Disable X-Pingback"
|
39 |
+
msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
40 |
+
|
41 |
+
#: admin/boot.php:44 admin/pages/comments.php:158
|
42 |
+
msgid "Remove field \"site\" in comment form"
|
43 |
+
msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
44 |
+
|
45 |
+
#: admin/boot.php:56
|
46 |
+
msgid "One click disable all comments"
|
47 |
+
msgstr "Отключить все комментарии в один клик"
|
48 |
+
|
49 |
+
#: admin/boot.php:77
|
50 |
+
msgid "Get ultimate plugin free"
|
51 |
+
msgstr "Получите полную версию плагина бесплатно"
|
52 |
+
|
53 |
+
#: admin/pages/comments.php:38 admin/pages/comments.php:92
|
54 |
+
msgid "Disable comments"
|
55 |
+
msgstr "Отключить комментарии"
|
56 |
+
|
57 |
+
#: admin/pages/comments.php:39
|
58 |
+
msgid "Manage site comments"
|
59 |
+
msgstr "Упр. комментариями"
|
60 |
+
|
61 |
+
#: admin/pages/comments.php:52
|
62 |
+
msgid "Comments"
|
63 |
+
msgstr "Комментарии"
|
64 |
+
|
65 |
+
#: admin/pages/comments.php:52
|
66 |
+
msgid "General"
|
67 |
+
msgstr "Основные"
|
68 |
+
|
69 |
+
#: admin/pages/comments.php:67
|
70 |
+
msgid "Global disabling of comments"
|
71 |
+
msgstr "Глобальное отключение комментариев"
|
72 |
+
|
73 |
+
#: admin/pages/comments.php:67
|
74 |
+
msgid ""
|
75 |
+
"What is the difference between these and native WordPress functions? "
|
76 |
+
"WordPress disables comments only for new posts! Using the functions below, "
|
77 |
+
"you can disable comments globally, even for old posts, and you can choose "
|
78 |
+
"which post types comments to disable. The plugin also disables the comment "
|
79 |
+
"functionality itself, which creates a certain load on the site."
|
80 |
+
msgstr ""
|
81 |
+
"Чем отличается эти функции от нативных функций Wordpress? Wordpress "
|
82 |
+
"отключает комментарии только для новых записей! С помощью функций ниже, вы "
|
83 |
+
"можете отключить комментарии глобально, даже для старых записей, причем вы "
|
84 |
+
"можете выбрать для каких типов записей нужно отключить комментарии. Плагин "
|
85 |
+
"также отключает сам функционал комментариев, который создает определенную "
|
86 |
+
"нагрузку на сайт."
|
87 |
+
|
88 |
+
#: admin/pages/comments.php:94
|
89 |
+
msgid "Not disable"
|
90 |
+
msgstr "Не отключать"
|
91 |
+
|
92 |
+
#: admin/pages/comments.php:97
|
93 |
+
msgid "Everywhere"
|
94 |
+
msgstr "Повсюду"
|
95 |
+
|
96 |
+
#: admin/pages/comments.php:98
|
97 |
+
#, php-format
|
98 |
+
msgid ""
|
99 |
+
"You can delete all comments in the database by clicking on this link (<a "
|
100 |
+
"href=\"%s\">cleaning comments in database</a>)."
|
101 |
+
msgstr ""
|
102 |
+
"Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
103 |
+
"href=\"%s\">очистка комментариев в базе данных</a> )."
|
104 |
+
|
105 |
+
#: admin/pages/comments.php:102
|
106 |
+
msgid "On certain post types"
|
107 |
+
msgstr "Только выбранные типы записей"
|
108 |
+
|
109 |
+
#: admin/pages/comments.php:103
|
110 |
+
#, php-format
|
111 |
+
msgid ""
|
112 |
+
"You can delete all comments for the selected post types. Select the post "
|
113 |
+
"types below and save the settings. After that, click the link (<a href=\"%s"
|
114 |
+
"\">delete all comments for the selected post types in database</a>)."
|
115 |
+
msgstr ""
|
116 |
+
"Вы можете удалить все комментарии для выбранных типов записей. Выберите типы "
|
117 |
+
"записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
|
118 |
+
"\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
|
119 |
+
|
120 |
+
#: admin/pages/comments.php:107
|
121 |
+
msgid ""
|
122 |
+
"Everywhere - Warning: This option is global and will affect your entire "
|
123 |
+
"site. Use it only if you want to disable comments everywhere. A complete "
|
124 |
+
"description of what this option does is available here"
|
125 |
+
msgstr ""
|
126 |
+
"Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
127 |
+
"весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
|
128 |
+
"комментарии повсюду. "
|
129 |
+
|
130 |
+
#: admin/pages/comments.php:107
|
131 |
+
msgid ""
|
132 |
+
"On certain post types - Disabling comments will also disable trackbacks and "
|
133 |
+
"pingbacks. All comment-related fields will also be hidden from the edit/"
|
134 |
+
"quick-edit screens of the affected posts. These settings cannot be "
|
135 |
+
"overridden for individual posts."
|
136 |
+
msgstr ""
|
137 |
+
"В некоторых типах сообщений - отключение комментариев также отключает "
|
138 |
+
"трекбэки и pingback. Все поля, связанные с комментариями, также будут скрыты "
|
139 |
+
"от экранов редактирования / быстрого редактирования затронутых сообщений. "
|
140 |
+
"Эти настройки нельзя переопределять для отдельных сообщений."
|
141 |
+
|
142 |
+
#: admin/pages/comments.php:130
|
143 |
+
msgid "Select the post types for which comments will be disabled"
|
144 |
+
msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
145 |
+
|
146 |
+
#: admin/pages/comments.php:138
|
147 |
+
msgid "Custom post types"
|
148 |
+
msgstr "Произвольные типы записей"
|
149 |
+
|
150 |
+
#: admin/pages/comments.php:141
|
151 |
+
msgid ""
|
152 |
+
"Only the built-in post types appear above. If you want to disable comments "
|
153 |
+
"on other custom post types on the entire network, you can supply a comma-"
|
154 |
+
"separated list of post types below (use the slug that identifies the post "
|
155 |
+
"type)."
|
156 |
+
msgstr ""
|
157 |
+
"Только встроенные типы записей отображаются выше. Если вы хотите отключить "
|
158 |
+
"комментарии к другим пользовательским типам записей во всей сети, вы можете "
|
159 |
+
"предоставить список типов сообщений, разделенных запятыми (используйте имя, "
|
160 |
+
"которое идентифицирует тип записей)."
|
161 |
+
|
162 |
+
#: admin/pages/comments.php:152
|
163 |
+
msgid "General settings for comments"
|
164 |
+
msgstr "Общие настройки комментариев"
|
165 |
+
|
166 |
+
#: admin/pages/comments.php:152
|
167 |
+
msgid "These settings will help you improve SEO and reduce the amount of spam."
|
168 |
+
msgstr "Эти настройки помогут вам улучшить SEO и уменьшить количество спама."
|
169 |
+
|
170 |
+
#: admin/pages/comments.php:160
|
171 |
+
msgid ""
|
172 |
+
"Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
|
173 |
+
"sake of a link to their site?"
|
174 |
+
msgstr ""
|
175 |
+
"Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
|
176 |
+
"ссылки на свой сайт?"
|
177 |
+
|
178 |
+
#: admin/pages/comments.php:160
|
179 |
+
msgid "Removes the \"Site\" field from the comment form."
|
180 |
+
msgstr "Убирает поле «Сайт» из формы комментирования."
|
181 |
+
|
182 |
+
#: admin/pages/comments.php:160
|
183 |
+
msgid ""
|
184 |
+
"Works with the standard comment form, if the form is manually written in "
|
185 |
+
"your theme-it probably will not work!"
|
186 |
+
msgstr ""
|
187 |
+
"Работает со стандартной формой комментирования, если в Вашей теме форма "
|
188 |
+
"прописана вручную - скорей всего не сработает!"
|
189 |
+
|
190 |
+
#: admin/pages/comments.php:169
|
191 |
+
msgid ""
|
192 |
+
"Superfluous external links from comments, which can be typed from a dozen "
|
193 |
+
"and more for one article, do not bring anything good for promotion."
|
194 |
+
msgstr ""
|
195 |
+
"Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
196 |
+
"одной странице, могут ухудшить продвижение вашего сайта."
|
197 |
+
|
198 |
+
#: admin/pages/comments.php:169
|
199 |
+
#, php-format
|
200 |
+
msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
201 |
+
msgstr ""
|
202 |
+
"Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
|
203 |
+
"%s"
|
204 |
+
|
205 |
+
#: admin/pages/comments.php:178
|
206 |
+
msgid ""
|
207 |
+
"Up to 90 percent of comments in the blog can be left for the sake of an "
|
208 |
+
"external link. Even nofollow from page weight loss here does not help."
|
209 |
+
msgstr ""
|
210 |
+
"До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
211 |
+
"поможет даже nofollow от потери веса страницы."
|
212 |
+
|
213 |
+
#: admin/pages/comments.php:178
|
214 |
+
msgid ""
|
215 |
+
"Replaces the links of the authors of comments on the JavaScript code, it is "
|
216 |
+
"impossible to distinguish it from usual links."
|
217 |
+
msgstr ""
|
218 |
+
"Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
219 |
+
"отличить от обычной ссылки."
|
220 |
+
|
221 |
+
#: admin/pages/comments.php:178
|
222 |
+
msgid "In some Wordpress topics this may not work."
|
223 |
+
msgstr "В некоторых темах Wordpress это может не сработать."
|
224 |
+
|
225 |
+
#: admin/pages/comments.php:185
|
226 |
+
msgid "Disable XML-RPC"
|
227 |
+
msgstr "Отключить XML-RPC"
|
228 |
+
|
229 |
+
#: admin/pages/comments.php:187
|
230 |
+
msgid ""
|
231 |
+
"A pingback is basically an automated comment that gets created when another "
|
232 |
+
"blog links to you. A self-pingback is created when you link to an article "
|
233 |
+
"within your own blog. Pingbacks are essentially nothing more than spam and "
|
234 |
+
"simply waste resources."
|
235 |
+
msgstr ""
|
236 |
+
"Pingback по-существу автоматизированных комментарий, который создается, "
|
237 |
+
"когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
238 |
+
"оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
|
239 |
+
"более чем спам и пустая трата ресурсов вашего сайта."
|
240 |
+
|
241 |
+
#: admin/pages/comments.php:187
|
242 |
+
msgid "Removes the server responses a reference to the xmlrpc file."
|
243 |
+
msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
244 |
+
|
245 |
+
#: admin/pages/delete-comments.php:41
|
246 |
+
msgid "Comments cleaner"
|
247 |
+
msgstr "Очистка комментариев"
|
248 |
+
|
249 |
+
#: admin/pages/delete-comments.php:62
|
250 |
+
msgid "All comments have been deleted."
|
251 |
+
msgstr "Все комментарии были удалены."
|
252 |
+
|
253 |
+
#: admin/pages/delete-comments.php:71
|
254 |
+
msgid ""
|
255 |
+
"An error occurred while trying to delete comments. Internal error occured. "
|
256 |
+
"Please try again later."
|
257 |
+
msgstr ""
|
258 |
+
"При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
259 |
+
"попытку позже."
|
260 |
+
|
261 |
+
#: admin/pages/delete-comments.php:211
|
262 |
+
msgid ""
|
263 |
+
"Are you sure you want to delete comments from the database without restoring?"
|
264 |
+
msgstr ""
|
265 |
+
"Вы уверены, что вы хотите удалить комментарии из базы данных без "
|
266 |
+
"восстановления?"
|
267 |
+
|
268 |
+
#: admin/pages/delete-comments.php:226
|
269 |
+
msgid "Delete "
|
270 |
+
msgstr "Удалить"
|
271 |
+
|
272 |
+
#: admin/pages/delete-comments.php:232
|
273 |
+
msgid "Comments clearing tools"
|
274 |
+
msgstr "Комментарии очищающие инструменты"
|
275 |
+
|
276 |
+
#: admin/pages/delete-comments.php:235
|
277 |
+
msgid ""
|
278 |
+
"These functions can be useful for global disabling comments or bulk cleaning "
|
279 |
+
"spam comments."
|
280 |
+
msgstr ""
|
281 |
+
"Эти функции могут быть полезны для глобальных отключений комментариев или "
|
282 |
+
"массовой очистки спама комментариев."
|
283 |
+
|
284 |
+
#: admin/pages/delete-comments.php:240
|
285 |
+
msgid "Remove all comments"
|
286 |
+
msgstr "Удалить все комментарии"
|
287 |
+
|
288 |
+
#: admin/pages/delete-comments.php:242
|
289 |
+
msgid "You can delete all comments in your database with one click."
|
290 |
+
msgstr "Вы можете удалить все комментарии в базе данных с одним щелчком мыши."
|
291 |
+
|
292 |
+
#: admin/pages/delete-comments.php:244
|
293 |
+
msgid "Choose post types"
|
294 |
+
msgstr "Выберите типы записей"
|
295 |
+
|
296 |
+
#: admin/pages/delete-comments.php:249
|
297 |
+
msgid "Select all"
|
298 |
+
msgstr "Выбрать все"
|
299 |
+
|
300 |
+
#: admin/pages/delete-comments.php:266
|
301 |
+
#, php-format
|
302 |
+
msgid "Delete Woocommerce order notices? (%d)"
|
303 |
+
msgstr "Удалять заметки от заказов Woocommerce? (%d)"
|
304 |
+
|
305 |
+
#: admin/pages/delete-comments.php:272
|
306 |
+
#, php-format
|
307 |
+
msgid "Delete (%s)"
|
308 |
+
msgstr "Удалить (%s)"
|
309 |
+
|
310 |
+
#: admin/pages/delete-comments.php:279
|
311 |
+
msgid "Remove spam comments"
|
312 |
+
msgstr "Удалить спам комментарии"
|
313 |
+
|
314 |
+
#: admin/pages/delete-comments.php:281
|
315 |
+
msgid "You can remove only spam comments from the database with one click."
|
316 |
+
msgstr ""
|
317 |
+
"Вы можете одним нажатием удалить только спам комментарии из базы данных."
|
318 |
+
|
319 |
+
#: admin/pages/delete-comments.php:283 admin/pages/delete-comments.php:290
|
320 |
+
#: admin/pages/delete-comments.php:297
|
321 |
+
#, php-format
|
322 |
+
msgid "Delete (%d)"
|
323 |
+
msgstr "Удалить (%d)"
|
324 |
+
|
325 |
+
#: admin/pages/delete-comments.php:286
|
326 |
+
msgid "Remove unapproved comments"
|
327 |
+
msgstr "Удалить неподтвержденные комментарии"
|
328 |
+
|
329 |
+
#: admin/pages/delete-comments.php:288
|
330 |
+
msgid ""
|
331 |
+
"You can remove only unapproved comments from the database with one click."
|
332 |
+
msgstr ""
|
333 |
+
"Вы можете одним нажатием удалить только не подтвержденные комментарии из "
|
334 |
+
"базы данных."
|
335 |
+
|
336 |
+
#: admin/pages/delete-comments.php:293
|
337 |
+
msgid "Remove trashed comments"
|
338 |
+
msgstr "Удалить комментарии из корзины"
|
339 |
+
|
340 |
+
#: admin/pages/delete-comments.php:295
|
341 |
+
msgid "You can remove only trashed comments from the database with one click."
|
342 |
+
msgstr "Вы можете одним нажатием удалить только комментарии из корзины."
|
343 |
+
|
344 |
+
#: comments-plus.php:63
|
345 |
+
msgid "Webcraftic Disable comments"
|
346 |
+
msgstr "Webcraftic отключить комментарии"
|
347 |
+
|
348 |
+
#: includes/classes/class.configurate-comments.php:204
|
349 |
+
#: includes/classes/class.configurate-comments.php:256
|
350 |
+
msgid "Comments are closed."
|
351 |
+
msgstr "Комментарии Закрыты."
|
352 |
+
|
353 |
+
#: includes/classes/class.configurate-comments.php:244
|
354 |
+
#, php-format
|
355 |
+
msgid ""
|
356 |
+
"Note: The <em>%s</em> plugin is currently active, and comments are "
|
357 |
+
"completely disabled on: %s. Many of the settings below will not be "
|
358 |
+
"applicable for those post types."
|
359 |
+
msgstr ""
|
360 |
+
"Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
361 |
+
"полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
362 |
+
"применяться для этих типов сообщений."
|
363 |
+
|
364 |
+
#~ msgid ""
|
365 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
366 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
367 |
+
#~ "deactivate plugin \"Disable comments\"!"
|
368 |
+
#~ msgstr ""
|
369 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
370 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
371 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
372 |
+
|
373 |
+
#~ msgid "Recommended"
|
374 |
+
#~ msgstr "Рекомендовано"
|
375 |
+
|
376 |
+
#~ msgid "You are not allowed to view this page."
|
377 |
+
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
378 |
+
|
379 |
+
#~ msgid "You do not have the selected post types!"
|
380 |
+
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
381 |
+
|
382 |
+
#~ msgid "No comments available for deletion."
|
383 |
+
#~ msgstr "Нет комментариев для удаления."
|
384 |
+
|
385 |
+
#~ msgid ""
|
386 |
+
#~ "Are you sure that you desire to delete all comments from the database?"
|
387 |
+
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
388 |
+
|
389 |
+
#~ msgid ""
|
390 |
+
#~ "Deleting comments will remove existing comment entries in the database "
|
391 |
+
#~ "and cannot be reverted without a database backup."
|
392 |
+
#~ msgstr ""
|
393 |
+
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
394 |
+
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
395 |
+
#~ "базы данных."
|
396 |
+
|
397 |
+
#~ msgid "You have %s comments"
|
398 |
+
#~ msgstr "У вас есть %s комментариев"
|
399 |
+
|
400 |
+
#~ msgid "Yes, I'm sure"
|
401 |
+
#~ msgstr "Да, я уверен"
|
402 |
+
|
403 |
+
#~ msgid "No, return back"
|
404 |
+
#~ msgstr "Нет, вернуться"
|
405 |
+
|
406 |
+
#~ msgid ""
|
407 |
+
#~ "Are you sure that you desire to delete all comments from the database for "
|
408 |
+
#~ "the selected post types (%s)?"
|
409 |
+
#~ msgstr ""
|
410 |
+
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
411 |
+
#~ "выбранных типов записей (%s)?"
|
412 |
+
|
413 |
+
#~ msgid "Webcraftic comments tweaks"
|
414 |
+
#~ msgstr "Webcraftic инструменты комментариев"
|
415 |
+
|
416 |
+
#~ msgid ""
|
417 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
418 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
419 |
+
#~ "deactivate plugin \"Comments tweaks\"!"
|
420 |
+
#~ msgstr ""
|
421 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
422 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
423 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
424 |
+
#~ "комментариев»!"
|
425 |
+
|
426 |
+
#~ msgid "Disable all comments"
|
427 |
+
#~ msgstr "Отключить все комментарии"
|
components/cyrlitera/cyrlitera.php
CHANGED
@@ -1,74 +1,96 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
|
19 |
-
|
|
|
|
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
24 |
|
25 |
-
|
|
|
|
|
|
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
$plugin_info = array(
|
33 |
-
'prefix' => 'wbcr_cyrlitera_',
|
34 |
-
'plugin_name' => 'wbcr_cyrlitera',
|
35 |
-
'plugin_title' => __('Webcraftic Cyrlitera', 'cyrlitera'),
|
36 |
-
'plugin_version' => WCTR_PLUGIN_VERSION,
|
37 |
-
'plugin_build' => 'free',
|
38 |
-
'updates' => WCTR_PLUGIN_DIR . '/updates/'
|
39 |
-
);
|
40 |
|
41 |
-
/**
|
42 |
-
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
43 |
-
*/
|
44 |
-
$compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
|
45 |
-
'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
|
46 |
-
'plugin_as_component' => defined('LOADING_CYRLITERA_AS_ADDON'),
|
47 |
-
'plugin_dir' => WCTR_PLUGIN_DIR,
|
48 |
-
'plugin_base' => WCTR_PLUGIN_BASE,
|
49 |
-
'plugin_url' => WCTR_PLUGIN_URL,
|
50 |
-
'required_php_version' => '5.3',
|
51 |
-
'required_wp_version' => '4.2.0',
|
52 |
-
'required_clearfy_check_component' => true
|
53 |
-
)));
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
if( !$compatibility->check() ) {
|
60 |
-
return;
|
61 |
-
}
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
-
|
73 |
-
|
74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Webcraftic Cyrlitera – transliteration of links and file names
|
4 |
+
* Plugin URI: https://wordpress.org/plugins/cyrlitera/
|
5 |
+
* Description: The plugin converts Cyrillic, Georgian links, filenames into Latin. It is necessary for correct work of WordPress plugins and improve links readability.
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.1.7
|
8 |
+
* Text Domain: cyrlitera
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: http://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
|
14 |
+
// Exit if accessed directly
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
|
19 |
+
if ( ! defined( 'WCTR_PLUGIN_VERSION' ) ) {
|
20 |
+
define( 'WCTR_PLUGIN_VERSION', '1.0.6' );
|
21 |
+
}
|
22 |
|
23 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
24 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
25 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
26 |
+
// --------------------------------------
|
27 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
28 |
+
return;
|
29 |
+
}
|
30 |
|
31 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
32 |
+
return;
|
33 |
+
}
|
34 |
+
// ----------------------------------------
|
35 |
|
36 |
+
if ( ! defined( 'WCTR_PLUGIN_DIR' ) ) {
|
37 |
+
define( 'WCTR_PLUGIN_DIR', dirname( __FILE__ ) );
|
38 |
+
}
|
39 |
+
if ( ! defined( 'WCTR_PLUGIN_BASE' ) ) {
|
40 |
+
define( 'WCTR_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
41 |
+
}
|
42 |
+
if ( ! defined( 'WCTR_PLUGIN_URL' ) ) {
|
43 |
+
define( 'WCTR_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
44 |
+
}
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
+
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
49 |
+
require_once( WCTR_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
50 |
+
require_once( WCTR_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
51 |
+
}
|
|
|
|
|
|
|
52 |
|
53 |
+
$plugin_info = array(
|
54 |
+
'prefix' => 'wbcr_cyrlitera_',
|
55 |
+
'plugin_name' => 'wbcr_cyrlitera',
|
56 |
+
'plugin_title' => __( 'Webcraftic Cyrlitera', 'cyrlitera' ),
|
57 |
+
'plugin_version' => WCTR_PLUGIN_VERSION,
|
58 |
+
'plugin_build' => 'free',
|
59 |
+
'updates' => WCTR_PLUGIN_DIR . '/updates/'
|
60 |
+
);
|
61 |
|
62 |
+
/**
|
63 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
64 |
+
*/
|
65 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
66 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
67 |
+
'plugin_already_activate' => defined( 'WCTR_PLUGIN_ACTIVE' ),
|
68 |
+
'plugin_as_component' => defined( 'LOADING_CYRLITERA_AS_ADDON' ),
|
69 |
+
'plugin_dir' => WCTR_PLUGIN_DIR,
|
70 |
+
'plugin_base' => WCTR_PLUGIN_BASE,
|
71 |
+
'plugin_url' => WCTR_PLUGIN_URL,
|
72 |
+
'required_php_version' => '5.3',
|
73 |
+
'required_wp_version' => '4.2.0',
|
74 |
+
'required_clearfy_check_component' => true
|
75 |
+
) ) );
|
76 |
|
77 |
+
/**
|
78 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
79 |
+
* а пользователь получит предупреждение.
|
80 |
+
*/
|
81 |
+
if ( ! $compatibility->check() ) {
|
82 |
+
return;
|
83 |
+
}
|
84 |
|
85 |
+
define( 'WCTR_PLUGIN_ACTIVE', true );
|
86 |
+
|
87 |
+
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
88 |
+
require_once( WCTR_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
89 |
+
}
|
90 |
+
|
91 |
+
require_once( WCTR_PLUGIN_DIR . '/includes/class.helpers.php' );
|
92 |
+
require_once( WCTR_PLUGIN_DIR . '/includes/class.plugin.php' );
|
93 |
+
|
94 |
+
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
95 |
+
new WCTR_Plugin( __FILE__, $plugin_info );
|
96 |
+
}
|
components/cyrlitera/includes/class.helpers.php
CHANGED
@@ -1,609 +1,636 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
/**
|
4 |
-
*
|
5 |
-
*
|
6 |
-
* @
|
7 |
-
* @version 1.0
|
8 |
*/
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
$iso9_table = self::getSymbolsPack();
|
21 |
-
|
22 |
-
$title = urldecode($title);
|
23 |
-
$title = strtr($title, $iso9_table);
|
24 |
-
|
25 |
-
if( function_exists('iconv') ) {
|
26 |
-
$title = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $title);
|
27 |
-
}
|
28 |
-
|
29 |
-
if( !$ignore_special_symbols ) {
|
30 |
-
$title = preg_replace("/[^A-Za-z0-9'_\-\.]/", '-', $title);
|
31 |
-
$title = preg_replace('/\-+/', '-', $title);
|
32 |
-
$title = preg_replace('/^-+/', '', $title);
|
33 |
-
$title = preg_replace('/-+$/', '', $title);
|
34 |
}
|
35 |
-
|
36 |
-
return apply_filters('wbcr_cyrlitera_transliterate', $title, $origin_title, $iso9_table);
|
37 |
}
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
|
|
56 |
}
|
57 |
-
|
58 |
-
foreach ($backtrace as $backtrace_entry) {
|
59 |
-
if($backtrace_entry['function'] == 'query_posts' and isset($backtrace_entry['class']) and $backtrace_entry['class'] == 'WP'){
|
60 |
-
return $origin_title;
|
61 |
-
}
|
62 |
-
}
|
63 |
-
|
64 |
-
$term = $is_term ? $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE name = '%s'", $title)) : '';
|
65 |
-
|
66 |
-
if( empty($term) ) {
|
67 |
-
$title = self::transliterate($title);
|
68 |
-
} else {
|
69 |
-
$title = $term;
|
70 |
-
}
|
71 |
-
|
72 |
-
return apply_filters('wbcr_cyrlitera_sanitize_title', $title, $origin_title);
|
73 |
}
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
{
|
80 |
-
$
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
$ret = array(
|
83 |
-
|
84 |
-
'
|
85 |
-
'
|
86 |
-
'
|
87 |
-
'
|
88 |
-
'
|
89 |
-
'
|
90 |
-
'
|
91 |
-
'
|
92 |
-
'
|
93 |
-
'
|
94 |
-
'
|
95 |
-
'
|
96 |
-
'
|
97 |
-
'
|
98 |
-
'
|
99 |
-
'
|
100 |
-
'
|
101 |
-
'
|
102 |
-
'
|
103 |
-
'
|
104 |
-
'
|
105 |
-
'
|
106 |
-
'
|
107 |
-
'
|
108 |
-
'
|
109 |
-
'
|
110 |
-
'
|
111 |
-
'
|
112 |
-
'
|
113 |
-
'
|
114 |
-
'
|
115 |
-
'
|
116 |
-
'П' => 'P',
|
117 |
-
'п' => 'p',
|
118 |
-
'Р' => 'R',
|
119 |
-
'р' => 'r',
|
120 |
-
'С' => 'S',
|
121 |
-
'с' => 's',
|
122 |
-
'Т' => 'T',
|
123 |
-
'т' => 't',
|
124 |
-
'У' => 'U',
|
125 |
-
'у' => 'u',
|
126 |
-
'Ф' => 'F',
|
127 |
-
'ф' => 'f',
|
128 |
-
'Х' => 'H',
|
129 |
-
'х' => 'h',
|
130 |
-
'Ц' => 'C',
|
131 |
-
'ц' => 'c',
|
132 |
-
'Ч' => 'Ch',
|
133 |
-
'ч' => 'ch',
|
134 |
-
'Ш' => 'Sh',
|
135 |
-
'ш' => 'sh',
|
136 |
-
'Щ' => 'Shh',
|
137 |
-
'щ' => 'shh',
|
138 |
-
'Ъ' => '',
|
139 |
-
'ъ' => '',
|
140 |
-
'Ы' => 'Y',
|
141 |
-
'ы' => 'y',
|
142 |
-
'Ь' => '',
|
143 |
-
'ь' => '',
|
144 |
-
'Э' => 'Je',
|
145 |
-
'э' => 'je',
|
146 |
-
'Ю' => 'Ju',
|
147 |
-
'ю' => 'ju',
|
148 |
-
'Я' => 'Ja',
|
149 |
-
'я' => 'ja',
|
150 |
-
// global
|
151 |
-
'Ґ' => 'G',
|
152 |
-
'ґ' => 'g',
|
153 |
-
'Є' => 'Ie',
|
154 |
-
'є' => 'ie',
|
155 |
-
'І' => 'I',
|
156 |
-
'і' => 'i',
|
157 |
-
'Ї' => 'I',
|
158 |
-
'ї' => 'i',
|
159 |
-
'Ї' => 'i',
|
160 |
-
'ї' => 'i',
|
161 |
-
'Ё' => 'Jo',
|
162 |
-
'ё' => 'jo',
|
163 |
-
'й' => 'i',
|
164 |
-
'Й' => 'I'
|
165 |
);
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
'ու' => 'u',
|
310 |
-
'Փ' => 'P',
|
311 |
-
'փ' => 'p',
|
312 |
-
'Ք' => 'Q',
|
313 |
-
'ք' => 'q',
|
314 |
-
'Եվ' => 'EV',
|
315 |
-
'և' => 'ev',
|
316 |
-
'Օ' => 'O',
|
317 |
-
'օ' => 'o',
|
318 |
-
'Ֆ' => 'F',
|
319 |
-
'ֆ' => 'f'
|
320 |
-
));
|
321 |
-
}
|
322 |
-
|
323 |
-
// Serbian
|
324 |
-
if($loc == 'sr_RS'){
|
325 |
-
$ret = array_merge($ret, array(
|
326 |
-
"Ђ" => "DJ",
|
327 |
-
"Ж" => "Z",
|
328 |
-
"З" => "Z",
|
329 |
-
"Љ" => "LJ",
|
330 |
-
"Њ" => "NJ",
|
331 |
-
"Ш" => "S",
|
332 |
-
"Ћ" => "C",
|
333 |
-
"Ц" => "C",
|
334 |
-
"Ч" => "C",
|
335 |
-
"Џ" => "DZ",
|
336 |
-
"ђ" => "dj",
|
337 |
-
"ж" => "z",
|
338 |
-
"з" => "z",
|
339 |
-
"и" => "i",
|
340 |
-
"љ" => "lj",
|
341 |
-
"њ" => "nj",
|
342 |
-
"ш" => "s",
|
343 |
-
"ћ" => "c",
|
344 |
-
"ч" => "c",
|
345 |
-
"џ" => "dz",
|
346 |
-
"Ња" => "Nja",
|
347 |
-
"Ње" => "Nje",
|
348 |
-
"Њи" => "Nji",
|
349 |
-
"Њо" => "Njo",
|
350 |
-
"Њу" => "Nju",
|
351 |
-
"Ља" => "Lja",
|
352 |
-
"Ље" => "Lje",
|
353 |
-
"Љи" => "Lji",
|
354 |
-
"Љо" => "Ljo",
|
355 |
-
"Љу" => "Lju",
|
356 |
-
"Џа" => "Dza",
|
357 |
-
"Џе" => "Dze",
|
358 |
-
"Џи" => "Dzi",
|
359 |
-
"Џо" => "Dzo",
|
360 |
-
"Џу" => "Dzu"
|
361 |
-
));
|
362 |
-
}
|
363 |
-
|
364 |
-
|
365 |
-
$custom_rules = WCTR_Plugin::app()->getPopulateOption('custom_symbols_pack');
|
366 |
-
|
367 |
-
if( !empty($custom_rules) ) {
|
368 |
-
$split_rules = explode(',', $custom_rules);
|
369 |
-
$split_rules = array_map('trim', $split_rules);
|
370 |
-
|
371 |
-
foreach($split_rules as $rule) {
|
372 |
-
$split_symbols = explode('=', $rule);
|
373 |
-
|
374 |
-
if( sizeof($split_symbols) === 2 ) {
|
375 |
-
if( empty($split_symbols[0]) ) {
|
376 |
-
continue;
|
377 |
-
}
|
378 |
-
|
379 |
-
$ret[$split_symbols[0]] = $split_symbols[1];
|
380 |
}
|
|
|
|
|
381 |
}
|
382 |
}
|
383 |
-
|
384 |
-
return apply_filters('wbcr_cyrlitera_default_symbols_pack', $ret);
|
385 |
}
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
|
|
|
|
396 |
LEFT JOIN {$wpdb->postmeta} m
|
397 |
ON p.ID = m.post_id
|
398 |
WHERE p.post_status
|
399 |
-
IN ('publish', 'future', 'private') AND m.meta_key='wbcr_wp_old_slug' AND m.meta_value IS NOT NULL");
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
}
|
406 |
}
|
407 |
-
|
408 |
-
|
|
|
409 |
LEFT JOIN {$wpdb->options} o
|
410 |
ON o.option_name=concat('wbcr_wp_term_',t.term_id, '_old_slug')
|
411 |
-
WHERE o.option_value IS NOT NULL");
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
}
|
418 |
}
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
|
|
424 |
LEFT JOIN {$wpdb->options} o
|
425 |
ON o.option_name=concat('wbcr_bp_groups_',t.id, '_old_slug')
|
426 |
-
WHERE o.option_value IS NOT NULL");
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
$forums = $wpdb->get_results("SELECT t.id, t.name, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}forum_forums t
|
439 |
LEFT JOIN {$wpdb->options} o
|
440 |
ON o.option_name=concat('wbcr_asgaros_forums_',t.id, '_old_slug')
|
441 |
-
WHERE o.option_value IS NOT NULL");
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
LEFT JOIN {$wpdb->options} o
|
452 |
ON o.option_name=concat('wbcr_asgaros_topics_',t.id, '_old_slug')
|
453 |
-
WHERE o.option_value IS NOT NULL");
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
$forums = $wpdb->get_results("SELECT t.forumid, t.title, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}wpforo_forums t
|
467 |
LEFT JOIN {$wpdb->options} o
|
468 |
ON o.option_name=concat('wbcr_wpforo_forums_',t.forumid, '_old_slug')
|
469 |
-
WHERE o.option_value IS NOT NULL");
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
LEFT JOIN {$wpdb->options} o
|
481 |
ON o.option_name=concat('wbcr_wpforo_topics_',t.topicid, '_old_slug')
|
482 |
-
WHERE o.option_value IS NOT NULL");
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
}
|
496 |
-
|
497 |
-
|
498 |
}
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
WHERE post_name REGEXP('[^_A-Za-z0-9\-]+') AND post_status IN ('publish', 'future', 'private')");
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
}
|
519 |
}
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
$
|
|
|
|
|
|
|
|
|
529 |
}
|
530 |
}
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
// WP Foro
|
576 |
-
if(is_plugin_active('wpforo/wpforo.php')){
|
577 |
-
// forum slug
|
578 |
-
$forums = $wpdb->get_results("SELECT `forumid`, `title`, `slug` FROM {$wpdb->prefix}wpforo_forums WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')");
|
579 |
-
if(is_array($forums)){
|
580 |
-
foreach ($forums as $forum){
|
581 |
-
$sanitized_slug = WCTR_Helper::sanitizeTitle(urldecode($forum->slug));
|
582 |
-
if($forum->slug != $sanitized_slug){
|
583 |
-
update_option('wbcr_wpforo_forums_'.$forum->forumid.'_old_slug', $forum->slug, false);
|
584 |
-
$wpdb->update($wpdb->prefix.'wpforo_forums', array('slug' => $sanitized_slug), array('forumid' => $forum->forumid), array('%s'), array('%d'));
|
585 |
-
}
|
586 |
-
}
|
587 |
-
}
|
588 |
-
|
589 |
-
// topic slug
|
590 |
-
$topics = $wpdb->get_results("SELECT `topicid`, `title`, `slug` FROM {$wpdb->prefix}wpforo_topics WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')");
|
591 |
-
if(is_array($topics)){
|
592 |
-
foreach ($topics as $topic) {
|
593 |
-
$sanitized_slug = WCTR_Helper::sanitizeTitle(urldecode($topic->slug));
|
594 |
-
if($topic->slug != $sanitized_slug){
|
595 |
-
update_option('wbcr_wpforo_topics_'.$topic->topicid.'_old_slug', $topic->slug, false);
|
596 |
-
$wpdb->update($wpdb->prefix.'wpforo_topics', array('slug' => $sanitized_slug), array('topicid' => $topic->topicid), array('%s'), array('%d'));
|
597 |
-
}
|
598 |
-
}
|
599 |
-
}
|
600 |
-
|
601 |
-
// clear cache
|
602 |
-
WPF()->phrase->clear_cache();
|
603 |
-
WPF()->member->clear_db_cache();
|
604 |
-
wpforo_clean_cache();
|
605 |
-
}
|
606 |
-
|
607 |
-
|
608 |
-
}
|
609 |
}
|
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* Helpers functions
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 2017 Webraftic Ltd
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
class WCTR_Helper {
|
16 |
+
|
17 |
+
public static function transliterate( $title, $ignore_special_symbols = false ) {
|
18 |
+
$origin_title = $title;
|
19 |
+
$iso9_table = self::getSymbolsPack();
|
20 |
+
|
21 |
+
$title = urldecode( $title );
|
22 |
+
$title = strtr( $title, $iso9_table );
|
23 |
+
|
24 |
+
if ( function_exists( 'iconv' ) ) {
|
25 |
+
$title = iconv( 'UTF-8', 'UTF-8//TRANSLIT//IGNORE', $title );
|
26 |
+
}
|
27 |
+
|
28 |
+
if ( ! $ignore_special_symbols ) {
|
29 |
+
$title = preg_replace( "/[^A-Za-z0-9'_\-\.]/", '-', $title );
|
30 |
+
$title = preg_replace( '/\-+/', '-', $title );
|
31 |
+
$title = preg_replace( '/^-+/', '', $title );
|
32 |
+
$title = preg_replace( '/-+$/', '', $title );
|
33 |
+
}
|
34 |
+
|
35 |
+
return apply_filters( 'wbcr_cyrlitera_transliterate', $title, $origin_title, $iso9_table );
|
36 |
+
}
|
37 |
+
|
38 |
/**
|
39 |
+
* @param string $title обработанный заголовок
|
40 |
+
*
|
41 |
+
* @return mixed|string
|
|
|
42 |
*/
|
43 |
+
public static function sanitizeTitle( $title ) {
|
44 |
+
global $wpdb;
|
45 |
+
|
46 |
+
$origin_title = $title;
|
47 |
+
|
48 |
+
$is_term = false;
|
49 |
+
$backtrace = debug_backtrace();
|
50 |
+
foreach ( $backtrace as $backtrace_entry ) {
|
51 |
+
if ( $backtrace_entry['function'] == 'wp_insert_term' ) {
|
52 |
+
$is_term = true;
|
53 |
+
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
|
|
|
|
55 |
}
|
56 |
+
|
57 |
+
foreach ( $backtrace as $backtrace_entry ) {
|
58 |
+
if ( isset( $backtrace_entry['function'] ) && isset( $backtrace_entry['class'] ) ) {
|
59 |
+
|
60 |
+
# WOOCOMMERCE FIXES
|
61 |
+
# We need to cancel the transliteration of attributes for variable products,
|
62 |
+
# as this brings harm to users.
|
63 |
+
#------------------------------------
|
64 |
+
/*if ( class_exists( 'WooCommerce' ) ) {
|
65 |
+
$is_woo_variations = in_array( $backtrace_entry['function'], array(
|
66 |
+
'set_attributes',
|
67 |
+
'output',
|
68 |
+
'load_variations',
|
69 |
+
'prepare_set_attributes',
|
70 |
+
'save_attributes',
|
71 |
+
'add_variation',
|
72 |
+
'save_variations',
|
73 |
+
'read_variation_attributes'
|
74 |
+
) ) && in_array( $backtrace_entry['class'], array(
|
75 |
+
'WC_AJAX',
|
76 |
+
'WC_Product',
|
77 |
+
'WC_Meta_Box_Product_Data',
|
78 |
+
'WC_Product_Variable_Data_Store_CPT'
|
79 |
+
) );
|
80 |
+
|
81 |
+
if ( $is_woo_variations ) {
|
82 |
+
return $origin_title;
|
83 |
+
}
|
84 |
+
}*/
|
85 |
+
#------------------------------------
|
86 |
+
|
87 |
+
# FRONTEND FIXES
|
88 |
+
#------------------------------------
|
89 |
+
if ( ! is_admin() ) {
|
90 |
+
$is_query = in_array( $backtrace_entry['function'], array(
|
91 |
+
'query_posts',
|
92 |
+
'get_terms'
|
93 |
+
) ) && in_array( $backtrace_entry['class'], array( 'WP', 'WP_Term_Query' ) );
|
94 |
+
|
95 |
+
if ( $is_query ) {
|
96 |
+
return $origin_title;
|
97 |
+
}
|
98 |
}
|
99 |
+
#------------------------------------
|
100 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
+
|
103 |
+
$term = $is_term ? $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$wpdb->terms} WHERE name = '%s'", $title ) ) : '';
|
104 |
+
|
105 |
+
if ( empty( $term ) ) {
|
106 |
+
$title = self::transliterate( $title );
|
107 |
+
} else {
|
108 |
+
$title = $term;
|
109 |
+
}
|
110 |
+
|
111 |
+
return apply_filters( 'wbcr_cyrlitera_sanitize_title', $title, $origin_title );
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* @return array
|
116 |
+
*/
|
117 |
+
public static function getSymbolsPack() {
|
118 |
+
$loc = get_locale();
|
119 |
+
|
120 |
+
$ret = array(
|
121 |
+
// russian
|
122 |
+
'А' => 'A',
|
123 |
+
'а' => 'a',
|
124 |
+
'Б' => 'B',
|
125 |
+
'б' => 'b',
|
126 |
+
'В' => 'V',
|
127 |
+
'в' => 'v',
|
128 |
+
'Г' => 'G',
|
129 |
+
'г' => 'g',
|
130 |
+
'Д' => 'D',
|
131 |
+
'д' => 'd',
|
132 |
+
'Е' => 'E',
|
133 |
+
'е' => 'e',
|
134 |
+
'Ё' => 'Jo',
|
135 |
+
'ё' => 'jo',
|
136 |
+
'Ж' => 'Zh',
|
137 |
+
'ж' => 'zh',
|
138 |
+
'З' => 'Z',
|
139 |
+
'з' => 'z',
|
140 |
+
'И' => 'I',
|
141 |
+
'и' => 'i',
|
142 |
+
'Й' => 'J',
|
143 |
+
'й' => 'j',
|
144 |
+
'К' => 'K',
|
145 |
+
'к' => 'k',
|
146 |
+
'Л' => 'L',
|
147 |
+
'л' => 'l',
|
148 |
+
'М' => 'M',
|
149 |
+
'м' => 'm',
|
150 |
+
'Н' => 'N',
|
151 |
+
'н' => 'n',
|
152 |
+
'О' => 'O',
|
153 |
+
'о' => 'o',
|
154 |
+
'П' => 'P',
|
155 |
+
'п' => 'p',
|
156 |
+
'Р' => 'R',
|
157 |
+
'р' => 'r',
|
158 |
+
'С' => 'S',
|
159 |
+
'с' => 's',
|
160 |
+
'Т' => 'T',
|
161 |
+
'т' => 't',
|
162 |
+
'У' => 'U',
|
163 |
+
'у' => 'u',
|
164 |
+
'Ф' => 'F',
|
165 |
+
'ф' => 'f',
|
166 |
+
'Х' => 'H',
|
167 |
+
'х' => 'h',
|
168 |
+
'Ц' => 'C',
|
169 |
+
'ц' => 'c',
|
170 |
+
'Ч' => 'Ch',
|
171 |
+
'ч' => 'ch',
|
172 |
+
'Ш' => 'Sh',
|
173 |
+
'ш' => 'sh',
|
174 |
+
'Щ' => 'Shh',
|
175 |
+
'щ' => 'shh',
|
176 |
+
'Ъ' => '',
|
177 |
+
'ъ' => '',
|
178 |
+
'Ы' => 'Y',
|
179 |
+
'ы' => 'y',
|
180 |
+
'Ь' => '',
|
181 |
+
'ь' => '',
|
182 |
+
'Э' => 'Je',
|
183 |
+
'э' => 'je',
|
184 |
+
'Ю' => 'Ju',
|
185 |
+
'ю' => 'ju',
|
186 |
+
'Я' => 'Ja',
|
187 |
+
'я' => 'ja',
|
188 |
+
// global
|
189 |
+
'Ґ' => 'G',
|
190 |
+
'ґ' => 'g',
|
191 |
+
'Є' => 'Ie',
|
192 |
+
'є' => 'ie',
|
193 |
+
'І' => 'I',
|
194 |
+
'і' => 'i',
|
195 |
+
'Ї' => 'I',
|
196 |
+
'ї' => 'i',
|
197 |
+
'Ї' => 'i',
|
198 |
+
'ї' => 'i',
|
199 |
+
'Ё' => 'Jo',
|
200 |
+
'ё' => 'jo',
|
201 |
+
'й' => 'i',
|
202 |
+
'Й' => 'I'
|
203 |
+
);
|
204 |
+
|
205 |
+
// ukrainian
|
206 |
+
if ( $loc == 'uk' ) {
|
207 |
+
$ret = array_merge( $ret, array(
|
208 |
+
'Г' => 'H',
|
209 |
+
'г' => 'h',
|
210 |
+
'И' => 'Y',
|
211 |
+
'и' => 'y',
|
212 |
+
'Х' => 'Kh',
|
213 |
+
'х' => 'kh',
|
214 |
+
'Ц' => 'Ts',
|
215 |
+
'ц' => 'ts',
|
216 |
+
'Щ' => 'Shch',
|
217 |
+
'щ' => 'shch',
|
218 |
+
'Ю' => 'Iu',
|
219 |
+
'ю' => 'iu',
|
220 |
+
'Я' => 'Ia',
|
221 |
+
'я' => 'ia',
|
222 |
+
|
223 |
+
) );
|
224 |
+
//bulgarian
|
225 |
+
} elseif ( $loc == 'bg' || $loc == 'bg_BG' ) {
|
226 |
+
$ret = array_merge( $ret, array(
|
227 |
+
'Щ' => 'Sht',
|
228 |
+
'щ' => 'sht',
|
229 |
+
'Ъ' => 'a',
|
230 |
+
'ъ' => 'a'
|
231 |
+
) );
|
232 |
+
}
|
233 |
+
|
234 |
+
if ( $loc == 'ka_GE' ) {
|
235 |
$ret = array(
|
236 |
+
'ა' => 'a',
|
237 |
+
'ბ' => 'b',
|
238 |
+
'გ' => 'g',
|
239 |
+
'დ' => 'd',
|
240 |
+
'ე' => 'e',
|
241 |
+
'ვ' => 'v',
|
242 |
+
'ზ' => 'z',
|
243 |
+
'თ' => 'th',
|
244 |
+
'ი' => 'i',
|
245 |
+
'კ' => 'k',
|
246 |
+
'ლ' => 'l',
|
247 |
+
'მ' => 'm',
|
248 |
+
'ნ' => 'n',
|
249 |
+
'ო' => 'o',
|
250 |
+
'პ' => 'p',
|
251 |
+
'ჟ' => 'zh',
|
252 |
+
'რ' => 'r',
|
253 |
+
'ს' => 's',
|
254 |
+
'ტ' => 't',
|
255 |
+
'უ' => 'u',
|
256 |
+
'ფ' => 'ph',
|
257 |
+
'ქ' => 'q',
|
258 |
+
'ღ' => 'gh',
|
259 |
+
'ყ' => 'qh',
|
260 |
+
'შ' => 'sh',
|
261 |
+
'ჩ' => 'ch',
|
262 |
+
'ც' => 'ts',
|
263 |
+
'ძ' => 'dz',
|
264 |
+
'წ' => 'ts',
|
265 |
+
'ჭ' => 'tch',
|
266 |
+
'ხ' => 'kh',
|
267 |
+
'ჯ' => 'j',
|
268 |
+
'ჰ' => 'h'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
);
|
270 |
+
}
|
271 |
+
|
272 |
+
// Armenian
|
273 |
+
if ( $loc == 'hy' ) {
|
274 |
+
$ret = array_merge( $ret, array(
|
275 |
+
'Ա' => 'A',
|
276 |
+
'ա' => 'a',
|
277 |
+
'Բ' => 'B',
|
278 |
+
'բ' => 'b',
|
279 |
+
'Գ' => 'G',
|
280 |
+
'գ' => 'g',
|
281 |
+
'Դ' => 'D',
|
282 |
+
'դ' => 'd',
|
283 |
+
' Ե' => ' Ye',
|
284 |
+
'Ե' => 'E',
|
285 |
+
' ե' => ' ye',
|
286 |
+
'ե' => 'e',
|
287 |
+
'Զ' => 'Z',
|
288 |
+
'զ' => 'z',
|
289 |
+
'Է' => 'E',
|
290 |
+
'է' => 'e',
|
291 |
+
'Ը' => 'Y',
|
292 |
+
'ը' => 'y',
|
293 |
+
'Թ' => 'T',
|
294 |
+
'թ' => 't',
|
295 |
+
'Ժ' => 'Zh',
|
296 |
+
'ժ' => 'zh',
|
297 |
+
'Ի' => 'I',
|
298 |
+
'ի' => 'i',
|
299 |
+
'Լ' => 'L',
|
300 |
+
'լ' => 'l',
|
301 |
+
'Խ' => 'KH',
|
302 |
+
'խ' => 'kh',
|
303 |
+
'Ծ' => 'TS',
|
304 |
+
'ծ' => 'ts',
|
305 |
+
'Կ' => 'K',
|
306 |
+
'կ' => 'K',
|
307 |
+
'Հ' => 'H',
|
308 |
+
'հ' => 'h',
|
309 |
+
'Ձ' => 'DZ',
|
310 |
+
'ձ' => 'dz',
|
311 |
+
'Ղ' => 'GH',
|
312 |
+
'ղ' => 'gh',
|
313 |
+
'Ճ' => 'J',
|
314 |
+
'Ճ' => 'j',
|
315 |
+
'Մ' => 'M',
|
316 |
+
'մ' => 'm',
|
317 |
+
'Յ' => 'Y',
|
318 |
+
'յ' => 'y',
|
319 |
+
'Ն' => 'N',
|
320 |
+
'ն' => 'n',
|
321 |
+
'Շ' => 'SH',
|
322 |
+
'շ' => 'sh',
|
323 |
+
' Ո' => 'VO',
|
324 |
+
'Ո' => 'VO',
|
325 |
+
' ո' => ' vo',
|
326 |
+
'ո' => 'o',
|
327 |
+
'Չ' => 'Ch',
|
328 |
+
'չ' => 'ch',
|
329 |
+
'Պ' => 'P',
|
330 |
+
'պ' => 'p',
|
331 |
+
'Ջ' => 'J',
|
332 |
+
'ջ' => 'j',
|
333 |
+
'Ռ' => 'R',
|
334 |
+
'ռ' => 'r',
|
335 |
+
'Ս' => 'S',
|
336 |
+
'ս' => 's',
|
337 |
+
'Վ' => 'V',
|
338 |
+
'վ' => 'v',
|
339 |
+
'Տ' => 'T',
|
340 |
+
'տ' => 't',
|
341 |
+
'Ր' => 'R',
|
342 |
+
'ր' => 'r',
|
343 |
+
'Ց' => 'C',
|
344 |
+
'ց' => 'c',
|
345 |
+
'Ու' => 'U',
|
346 |
+
'ու' => 'u',
|
347 |
+
'Փ' => 'P',
|
348 |
+
'փ' => 'p',
|
349 |
+
'Ք' => 'Q',
|
350 |
+
'ք' => 'q',
|
351 |
+
'Եվ' => 'EV',
|
352 |
+
'և' => 'ev',
|
353 |
+
'Օ' => 'O',
|
354 |
+
'օ' => 'o',
|
355 |
+
'Ֆ' => 'F',
|
356 |
+
'ֆ' => 'f'
|
357 |
+
) );
|
358 |
+
}
|
359 |
+
|
360 |
+
// Serbian
|
361 |
+
if ( $loc == 'sr_RS' ) {
|
362 |
+
$ret = array_merge( $ret, array(
|
363 |
+
"Ђ" => "DJ",
|
364 |
+
"Ж" => "Z",
|
365 |
+
"З" => "Z",
|
366 |
+
"Љ" => "LJ",
|
367 |
+
"Њ" => "NJ",
|
368 |
+
"Ш" => "S",
|
369 |
+
"Ћ" => "C",
|
370 |
+
"Ц" => "C",
|
371 |
+
"Ч" => "C",
|
372 |
+
"Џ" => "DZ",
|
373 |
+
"ђ" => "dj",
|
374 |
+
"ж" => "z",
|
375 |
+
"з" => "z",
|
376 |
+
"и" => "i",
|
377 |
+
"љ" => "lj",
|
378 |
+
"њ" => "nj",
|
379 |
+
"ш" => "s",
|
380 |
+
"ћ" => "c",
|
381 |
+
"ч" => "c",
|
382 |
+
"џ" => "dz",
|
383 |
+
"Ња" => "Nja",
|
384 |
+
"Ње" => "Nje",
|
385 |
+
"Њи" => "Nji",
|
386 |
+
"Њо" => "Njo",
|
387 |
+
"Њу" => "Nju",
|
388 |
+
"Ља" => "Lja",
|
389 |
+
"Ље" => "Lje",
|
390 |
+
"Љи" => "Lji",
|
391 |
+
"Љо" => "Ljo",
|
392 |
+
"Љу" => "Lju",
|
393 |
+
"Џа" => "Dza",
|
394 |
+
"Џе" => "Dze",
|
395 |
+
"Џи" => "Dzi",
|
396 |
+
"Џо" => "Dzo",
|
397 |
+
"Џу" => "Dzu"
|
398 |
+
) );
|
399 |
+
}
|
400 |
+
|
401 |
+
$custom_rules = WCTR_Plugin::app()->getPopulateOption( 'custom_symbols_pack' );
|
402 |
+
|
403 |
+
if ( ! empty( $custom_rules ) ) {
|
404 |
+
$split_rules = explode( ',', $custom_rules );
|
405 |
+
$split_rules = array_map( 'trim', $split_rules );
|
406 |
+
|
407 |
+
foreach ( $split_rules as $rule ) {
|
408 |
+
$split_symbols = explode( '=', $rule );
|
409 |
+
|
410 |
+
if ( sizeof( $split_symbols ) === 2 ) {
|
411 |
+
if ( empty( $split_symbols[0] ) ) {
|
412 |
+
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
}
|
414 |
+
|
415 |
+
$ret[ $split_symbols[0] ] = $split_symbols[1];
|
416 |
}
|
417 |
}
|
|
|
|
|
418 |
}
|
419 |
+
|
420 |
+
return apply_filters( 'wbcr_cyrlitera_default_symbols_pack', $ret );
|
421 |
+
}
|
422 |
+
|
423 |
+
/**
|
424 |
+
* Делает откат изменений после выполнения метода convertExistingSlugs,
|
425 |
+
* этот метод не восстановливает вновь конвертированные слаги.
|
426 |
+
*/
|
427 |
+
public static function rollbackUrlChanges() {
|
428 |
+
global $wpdb;
|
429 |
+
|
430 |
+
$posts = $wpdb->get_results( "SELECT p.ID, p.post_name, m.meta_value as old_post_name FROM {$wpdb->posts} p
|
431 |
LEFT JOIN {$wpdb->postmeta} m
|
432 |
ON p.ID = m.post_id
|
433 |
WHERE p.post_status
|
434 |
+
IN ('publish', 'future', 'private') AND m.meta_key='wbcr_wp_old_slug' AND m.meta_value IS NOT NULL" );
|
435 |
+
|
436 |
+
foreach ( (array) $posts as $post ) {
|
437 |
+
if ( $post->post_name != $post->old_post_name ) {
|
438 |
+
$wpdb->update( $wpdb->posts, array( 'post_name' => $post->old_post_name ), array( 'ID' => $post->ID ), array( '%s' ), array( '%d' ) );
|
439 |
+
delete_post_meta( $post->ID, 'wbcr_wp_old_slug' );
|
|
|
440 |
}
|
441 |
+
}
|
442 |
+
|
443 |
+
$terms = $wpdb->get_results( "SELECT t.term_id, t.slug, o.option_value as old_term_slug FROM {$wpdb->terms} t
|
444 |
LEFT JOIN {$wpdb->options} o
|
445 |
ON o.option_name=concat('wbcr_wp_term_',t.term_id, '_old_slug')
|
446 |
+
WHERE o.option_value IS NOT NULL" );
|
447 |
+
|
448 |
+
foreach ( (array) $terms as $term ) {
|
449 |
+
if ( $term->slug != $term->old_term_slug ) {
|
450 |
+
$wpdb->update( $wpdb->terms, array( 'slug' => $term->old_term_slug ), array( 'term_id' => $term->term_id ), array( '%s' ), array( '%d' ) );
|
451 |
+
delete_option( 'wbcr_wp_term_' . $term->term_id . '_old_slug' );
|
|
|
452 |
}
|
453 |
+
}
|
454 |
+
|
455 |
+
// BuddyPress group slug
|
456 |
+
// ! slug maybe urlencoded
|
457 |
+
if ( is_plugin_active( 'buddypress/bp-loader.php' ) ) {
|
458 |
+
$groups = $wpdb->get_results( "SELECT t.id, t.name, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}bp_groups t
|
459 |
LEFT JOIN {$wpdb->options} o
|
460 |
ON o.option_name=concat('wbcr_bp_groups_',t.id, '_old_slug')
|
461 |
+
WHERE o.option_value IS NOT NULL" );
|
462 |
+
foreach ( (array) $groups as $group ) {
|
463 |
+
if ( $group->slug != $group->old_term_slug ) {
|
464 |
+
$wpdb->update( "{$wpdb->prefix}bp_groups", array( 'slug' => $group->old_term_slug ), array( 'id' => $group->id ), array( '%s' ), array( '%d' ) );
|
465 |
+
delete_option( 'wbcr_bp_groups_' . $group->id . '_old_slug' );
|
466 |
+
}
|
467 |
+
}
|
468 |
+
}
|
469 |
+
|
470 |
+
// Asgaros Forum
|
471 |
+
if ( is_plugin_active( 'asgaros-forum/asgaros-forum.php' ) ) {
|
472 |
+
$forums = $wpdb->get_results( "SELECT t.id, t.name, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}forum_forums t
|
|
|
473 |
LEFT JOIN {$wpdb->options} o
|
474 |
ON o.option_name=concat('wbcr_asgaros_forums_',t.id, '_old_slug')
|
475 |
+
WHERE o.option_value IS NOT NULL" );
|
476 |
+
foreach ( (array) $forums as $forum ) {
|
477 |
+
if ( $forum->slug != $forum->old_term_slug ) {
|
478 |
+
$wpdb->update( "{$wpdb->prefix}forum_forums", array( 'slug' => $forum->old_term_slug ), array( 'id' => $forum->id ), array( '%s' ), array( '%d' ) );
|
479 |
+
delete_option( 'wbcr_asgaros_forums_' . $forum->id . '_old_slug' );
|
480 |
+
}
|
481 |
+
}
|
482 |
+
|
483 |
+
//topic
|
484 |
+
$topics = $wpdb->get_results( "SELECT t.id, t.name, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}forum_topics t
|
485 |
LEFT JOIN {$wpdb->options} o
|
486 |
ON o.option_name=concat('wbcr_asgaros_topics_',t.id, '_old_slug')
|
487 |
+
WHERE o.option_value IS NOT NULL" );
|
488 |
+
foreach ( (array) $topics as $topic ) {
|
489 |
+
if ( $topic->slug != $topic->old_term_slug ) {
|
490 |
+
$wpdb->update( "{$wpdb->prefix}forum_topics", array( 'slug' => $topic->old_term_slug ), array( 'id' => $topic->id ), array( '%s' ), array( '%d' ) );
|
491 |
+
delete_option( 'wbcr_asgaros_topics_' . $topic->id . '_old_slug' );
|
492 |
+
}
|
493 |
+
}
|
494 |
+
}
|
495 |
+
|
496 |
+
// WP Foro
|
497 |
+
if ( is_plugin_active( 'wpforo/wpforo.php' ) ) {
|
498 |
+
// forums
|
499 |
+
$forums = $wpdb->get_results( "SELECT t.forumid, t.title, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}wpforo_forums t
|
|
|
500 |
LEFT JOIN {$wpdb->options} o
|
501 |
ON o.option_name=concat('wbcr_wpforo_forums_',t.forumid, '_old_slug')
|
502 |
+
WHERE o.option_value IS NOT NULL" );
|
503 |
+
|
504 |
+
foreach ( (array) $forums as $forum ) {
|
505 |
+
if ( $forum->slug != $forum->old_term_slug ) {
|
506 |
+
$wpdb->update( "{$wpdb->prefix}wpforo_forums", array( 'slug' => $forum->old_term_slug ), array( 'forumid' => $forum->forumid ), array( '%s' ), array( '%d' ) );
|
507 |
+
delete_option( 'wbcr_wpforo_forums_' . $topic->id . '_old_slug' );
|
508 |
+
}
|
509 |
+
}
|
510 |
+
|
511 |
+
// topics
|
512 |
+
$topics = $wpdb->get_results( "SELECT t.topicid, t.title, t.slug, o.option_value as old_term_slug FROM {$wpdb->prefix}wpforo_topics t
|
513 |
LEFT JOIN {$wpdb->options} o
|
514 |
ON o.option_name=concat('wbcr_wpforo_topics_',t.topicid, '_old_slug')
|
515 |
+
WHERE o.option_value IS NOT NULL" );
|
516 |
+
|
517 |
+
foreach ( (array) $topics as $topic ) {
|
518 |
+
if ( $topic->slug != $topic->old_term_slug ) {
|
519 |
+
$wpdb->update( "{$wpdb->prefix}wpforo_topics", array( 'slug' => $topic->old_term_slug ), array( 'topicid' => $topic->topicid ), array( '%s' ), array( '%d' ) );
|
520 |
+
delete_option( 'wbcr_wpforo_topics_' . $topic->id . '_old_slug' );
|
521 |
+
}
|
522 |
+
}
|
523 |
+
|
524 |
+
// clear cache
|
525 |
+
WPF()->phrase->clear_cache();
|
526 |
+
WPF()->member->clear_db_cache();
|
527 |
+
wpforo_clean_cache();
|
|
|
|
|
|
|
528 |
}
|
529 |
+
}
|
530 |
+
|
531 |
+
/**
|
532 |
+
* Массово конвертирует слаги для страниц, записей, терминов и т.д.
|
533 |
+
* Делает бекап старого слага, чтобы можно было восстановить его. А также использовать в других плагинах.
|
534 |
+
*/
|
535 |
+
public static function convertExistingSlugs() {
|
536 |
+
global $wpdb;
|
537 |
+
|
538 |
+
$posts = $wpdb->get_results( "SELECT ID, post_name FROM {$wpdb->posts}
|
539 |
+
WHERE post_name REGEXP('[^_A-Za-z0-9\-]+') AND post_status IN ('publish', 'future', 'private')" );
|
540 |
+
|
541 |
+
foreach ( (array) $posts as $post ) {
|
542 |
+
$sanitized_name = WCTR_Helper::sanitizeTitle( urldecode( $post->post_name ) );
|
543 |
+
|
544 |
+
if ( $post->post_name != $sanitized_name ) {
|
545 |
+
add_post_meta( $post->ID, 'wbcr_wp_old_slug', $post->post_name );
|
546 |
+
|
547 |
+
$wpdb->update( $wpdb->posts, array( 'post_name' => $sanitized_name ), array( 'ID' => $post->ID ), array( '%s' ), array( '%d' ) );
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
$terms = $wpdb->get_results( "SELECT term_id, slug FROM {$wpdb->terms} WHERE slug REGEXP('[^_A-Za-z0-9\-]+')" );
|
552 |
+
|
553 |
+
foreach ( (array) $terms as $term ) {
|
554 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $term->slug ) );
|
555 |
+
|
556 |
+
if ( $term->slug != $sanitized_slug ) {
|
557 |
+
update_option( 'wbcr_wp_term_' . $term->term_id . '_old_slug', $term->slug, false );
|
558 |
+
$wpdb->update( $wpdb->terms, array( 'slug' => $sanitized_slug ), array( 'term_id' => $term->term_id ), array( '%s' ), array( '%d' ) );
|
559 |
+
}
|
560 |
+
}
|
561 |
+
|
562 |
+
// BuddyPress group slug
|
563 |
+
// ! slug maybe urlencoded
|
564 |
+
if ( is_plugin_active( 'buddypress/bp-loader.php' ) ) {
|
565 |
+
|
566 |
+
$groups = $wpdb->get_results( "SELECT `id`, `name`, `slug` FROM {$wpdb->prefix}bp_groups WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')" );
|
567 |
+
if ( is_array( $groups ) ) {
|
568 |
+
foreach ( $groups as $group ) {
|
569 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $group->slug ) );
|
570 |
+
if ( $group->slug != $sanitized_slug ) {
|
571 |
+
update_option( 'wbcr_bp_groups_' . $group->id . '_old_slug', $group->slug, false );
|
572 |
+
$wpdb->update( $wpdb->prefix . 'bp_groups', array( 'slug' => $sanitized_slug ), array( 'id' => $group->id ), array( '%s' ), array( '%d' ) );
|
573 |
+
}
|
574 |
}
|
575 |
}
|
576 |
+
}
|
577 |
+
|
578 |
+
// Asgaros Forum
|
579 |
+
if ( is_plugin_active( 'asgaros-forum/asgaros-forum.php' ) ) {
|
580 |
+
// forum slug
|
581 |
+
$groups = $wpdb->get_results( "SELECT `id`, `name`, `slug` FROM {$wpdb->prefix}forum_forums WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')" );
|
582 |
+
if ( is_array( $groups ) ) {
|
583 |
+
foreach ( $groups as $group ) {
|
584 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $group->slug ) );
|
585 |
+
if ( $group->slug != $sanitized_slug ) {
|
586 |
+
update_option( 'wbcr_asgaros_forums_' . $group->id . '_old_slug', $group->slug, false );
|
587 |
+
$wpdb->update( $wpdb->prefix . 'forum_forums', array( 'slug' => $sanitized_slug ), array( 'id' => $group->id ), array( '%s' ), array( '%d' ) );
|
588 |
+
}
|
589 |
}
|
590 |
}
|
591 |
+
// topic slug
|
592 |
+
$groups = $wpdb->get_results( "SELECT `id`, `name`, `slug` FROM {$wpdb->prefix}forum_topics WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')" );
|
593 |
+
if ( is_array( $groups ) ) {
|
594 |
+
foreach ( $groups as $group ) {
|
595 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $group->slug ) );
|
596 |
+
if ( $group->slug != $sanitized_slug ) {
|
597 |
+
update_option( 'wbcr_asgaros_topics_' . $group->id . '_old_slug', $group->slug, false );
|
598 |
+
$wpdb->update( $wpdb->prefix . 'forum_topics', array( 'slug' => $sanitized_slug ), array( 'id' => $group->id ), array( '%s' ), array( '%d' ) );
|
599 |
+
}
|
600 |
+
}
|
601 |
+
}
|
602 |
+
}
|
603 |
+
|
604 |
+
// WP Foro
|
605 |
+
if ( is_plugin_active( 'wpforo/wpforo.php' ) ) {
|
606 |
+
// forum slug
|
607 |
+
$forums = $wpdb->get_results( "SELECT `forumid`, `title`, `slug` FROM {$wpdb->prefix}wpforo_forums WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')" );
|
608 |
+
if ( is_array( $forums ) ) {
|
609 |
+
foreach ( $forums as $forum ) {
|
610 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $forum->slug ) );
|
611 |
+
if ( $forum->slug != $sanitized_slug ) {
|
612 |
+
update_option( 'wbcr_wpforo_forums_' . $forum->forumid . '_old_slug', $forum->slug, false );
|
613 |
+
$wpdb->update( $wpdb->prefix . 'wpforo_forums', array( 'slug' => $sanitized_slug ), array( 'forumid' => $forum->forumid ), array( '%s' ), array( '%d' ) );
|
614 |
+
}
|
615 |
+
}
|
616 |
+
}
|
617 |
+
|
618 |
+
// topic slug
|
619 |
+
$topics = $wpdb->get_results( "SELECT `topicid`, `title`, `slug` FROM {$wpdb->prefix}wpforo_topics WHERE slug REGEXP('%|[^_A-Za-z0-9\-]+')" );
|
620 |
+
if ( is_array( $topics ) ) {
|
621 |
+
foreach ( $topics as $topic ) {
|
622 |
+
$sanitized_slug = WCTR_Helper::sanitizeTitle( urldecode( $topic->slug ) );
|
623 |
+
if ( $topic->slug != $sanitized_slug ) {
|
624 |
+
update_option( 'wbcr_wpforo_topics_' . $topic->topicid . '_old_slug', $topic->slug, false );
|
625 |
+
$wpdb->update( $wpdb->prefix . 'wpforo_topics', array( 'slug' => $sanitized_slug ), array( 'topicid' => $topic->topicid ), array( '%s' ), array( '%d' ) );
|
626 |
+
}
|
627 |
+
}
|
628 |
+
}
|
629 |
+
|
630 |
+
// clear cache
|
631 |
+
WPF()->phrase->clear_cache();
|
632 |
+
WPF()->member->clear_db_cache();
|
633 |
+
wpforo_clean_cache();
|
634 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
635 |
}
|
636 |
+
}
|
components/cyrlitera/includes/classes/class.configurate-cyrlitera.php
CHANGED
@@ -81,7 +81,7 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy206_Configurate {
|
|
81 |
* @return string
|
82 |
*/
|
83 |
public function forceSanitizeTitle( $title, $raw_title ) {
|
84 |
-
$title
|
85 |
$force_transliterate = sanitize_title_with_dashes( $title );
|
86 |
|
87 |
return apply_filters( 'wbcr_cyrlitera_sanitize_title', $force_transliterate, $raw_title );
|
@@ -152,15 +152,15 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy206_Configurate {
|
|
152 |
* @param string $filename_raw Filename as it was passed into sanitize_file_name().
|
153 |
*/
|
154 |
$special_chars = apply_filters( 'sanitize_file_name_chars', $special_chars, $filename_raw );
|
155 |
-
$filename
|
156 |
-
$filename
|
157 |
-
$filename
|
158 |
-
$filename
|
159 |
-
$filename
|
160 |
|
161 |
if ( false === strpos( $filename, '.' ) ) {
|
162 |
$mime_types = wp_get_mime_types();
|
163 |
-
$filetype
|
164 |
if ( $filetype['ext'] === $filename ) {
|
165 |
$filename = 'unnamed-file.' . $filetype['ext'];
|
166 |
}
|
@@ -181,9 +181,9 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy206_Configurate {
|
|
181 |
}
|
182 |
|
183 |
// Process multiple extensions
|
184 |
-
$filename
|
185 |
$extension = array_pop( $parts );
|
186 |
-
$mimes
|
187 |
|
188 |
/*
|
189 |
* Loop over any intermediate extensions. Postfix them with a trailing underscore
|
@@ -253,7 +253,8 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy206_Configurate {
|
|
253 |
if ( $is404 ) {
|
254 |
if ( $this->getPopulateOption( 'redirect_from_old_urls' ) ) {
|
255 |
$current_url = urldecode( $_SERVER['REQUEST_URI'] );
|
256 |
-
$new_url
|
|
|
257 |
|
258 |
if ( $current_url != $new_url ) {
|
259 |
wp_redirect( $new_url, 301 );
|
81 |
* @return string
|
82 |
*/
|
83 |
public function forceSanitizeTitle( $title, $raw_title ) {
|
84 |
+
$title = WCTR_Helper::sanitizeTitle( $raw_title );
|
85 |
$force_transliterate = sanitize_title_with_dashes( $title );
|
86 |
|
87 |
return apply_filters( 'wbcr_cyrlitera_sanitize_title', $force_transliterate, $raw_title );
|
152 |
* @param string $filename_raw Filename as it was passed into sanitize_file_name().
|
153 |
*/
|
154 |
$special_chars = apply_filters( 'sanitize_file_name_chars', $special_chars, $filename_raw );
|
155 |
+
$filename = preg_replace( "#\x{00a0}#siu", ' ', $filename );
|
156 |
+
$filename = str_replace( $special_chars, '', $filename );
|
157 |
+
$filename = str_replace( array( '%20', '+' ), '-', $filename );
|
158 |
+
$filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
|
159 |
+
$filename = trim( $filename, '.-_' );
|
160 |
|
161 |
if ( false === strpos( $filename, '.' ) ) {
|
162 |
$mime_types = wp_get_mime_types();
|
163 |
+
$filetype = wp_check_filetype( 'test.' . $filename, $mime_types );
|
164 |
if ( $filetype['ext'] === $filename ) {
|
165 |
$filename = 'unnamed-file.' . $filetype['ext'];
|
166 |
}
|
181 |
}
|
182 |
|
183 |
// Process multiple extensions
|
184 |
+
$filename = array_shift( $parts );
|
185 |
$extension = array_pop( $parts );
|
186 |
+
$mimes = get_allowed_mime_types();
|
187 |
|
188 |
/*
|
189 |
* Loop over any intermediate extensions. Postfix them with a trailing underscore
|
253 |
if ( $is404 ) {
|
254 |
if ( $this->getPopulateOption( 'redirect_from_old_urls' ) ) {
|
255 |
$current_url = urldecode( $_SERVER['REQUEST_URI'] );
|
256 |
+
$new_url = WCTR_Helper::transliterate( $current_url, true );
|
257 |
+
$new_url = strtolower( $new_url );
|
258 |
|
259 |
if ( $current_url != $new_url ) {
|
260 |
wp_redirect( $new_url, 301 );
|
components/cyrlitera/languages/cyrlitera-es_ES.mo
ADDED
Binary file
|
components/cyrlitera/languages/cyrlitera-es_ES.po
ADDED
@@ -0,0 +1,206 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:25+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:25+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:77
|
29 |
+
#, php-format
|
30 |
+
msgid ""
|
31 |
+
"We found that you have the plugin %s installed. The functions of this plugin "
|
32 |
+
"already exist in %s. Please deactivate plugin %s to avoid conflicts between "
|
33 |
+
"plugins functions."
|
34 |
+
msgstr ""
|
35 |
+
"Tienes el plugin%s instalado. Las funciones de este plugin ya existen en %s. "
|
36 |
+
"Desactive el complemento%s para evitar conflictos entre las funciones ambos."
|
37 |
+
|
38 |
+
#: admin/boot.php:78
|
39 |
+
#, php-format
|
40 |
+
msgid ""
|
41 |
+
"If you do not want to deactivate the plugin %s for some reason, we strongly "
|
42 |
+
"recommend do not use the same plugins functions at the same time!"
|
43 |
+
msgstr ""
|
44 |
+
"¡Si no desea desactivar el plugin %s por algún motivo, recomendamos nos usar "
|
45 |
+
"funciones similares de otros Plugins al mismo tiempo!."
|
46 |
+
|
47 |
+
#: admin/boot.php:138 admin/pages/cyrlitera.php:103
|
48 |
+
msgid "Use transliteration"
|
49 |
+
msgstr "Usar transliteracion"
|
50 |
+
|
51 |
+
#: admin/boot.php:144 admin/pages/cyrlitera.php:121
|
52 |
+
msgid "Force transliteration"
|
53 |
+
msgstr "Forzar transliterización"
|
54 |
+
|
55 |
+
#: admin/boot.php:150 admin/pages/cyrlitera.php:150
|
56 |
+
msgid "Don't use transliteration in frontend"
|
57 |
+
msgstr "No uses la transliteración en la interfaz."
|
58 |
+
|
59 |
+
#: admin/boot.php:156 admin/pages/cyrlitera.php:112
|
60 |
+
msgid "Convert file names"
|
61 |
+
msgstr "Convertir nombres de archivos"
|
62 |
+
|
63 |
+
#: admin/boot.php:162 admin/pages/cyrlitera.php:130
|
64 |
+
msgid "Convert file names into lowercase"
|
65 |
+
msgstr "Convertir nombres de archivos a minúsculas"
|
66 |
+
|
67 |
+
#: admin/boot.php:168 admin/pages/cyrlitera.php:140
|
68 |
+
msgid "Redirection old URLs to new ones"
|
69 |
+
msgstr "Redireccionar las URL antiguas a nuevas."
|
70 |
+
|
71 |
+
#: admin/boot.php:174 admin/pages/cyrlitera.php:160
|
72 |
+
msgid "Character Sets"
|
73 |
+
msgstr "Conjuntos de caracteres"
|
74 |
+
|
75 |
+
#: admin/boot.php:195
|
76 |
+
msgid "Get ultimate plugin free"
|
77 |
+
msgstr "Obtener el ultimate plugin gratis"
|
78 |
+
|
79 |
+
#: admin/pages/cyrlitera.php:39 admin/pages/cyrlitera.php:55
|
80 |
+
msgid "Transliteration"
|
81 |
+
msgstr "Transliterización"
|
82 |
+
|
83 |
+
#: admin/pages/cyrlitera.php:55
|
84 |
+
msgid "General"
|
85 |
+
msgstr "General"
|
86 |
+
|
87 |
+
#: admin/pages/cyrlitera.php:96
|
88 |
+
msgid "Transliteration of Cyrillic alphabet."
|
89 |
+
msgstr "Transliteración del alfabeto Cirílico."
|
90 |
+
|
91 |
+
#: admin/pages/cyrlitera.php:96
|
92 |
+
msgid ""
|
93 |
+
"Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
|
94 |
+
"the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
|
95 |
+
"languages. Example: http://site.dev/последние-новости -> http://site.dev/"
|
96 |
+
"poslednie-novosti"
|
97 |
+
msgstr ""
|
98 |
+
"Convierte los enlaces cirílicos de publicaciones, páginas, taxonomías y "
|
99 |
+
"archivos multimedia al alfabeto latino. Soporta idiomas ruso, ucraniano, "
|
100 |
+
"georgiano, búlgaro. Ejemplo: http://site.dev/последние-новости -> http://"
|
101 |
+
"site.dev/poslednie-novosti"
|
102 |
+
|
103 |
+
#: admin/pages/cyrlitera.php:105
|
104 |
+
msgid ""
|
105 |
+
"If you enable this option, all URLs of new pages, posts, tags, and "
|
106 |
+
"categories will automatically be converted to Latin."
|
107 |
+
msgstr ""
|
108 |
+
"Si habilita esta opción, todas las URL de las nuevas páginas, publicaciones, "
|
109 |
+
"etiquetas y categorías se convertirán automáticamente al latín."
|
110 |
+
|
111 |
+
#: admin/pages/cyrlitera.php:114
|
112 |
+
msgid ""
|
113 |
+
"This option works only for new media library files. All Cyrillic names of "
|
114 |
+
"the downloaded files will be converted to names with Latin characters."
|
115 |
+
msgstr ""
|
116 |
+
"Esta opción funciona solo para nuevos archivos de la biblioteca de medios. "
|
117 |
+
"Todos los nombres cirílicos de los archivos descargados se convertirán en "
|
118 |
+
"nombres con caracteres latinos."
|
119 |
+
|
120 |
+
#: admin/pages/cyrlitera.php:123
|
121 |
+
#, php-format
|
122 |
+
msgid ""
|
123 |
+
"If any of your plugins affects transliteration of links and file names, you "
|
124 |
+
"can use this option to change the plugin of %s to overwrite the changes of "
|
125 |
+
"the other plugins."
|
126 |
+
msgstr ""
|
127 |
+
"Si alguno de sus plugins afecta la transliteración de enlaces y nombres de "
|
128 |
+
"archivos, use esta opción para cambiar el plugin de %s y sobrescribir los "
|
129 |
+
"cambios de los otros complementos."
|
130 |
+
|
131 |
+
#: admin/pages/cyrlitera.php:132
|
132 |
+
msgid ""
|
133 |
+
"This function works only for new upload files. Example: File_Name.jpg -> "
|
134 |
+
"file_name.jpg"
|
135 |
+
msgstr ""
|
136 |
+
"Esta función solo trabaja para nuevas cargas de archivos. Ejemplo: "
|
137 |
+
"Nombre_Archivo.jpg -> nombre_archivo.jpg"
|
138 |
+
|
139 |
+
#: admin/pages/cyrlitera.php:142
|
140 |
+
msgid ""
|
141 |
+
"If at the time of the plugin installation you had pages with unconverted "
|
142 |
+
"links, use this option to redirect users from old to new URLs with the Latin "
|
143 |
+
"alphabet."
|
144 |
+
msgstr ""
|
145 |
+
"Si en el momento de la instalación del plugin tenía páginas con enlaces no "
|
146 |
+
"convertidos, use esta opción para redirigir a los usuarios de URL antiguas a "
|
147 |
+
"nuevas con alfabeto Latino."
|
148 |
+
|
149 |
+
#: admin/pages/cyrlitera.php:152
|
150 |
+
msgid "Enable when have a problem in frontend."
|
151 |
+
msgstr "Habilite cuando exista problemas en la interfaz."
|
152 |
+
|
153 |
+
#: admin/pages/cyrlitera.php:161
|
154 |
+
msgid ""
|
155 |
+
"You can supplement current base of transliteration characters. Write pairs "
|
156 |
+
"of values separated by commas. Example:"
|
157 |
+
msgstr ""
|
158 |
+
"Puede complementar la base actual de caracteres de transliteración. Escribe "
|
159 |
+
"pares de valores separados por comas. Ejemplo:"
|
160 |
+
|
161 |
+
#: admin/pages/cyrlitera.php:227
|
162 |
+
msgid ""
|
163 |
+
"If at the time of the plugin installation you already had posts, pages, tags "
|
164 |
+
"and categories, click on this button and the plugin will automatically "
|
165 |
+
"convert URLs into Latin. Attention! Previously uploaded files will not be "
|
166 |
+
"converted."
|
167 |
+
msgstr ""
|
168 |
+
"Si en el momento de la instalación del plugin ya tenía publicaciones, "
|
169 |
+
"páginas, etiquetas y categorías, haga clic en este botón y el plugin "
|
170 |
+
"convertirá automáticamente las URL en Latín. ¡Atención! Los archivos "
|
171 |
+
"cargados previamente no se convertirán."
|
172 |
+
|
173 |
+
#: admin/pages/cyrlitera.php:236
|
174 |
+
msgid "Convert already created posts and categories"
|
175 |
+
msgstr "Convertir publicaciones y categorías ya creados"
|
176 |
+
|
177 |
+
#: admin/pages/cyrlitera.php:238
|
178 |
+
msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
|
179 |
+
msgstr ""
|
180 |
+
"URL de entradas antiguas, páginas, términos y etiquetas convertidas con "
|
181 |
+
"éxito al Latín!"
|
182 |
+
|
183 |
+
#: admin/pages/cyrlitera.php:248
|
184 |
+
msgid ""
|
185 |
+
"Allows you to restore converted URLs by using the \"Convert already created "
|
186 |
+
"posts and categories\" button. This can be useful in case of incorrect URLs "
|
187 |
+
"or incorrect transliteration of some characters. You can roll back changes "
|
188 |
+
"and advance the character sets above to correct the plugin's work. "
|
189 |
+
msgstr ""
|
190 |
+
"Le permite restaurar las URL convertidas usando el botón \"Convertir las "
|
191 |
+
"publicaciones y categorías ya creadas\". Esto es útil en caso de URL "
|
192 |
+
"incorrectas o transliteración incorrecta de algunos caractéres. Puede "
|
193 |
+
"revertir los cambios y avanzar los conjuntos de caractéres anteriores para "
|
194 |
+
"corregir el trabajo del plugin."
|
195 |
+
|
196 |
+
#: admin/pages/cyrlitera.php:257
|
197 |
+
msgid "Rollback changes"
|
198 |
+
msgstr "Revertir cambios"
|
199 |
+
|
200 |
+
#: admin/pages/cyrlitera.php:259
|
201 |
+
msgid "The rollback of new changes was successful!"
|
202 |
+
msgstr "¡La reversión de nuevos cambios fue exitosa!"
|
203 |
+
|
204 |
+
#: cyrlitera.php:85
|
205 |
+
msgid "Webcraftic Cyrlitera"
|
206 |
+
msgstr "Webcraftic Cyrlitera"
|
components/cyrlitera/languages/cyrlitera-ru_RU.mo
CHANGED
Binary file
|
components/cyrlitera/languages/cyrlitera-ru_RU.po
CHANGED
@@ -1,618 +1,618 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: clearfy\n"
|
4 |
-
"POT-Creation-Date: 2018-10-16 22:49+0300\n"
|
5 |
-
"PO-Revision-Date: 2018-
|
6 |
-
"Last-Translator: alex.kovalevv@gmail.com <alex.kovalevv@gmail.com>\n"
|
7 |
-
"Language-Team: Alex Kovalev <alex.kovalevv@gmail.com>\n"
|
8 |
-
"Language: ru_RU\n"
|
9 |
-
"MIME-Version: 1.0\n"
|
10 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
-
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 2.1.1\n"
|
13 |
-
"X-Poedit-Basepath: ..\n"
|
14 |
-
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
-
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
-
"X-Poedit-SearchPath-0: .\n"
|
19 |
-
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
-
|
21 |
-
#: admin/boot.php:56
|
22 |
-
#, php-format
|
23 |
-
msgid ""
|
24 |
-
"We found that you have the plugin %s installed. The functions of this plugin "
|
25 |
-
"already exist in %s. Please deactivate plugin %s to avoid conflicts between "
|
26 |
-
"plugins functions."
|
27 |
-
msgstr ""
|
28 |
-
"Мы обнаружили, что у вас установлен плагин %s, функции этого плагина уже "
|
29 |
-
"есть в %s. Пожалуйста, деактивируйте плагин %s во избежание конфликтов между "
|
30 |
-
"функциями плагинов."
|
31 |
-
|
32 |
-
#: admin/boot.php:57
|
33 |
-
#, php-format
|
34 |
-
msgid ""
|
35 |
-
"If you do not want to deactivate the plugin %s for some reason, we strongly "
|
36 |
-
"recommend do not use the same plugins functions at the same time!"
|
37 |
-
msgstr ""
|
38 |
-
"Если по какой-то причине вы не хотите деактивировать плагин %s, то мы "
|
39 |
-
"настоятельно рекомендуем не использовать похожие функции плагинов "
|
40 |
-
"одновременно!"
|
41 |
-
|
42 |
-
#: admin/boot.php:117 admin/pages/cyrlitera.php:118
|
43 |
-
msgid "Use transliteration"
|
44 |
-
msgstr "Использовать транслитерацию"
|
45 |
-
|
46 |
-
#: admin/boot.php:123 admin/pages/cyrlitera.php:136
|
47 |
-
msgid "Force transliteration"
|
48 |
-
msgstr "Принудильная траслитерация"
|
49 |
-
|
50 |
-
#: admin/boot.php:129 admin/pages/cyrlitera.php:165
|
51 |
-
msgid "Don't use transliteration in frontend"
|
52 |
-
msgstr "Не использовать транслитерацию на фронтенде"
|
53 |
-
|
54 |
-
#: admin/boot.php:135 admin/pages/cyrlitera.php:127
|
55 |
-
msgid "Convert file names"
|
56 |
-
msgstr "Конвертировать имена файлов"
|
57 |
-
|
58 |
-
#: admin/boot.php:141 admin/pages/cyrlitera.php:145
|
59 |
-
msgid "Convert file names into lowercase"
|
60 |
-
msgstr "Преобразовывать имена файлов в нижний регистр"
|
61 |
-
|
62 |
-
#: admin/boot.php:147 admin/pages/cyrlitera.php:155
|
63 |
-
msgid "Redirection old URLs to new ones"
|
64 |
-
msgstr "Перенаправление со старых URL на новые"
|
65 |
-
|
66 |
-
#: admin/boot.php:153 admin/pages/cyrlitera.php:175
|
67 |
-
msgid "Character Sets"
|
68 |
-
msgstr "Наборы символов"
|
69 |
-
|
70 |
-
#: admin/boot.php:174
|
71 |
-
msgid "Get ultimate plugin free"
|
72 |
-
msgstr "Получите полную версию плагина бесплатно"
|
73 |
-
|
74 |
-
#: admin/pages/cyrlitera.php:39 admin/pages/cyrlitera.php:57
|
75 |
-
msgid "Transliteration"
|
76 |
-
msgstr "Транслитерация"
|
77 |
-
|
78 |
-
#: admin/pages/cyrlitera.php:57
|
79 |
-
msgid "General"
|
80 |
-
msgstr "Основные"
|
81 |
-
|
82 |
-
#: admin/pages/cyrlitera.php:111
|
83 |
-
msgid "Transliteration of Cyrillic alphabet."
|
84 |
-
msgstr "Транслитерация кириллицы."
|
85 |
-
|
86 |
-
#: admin/pages/cyrlitera.php:111
|
87 |
-
msgid ""
|
88 |
-
"Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
|
89 |
-
"the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
|
90 |
-
"languages. Example: http://site.dev/последние-новости -> http://site.dev/"
|
91 |
-
"poslednie-novosti"
|
92 |
-
msgstr ""
|
93 |
-
"Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
|
94 |
-
"медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
|
95 |
-
"Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
|
96 |
-
"dev/poslednie-novosti"
|
97 |
-
|
98 |
-
#: admin/pages/cyrlitera.php:120
|
99 |
-
msgid ""
|
100 |
-
"If you enable this option, all URLs of new pages, posts, tags, and "
|
101 |
-
"categories will automatically be converted to Latin."
|
102 |
-
msgstr ""
|
103 |
-
"Если включить эту опцию, все URL новых страниц, записей, меток, рубрик будут "
|
104 |
-
"автоматически конвертироваться в латиницу."
|
105 |
-
|
106 |
-
#: admin/pages/cyrlitera.php:129
|
107 |
-
msgid ""
|
108 |
-
"This option works only for new media library files. All Cyrillic names of "
|
109 |
-
"the downloaded files will be converted to names with Latin characters."
|
110 |
-
msgstr ""
|
111 |
-
"Эта опция работает только для новых файлов медиа библиотеки. Все "
|
112 |
-
"кириллические имена загружаемых файлов, будут преобразованы в имена с "
|
113 |
-
"латинскими символами."
|
114 |
-
|
115 |
-
#: admin/pages/cyrlitera.php:138
|
116 |
-
#, php-format
|
117 |
-
msgid ""
|
118 |
-
"If any of your plugins affects transliteration of links and file names, you "
|
119 |
-
"can use this option to change the plugin of %s to overwrite the changes of "
|
120 |
-
"the other plugins."
|
121 |
-
msgstr ""
|
122 |
-
"Если какой-то из установленных у вас плагинов влияет на траслитерацию "
|
123 |
-
"
|
124 |
-
"перезаписывал изменения других плагинов."
|
125 |
-
|
126 |
-
#: admin/pages/cyrlitera.php:147
|
127 |
-
msgid ""
|
128 |
-
"This function works only for new upload files. Example: File_Name.jpg -> "
|
129 |
-
"file_name.jpg"
|
130 |
-
msgstr ""
|
131 |
-
"Эта функция работает только для новых загружаемых файлов. Пример: File_Name."
|
132 |
-
"jpg -> file_name.jpg"
|
133 |
-
|
134 |
-
#: admin/pages/cyrlitera.php:157
|
135 |
-
msgid ""
|
136 |
-
"If at the time of the plugin installation you had pages with unconverted "
|
137 |
-
"links, use this option to redirect users from old to new URLs with the Latin "
|
138 |
-
"alphabet."
|
139 |
-
msgstr ""
|
140 |
-
"Если на момент установки плагина у вас были страницы с не преобразованными "
|
141 |
-
"ссылками, используйте эту опцию, чтобы пользователи, перешедшие по старым "
|
142 |
-
"ссылкам, были перенаправлены на новые URL на латинице."
|
143 |
-
|
144 |
-
#: admin/pages/cyrlitera.php:167
|
145 |
-
msgid "Enable when have a problem in frontend."
|
146 |
-
msgstr "Включите эту опцию, если у вас есть проблемы с внешней стороны сайта."
|
147 |
-
|
148 |
-
#: admin/pages/cyrlitera.php:176
|
149 |
-
msgid ""
|
150 |
-
"You can supplement current base of transliteration characters. Write pairs "
|
151 |
-
"of values separated by commas. Example:"
|
152 |
-
msgstr ""
|
153 |
-
"Вы можете дополнить текущую базу символов транслитерации, пишите пары "
|
154 |
-
"значений через запятую. Пример: "
|
155 |
-
|
156 |
-
#: admin/pages/cyrlitera.php:242
|
157 |
-
msgid ""
|
158 |
-
"If at the time of the plugin installation you already had posts, pages, tags "
|
159 |
-
"and categories, click on this button and the plugin will automatically "
|
160 |
-
"convert URLs into Latin. Attention! Previously uploaded files will not be "
|
161 |
-
"converted."
|
162 |
-
msgstr ""
|
163 |
-
"Если на момент установки плагина у вас уже были созданы записи, страницы, "
|
164 |
-
"метки и рубрики, то нажмите на эту кнопку и плагин автоматически преобразует "
|
165 |
-
"URLы в латинские. Внимание! Ранее загруженные файлы преобразованы не будут."
|
166 |
-
|
167 |
-
#: admin/pages/cyrlitera.php:251
|
168 |
-
msgid "Convert already created posts and categories"
|
169 |
-
msgstr "Преобразовать уже созданные записи и рубрики"
|
170 |
-
|
171 |
-
#: admin/pages/cyrlitera.php:253
|
172 |
-
msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
|
173 |
-
msgstr ""
|
174 |
-
"Url старых записей, страниц, тегов и рубрик были успешно конвертированы в "
|
175 |
-
"литинские!"
|
176 |
-
|
177 |
-
#: admin/pages/cyrlitera.php:263
|
178 |
-
msgid ""
|
179 |
-
"Allows you to restore converted URLs by using the \"Convert already created "
|
180 |
-
"posts and categories\" button. This can be useful in case of incorrect URLs "
|
181 |
-
"or incorrect transliteration of some characters. You can roll back changes "
|
182 |
-
"and advance the character sets above to correct the plugin's work. "
|
183 |
-
msgstr ""
|
184 |
-
"Позволяет восстановить преобразованные с помощью кнопки “Преобразовать уже "
|
185 |
-
"созданные записи и рубрики” URLы. Это может быть полезно в случае появления "
|
186 |
-
"некорректных URL адресов или неправильной транслитерации определенных "
|
187 |
-
"символов. У вас есть возможность откатить изменения и изменить наборы "
|
188 |
-
"символов выше, чтобы скорректировать работу плагина."
|
189 |
-
|
190 |
-
#: admin/pages/cyrlitera.php:272
|
191 |
-
msgid "Rollback changes"
|
192 |
-
msgstr "Откатить изменения"
|
193 |
-
|
194 |
-
#: admin/pages/cyrlitera.php:274
|
195 |
-
msgid "The rollback of new changes was successful!"
|
196 |
-
msgstr "Откат новых изменений прошел успешно!"
|
197 |
-
|
198 |
-
#: cyrlitera.php:63
|
199 |
-
msgid "Webcraftic Cyrlitera"
|
200 |
-
msgstr "Webcraftic Cyrlitera"
|
201 |
-
|
202 |
-
#~ msgid ""
|
203 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
204 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
205 |
-
#~ "deactivate plugin \"Webcraftic Cyrlitera\"!"
|
206 |
-
#~ msgstr ""
|
207 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
208 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
209 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Webcraftic Cyrlitera»!"
|
210 |
-
|
211 |
-
#~ msgid ""
|
212 |
-
#~ "You can supplement current base of transliteration characters. Write "
|
213 |
-
#~ "pairs of values in lower case separated by commas. Example:"
|
214 |
-
#~ msgstr ""
|
215 |
-
#~ "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
|
216 |
-
#~ "значений в нижнем регистре через запятую. Пример: ა=a,ბ=b"
|
217 |
-
|
218 |
-
#~ msgid ""
|
219 |
-
#~ "If any of your plugins affects transliteration of links, you can use this "
|
220 |
-
#~ "option to change the plugin of %s to overwrite the changes of the other "
|
221 |
-
#~ "plugins."
|
222 |
-
#~ msgstr ""
|
223 |
-
#~ "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
|
224 |
-
#~ "постоянный ссылок, включите эту опцию, чтобы %s перезаписывал изменения "
|
225 |
-
#~ "других плагинов."
|
226 |
-
|
227 |
-
#~ msgid ""
|
228 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
229 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
230 |
-
#~ "deactivate plugin \"Cyrilic transliteration\"!"
|
231 |
-
#~ msgstr ""
|
232 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
233 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
234 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Транслитерация "
|
235 |
-
#~ "кириллицы»!"
|
236 |
-
|
237 |
-
#~ msgid "Webcraftic cyrilic transliteration"
|
238 |
-
#~ msgstr "Webcraftic транслитерация кириллицы"
|
239 |
-
|
240 |
-
#~ msgid ""
|
241 |
-
#~ "If you enable this option, the permanent URLs of all previously published "
|
242 |
-
#~ "posts and pages will be converted into URLs with Latin characters. All "
|
243 |
-
#~ "new pages and posts will also have a URL in the Latin alphabet."
|
244 |
-
#~ msgstr ""
|
245 |
-
#~ "Если включить эту опцию, постоянные URL всех ранее опубликованных записей "
|
246 |
-
#~ "и страниц будут преобразованы в URL с латинскими символами. Все новые "
|
247 |
-
#~ "страницы и записи, также будут иметь URL на латинице."
|
248 |
-
|
249 |
-
#~ msgid "You don't have enough capability to edit this information."
|
250 |
-
#~ msgstr "Вы не имеете разрешения на редактирование этого!"
|
251 |
-
|
252 |
-
#~ msgid "Undefinded notice id."
|
253 |
-
#~ msgstr "Не передан notice id."
|
254 |
-
|
255 |
-
#~ msgid "Success"
|
256 |
-
#~ msgstr "Успешно"
|
257 |
-
|
258 |
-
#~ msgid "Hide admin notices"
|
259 |
-
#~ msgstr "Скрыть уведомления"
|
260 |
-
|
261 |
-
#~ msgid "Enable hidden notices in adminbar"
|
262 |
-
#~ msgstr "Включить уведомления в админбаре"
|
263 |
-
|
264 |
-
#~ msgid "Admin notifications, Update nags"
|
265 |
-
#~ msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
|
266 |
-
|
267 |
-
#~ msgid ""
|
268 |
-
#~ "Do you know the situation, when some plugin offers you to update to "
|
269 |
-
#~ "premium, to collect technical data and shows many annoying notices? You "
|
270 |
-
#~ "are close these notices every now and again but they newly appears and "
|
271 |
-
#~ "interfere your work with WordPress. Even worse, some plugin’s authors "
|
272 |
-
#~ "delete “close” button from notices and they shows in your admin panel "
|
273 |
-
#~ "forever."
|
274 |
-
#~ msgstr ""
|
275 |
-
#~ "Вам знакома ситуация, когда какой-то плагин просит вас обновиться до "
|
276 |
-
#~ "премиум-версии, получить права на сбор данных о вашем сайте и создает "
|
277 |
-
#~ "много раздражающих уведомлений? Вы закрываете эти уведомления раз за "
|
278 |
-
#~ "разом, но они вновь появляются и мешают вашей работе с WordPress. Хуже "
|
279 |
-
#~ "того, некоторые авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и "
|
280 |
-
#~ "они висят в шапке вашей панели администратора целую вечность."
|
281 |
-
|
282 |
-
#~ msgid "All notices"
|
283 |
-
#~ msgstr "Все уведомления"
|
284 |
-
|
285 |
-
#~ msgid "Hide all notices globally."
|
286 |
-
#~ msgstr "Скрыть все уведомления глобально."
|
287 |
-
|
288 |
-
#~ msgid "Only selected"
|
289 |
-
#~ msgstr "Только выбранные"
|
290 |
-
|
291 |
-
#~ msgid ""
|
292 |
-
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
293 |
-
#~ "forever\" in each notice. Push it and they will not bother you anymore."
|
294 |
-
#~ msgstr ""
|
295 |
-
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
296 |
-
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
297 |
-
#~ "будет скрыто навсегда и перестанет вас беспокоить."
|
298 |
-
|
299 |
-
#~ msgid "Don't nide"
|
300 |
-
#~ msgstr "Не скрывать"
|
301 |
-
|
302 |
-
#~ msgid ""
|
303 |
-
#~ "Do not hide notices and do not show “Hide notification forever” link for "
|
304 |
-
#~ "admin."
|
305 |
-
#~ msgstr ""
|
306 |
-
#~ "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление "
|
307 |
-
#~ "навсегда\" в уведомлениях администратора."
|
308 |
-
|
309 |
-
#~ msgid ""
|
310 |
-
#~ "Some plugins shows notifications about premium version, data collecting "
|
311 |
-
#~ "or promote their services. Even if you push close button (that sometimes "
|
312 |
-
#~ "are impossible), notices are shows again in some time. This option allows "
|
313 |
-
#~ "you to control notices. Hide them all or each individually. Some plugins "
|
314 |
-
#~ "shows notifications about premium version, data collecting or promote "
|
315 |
-
#~ "their services. Even if you push close button (that sometimes are "
|
316 |
-
#~ "impossible), notices are shows again in some time. This option allows you "
|
317 |
-
#~ "to control notices. Hide them all or each individually."
|
318 |
-
#~ msgstr ""
|
319 |
-
#~ "Зачастую, плагины отображают уведомления о возможности перехода на "
|
320 |
-
#~ "премиум версию, просят разрешение на сбор данных, рекламируют свои "
|
321 |
-
#~ "услуги. Даже если вы нажмете кнопку закрыть (что не всегда возможно), "
|
322 |
-
#~ "уведомления всё равно отобразятся через какое-то время. С помощью этой "
|
323 |
-
#~ "настройки, вы можете контролировать эти уведомления. Скройте их все сразу "
|
324 |
-
#~ "или каждое по отдельности."
|
325 |
-
|
326 |
-
#~ msgid ""
|
327 |
-
#~ "By default, the plugin hides all notices, which you specified. If you "
|
328 |
-
#~ "enable this option, the plugin will collect all hidden notices and show "
|
329 |
-
#~ "them into the top admin toolbar. It will not disturb you but will allow "
|
330 |
-
#~ "to look notices at your convenience."
|
331 |
-
#~ msgstr ""
|
332 |
-
#~ "По умолчанию, плагин полностью скрывает отключенные вами уведомления. "
|
333 |
-
#~ "Если включить эту опцию, то плагин будет собирать все скрытые вами "
|
334 |
-
#~ "уведомления и выводить в верхней панели администратора. Это не будет вас "
|
335 |
-
#~ "раздражать, но и позволит просматривать уведомления, когда вам это удобно."
|
336 |
-
|
337 |
-
#~ msgid "Push reset hidden notices if you need to show hidden notices again."
|
338 |
-
#~ msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
|
339 |
-
|
340 |
-
#~ msgid "Reset hidden notices (%s)"
|
341 |
-
#~ msgstr "Сбросить скрытые уведомления (%s)"
|
342 |
-
|
343 |
-
#~ msgid "Hidden notices are successfully reset, now you can see them again!"
|
344 |
-
#~ msgstr ""
|
345 |
-
#~ "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть "
|
346 |
-
#~ "их!"
|
347 |
-
|
348 |
-
#~ msgid "Notices"
|
349 |
-
#~ msgstr "Уведомления"
|
350 |
-
|
351 |
-
#~ msgid ""
|
352 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
353 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
354 |
-
#~ "deactivate plugin \"Disable admin notices\"!"
|
355 |
-
#~ msgstr ""
|
356 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
357 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
358 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
|
359 |
-
#~ "администратора»!"
|
360 |
-
|
361 |
-
#~ msgid "Webcraftic disable admin notices"
|
362 |
-
#~ msgstr "Webcraftic отключить уведомления администратора"
|
363 |
-
|
364 |
-
#~ msgid "Notifications %s"
|
365 |
-
#~ msgstr "Уведомления %s"
|
366 |
-
|
367 |
-
#~ msgid "Restore notice"
|
368 |
-
#~ msgstr "Восстановить уведомление"
|
369 |
-
|
370 |
-
#~ msgid "Hide notification forever"
|
371 |
-
#~ msgstr "Скрыть уведомление навсегда"
|
372 |
-
|
373 |
-
#~ msgid "Hidden notices"
|
374 |
-
#~ msgstr "Скрытые уведомления"
|
375 |
-
|
376 |
-
#~ msgid "Disable comments on the entire site"
|
377 |
-
#~ msgstr "Отключить комментарии на всем сайте"
|
378 |
-
|
379 |
-
#~ msgid "Select post types"
|
380 |
-
#~ msgstr "Выбрать тип записи"
|
381 |
-
|
382 |
-
#~ msgid "Replace external links in comments on the JavaScript code"
|
383 |
-
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
384 |
-
|
385 |
-
#~ msgid "Replace external links from comment authors on the JavaScript code"
|
386 |
-
#~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
387 |
-
|
388 |
-
#~ msgid "Disable X-Pingback"
|
389 |
-
#~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
390 |
-
|
391 |
-
#~ msgid "Remove field \"site\" in comment form"
|
392 |
-
#~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
393 |
-
|
394 |
-
#~ msgid "Disable all comments"
|
395 |
-
#~ msgstr "Отключить все комментарии"
|
396 |
-
|
397 |
-
#~ msgid "Comments"
|
398 |
-
#~ msgstr "Комментарии"
|
399 |
-
|
400 |
-
#~ msgid ""
|
401 |
-
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
402 |
-
#~ "forever\" in each notice. Push it and they will not bother you anymore. "
|
403 |
-
#~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
|
404 |
-
#~ "hidden notices again."
|
405 |
-
#~ msgstr ""
|
406 |
-
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
407 |
-
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
408 |
-
#~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
|
409 |
-
#~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
|
410 |
-
#~ "показ скрытых ранее уведомлений."
|
411 |
-
|
412 |
-
#~ msgid "Webcraftic hide admin notices"
|
413 |
-
#~ msgstr "Webcraftic скрыть уведомления администратора"
|
414 |
-
|
415 |
-
#~ msgid "Comments tweaks"
|
416 |
-
#~ msgstr "Инструменты комментариев"
|
417 |
-
|
418 |
-
#~ msgid "All comments have been deleted."
|
419 |
-
#~ msgstr "Все комментарии были удалены."
|
420 |
-
|
421 |
-
#~ msgid ""
|
422 |
-
#~ "An error occurred while trying to delete comments. Internal error "
|
423 |
-
#~ "occured. Please try again later."
|
424 |
-
#~ msgstr ""
|
425 |
-
#~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
426 |
-
#~ "попытку позже."
|
427 |
-
|
428 |
-
#~ msgid "You are not allowed to view this page."
|
429 |
-
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
430 |
-
|
431 |
-
#~ msgid "You do not have the selected post types!"
|
432 |
-
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
433 |
-
|
434 |
-
#~ msgid "No comments available for deletion."
|
435 |
-
#~ msgstr "Нет комментариев для удаления."
|
436 |
-
|
437 |
-
#~ msgid ""
|
438 |
-
#~ "Are you sure that you desire to delete all comments from the database?"
|
439 |
-
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
440 |
-
|
441 |
-
#~ msgid ""
|
442 |
-
#~ "Deleting comments will remove existing comment entries in the database "
|
443 |
-
#~ "and cannot be reverted without a database backup."
|
444 |
-
#~ msgstr ""
|
445 |
-
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
446 |
-
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
447 |
-
#~ "базы данных."
|
448 |
-
|
449 |
-
#~ msgid "You have %s comments"
|
450 |
-
#~ msgstr "У вас есть %s комментариев"
|
451 |
-
|
452 |
-
#~ msgid "Yes, I'm sure"
|
453 |
-
#~ msgstr "Да, я уверен"
|
454 |
-
|
455 |
-
#~ msgid "No, return back"
|
456 |
-
#~ msgstr "Нет, вернуться"
|
457 |
-
|
458 |
-
#~ msgid ""
|
459 |
-
#~ "Are you sure that you desire to delete all comments from the database for "
|
460 |
-
#~ "the selected post types (%s)?"
|
461 |
-
#~ msgstr ""
|
462 |
-
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
463 |
-
#~ "выбранных типов записей (%s)?"
|
464 |
-
|
465 |
-
#~ msgid "Disable comments"
|
466 |
-
#~ msgstr "Отключить комментарии"
|
467 |
-
|
468 |
-
#~ msgid "Not disable"
|
469 |
-
#~ msgstr "Не отключать"
|
470 |
-
|
471 |
-
#~ msgid "Everywhere"
|
472 |
-
#~ msgstr "Повсюду"
|
473 |
-
|
474 |
-
#~ msgid ""
|
475 |
-
#~ "You can delete all comments in the database by clicking on this link (<a "
|
476 |
-
#~ "href=\"%s\">cleaning comments in database</a>)."
|
477 |
-
#~ msgstr ""
|
478 |
-
#~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
479 |
-
#~ "href=\"%s\">очистка комментариев в базе данных</a> )."
|
480 |
-
|
481 |
-
#~ msgid "On certain post types"
|
482 |
-
#~ msgstr "Только выбранные типы записей"
|
483 |
-
|
484 |
-
#~ msgid ""
|
485 |
-
#~ "You can delete all comments for the selected post types. Select the post "
|
486 |
-
#~ "types below and save the settings. After that, click the link (<a href="
|
487 |
-
#~ "\"%s\">delete all comments for the selected post types in database</a>)."
|
488 |
-
#~ msgstr ""
|
489 |
-
#~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
|
490 |
-
#~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
|
491 |
-
#~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
|
492 |
-
#~ "данных</a> )."
|
493 |
-
|
494 |
-
#~ msgid ""
|
495 |
-
#~ "Everywhere - Warning: This option is global and will affect your entire "
|
496 |
-
#~ "site. Use it only if you want to disable comments everywhere. A complete "
|
497 |
-
#~ "description of what this option does is available here"
|
498 |
-
#~ msgstr ""
|
499 |
-
#~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
500 |
-
#~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
|
501 |
-
#~ "отключить комментарии повсюду. "
|
502 |
-
|
503 |
-
#~ msgid ""
|
504 |
-
#~ "On certain post types - Disabling comments will also disable trackbacks "
|
505 |
-
#~ "and pingbacks. All comment-related fields will also be hidden from the "
|
506 |
-
#~ "edit/quick-edit screens of the affected posts. These settings cannot be "
|
507 |
-
#~ "overridden for individual posts."
|
508 |
-
#~ msgstr ""
|
509 |
-
#~ "В некоторых типах сообщений - отключение комментариев также отключает "
|
510 |
-
#~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
|
511 |
-
#~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
|
512 |
-
#~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
|
513 |
-
|
514 |
-
#~ msgid "Select the post types for which comments will be disabled"
|
515 |
-
#~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
516 |
-
|
517 |
-
#~ msgid ""
|
518 |
-
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
519 |
-
#~ "the sake of a link to their site?"
|
520 |
-
#~ msgstr ""
|
521 |
-
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
522 |
-
#~ "ради ссылки на свой сайт?"
|
523 |
-
|
524 |
-
#~ msgid "Removes the \"Site\" field from the comment form."
|
525 |
-
#~ msgstr "Убирает поле «Сайт» из формы комментирования."
|
526 |
-
|
527 |
-
#~ msgid ""
|
528 |
-
#~ "Works with the standard comment form, if the form is manually written in "
|
529 |
-
#~ "your theme-it probably will not work!"
|
530 |
-
#~ msgstr ""
|
531 |
-
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
532 |
-
#~ "прописана вручную - скорей всего не сработает!"
|
533 |
-
|
534 |
-
#~ msgid "Recommended"
|
535 |
-
#~ msgstr "Рекомендовано"
|
536 |
-
|
537 |
-
#~ msgid ""
|
538 |
-
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
539 |
-
#~ "and more for one article, do not bring anything good for promotion."
|
540 |
-
#~ msgstr ""
|
541 |
-
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
542 |
-
#~ "одной странице, могут ухудшить продвижение вашего сайта."
|
543 |
-
|
544 |
-
#~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
545 |
-
#~ msgstr ""
|
546 |
-
#~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
|
547 |
-
#~ "JavaScript %s"
|
548 |
-
|
549 |
-
#~ msgid ""
|
550 |
-
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
551 |
-
#~ "external link. Even nofollow from page weight loss here does not help."
|
552 |
-
#~ msgstr ""
|
553 |
-
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
554 |
-
#~ "поможет даже nofollow от потери веса страницы."
|
555 |
-
|
556 |
-
#~ msgid ""
|
557 |
-
#~ "Replaces the links of the authors of comments on the JavaScript code, it "
|
558 |
-
#~ "is impossible to distinguish it from usual links."
|
559 |
-
#~ msgstr ""
|
560 |
-
#~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
561 |
-
#~ "отличить от обычной ссылки."
|
562 |
-
|
563 |
-
#~ msgid "In some Wordpress topics this may not work."
|
564 |
-
#~ msgstr "В некоторых темах Wordpress это может не сработать."
|
565 |
-
|
566 |
-
#~ msgid "Disable XML-RPC"
|
567 |
-
#~ msgstr "Отключить XML-RPC"
|
568 |
-
|
569 |
-
#~ msgid ""
|
570 |
-
#~ "A pingback is basically an automated comment that gets created when "
|
571 |
-
#~ "another blog links to you. A self-pingback is created when you link to an "
|
572 |
-
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
573 |
-
#~ "spam and simply waste resources."
|
574 |
-
#~ msgstr ""
|
575 |
-
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
576 |
-
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
577 |
-
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
578 |
-
#~ "не более чем спам и пустая трата ресурсов вашего сайта."
|
579 |
-
|
580 |
-
#~ msgid "Removes the server responses a reference to the xmlrpc file."
|
581 |
-
#~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
582 |
-
|
583 |
-
#~ msgid ""
|
584 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
585 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
586 |
-
#~ "deactivate plugin \"Comments tweaks\"!"
|
587 |
-
#~ msgstr ""
|
588 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
589 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
590 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
591 |
-
#~ "комментариев»!"
|
592 |
-
|
593 |
-
#~ msgid "Webcraftic comments tweaks"
|
594 |
-
#~ msgstr "Webcraftic инструменты комментариев"
|
595 |
-
|
596 |
-
#~ msgid "Comments are closed."
|
597 |
-
#~ msgstr "Комментарии Закрыты."
|
598 |
-
|
599 |
-
#~ msgid ""
|
600 |
-
#~ "Note: The <em>%s</em> plugin is currently active, and comments are "
|
601 |
-
#~ "completely disabled on: %s. Many of the settings below will not be "
|
602 |
-
#~ "applicable for those post types."
|
603 |
-
#~ msgstr ""
|
604 |
-
#~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
605 |
-
#~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
606 |
-
#~ "применяться для этих типов сообщений."
|
607 |
-
|
608 |
-
#~ msgid ""
|
609 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
610 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
611 |
-
#~ "deactivate plugin \"Disable comments\"!"
|
612 |
-
#~ msgstr ""
|
613 |
-
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
614 |
-
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
615 |
-
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
616 |
-
|
617 |
-
#~ msgid "Webcraftic Disable comments"
|
618 |
-
#~ msgstr "Webcraftic отключить комментарии"
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: clearfy\n"
|
4 |
+
"POT-Creation-Date: 2018-10-16 22:49+0300\n"
|
5 |
+
"PO-Revision-Date: 2018-12-22 16:06+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 2.1.1\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
15 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
20 |
+
|
21 |
+
#: admin/boot.php:56
|
22 |
+
#, php-format
|
23 |
+
msgid ""
|
24 |
+
"We found that you have the plugin %s installed. The functions of this plugin "
|
25 |
+
"already exist in %s. Please deactivate plugin %s to avoid conflicts between "
|
26 |
+
"plugins functions."
|
27 |
+
msgstr ""
|
28 |
+
"Мы обнаружили, что у вас установлен плагин %s, функции этого плагина уже "
|
29 |
+
"есть в %s. Пожалуйста, деактивируйте плагин %s во избежание конфликтов между "
|
30 |
+
"функциями плагинов."
|
31 |
+
|
32 |
+
#: admin/boot.php:57
|
33 |
+
#, php-format
|
34 |
+
msgid ""
|
35 |
+
"If you do not want to deactivate the plugin %s for some reason, we strongly "
|
36 |
+
"recommend do not use the same plugins functions at the same time!"
|
37 |
+
msgstr ""
|
38 |
+
"Если по какой-то причине вы не хотите деактивировать плагин %s, то мы "
|
39 |
+
"настоятельно рекомендуем не использовать похожие функции плагинов "
|
40 |
+
"одновременно!"
|
41 |
+
|
42 |
+
#: admin/boot.php:117 admin/pages/cyrlitera.php:118
|
43 |
+
msgid "Use transliteration"
|
44 |
+
msgstr "Использовать транслитерацию"
|
45 |
+
|
46 |
+
#: admin/boot.php:123 admin/pages/cyrlitera.php:136
|
47 |
+
msgid "Force transliteration"
|
48 |
+
msgstr "Принудильная траслитерация"
|
49 |
+
|
50 |
+
#: admin/boot.php:129 admin/pages/cyrlitera.php:165
|
51 |
+
msgid "Don't use transliteration in frontend"
|
52 |
+
msgstr "Не использовать транслитерацию на фронтенде"
|
53 |
+
|
54 |
+
#: admin/boot.php:135 admin/pages/cyrlitera.php:127
|
55 |
+
msgid "Convert file names"
|
56 |
+
msgstr "Конвертировать имена файлов"
|
57 |
+
|
58 |
+
#: admin/boot.php:141 admin/pages/cyrlitera.php:145
|
59 |
+
msgid "Convert file names into lowercase"
|
60 |
+
msgstr "Преобразовывать имена файлов в нижний регистр"
|
61 |
+
|
62 |
+
#: admin/boot.php:147 admin/pages/cyrlitera.php:155
|
63 |
+
msgid "Redirection old URLs to new ones"
|
64 |
+
msgstr "Перенаправление со старых URL на новые"
|
65 |
+
|
66 |
+
#: admin/boot.php:153 admin/pages/cyrlitera.php:175
|
67 |
+
msgid "Character Sets"
|
68 |
+
msgstr "Наборы символов"
|
69 |
+
|
70 |
+
#: admin/boot.php:174
|
71 |
+
msgid "Get ultimate plugin free"
|
72 |
+
msgstr "Получите полную версию плагина бесплатно"
|
73 |
+
|
74 |
+
#: admin/pages/cyrlitera.php:39 admin/pages/cyrlitera.php:57
|
75 |
+
msgid "Transliteration"
|
76 |
+
msgstr "Транслитерация"
|
77 |
+
|
78 |
+
#: admin/pages/cyrlitera.php:57
|
79 |
+
msgid "General"
|
80 |
+
msgstr "Основные"
|
81 |
+
|
82 |
+
#: admin/pages/cyrlitera.php:111
|
83 |
+
msgid "Transliteration of Cyrillic alphabet."
|
84 |
+
msgstr "Транслитерация кириллицы."
|
85 |
+
|
86 |
+
#: admin/pages/cyrlitera.php:111
|
87 |
+
msgid ""
|
88 |
+
"Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
|
89 |
+
"the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
|
90 |
+
"languages. Example: http://site.dev/последние-новости -> http://site.dev/"
|
91 |
+
"poslednie-novosti"
|
92 |
+
msgstr ""
|
93 |
+
"Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
|
94 |
+
"медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
|
95 |
+
"Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
|
96 |
+
"dev/poslednie-novosti"
|
97 |
+
|
98 |
+
#: admin/pages/cyrlitera.php:120
|
99 |
+
msgid ""
|
100 |
+
"If you enable this option, all URLs of new pages, posts, tags, and "
|
101 |
+
"categories will automatically be converted to Latin."
|
102 |
+
msgstr ""
|
103 |
+
"Если включить эту опцию, все URL новых страниц, записей, меток, рубрик будут "
|
104 |
+
"автоматически конвертироваться в латиницу."
|
105 |
+
|
106 |
+
#: admin/pages/cyrlitera.php:129
|
107 |
+
msgid ""
|
108 |
+
"This option works only for new media library files. All Cyrillic names of "
|
109 |
+
"the downloaded files will be converted to names with Latin characters."
|
110 |
+
msgstr ""
|
111 |
+
"Эта опция работает только для новых файлов медиа библиотеки. Все "
|
112 |
+
"кириллические имена загружаемых файлов, будут преобразованы в имена с "
|
113 |
+
"латинскими символами."
|
114 |
+
|
115 |
+
#: admin/pages/cyrlitera.php:138
|
116 |
+
#, php-format
|
117 |
+
msgid ""
|
118 |
+
"If any of your plugins affects transliteration of links and file names, you "
|
119 |
+
"can use this option to change the plugin of %s to overwrite the changes of "
|
120 |
+
"the other plugins."
|
121 |
+
msgstr ""
|
122 |
+
"Если какой-то из установленных у вас плагинов влияет на траслитерацию "
|
123 |
+
"постоянных ссылок и файловых имен, включите эту опцию, чтобы %s "
|
124 |
+
"перезаписывал изменения других плагинов."
|
125 |
+
|
126 |
+
#: admin/pages/cyrlitera.php:147
|
127 |
+
msgid ""
|
128 |
+
"This function works only for new upload files. Example: File_Name.jpg -> "
|
129 |
+
"file_name.jpg"
|
130 |
+
msgstr ""
|
131 |
+
"Эта функция работает только для новых загружаемых файлов. Пример: File_Name."
|
132 |
+
"jpg -> file_name.jpg"
|
133 |
+
|
134 |
+
#: admin/pages/cyrlitera.php:157
|
135 |
+
msgid ""
|
136 |
+
"If at the time of the plugin installation you had pages with unconverted "
|
137 |
+
"links, use this option to redirect users from old to new URLs with the Latin "
|
138 |
+
"alphabet."
|
139 |
+
msgstr ""
|
140 |
+
"Если на момент установки плагина у вас были страницы с не преобразованными "
|
141 |
+
"ссылками, используйте эту опцию, чтобы пользователи, перешедшие по старым "
|
142 |
+
"ссылкам, были перенаправлены на новые URL на латинице."
|
143 |
+
|
144 |
+
#: admin/pages/cyrlitera.php:167
|
145 |
+
msgid "Enable when have a problem in frontend."
|
146 |
+
msgstr "Включите эту опцию, если у вас есть проблемы с внешней стороны сайта."
|
147 |
+
|
148 |
+
#: admin/pages/cyrlitera.php:176
|
149 |
+
msgid ""
|
150 |
+
"You can supplement current base of transliteration characters. Write pairs "
|
151 |
+
"of values separated by commas. Example:"
|
152 |
+
msgstr ""
|
153 |
+
"Вы можете дополнить текущую базу символов транслитерации, пишите пары "
|
154 |
+
"значений через запятую. Пример: "
|
155 |
+
|
156 |
+
#: admin/pages/cyrlitera.php:242
|
157 |
+
msgid ""
|
158 |
+
"If at the time of the plugin installation you already had posts, pages, tags "
|
159 |
+
"and categories, click on this button and the plugin will automatically "
|
160 |
+
"convert URLs into Latin. Attention! Previously uploaded files will not be "
|
161 |
+
"converted."
|
162 |
+
msgstr ""
|
163 |
+
"Если на момент установки плагина у вас уже были созданы записи, страницы, "
|
164 |
+
"метки и рубрики, то нажмите на эту кнопку и плагин автоматически преобразует "
|
165 |
+
"URLы в латинские. Внимание! Ранее загруженные файлы преобразованы не будут."
|
166 |
+
|
167 |
+
#: admin/pages/cyrlitera.php:251
|
168 |
+
msgid "Convert already created posts and categories"
|
169 |
+
msgstr "Преобразовать уже созданные записи и рубрики"
|
170 |
+
|
171 |
+
#: admin/pages/cyrlitera.php:253
|
172 |
+
msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
|
173 |
+
msgstr ""
|
174 |
+
"Url старых записей, страниц, тегов и рубрик были успешно конвертированы в "
|
175 |
+
"литинские!"
|
176 |
+
|
177 |
+
#: admin/pages/cyrlitera.php:263
|
178 |
+
msgid ""
|
179 |
+
"Allows you to restore converted URLs by using the \"Convert already created "
|
180 |
+
"posts and categories\" button. This can be useful in case of incorrect URLs "
|
181 |
+
"or incorrect transliteration of some characters. You can roll back changes "
|
182 |
+
"and advance the character sets above to correct the plugin's work. "
|
183 |
+
msgstr ""
|
184 |
+
"Позволяет восстановить преобразованные с помощью кнопки “Преобразовать уже "
|
185 |
+
"созданные записи и рубрики” URLы. Это может быть полезно в случае появления "
|
186 |
+
"некорректных URL адресов или неправильной транслитерации определенных "
|
187 |
+
"символов. У вас есть возможность откатить изменения и изменить наборы "
|
188 |
+
"символов выше, чтобы скорректировать работу плагина."
|
189 |
+
|
190 |
+
#: admin/pages/cyrlitera.php:272
|
191 |
+
msgid "Rollback changes"
|
192 |
+
msgstr "Откатить изменения"
|
193 |
+
|
194 |
+
#: admin/pages/cyrlitera.php:274
|
195 |
+
msgid "The rollback of new changes was successful!"
|
196 |
+
msgstr "Откат новых изменений прошел успешно!"
|
197 |
+
|
198 |
+
#: cyrlitera.php:63
|
199 |
+
msgid "Webcraftic Cyrlitera"
|
200 |
+
msgstr "Webcraftic Cyrlitera"
|
201 |
+
|
202 |
+
#~ msgid ""
|
203 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
204 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
205 |
+
#~ "deactivate plugin \"Webcraftic Cyrlitera\"!"
|
206 |
+
#~ msgstr ""
|
207 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
208 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
209 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Webcraftic Cyrlitera»!"
|
210 |
+
|
211 |
+
#~ msgid ""
|
212 |
+
#~ "You can supplement current base of transliteration characters. Write "
|
213 |
+
#~ "pairs of values in lower case separated by commas. Example:"
|
214 |
+
#~ msgstr ""
|
215 |
+
#~ "Вы можете дополнить текущую базу символов транслитерации, пишите пары "
|
216 |
+
#~ "значений в нижнем регистре через запятую. Пример: ა=a,ბ=b"
|
217 |
+
|
218 |
+
#~ msgid ""
|
219 |
+
#~ "If any of your plugins affects transliteration of links, you can use this "
|
220 |
+
#~ "option to change the plugin of %s to overwrite the changes of the other "
|
221 |
+
#~ "plugins."
|
222 |
+
#~ msgstr ""
|
223 |
+
#~ "Если какой-то из установленных у вас плагинов влияет на траслитерацию "
|
224 |
+
#~ "постоянный ссылок, включите эту опцию, чтобы %s перезаписывал изменения "
|
225 |
+
#~ "других плагинов."
|
226 |
+
|
227 |
+
#~ msgid ""
|
228 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
229 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
230 |
+
#~ "deactivate plugin \"Cyrilic transliteration\"!"
|
231 |
+
#~ msgstr ""
|
232 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
233 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
234 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Транслитерация "
|
235 |
+
#~ "кириллицы»!"
|
236 |
+
|
237 |
+
#~ msgid "Webcraftic cyrilic transliteration"
|
238 |
+
#~ msgstr "Webcraftic транслитерация кириллицы"
|
239 |
+
|
240 |
+
#~ msgid ""
|
241 |
+
#~ "If you enable this option, the permanent URLs of all previously published "
|
242 |
+
#~ "posts and pages will be converted into URLs with Latin characters. All "
|
243 |
+
#~ "new pages and posts will also have a URL in the Latin alphabet."
|
244 |
+
#~ msgstr ""
|
245 |
+
#~ "Если включить эту опцию, постоянные URL всех ранее опубликованных записей "
|
246 |
+
#~ "и страниц будут преобразованы в URL с латинскими символами. Все новые "
|
247 |
+
#~ "страницы и записи, также будут иметь URL на латинице."
|
248 |
+
|
249 |
+
#~ msgid "You don't have enough capability to edit this information."
|
250 |
+
#~ msgstr "Вы не имеете разрешения на редактирование этого!"
|
251 |
+
|
252 |
+
#~ msgid "Undefinded notice id."
|
253 |
+
#~ msgstr "Не передан notice id."
|
254 |
+
|
255 |
+
#~ msgid "Success"
|
256 |
+
#~ msgstr "Успешно"
|
257 |
+
|
258 |
+
#~ msgid "Hide admin notices"
|
259 |
+
#~ msgstr "Скрыть уведомления"
|
260 |
+
|
261 |
+
#~ msgid "Enable hidden notices in adminbar"
|
262 |
+
#~ msgstr "Включить уведомления в админбаре"
|
263 |
+
|
264 |
+
#~ msgid "Admin notifications, Update nags"
|
265 |
+
#~ msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
|
266 |
+
|
267 |
+
#~ msgid ""
|
268 |
+
#~ "Do you know the situation, when some plugin offers you to update to "
|
269 |
+
#~ "premium, to collect technical data and shows many annoying notices? You "
|
270 |
+
#~ "are close these notices every now and again but they newly appears and "
|
271 |
+
#~ "interfere your work with WordPress. Even worse, some plugin’s authors "
|
272 |
+
#~ "delete “close” button from notices and they shows in your admin panel "
|
273 |
+
#~ "forever."
|
274 |
+
#~ msgstr ""
|
275 |
+
#~ "Вам знакома ситуация, когда какой-то плагин просит вас обновиться до "
|
276 |
+
#~ "премиум-версии, получить права на сбор данных о вашем сайте и создает "
|
277 |
+
#~ "много раздражающих уведомлений? Вы закрываете эти уведомления раз за "
|
278 |
+
#~ "разом, но они вновь появляются и мешают вашей работе с WordPress. Хуже "
|
279 |
+
#~ "того, некоторые авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и "
|
280 |
+
#~ "они висят в шапке вашей панели администратора целую вечность."
|
281 |
+
|
282 |
+
#~ msgid "All notices"
|
283 |
+
#~ msgstr "Все уведомления"
|
284 |
+
|
285 |
+
#~ msgid "Hide all notices globally."
|
286 |
+
#~ msgstr "Скрыть все уведомления глобально."
|
287 |
+
|
288 |
+
#~ msgid "Only selected"
|
289 |
+
#~ msgstr "Только выбранные"
|
290 |
+
|
291 |
+
#~ msgid ""
|
292 |
+
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
293 |
+
#~ "forever\" in each notice. Push it and they will not bother you anymore."
|
294 |
+
#~ msgstr ""
|
295 |
+
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
296 |
+
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
297 |
+
#~ "будет скрыто навсегда и перестанет вас беспокоить."
|
298 |
+
|
299 |
+
#~ msgid "Don't nide"
|
300 |
+
#~ msgstr "Не скрывать"
|
301 |
+
|
302 |
+
#~ msgid ""
|
303 |
+
#~ "Do not hide notices and do not show “Hide notification forever” link for "
|
304 |
+
#~ "admin."
|
305 |
+
#~ msgstr ""
|
306 |
+
#~ "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление "
|
307 |
+
#~ "навсегда\" в уведомлениях администратора."
|
308 |
+
|
309 |
+
#~ msgid ""
|
310 |
+
#~ "Some plugins shows notifications about premium version, data collecting "
|
311 |
+
#~ "or promote their services. Even if you push close button (that sometimes "
|
312 |
+
#~ "are impossible), notices are shows again in some time. This option allows "
|
313 |
+
#~ "you to control notices. Hide them all or each individually. Some plugins "
|
314 |
+
#~ "shows notifications about premium version, data collecting or promote "
|
315 |
+
#~ "their services. Even if you push close button (that sometimes are "
|
316 |
+
#~ "impossible), notices are shows again in some time. This option allows you "
|
317 |
+
#~ "to control notices. Hide them all or each individually."
|
318 |
+
#~ msgstr ""
|
319 |
+
#~ "Зачастую, плагины отображают уведомления о возможности перехода на "
|
320 |
+
#~ "премиум версию, просят разрешение на сбор данных, рекламируют свои "
|
321 |
+
#~ "услуги. Даже если вы нажмете кнопку закрыть (что не всегда возможно), "
|
322 |
+
#~ "уведомления всё равно отобразятся через какое-то время. С помощью этой "
|
323 |
+
#~ "настройки, вы можете контролировать эти уведомления. Скройте их все сразу "
|
324 |
+
#~ "или каждое по отдельности."
|
325 |
+
|
326 |
+
#~ msgid ""
|
327 |
+
#~ "By default, the plugin hides all notices, which you specified. If you "
|
328 |
+
#~ "enable this option, the plugin will collect all hidden notices and show "
|
329 |
+
#~ "them into the top admin toolbar. It will not disturb you but will allow "
|
330 |
+
#~ "to look notices at your convenience."
|
331 |
+
#~ msgstr ""
|
332 |
+
#~ "По умолчанию, плагин полностью скрывает отключенные вами уведомления. "
|
333 |
+
#~ "Если включить эту опцию, то плагин будет собирать все скрытые вами "
|
334 |
+
#~ "уведомления и выводить в верхней панели администратора. Это не будет вас "
|
335 |
+
#~ "раздражать, но и позволит просматривать уведомления, когда вам это удобно."
|
336 |
+
|
337 |
+
#~ msgid "Push reset hidden notices if you need to show hidden notices again."
|
338 |
+
#~ msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
|
339 |
+
|
340 |
+
#~ msgid "Reset hidden notices (%s)"
|
341 |
+
#~ msgstr "Сбросить скрытые уведомления (%s)"
|
342 |
+
|
343 |
+
#~ msgid "Hidden notices are successfully reset, now you can see them again!"
|
344 |
+
#~ msgstr ""
|
345 |
+
#~ "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть "
|
346 |
+
#~ "их!"
|
347 |
+
|
348 |
+
#~ msgid "Notices"
|
349 |
+
#~ msgstr "Уведомления"
|
350 |
+
|
351 |
+
#~ msgid ""
|
352 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
353 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
354 |
+
#~ "deactivate plugin \"Disable admin notices\"!"
|
355 |
+
#~ msgstr ""
|
356 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
357 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
358 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
|
359 |
+
#~ "администратора»!"
|
360 |
+
|
361 |
+
#~ msgid "Webcraftic disable admin notices"
|
362 |
+
#~ msgstr "Webcraftic отключить уведомления администратора"
|
363 |
+
|
364 |
+
#~ msgid "Notifications %s"
|
365 |
+
#~ msgstr "Уведомления %s"
|
366 |
+
|
367 |
+
#~ msgid "Restore notice"
|
368 |
+
#~ msgstr "Восстановить уведомление"
|
369 |
+
|
370 |
+
#~ msgid "Hide notification forever"
|
371 |
+
#~ msgstr "Скрыть уведомление навсегда"
|
372 |
+
|
373 |
+
#~ msgid "Hidden notices"
|
374 |
+
#~ msgstr "Скрытые уведомления"
|
375 |
+
|
376 |
+
#~ msgid "Disable comments on the entire site"
|
377 |
+
#~ msgstr "Отключить комментарии на всем сайте"
|
378 |
+
|
379 |
+
#~ msgid "Select post types"
|
380 |
+
#~ msgstr "Выбрать тип записи"
|
381 |
+
|
382 |
+
#~ msgid "Replace external links in comments on the JavaScript code"
|
383 |
+
#~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
|
384 |
+
|
385 |
+
#~ msgid "Replace external links from comment authors on the JavaScript code"
|
386 |
+
#~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
|
387 |
+
|
388 |
+
#~ msgid "Disable X-Pingback"
|
389 |
+
#~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
|
390 |
+
|
391 |
+
#~ msgid "Remove field \"site\" in comment form"
|
392 |
+
#~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
|
393 |
+
|
394 |
+
#~ msgid "Disable all comments"
|
395 |
+
#~ msgstr "Отключить все комментарии"
|
396 |
+
|
397 |
+
#~ msgid "Comments"
|
398 |
+
#~ msgstr "Комментарии"
|
399 |
+
|
400 |
+
#~ msgid ""
|
401 |
+
#~ "Hide selected notices only. You will see the link \"Hide notification "
|
402 |
+
#~ "forever\" in each notice. Push it and they will not bother you anymore. "
|
403 |
+
#~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
|
404 |
+
#~ "hidden notices again."
|
405 |
+
#~ msgstr ""
|
406 |
+
#~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
|
407 |
+
#~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
|
408 |
+
#~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
|
409 |
+
#~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
|
410 |
+
#~ "показ скрытых ранее уведомлений."
|
411 |
+
|
412 |
+
#~ msgid "Webcraftic hide admin notices"
|
413 |
+
#~ msgstr "Webcraftic скрыть уведомления администратора"
|
414 |
+
|
415 |
+
#~ msgid "Comments tweaks"
|
416 |
+
#~ msgstr "Инструменты комментариев"
|
417 |
+
|
418 |
+
#~ msgid "All comments have been deleted."
|
419 |
+
#~ msgstr "Все комментарии были удалены."
|
420 |
+
|
421 |
+
#~ msgid ""
|
422 |
+
#~ "An error occurred while trying to delete comments. Internal error "
|
423 |
+
#~ "occured. Please try again later."
|
424 |
+
#~ msgstr ""
|
425 |
+
#~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
|
426 |
+
#~ "попытку позже."
|
427 |
+
|
428 |
+
#~ msgid "You are not allowed to view this page."
|
429 |
+
#~ msgstr "Вам не разрешено просматривать эту страницу."
|
430 |
+
|
431 |
+
#~ msgid "You do not have the selected post types!"
|
432 |
+
#~ msgstr "Вы не выбрали еще ни одного типа записей!"
|
433 |
+
|
434 |
+
#~ msgid "No comments available for deletion."
|
435 |
+
#~ msgstr "Нет комментариев для удаления."
|
436 |
+
|
437 |
+
#~ msgid ""
|
438 |
+
#~ "Are you sure that you desire to delete all comments from the database?"
|
439 |
+
#~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
|
440 |
+
|
441 |
+
#~ msgid ""
|
442 |
+
#~ "Deleting comments will remove existing comment entries in the database "
|
443 |
+
#~ "and cannot be reverted without a database backup."
|
444 |
+
#~ msgstr ""
|
445 |
+
#~ "При удалении комментариев удаляются существующие записи комментариев в "
|
446 |
+
#~ "базе данных, они не могут быть восстановлены без резервного копирования "
|
447 |
+
#~ "базы данных."
|
448 |
+
|
449 |
+
#~ msgid "You have %s comments"
|
450 |
+
#~ msgstr "У вас есть %s комментариев"
|
451 |
+
|
452 |
+
#~ msgid "Yes, I'm sure"
|
453 |
+
#~ msgstr "Да, я уверен"
|
454 |
+
|
455 |
+
#~ msgid "No, return back"
|
456 |
+
#~ msgstr "Нет, вернуться"
|
457 |
+
|
458 |
+
#~ msgid ""
|
459 |
+
#~ "Are you sure that you desire to delete all comments from the database for "
|
460 |
+
#~ "the selected post types (%s)?"
|
461 |
+
#~ msgstr ""
|
462 |
+
#~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
|
463 |
+
#~ "выбранных типов записей (%s)?"
|
464 |
+
|
465 |
+
#~ msgid "Disable comments"
|
466 |
+
#~ msgstr "Отключить комментарии"
|
467 |
+
|
468 |
+
#~ msgid "Not disable"
|
469 |
+
#~ msgstr "Не отключать"
|
470 |
+
|
471 |
+
#~ msgid "Everywhere"
|
472 |
+
#~ msgstr "Повсюду"
|
473 |
+
|
474 |
+
#~ msgid ""
|
475 |
+
#~ "You can delete all comments in the database by clicking on this link (<a "
|
476 |
+
#~ "href=\"%s\">cleaning comments in database</a>)."
|
477 |
+
#~ msgstr ""
|
478 |
+
#~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
|
479 |
+
#~ "href=\"%s\">очистка комментариев в базе данных</a> )."
|
480 |
+
|
481 |
+
#~ msgid "On certain post types"
|
482 |
+
#~ msgstr "Только выбранные типы записей"
|
483 |
+
|
484 |
+
#~ msgid ""
|
485 |
+
#~ "You can delete all comments for the selected post types. Select the post "
|
486 |
+
#~ "types below and save the settings. After that, click the link (<a href="
|
487 |
+
#~ "\"%s\">delete all comments for the selected post types in database</a>)."
|
488 |
+
#~ msgstr ""
|
489 |
+
#~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
|
490 |
+
#~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
|
491 |
+
#~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
|
492 |
+
#~ "данных</a> )."
|
493 |
+
|
494 |
+
#~ msgid ""
|
495 |
+
#~ "Everywhere - Warning: This option is global and will affect your entire "
|
496 |
+
#~ "site. Use it only if you want to disable comments everywhere. A complete "
|
497 |
+
#~ "description of what this option does is available here"
|
498 |
+
#~ msgstr ""
|
499 |
+
#~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
|
500 |
+
#~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
|
501 |
+
#~ "отключить комментарии повсюду. "
|
502 |
+
|
503 |
+
#~ msgid ""
|
504 |
+
#~ "On certain post types - Disabling comments will also disable trackbacks "
|
505 |
+
#~ "and pingbacks. All comment-related fields will also be hidden from the "
|
506 |
+
#~ "edit/quick-edit screens of the affected posts. These settings cannot be "
|
507 |
+
#~ "overridden for individual posts."
|
508 |
+
#~ msgstr ""
|
509 |
+
#~ "В некоторых типах сообщений - отключение комментариев также отключает "
|
510 |
+
#~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
|
511 |
+
#~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
|
512 |
+
#~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
|
513 |
+
|
514 |
+
#~ msgid "Select the post types for which comments will be disabled"
|
515 |
+
#~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
|
516 |
+
|
517 |
+
#~ msgid ""
|
518 |
+
#~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
|
519 |
+
#~ "the sake of a link to their site?"
|
520 |
+
#~ msgstr ""
|
521 |
+
#~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
|
522 |
+
#~ "ради ссылки на свой сайт?"
|
523 |
+
|
524 |
+
#~ msgid "Removes the \"Site\" field from the comment form."
|
525 |
+
#~ msgstr "Убирает поле «Сайт» из формы комментирования."
|
526 |
+
|
527 |
+
#~ msgid ""
|
528 |
+
#~ "Works with the standard comment form, if the form is manually written in "
|
529 |
+
#~ "your theme-it probably will not work!"
|
530 |
+
#~ msgstr ""
|
531 |
+
#~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
|
532 |
+
#~ "прописана вручную - скорей всего не сработает!"
|
533 |
+
|
534 |
+
#~ msgid "Recommended"
|
535 |
+
#~ msgstr "Рекомендовано"
|
536 |
+
|
537 |
+
#~ msgid ""
|
538 |
+
#~ "Superfluous external links from comments, which can be typed from a dozen "
|
539 |
+
#~ "and more for one article, do not bring anything good for promotion."
|
540 |
+
#~ msgstr ""
|
541 |
+
#~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
|
542 |
+
#~ "одной странице, могут ухудшить продвижение вашего сайта."
|
543 |
+
|
544 |
+
#~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
|
545 |
+
#~ msgstr ""
|
546 |
+
#~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
|
547 |
+
#~ "JavaScript %s"
|
548 |
+
|
549 |
+
#~ msgid ""
|
550 |
+
#~ "Up to 90 percent of comments in the blog can be left for the sake of an "
|
551 |
+
#~ "external link. Even nofollow from page weight loss here does not help."
|
552 |
+
#~ msgstr ""
|
553 |
+
#~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
|
554 |
+
#~ "поможет даже nofollow от потери веса страницы."
|
555 |
+
|
556 |
+
#~ msgid ""
|
557 |
+
#~ "Replaces the links of the authors of comments on the JavaScript code, it "
|
558 |
+
#~ "is impossible to distinguish it from usual links."
|
559 |
+
#~ msgstr ""
|
560 |
+
#~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
|
561 |
+
#~ "отличить от обычной ссылки."
|
562 |
+
|
563 |
+
#~ msgid "In some Wordpress topics this may not work."
|
564 |
+
#~ msgstr "В некоторых темах Wordpress это может не сработать."
|
565 |
+
|
566 |
+
#~ msgid "Disable XML-RPC"
|
567 |
+
#~ msgstr "Отключить XML-RPC"
|
568 |
+
|
569 |
+
#~ msgid ""
|
570 |
+
#~ "A pingback is basically an automated comment that gets created when "
|
571 |
+
#~ "another blog links to you. A self-pingback is created when you link to an "
|
572 |
+
#~ "article within your own blog. Pingbacks are essentially nothing more than "
|
573 |
+
#~ "spam and simply waste resources."
|
574 |
+
#~ msgstr ""
|
575 |
+
#~ "Pingback по-существу автоматизированных комментарий, который создается, "
|
576 |
+
#~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
|
577 |
+
#~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
|
578 |
+
#~ "не более чем спам и пустая трата ресурсов вашего сайта."
|
579 |
+
|
580 |
+
#~ msgid "Removes the server responses a reference to the xmlrpc file."
|
581 |
+
#~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
|
582 |
+
|
583 |
+
#~ msgid ""
|
584 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
585 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
586 |
+
#~ "deactivate plugin \"Comments tweaks\"!"
|
587 |
+
#~ msgstr ""
|
588 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
589 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
590 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
|
591 |
+
#~ "комментариев»!"
|
592 |
+
|
593 |
+
#~ msgid "Webcraftic comments tweaks"
|
594 |
+
#~ msgstr "Webcraftic инструменты комментариев"
|
595 |
+
|
596 |
+
#~ msgid "Comments are closed."
|
597 |
+
#~ msgstr "Комментарии Закрыты."
|
598 |
+
|
599 |
+
#~ msgid ""
|
600 |
+
#~ "Note: The <em>%s</em> plugin is currently active, and comments are "
|
601 |
+
#~ "completely disabled on: %s. Many of the settings below will not be "
|
602 |
+
#~ "applicable for those post types."
|
603 |
+
#~ msgstr ""
|
604 |
+
#~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
|
605 |
+
#~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
|
606 |
+
#~ "применяться для этих типов сообщений."
|
607 |
+
|
608 |
+
#~ msgid ""
|
609 |
+
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
610 |
+
#~ "installed, this plugin already has disable comments functions, so you can "
|
611 |
+
#~ "deactivate plugin \"Disable comments\"!"
|
612 |
+
#~ msgstr ""
|
613 |
+
#~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
|
614 |
+
#~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
|
615 |
+
#~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
|
616 |
+
|
617 |
+
#~ msgid "Webcraftic Disable comments"
|
618 |
+
#~ msgstr "Webcraftic отключить комментарии"
|
components/disable-admin-notices/disable-admin-notices.php
CHANGED
@@ -1,73 +1,94 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
|
|
|
18 |
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
24 |
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
-
if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
|
28 |
-
require_once(WDN_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
|
29 |
-
require_once(WDN_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
|
30 |
-
}
|
31 |
|
32 |
-
$plugin_info = array(
|
33 |
-
'prefix' => 'wbcr_dan_',
|
34 |
-
'plugin_name' => 'wbcr_dan',
|
35 |
-
'plugin_title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
|
36 |
-
'plugin_version' => WDN_PLUGIN_VERSION,
|
37 |
-
'plugin_build' => 'free',
|
38 |
-
'updates' => WDN_PLUGIN_DIR . '/updates/'
|
39 |
-
);
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
|
46 |
-
'plugin_as_component' => defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON'),
|
47 |
-
'plugin_dir' => WDN_PLUGIN_DIR,
|
48 |
-
'plugin_base' => WDN_PLUGIN_BASE,
|
49 |
-
'plugin_url' => WDN_PLUGIN_URL,
|
50 |
-
'required_php_version' => '5.3',
|
51 |
-
'required_wp_version' => '4.2.0',
|
52 |
-
'required_clearfy_check_component' => true
|
53 |
-
)));
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
68 |
|
69 |
-
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
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.6
|
8 |
+
* Text Domain: disable-admin-notices
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
|
14 |
+
// Exit if accessed directly
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
+
if ( ! defined( 'WDN_PLUGIN_VERSION' ) ) {
|
19 |
+
define( 'WDN_PLUGIN_VERSION', '1.0.7' );
|
20 |
+
}
|
21 |
|
22 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
23 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
24 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
25 |
+
// --------------------------------------
|
26 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
27 |
+
return;
|
28 |
+
}
|
29 |
|
30 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
31 |
+
return;
|
32 |
+
}
|
33 |
+
// ----------------------------------------
|
34 |
|
35 |
+
if ( ! defined( 'WDN_PLUGIN_DIR' ) ) {
|
36 |
+
define( 'WDN_PLUGIN_DIR', dirname( __FILE__ ) );
|
37 |
+
}
|
38 |
+
if ( ! defined( 'WDN_PLUGIN_BASE' ) ) {
|
39 |
+
define( 'WDN_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
40 |
+
}
|
41 |
+
if ( ! defined( 'WDN_PLUGIN_URL' ) ) {
|
42 |
+
define( 'WDN_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
43 |
+
}
|
44 |
|
|
|
|
|
|
|
|
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
if ( ! defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ) ) {
|
48 |
+
require_once( WDN_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
49 |
+
require_once( WDN_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
50 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
+
$plugin_info = array(
|
53 |
+
'prefix' => 'wbcr_dan_',
|
54 |
+
'plugin_name' => 'wbcr_dan',
|
55 |
+
'plugin_title' => __( 'Webcraftic disable admin notices', 'disable-admin-notices' ),
|
56 |
+
'plugin_version' => WDN_PLUGIN_VERSION,
|
57 |
+
'plugin_build' => 'free',
|
58 |
+
'updates' => WDN_PLUGIN_DIR . '/updates/'
|
59 |
+
);
|
60 |
|
61 |
+
/**
|
62 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
63 |
+
*/
|
64 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
65 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
66 |
+
'plugin_already_activate' => defined( 'WDN_PLUGIN_ACTIVE' ),
|
67 |
+
'plugin_as_component' => defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ),
|
68 |
+
'plugin_dir' => WDN_PLUGIN_DIR,
|
69 |
+
'plugin_base' => WDN_PLUGIN_BASE,
|
70 |
+
'plugin_url' => WDN_PLUGIN_URL,
|
71 |
+
'required_php_version' => '5.3',
|
72 |
+
'required_wp_version' => '4.2.0',
|
73 |
+
'required_clearfy_check_component' => true
|
74 |
+
) ) );
|
75 |
|
76 |
+
/**
|
77 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
78 |
+
* а пользователь получит предупреждение.
|
79 |
+
*/
|
80 |
+
if ( ! $compatibility->check() ) {
|
81 |
+
return;
|
82 |
+
}
|
83 |
|
84 |
+
define( 'WDN_PLUGIN_ACTIVE', true );
|
85 |
|
86 |
+
if ( ! defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ) ) {
|
87 |
+
require_once( WDN_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
88 |
+
}
|
89 |
+
|
90 |
+
require_once( WDN_PLUGIN_DIR . '/includes/class.plugin.php' );
|
91 |
+
|
92 |
+
if ( ! defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ) ) {
|
93 |
+
new WDN_Plugin( __FILE__, $plugin_info );
|
94 |
+
}
|
components/disable-admin-notices/includes/classes/class.configurate-notices.php
CHANGED
@@ -52,7 +52,7 @@ class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy206_Configurate {
|
|
52 |
}
|
53 |
|
54 |
public function notificationsPanel( &$wp_admin_bar ) {
|
55 |
-
if ( ! $this->getPopulateOption( 'show_notices_in_adminbar', false )
|
56 |
return;
|
57 |
}
|
58 |
|
@@ -202,7 +202,13 @@ class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy206_Configurate {
|
|
202 |
global $wbcr_dan_plugin_all_notices;
|
203 |
|
204 |
try {
|
205 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
} catch( Exception $e ) {
|
207 |
$wp_filter_admin_notices = null;
|
208 |
}
|
52 |
}
|
53 |
|
54 |
public function notificationsPanel( &$wp_admin_bar ) {
|
55 |
+
if ( ! $this->getPopulateOption( 'show_notices_in_adminbar', false ) ) {
|
56 |
return;
|
57 |
}
|
58 |
|
202 |
global $wbcr_dan_plugin_all_notices;
|
203 |
|
204 |
try {
|
205 |
+
if ( is_multisite() && is_network_admin() ) {
|
206 |
+
$wp_filter_admin_notices = &$this->getWPFilter( 'network_admin_notices' );
|
207 |
+
} else {
|
208 |
+
$wp_filter_admin_notices = &$this->getWPFilter( 'admin_notices' );
|
209 |
+
}
|
210 |
+
//todo: Доработать all admin notices
|
211 |
+
|
212 |
} catch( Exception $e ) {
|
213 |
$wp_filter_admin_notices = null;
|
214 |
}
|
components/disable-admin-notices/languages/disable-admin-notices-es_ES.mo
ADDED
Binary file
|
components/disable-admin-notices/languages/disable-admin-notices-es_ES.po
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:26+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:26+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/ajax/hide-notice.php:24 admin/ajax/restore-notice.php:22
|
29 |
+
msgid "Undefinded notice id."
|
30 |
+
msgstr "Aviso de ID indefinido"
|
31 |
+
|
32 |
+
#: admin/ajax/hide-notice.php:40 admin/ajax/restore-notice.php:36
|
33 |
+
msgid "You don't have enough capability to edit this information."
|
34 |
+
msgstr "No tienes suficiente permisos para editar esta información."
|
35 |
+
|
36 |
+
#: admin/boot.php:18 admin/options.php:30 admin/pages/notices.php:38
|
37 |
+
msgid "Hide admin notices"
|
38 |
+
msgstr "Ocultar avisos administrativos"
|
39 |
+
|
40 |
+
#: admin/boot.php:24 admin/options.php:103
|
41 |
+
msgid "Enable hidden notices in adminbar"
|
42 |
+
msgstr "Habilitar avisos ocultos en la barra de administración"
|
43 |
+
|
44 |
+
#: admin/boot.php:46
|
45 |
+
msgid "Get ultimate plugin free"
|
46 |
+
msgstr "Obtener el ultimate plugin gratis"
|
47 |
+
|
48 |
+
#: admin/options.php:23
|
49 |
+
msgid "Admin notifications, Update nags"
|
50 |
+
msgstr "Notificaciones de administrador, actualización de nags"
|
51 |
+
|
52 |
+
#: admin/options.php:23
|
53 |
+
msgid ""
|
54 |
+
"Do you know the situation, when some plugin offers you to update to premium, "
|
55 |
+
"to collect technical data and shows many annoying notices? You are close "
|
56 |
+
"these notices every now and again but they newly appears and interfere your "
|
57 |
+
"work with WordPress. Even worse, some plugin’s authors delete “close” button "
|
58 |
+
"from notices and they shows in your admin panel forever."
|
59 |
+
msgstr ""
|
60 |
+
"¿Conoces la situación cuando algún plugin te ofrece actualizar a Premium, "
|
61 |
+
"recopilar datos técnicos y mostrar muchos avisos molestos? A veces no están, "
|
62 |
+
"pero aparecen de nuevo e interfieren en tu trabajo con WordPress. Peor aún, "
|
63 |
+
"los autores de algunos plugin eliminan el botón \"cerrar\" de las "
|
64 |
+
"notificaciones y se muestran en su panel de administración para siempre."
|
65 |
+
|
66 |
+
#: admin/options.php:34
|
67 |
+
msgid "All notices"
|
68 |
+
msgstr "Todos los avisos"
|
69 |
+
|
70 |
+
#: admin/options.php:35
|
71 |
+
msgid "Hide all notices globally."
|
72 |
+
msgstr "Ocultar todos los avisos globalmente."
|
73 |
+
|
74 |
+
#: admin/options.php:39
|
75 |
+
msgid "Only selected"
|
76 |
+
msgstr "Solo seleccionados"
|
77 |
+
|
78 |
+
#: admin/options.php:40
|
79 |
+
msgid ""
|
80 |
+
"Hide selected notices only. You will see the link \"Hide notification forever"
|
81 |
+
"\" in each notice. Push it and they will not bother you anymore."
|
82 |
+
msgstr ""
|
83 |
+
"Ocultar solo los avisos seleccionados. Verá el enlace \"Ocultar notificación "
|
84 |
+
"para siempre\" en cada aviso. Click y ya no los veras mas."
|
85 |
+
|
86 |
+
#: admin/options.php:44
|
87 |
+
msgid "Don't nide"
|
88 |
+
msgstr "No ocultar"
|
89 |
+
|
90 |
+
#: admin/options.php:45
|
91 |
+
msgid ""
|
92 |
+
"Do not hide notices and do not show “Hide notification forever” link for "
|
93 |
+
"admin."
|
94 |
+
msgstr ""
|
95 |
+
"No ocultar avisos y no mostrar el enlace \"Ocultar notificación para siempre"
|
96 |
+
"\" para el administrador."
|
97 |
+
|
98 |
+
#: admin/options.php:49
|
99 |
+
msgid ""
|
100 |
+
"Some plugins shows notifications about premium version, data collecting or "
|
101 |
+
"promote their services. Even if you push close button (that sometimes are "
|
102 |
+
"impossible), notices are shows again in some time. This option allows you to "
|
103 |
+
"control notices. Hide them all or each individually. Some plugins shows "
|
104 |
+
"notifications about premium version, data collecting or promote their "
|
105 |
+
"services. Even if you push close button (that sometimes are impossible), "
|
106 |
+
"notices are shows again in some time. This option allows you to control "
|
107 |
+
"notices. Hide them all or each individually."
|
108 |
+
msgstr ""
|
109 |
+
"Algunos plugin muestran notificaciones sobre la versión premium: "
|
110 |
+
"Recopilación de datos o la promoción de sus servicios; Incluso si presiona "
|
111 |
+
"el botón de cierre (que a veces es imposible), las notificaciones se "
|
112 |
+
"muestran de nuevo en algún momento. Esta opción le permite controlar avisos. "
|
113 |
+
"Ocúltelas todas o cada una individualmente."
|
114 |
+
|
115 |
+
#: admin/options.php:105
|
116 |
+
msgid ""
|
117 |
+
"By default, the plugin hides all notices, which you specified. If you enable "
|
118 |
+
"this option, the plugin will collect all hidden notices and show them into "
|
119 |
+
"the top admin toolbar. It will not disturb you but will allow to look "
|
120 |
+
"notices at your convenience."
|
121 |
+
msgstr ""
|
122 |
+
"Por defecto, el plugin oculta todos los avisos que especificó. Si habilita "
|
123 |
+
"esta opción, el plugin recopilará todos los avisos ocultos y los mostrará en "
|
124 |
+
"la barra superior de administración de herramientas. No le molestará, pero "
|
125 |
+
"le permitirá ver los avisos según su conveniencia."
|
126 |
+
|
127 |
+
#: admin/options.php:166
|
128 |
+
msgid "Reset hidden notices for"
|
129 |
+
msgstr "Restablecer avisos ocultos para"
|
130 |
+
|
131 |
+
#: admin/options.php:167
|
132 |
+
msgid "Push reset hidden notices if you need to show hidden notices again."
|
133 |
+
msgstr "Pulse reiniciar avisos ocultos si necesita mostrarlos de nuevo."
|
134 |
+
|
135 |
+
#: admin/options.php:177
|
136 |
+
msgid "current user"
|
137 |
+
msgstr "usuario actual"
|
138 |
+
|
139 |
+
#: admin/options.php:181
|
140 |
+
msgid "all users"
|
141 |
+
msgstr "todos los usuarios"
|
142 |
+
|
143 |
+
#: admin/options.php:185
|
144 |
+
msgid "Reset notices"
|
145 |
+
msgstr "Restablecer avisos"
|
146 |
+
|
147 |
+
#: admin/options.php:188 admin/pages/notices.php:71
|
148 |
+
msgid "Hidden notices are successfully reset, now you can see them again!"
|
149 |
+
msgstr ""
|
150 |
+
"Los avisos ocultos se restablecieron con éxito, ¡ahora puedes verlos "
|
151 |
+
"nuevamente!"
|
152 |
+
|
153 |
+
#: admin/pages/notices.php:54
|
154 |
+
msgid "Notices"
|
155 |
+
msgstr "Avisos"
|
156 |
+
|
157 |
+
#: admin/pages/notices.php:55
|
158 |
+
msgid "General"
|
159 |
+
msgstr "General"
|
160 |
+
|
161 |
+
#: disable-admin-notices.php:84
|
162 |
+
msgid "Webcraftic disable admin notices"
|
163 |
+
msgstr "Deshabilitar los avisos Webcraftic de administración"
|
164 |
+
|
165 |
+
#: includes/classes/class.configurate-notices.php:74
|
166 |
+
#, php-format
|
167 |
+
msgid "Notifications %s"
|
168 |
+
msgstr "Notificaciones %s"
|
169 |
+
|
170 |
+
#: includes/classes/class.configurate-notices.php:86
|
171 |
+
msgid "Restore notice"
|
172 |
+
msgstr "Aviso de restauración"
|
173 |
+
|
174 |
+
#: includes/classes/class.configurate-notices.php:285
|
175 |
+
msgid "Hide notification forever"
|
176 |
+
msgstr "Ocultar notificaciones para siempre"
|
177 |
+
|
178 |
+
#~ msgid "Assets Manager"
|
179 |
+
#~ msgstr "Gestor de Activos"
|
180 |
+
|
181 |
+
#~ msgid "Settings has been successfully imported!"
|
182 |
+
#~ msgstr "¡Configuración importada exitosamente!"
|
components/ga-cache/admin/activation.php
CHANGED
@@ -1,57 +1,45 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
/**
|
4 |
-
*
|
5 |
-
*
|
6 |
-
* @
|
7 |
-
* @see Factory409_Activator
|
8 |
-
* @version 1.0
|
9 |
*/
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
/**
|
19 |
-
* Runs activation actions.
|
20 |
-
*
|
21 |
-
* @since 1.0.0
|
22 |
-
*/
|
23 |
-
public function activate()
|
24 |
-
{
|
25 |
-
// -------------
|
26 |
-
// Caching google analytics on a schedule
|
27 |
-
// -------------
|
28 |
-
|
29 |
-
$ga_cache = WGA_Plugin::app()->getPopulateOption('ga_cache');
|
30 |
-
|
31 |
-
if( $ga_cache ) {
|
32 |
-
wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
|
33 |
-
|
34 |
-
if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
|
35 |
-
$ga_caos_remove_wp_cron = WGA_Plugin::app()->getPopulateOption('ga_caos_remove_wp_cron');
|
36 |
-
|
37 |
-
if( !$ga_caos_remove_wp_cron ) {
|
38 |
-
wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
|
39 |
-
}
|
40 |
-
}
|
41 |
}
|
42 |
}
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
if( wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
|
54 |
-
wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
|
55 |
-
}
|
56 |
}
|
57 |
}
|
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* Activator for the GA cache
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 09.09.2017, Webcraftic
|
7 |
+
* @see Factory409_Activator
|
8 |
+
* @version 1.0
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
class WGA_Activation extends Wbcr_Factory409_Activator {
|
17 |
+
|
18 |
/**
|
19 |
+
* Runs activation actions.
|
20 |
+
*
|
21 |
+
* @since 1.0.0
|
|
|
|
|
22 |
*/
|
23 |
+
public function activate() {
|
24 |
+
$ga_cache = WGA_Plugin::app()->getPopulateOption( 'ga_cache' );
|
25 |
+
|
26 |
+
if ( $ga_cache ) {
|
27 |
+
wp_clear_scheduled_hook( 'wbcr/gac/update_analytic_library' );
|
28 |
+
|
29 |
+
if ( ! wp_next_scheduled( 'wbcr/gac/update_analytic_library' ) ) {
|
30 |
+
wp_schedule_event( time(), 'daily', 'wbcr/gac/update_analytic_library' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
}
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Runs activation actions.
|
37 |
+
*
|
38 |
+
* @since 1.0.0
|
39 |
+
*/
|
40 |
+
public function deactivate() {
|
41 |
+
if ( wp_next_scheduled( 'wbcr/gac/update_analytic_library' ) ) {
|
42 |
+
wp_clear_scheduled_hook( 'wbcr/gac/update_analytic_library' );
|
|
|
|
|
|
|
43 |
}
|
44 |
}
|
45 |
+
}
|
components/ga-cache/admin/boot.php
CHANGED
@@ -1,214 +1,260 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
->getPluginName())) . '</p>';
|
32 |
-
$text .= '<p>' . sprintf(__('We are aimed to pay more attention to the speed and security aspects of your website. That’s why you should definitely try our basic WordPress optimization plugin as well. Clearfy includes functionality of this plugin and has many additional features for the website optimization:
|
33 |
-
<a href="%s">Donwload Clearfy for free</a>', 'simple-google-analytics'), 'https://clearfy.pro?utm_source=wordpress.org&utm_campaign=' . WGA_Plugin::app()
|
34 |
-
->getPluginName()) . '</p>';
|
35 |
-
|
36 |
-
$notices[] = array(
|
37 |
-
'id' => 'ga_plugin_upgrade_notice1',
|
38 |
-
'type' => 'warning',
|
39 |
-
'dismissible' => true,
|
40 |
-
'dismiss_expires' => 0,
|
41 |
-
'text' => $text
|
42 |
-
);
|
43 |
-
|
44 |
return $notices;
|
45 |
}
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
-
|
85 |
-
WGA_Plugin::app()->updatePopulateOption('
|
|
|
|
|
|
|
|
|
86 |
}
|
|
|
|
|
87 |
}
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
}
|
100 |
-
}
|
101 |
-
|
102 |
-
|
103 |
-
* This action is executed when the component of the Clearfy plugin is deactivated and if this component is name ga_cache
|
104 |
-
*/
|
105 |
-
add_action('wbcr_clearfy_pre_deactivate_component', function ($component_name) {
|
106 |
-
if( $component_name == 'ga_cache' ) {
|
107 |
-
require_once WGA_PLUGIN_DIR . '/admin/activation.php';
|
108 |
-
$plugin = new WGA_Activation(WGA_Plugin::app());
|
109 |
-
$plugin->deactivate();
|
110 |
}
|
111 |
-
});
|
112 |
-
|
113 |
-
/**
|
114 |
-
* @param $options
|
115 |
-
* @return array
|
116 |
-
*/
|
117 |
-
function wbcr_ga_group_options($options)
|
118 |
-
{
|
119 |
-
$options[] = array(
|
120 |
-
'name' => 'ga_cache',
|
121 |
-
'title' => __('Google Analytics Cache', 'simple-google-analytics'),
|
122 |
-
'tags' => array()
|
123 |
-
);
|
124 |
-
|
125 |
-
$options[] = array(
|
126 |
-
'name' => 'ga_tracking_id',
|
127 |
-
'title' => __('Google analytic Code', 'clearfy'),
|
128 |
-
'tags' => array()
|
129 |
-
);
|
130 |
-
$options[] = array(
|
131 |
-
'name' => 'ga_adjusted_bounce_rate',
|
132 |
-
'title' => __('Use adjusted bounce rate?', 'clearfy'),
|
133 |
-
'tags' => array()
|
134 |
-
);
|
135 |
-
$options[] = array(
|
136 |
-
'name' => 'ga_enqueue_order',
|
137 |
-
'title' => __('Change enqueue order?', 'clearfy'),
|
138 |
-
'tags' => array()
|
139 |
-
);
|
140 |
-
$options[] = array(
|
141 |
-
'name' => 'ga_caos_disable_display_features',
|
142 |
-
'title' => __('Disable all display features functionality?', 'clearfy'),
|
143 |
-
'tags' => array()
|
144 |
-
);
|
145 |
-
$options[] = array(
|
146 |
-
'name' => 'ga_anonymize_ip',
|
147 |
-
'title' => __('Use Anonymize IP? (Required by law for some countries)', 'clearfy'),
|
148 |
-
'tags' => array()
|
149 |
-
);
|
150 |
-
$options[] = array(
|
151 |
-
'name' => 'ga_track_admin',
|
152 |
-
'title' => __('Track logged in Administrators?', 'clearfy'),
|
153 |
-
'tags' => array()
|
154 |
-
);
|
155 |
-
$options[] = array(
|
156 |
-
'name' => 'ga_caos_remove_wp_cron',
|
157 |
-
'title' => __('Remove script from wp-cron?', 'clearfy'),
|
158 |
-
'tags' => array()
|
159 |
-
);
|
160 |
-
|
161 |
-
return $options;
|
162 |
}
|
163 |
-
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
/**
|
167 |
-
*
|
|
|
|
|
|
|
|
|
|
|
168 |
*
|
169 |
-
* @param $links
|
170 |
-
* @param $file
|
171 |
* @return array
|
172 |
*/
|
173 |
-
function wbcr_ga_set_plugin_meta($links, $file)
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
$url = 'https://clearfy.pro';
|
178 |
-
|
179 |
-
if( get_locale() == 'ru_RU' ) {
|
180 |
$url = 'https://ru.clearfy.pro';
|
181 |
}
|
182 |
-
|
183 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . WGA_Plugin::app()->getPluginName();
|
184 |
-
|
185 |
-
$links[] = '<a href="' . $url . '" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'simple-google-analytics') . '</a>';
|
186 |
}
|
187 |
-
|
188 |
return $links;
|
189 |
}
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
{
|
204 |
-
|
205 |
-
return 'https://wordpress.org/support/plugin/simple-google-analytics/reviews/#new-post';
|
206 |
-
}
|
207 |
-
|
208 |
-
return $page_url;
|
209 |
}
|
|
|
|
|
|
|
210 |
|
211 |
-
|
212 |
|
213 |
|
214 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* The boot file is needed to connect backend files, as well as register hooks.
|
4 |
+
* Some hooks are so small that it does not make sense to put them into a file
|
5 |
+
* or put them into a specific group of code.
|
6 |
+
*
|
7 |
+
* I usually register administrator notifications, create handlers before saving
|
8 |
+
* plugin settings or after, register options in the Clearfy plugin.
|
9 |
+
*
|
10 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>, Alex Kovalev <alex.kovalevv@gmail.com>
|
11 |
+
* @copyright Webcraftic
|
12 |
+
* @version 1.1
|
13 |
+
*/
|
14 |
+
|
15 |
+
// Exit if accessed directly
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
exit;
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Notice that the plugin has been seriously updated!
|
22 |
+
*
|
23 |
+
* @param array $notices all registered notices
|
24 |
+
* @param string $plugin_name
|
25 |
+
*
|
26 |
+
* @since 3.0.1
|
27 |
+
* @return array all notices
|
28 |
+
*/
|
29 |
+
function wbcr_ga_admin_conflict_notices_error( $notices, $plugin_name ) {
|
30 |
+
if ( defined( 'LOADING_GA_CACHE_AS_ADDON' ) || $plugin_name != WGA_Plugin::app()->getPluginName() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
return $notices;
|
32 |
}
|
33 |
+
|
34 |
+
$text = '<p>' . __( 'The <b>Simple Google Analytics</b> plugin has some major changes!', 'simple-google-analytics' ) . '</p>';
|
35 |
+
$text .= '<p>' . __( 'Unfortunately, the old version of the plugin (2.2.2) is no longer supported, but you still can download it from the WordPress repository in case if the new release doesn’t work for you.', 'simple-google-analytics' ) . '</p>';
|
36 |
+
$text .= '<p>' . __( 'We’ve updated the code and fixed the compatibility issue for the latest WordPress and PHP versions. We’ve also added additional feature of the Local Google Analytics – this way your website will load faster. The plugin’s name has been changed to Local Google Analytics, but all features remained the same.', 'simple-google-analytics' ) . '</p>';
|
37 |
+
$text .= '<p>' . sprintf( __( 'Please, check <a href="%s">plugin settings</a> and its performance on your website. We do care about you and want to avoid any problems with the new version.', 'simple-google-analytics' ) . '</p>', admin_url( 'options-general.php?page=ga_cache-' . WGA_Plugin::app()->getPluginName() ) ) . '</p>';
|
38 |
+
$text .= '<p>' . sprintf( __( 'We are aimed to pay more attention to the speed and security aspects of your website. That’s why you should definitely try our basic WordPress optimization plugin as well. Clearfy includes functionality of this plugin and has many additional features for the website optimization:
|
39 |
+
<a href="%s">Donwload Clearfy for free</a>', 'simple-google-analytics' ), 'https://clearfy.pro?utm_source=wordpress.org&utm_campaign=' . WGA_Plugin::app()->getPluginName() ) . '</p>';
|
40 |
+
|
41 |
+
$notices[] = array(
|
42 |
+
'id' => 'ga_plugin_upgrade_notice1',
|
43 |
+
'type' => 'warning',
|
44 |
+
'dismissible' => true,
|
45 |
+
'dismiss_expires' => 0,
|
46 |
+
'text' => $text
|
47 |
+
);
|
48 |
+
|
49 |
+
return $notices;
|
50 |
+
}
|
51 |
+
|
52 |
+
add_filter( 'wbcr_factory_notices_407_list', 'wbcr_ga_admin_conflict_notices_error', 10, 2 );
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Migrate settings from the old plugin to the new one.
|
56 |
+
*
|
57 |
+
* @since 3.0.1
|
58 |
+
* @return void
|
59 |
+
*/
|
60 |
+
function wbcr_ga_upgrade() {
|
61 |
+
global $wpdb;
|
62 |
+
|
63 |
+
if ( defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
|
67 |
+
$is_migrate_up_to_230 = WGA_Plugin::app()->getPopulateOption( 'is_migrate_up_to_230', false );
|
68 |
+
|
69 |
+
if ( ! $is_migrate_up_to_230 ) {
|
70 |
+
$old_plugin_tracking_id = get_option( 'sga_analytics_id' );
|
71 |
+
$old_plugin_code_location = get_option( 'sga_code_location' );
|
72 |
+
$old_plugin_demographic_and_interest = (int) get_option( 'sga_demographic_and_interest' );
|
73 |
+
$old_plugin_sga_render_when_loggedin = (int) get_option( 'sga_render_when_loggedin' );
|
74 |
+
|
75 |
+
if ( ! empty( $old_plugin_tracking_id ) ) {
|
76 |
+
WGA_Plugin::app()->updatePopulateOption( 'ga_cache', 1 );
|
77 |
+
WGA_Plugin::app()->updatePopulateOption( 'ga_tracking_id', $old_plugin_tracking_id );
|
78 |
+
|
79 |
+
$script_position = 'footer';
|
80 |
+
|
81 |
+
if ( $old_plugin_code_location == 'head' ) {
|
82 |
+
$script_position = 'header';
|
83 |
}
|
84 |
+
|
85 |
+
WGA_Plugin::app()->updatePopulateOption( 'ga_script_position', $script_position );
|
86 |
+
WGA_Plugin::app()->updatePopulateOption( 'ga_anonymize_ip', $old_plugin_demographic_and_interest );
|
87 |
+
WGA_Plugin::app()->updatePopulateOption( 'ga_track_admin', $old_plugin_sga_render_when_loggedin );
|
88 |
+
|
89 |
+
$wpdb->query( "DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'sga_%';" );
|
90 |
}
|
91 |
+
|
92 |
+
WGA_Plugin::app()->updatePopulateOption( 'is_migrate_up_to_230', 1 );
|
93 |
}
|
94 |
+
}
|
95 |
+
|
96 |
+
add_action( 'init', 'wbcr_ga_upgrade' );
|
97 |
+
|
98 |
+
/**
|
99 |
+
* After saving the settings in the plugin, we check whether the
|
100 |
+
* options for analytic caching are enabled or not. If enabled,
|
101 |
+
* add cron task.
|
102 |
+
*
|
103 |
+
* @param Wbcr_Factory409_Plugin $plugin *
|
104 |
+
* @param Wbcr_FactoryPages410_ImpressiveThemplate $page
|
105 |
+
*
|
106 |
+
* @since 3.0.1
|
107 |
+
* @return void
|
108 |
+
*/
|
109 |
+
add_action( 'wbcr_factory_409_imppage_after_form_save', function ( $plugin, $page ) {
|
110 |
+
if ( WGA_Plugin::app()->getPluginName() != $plugin->getPluginName() ) {
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
|
114 |
+
$ga_cache = WGA_Plugin::app()->getPopulateOption( 'ga_cache' );
|
115 |
+
|
116 |
+
if ( $ga_cache ) {
|
117 |
+
if ( ! wp_next_scheduled( 'wbcr/gac/update_analytic_library' ) ) {
|
118 |
+
wp_schedule_event( time(), 'daily', 'wbcr/gac/update_analytic_library' );
|
119 |
}
|
120 |
+
} else {
|
121 |
+
if ( wp_next_scheduled( 'wbcr/gac/update_analytic_library' ) ) {
|
122 |
+
wp_clear_scheduled_hook( 'wbcr/gac/update_analytic_library' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
}
|
125 |
+
}, 10, 2 );
|
126 |
+
|
127 |
+
/**
|
128 |
+
* This action is executed when the component of the Clearfy plugin
|
129 |
+
* is activate and if this component is name ga_cache
|
130 |
+
*
|
131 |
+
* @since 3.0.1
|
132 |
+
* @return void
|
133 |
+
*/
|
134 |
+
add_action( 'wbcr/clearfy/activated_component', function ( $component_name ) {
|
135 |
+
if ( $component_name == 'ga_cache' ) {
|
136 |
+
require_once WGA_PLUGIN_DIR . '/admin/activation.php';
|
137 |
+
$plugin = new WGA_Activation( WGA_Plugin::app() );
|
138 |
+
$plugin->activate();
|
139 |
+
}
|
140 |
+
} );
|
141 |
+
|
142 |
+
/**
|
143 |
+
* This action is executed when the component of the Clearfy plugin
|
144 |
+
* is deactivated and if this component is name ga_cache
|
145 |
+
*
|
146 |
+
* @since 3.0.1
|
147 |
+
* @return void
|
148 |
+
*/
|
149 |
+
add_action( 'wbcr_clearfy_pre_deactivate_component', function ( $component_name ) {
|
150 |
+
if ( $component_name == 'ga_cache' ) {
|
151 |
+
require_once WGA_PLUGIN_DIR . '/admin/activation.php';
|
152 |
+
$plugin = new WGA_Activation( WGA_Plugin::app() );
|
153 |
+
$plugin->deactivate();
|
154 |
+
}
|
155 |
+
} );
|
156 |
+
|
157 |
+
/**
|
158 |
+
* We register options of this plugin in global Clearfy options. Clearfy later can automatically
|
159 |
+
* set default values for this options or completely delete it from site database.
|
160 |
+
*
|
161 |
+
* In more detail you can read about it here: wp-plugin-clearfy\admin\includes\options.php
|
162 |
+
*
|
163 |
+
* @param array $options all available component options plugin clearfy
|
164 |
+
*
|
165 |
+
* @return array
|
166 |
+
*/
|
167 |
+
function wbcr_ga_group_options( $options ) {
|
168 |
+
$options[] = array(
|
169 |
+
'name' => 'ga_cache',
|
170 |
+
'title' => __( 'Google Analytics Cache', 'simple-google-analytics' ),
|
171 |
+
'tags' => array()
|
172 |
+
);
|
173 |
+
|
174 |
+
$options[] = array(
|
175 |
+
'name' => 'ga_tracking_id',
|
176 |
+
'title' => __( 'Google analytic Code', 'clearfy' ),
|
177 |
+
'tags' => array()
|
178 |
+
);
|
179 |
+
$options[] = array(
|
180 |
+
'name' => 'ga_adjusted_bounce_rate',
|
181 |
+
'title' => __( 'Use adjusted bounce rate?', 'clearfy' ),
|
182 |
+
'tags' => array()
|
183 |
+
);
|
184 |
+
$options[] = array(
|
185 |
+
'name' => 'ga_enqueue_order',
|
186 |
+
'title' => __( 'Change enqueue order?', 'clearfy' ),
|
187 |
+
'tags' => array()
|
188 |
+
);
|
189 |
+
$options[] = array(
|
190 |
+
'name' => 'ga_disable_display_features',
|
191 |
+
'title' => __( 'Disable all display features functionality?', 'clearfy' ),
|
192 |
+
'tags' => array()
|
193 |
+
);
|
194 |
+
$options[] = array(
|
195 |
+
'name' => 'ga_anonymize_ip',
|
196 |
+
'title' => __( 'Use Anonymize IP? (Required by law for some countries)', 'clearfy' ),
|
197 |
+
'tags' => array()
|
198 |
+
);
|
199 |
+
$options[] = array(
|
200 |
+
'name' => 'ga_track_admin',
|
201 |
+
'title' => __( 'Track logged in Administrators?', 'clearfy' ),
|
202 |
+
'tags' => array()
|
203 |
+
);
|
204 |
+
|
205 |
+
return $options;
|
206 |
+
}
|
207 |
+
|
208 |
+
add_filter( "wbcr_clearfy_group_options", 'wbcr_ga_group_options' );
|
209 |
+
|
210 |
+
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
211 |
/**
|
212 |
+
* Add a link to plugin meta. You can find this link in admin panel on
|
213 |
+
* the page plugins.php. Look under plugin short description.
|
214 |
+
*
|
215 |
+
* @param array $links An array of the plugin's metadata, including the version,
|
216 |
+
* author, author URI, and plugin URI.
|
217 |
+
* @param string $file path to the plugin file, relative to the plugins directory.
|
218 |
*
|
|
|
|
|
219 |
* @return array
|
220 |
*/
|
221 |
+
function wbcr_ga_set_plugin_meta( $links, $file ) {
|
222 |
+
if ( $file == WGA_PLUGIN_BASE ) {
|
223 |
+
|
|
|
224 |
$url = 'https://clearfy.pro';
|
225 |
+
|
226 |
+
if ( get_locale() == 'ru_RU' ) {
|
227 |
$url = 'https://ru.clearfy.pro';
|
228 |
}
|
229 |
+
|
230 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . WGA_Plugin::app()->getPluginName();
|
231 |
+
|
232 |
+
$links[] = '<a href="' . $url . '" style="color: #FF5722;font-weight: bold;" target="_blank">' . __( 'Get ultimate plugin free', 'simple-google-analytics' ) . '</a>';
|
233 |
}
|
234 |
+
|
235 |
return $links;
|
236 |
}
|
237 |
+
|
238 |
+
add_filter( 'plugin_row_meta', 'wbcr_ga_set_plugin_meta', 10, 2 );
|
239 |
+
}
|
240 |
+
|
241 |
+
/**
|
242 |
+
* Rating widget url
|
243 |
+
*
|
244 |
+
* @param string $page_url
|
245 |
+
* @param string $plugin_name
|
246 |
+
*
|
247 |
+
* @return string
|
248 |
+
*/
|
249 |
+
function wbcr_ga_rating_widget_url( $page_url, $plugin_name ) {
|
250 |
+
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) && ( $plugin_name == WGA_Plugin::app()->getPluginName() ) ) {
|
251 |
+
return 'https://wordpress.org/support/plugin/simple-google-analytics/reviews/#new-post';
|
|
|
|
|
|
|
|
|
252 |
}
|
253 |
+
|
254 |
+
return $page_url;
|
255 |
+
}
|
256 |
|
257 |
+
add_filter( 'wbcr_factory_imppage_rating_widget_url', 'wbcr_ga_rating_widget_url', 10, 2 );
|
258 |
|
259 |
|
260 |
|
components/ga-cache/admin/options.php
CHANGED
@@ -1,148 +1,138 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @return array
|
16 |
-
*/
|
17 |
-
function wbcr_ga_get_plugin_options()
|
18 |
-
{
|
19 |
-
$options = array();
|
20 |
-
|
21 |
-
$options[] = array(
|
22 |
-
'type' => 'html',
|
23 |
-
'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Google Analytics cache</strong>.', 'simple-google-analytics') . '<p>' . __('To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally. The second case that you might need these settings is the usual Google Analytics connection to your website. You do not need to do this with other plugins or insert the tracking code into your theme.', 'simple-google-analytics') . '</p></div>'
|
24 |
-
);
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
),
|
37 |
-
|
38 |
-
'
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
'id' => 'wbcr-clearfy-performance-ga-block',
|
45 |
-
'items' => array(
|
46 |
-
array(
|
47 |
-
'type' => 'textbox',
|
48 |
-
'way' => 'buttons',
|
49 |
-
'name' => 'ga_tracking_id',
|
50 |
-
'title' => __('Google analytic Code', 'simple-google-analytics'),
|
51 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
52 |
-
'hint' => __('Set the Google Analytics tracking code.', 'simple-google-analytics'),
|
53 |
-
'placeholder' => 'UA-XXXXX-Y'
|
54 |
-
),
|
55 |
-
array(
|
56 |
-
'type' => 'dropdown',
|
57 |
-
'way' => 'buttons',
|
58 |
-
'name' => 'ga_script_position',
|
59 |
-
'data' => array(
|
60 |
-
array('header', 'Header'),
|
61 |
-
array('footer', 'Footer'),
|
62 |
-
),
|
63 |
-
'title' => __('Save GA in', 'simple-google-analytics'),
|
64 |
-
'hint' => __('Select location for the Google Analytics code.', 'simple-google-analytics'),
|
65 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
66 |
-
'default' => 'footer'
|
67 |
-
),
|
68 |
-
array(
|
69 |
-
'type' => 'integer',
|
70 |
-
'name' => 'ga_adjusted_bounce_rate',
|
71 |
-
'title' => __('Use adjusted bounce rate?', 'simple-google-analytics'),
|
72 |
-
'default' => 0,
|
73 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
74 |
-
'hint' => __('Essentially, you set up an event which is triggered after a user spends a certain amount of time on the landing page, telling Google Analytics not to count these users as bounces. A user may come to your website, find all of the information they need (a phone number, for example) and then leave the site without visiting another page. Without adjusted bounce rate, such a user would be considered a bounce, even though they had a successful experience. By defining a time limit after which you can consider a user to be "engaged," that user would no longer count as a bounce, and you\'d get a more accurate idea of whether they found what they were looking for.', 'simple-google-analytics')
|
75 |
-
),
|
76 |
-
array(
|
77 |
-
'type' => 'integer',
|
78 |
-
'way' => 'buttons',
|
79 |
-
'name' => 'ga_enqueue_order',
|
80 |
-
'title' => __('Change enqueue order?', 'simple-google-analytics'),
|
81 |
-
'default' => 0,
|
82 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
83 |
-
'hint' => __('By default, Google Analytics code is loaded before other scripts and javasscript code, but if you set the value to 100, the GA code will be loaded after all other scripts. By changing the priority, you can set code position on the page.', 'simple-google-analytics')
|
84 |
-
),
|
85 |
-
array(
|
86 |
-
'type' => 'checkbox',
|
87 |
-
'way' => 'buttons',
|
88 |
-
'name' => 'ga_caos_disable_display_features',
|
89 |
-
'title' => __('Disable all display features functionality?', 'simple-google-analytics'),
|
90 |
-
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
91 |
-
'hint' => sprintf(__('Disable all <a href="%s">display features functionality?</a>', 'simple-google-analytics'), 'https://developers.google.com/analytics/devguides/collection/analyticsjs/display-features'),
|
92 |
-
'default' => false
|
93 |
-
),
|
94 |
-
array(
|
95 |
-
'type' => 'checkbox',
|
96 |
-
'way' => 'buttons',
|
97 |
-
'name' => 'ga_anonymize_ip',
|
98 |
-
'title' => __('Use Anonymize IP? (Required by law for some countries)', 'simple-google-analytics'),
|
99 |
-
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
100 |
-
'hint' => sprintf(__('Use <a href="%s">Anonymize IP?</a> (Required by law for some countries)', 'simple-google-analytics'), 'https://support.google.com/analytics/answer/2763052'),
|
101 |
-
'default' => false
|
102 |
-
),
|
103 |
-
array(
|
104 |
-
'type' => 'checkbox',
|
105 |
-
'way' => 'buttons',
|
106 |
-
'name' => 'ga_track_admin',
|
107 |
-
'title' => __('Track logged in Administrators?', 'simple-google-analytics'),
|
108 |
-
'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
109 |
-
'hint' => __('Track logged in Administrators?', 'simple-google-analytics'),
|
110 |
-
'default' => false
|
111 |
),
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
)
|
122 |
-
)
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
/**
|
128 |
-
* @param $form
|
129 |
-
* @param $page FactoryPages410_ImpressiveThemplate
|
130 |
-
* @return mixed
|
131 |
-
*/
|
132 |
-
function wbcr_ga_additionally_form_options($form, $page)
|
133 |
-
{
|
134 |
-
if( empty($form) ) {
|
135 |
-
return $form;
|
136 |
-
}
|
137 |
-
|
138 |
-
$options = wbcr_ga_get_plugin_options();
|
139 |
-
|
140 |
-
foreach(array_reverse($options) as $option) {
|
141 |
-
array_unshift($form[0]['items'], $option);
|
142 |
-
}
|
143 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
return $form;
|
145 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
|
147 |
-
|
148 |
|
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 |
+
// Exit if accessed directly
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
14 |
+
/**
|
15 |
+
* @return array
|
16 |
+
*/
|
17 |
+
function wbcr_ga_get_plugin_options() {
|
18 |
+
$options = array();
|
19 |
+
|
20 |
+
$options[] = array(
|
21 |
+
'type' => 'html',
|
22 |
+
'html' => '<div class="wbcr-factory-page-group-header">' . __( '<strong>Google Analytics cache</strong>.', 'simple-google-analytics' ) . '<p>' . __( 'To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally. The second case that you might need these settings is the usual Google Analytics connection to your website. You do not need to do this with other plugins or insert the tracking code into your theme.', 'simple-google-analytics' ) . '</p></div>'
|
23 |
+
);
|
24 |
+
|
25 |
+
$options[] = array(
|
26 |
+
'type' => 'checkbox',
|
27 |
+
'way' => 'buttons',
|
28 |
+
'name' => 'ga_cache',
|
29 |
+
'title' => __( 'Google Analytics Cache', 'simple-google-analytics' ),
|
30 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
31 |
+
'hint' => __( 'If you enable this option, the plugin will begin to save a local copy of Google Analytics to speed up the loading of your website and improve Google Page Speed.', 'simple-google-analytics' ) . '<br>--<br><span class="wbcr-factory-light-orange-color">' . __( 'ATTENTION! Before using this option, remove the previously installed Google Analytics code inside your theme or plugins associated with this feature!', 'simple-google-analytics' ) . '</span>',
|
32 |
+
'default' => false,
|
33 |
+
'eventsOn' => array(
|
34 |
+
'show' => '#wbcr-clearfy-performance-ga-block'
|
35 |
+
),
|
36 |
+
'eventsOff' => array(
|
37 |
+
'hide' => '#wbcr-clearfy-performance-ga-block'
|
38 |
+
)
|
39 |
+
|
40 |
+
);
|
41 |
+
$options[] = array(
|
42 |
+
'type' => 'div',
|
43 |
+
'id' => 'wbcr-clearfy-performance-ga-block',
|
44 |
+
'items' => array(
|
45 |
+
array(
|
46 |
+
'type' => 'textbox',
|
47 |
+
'way' => 'buttons',
|
48 |
+
'name' => 'ga_tracking_id',
|
49 |
+
'title' => __( 'Google analytic Code', 'simple-google-analytics' ),
|
50 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
51 |
+
'hint' => __( 'Set the Google Analytics tracking code.', 'simple-google-analytics' ),
|
52 |
+
'placeholder' => 'UA-XXXXX-Y'
|
53 |
),
|
54 |
+
array(
|
55 |
+
'type' => 'dropdown',
|
56 |
+
'way' => 'buttons',
|
57 |
+
'name' => 'ga_script_position',
|
58 |
+
'data' => array(
|
59 |
+
array( 'header', 'Header' ),
|
60 |
+
array( 'footer', 'Footer' ),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
),
|
62 |
+
'title' => __( 'Save GA in', 'simple-google-analytics' ),
|
63 |
+
'hint' => __( 'Select location for the Google Analytics code.', 'simple-google-analytics' ),
|
64 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
65 |
+
'default' => 'footer'
|
66 |
+
),
|
67 |
+
array(
|
68 |
+
'type' => 'integer',
|
69 |
+
'name' => 'ga_adjusted_bounce_rate',
|
70 |
+
'title' => __( 'Use adjusted bounce rate?', 'simple-google-analytics' ),
|
71 |
+
'default' => 0,
|
72 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
73 |
+
'hint' => __( 'Essentially, you set up an event which is triggered after a user spends a certain amount of time on the landing page, telling Google Analytics not to count these users as bounces. A user may come to your website, find all of the information they need (a phone number, for example) and then leave the site without visiting another page. Without adjusted bounce rate, such a user would be considered a bounce, even though they had a successful experience. By defining a time limit after which you can consider a user to be "engaged," that user would no longer count as a bounce, and you\'d get a more accurate idea of whether they found what they were looking for.', 'simple-google-analytics' )
|
74 |
+
),
|
75 |
+
array(
|
76 |
+
'type' => 'integer',
|
77 |
+
'way' => 'buttons',
|
78 |
+
'name' => 'ga_enqueue_order',
|
79 |
+
'title' => __( 'Change enqueue order?', 'simple-google-analytics' ),
|
80 |
+
'default' => 0,
|
81 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
82 |
+
'hint' => __( 'By default, Google Analytics code is loaded before other scripts and javasscript code, but if you set the value to 100, the GA code will be loaded after all other scripts. By changing the priority, you can set code position on the page.', 'simple-google-analytics' )
|
83 |
+
),
|
84 |
+
array(
|
85 |
+
'type' => 'checkbox',
|
86 |
+
'way' => 'buttons',
|
87 |
+
'name' => 'ga_disable_display_features',
|
88 |
+
'title' => __( 'Disable all display features functionality?', 'simple-google-analytics' ),
|
89 |
+
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
90 |
+
'hint' => sprintf( __( 'Disable all <a href="%s">display features functionality?</a>', 'simple-google-analytics' ), 'https://developers.google.com/analytics/devguides/collection/analyticsjs/display-features' ),
|
91 |
+
'default' => false
|
92 |
+
),
|
93 |
+
array(
|
94 |
+
'type' => 'checkbox',
|
95 |
+
'way' => 'buttons',
|
96 |
+
'name' => 'ga_anonymize_ip',
|
97 |
+
'title' => __( 'Use Anonymize IP? (Required by law for some countries)', 'simple-google-analytics' ),
|
98 |
+
//'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
|
99 |
+
'hint' => sprintf( __( 'Use <a href="%s">Anonymize IP?</a> (Required by law for some countries)', 'simple-google-analytics' ), 'https://support.google.com/analytics/answer/2763052' ),
|
100 |
+
'default' => false
|
101 |
+
),
|
102 |
+
array(
|
103 |
+
'type' => 'checkbox',
|
104 |
+
'way' => 'buttons',
|
105 |
+
'name' => 'ga_track_admin',
|
106 |
+
'title' => __( 'Track logged in Administrators?', 'simple-google-analytics' ),
|
107 |
+
'layout' => array( 'hint-type' => 'icon', 'hint-icon-color' => 'grey' ),
|
108 |
+
'hint' => __( 'Track logged in Administrators?', 'simple-google-analytics' ),
|
109 |
+
'default' => false
|
110 |
)
|
111 |
+
)
|
112 |
+
);
|
113 |
+
|
114 |
+
return $options;
|
115 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
+
/**
|
118 |
+
* @param $form
|
119 |
+
* @param $page Wbcr_FactoryPages410_ImpressiveThemplate
|
120 |
+
*
|
121 |
+
* @return mixed
|
122 |
+
*/
|
123 |
+
function wbcr_ga_additionally_form_options( $form, $page ) {
|
124 |
+
if ( empty( $form ) ) {
|
125 |
return $form;
|
126 |
}
|
127 |
+
|
128 |
+
$options = wbcr_ga_get_plugin_options();
|
129 |
+
|
130 |
+
foreach ( array_reverse( $options ) as $option ) {
|
131 |
+
array_unshift( $form[0]['items'], $option );
|
132 |
+
}
|
133 |
+
|
134 |
+
return $form;
|
135 |
+
}
|
136 |
|
137 |
+
add_filter( 'wbcr_clr_google_performance_form_options', 'wbcr_ga_additionally_form_options', 10, 2 );
|
138 |
|
components/ga-cache/cache/local-ga.js
CHANGED
@@ -1,58 +1,74 @@
|
|
1 |
-
(function(){var
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
(a
|
12 |
-
function
|
13 |
-
|
14 |
-
function
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
(e=
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
b
|
32 |
-
function
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
(
|
45 |
-
|
46 |
-
a
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
(
|
52 |
-
a.
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function(){var k=this,l=function(a,b){a=a.split(".");var c=k;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};var m=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},n=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1};var q=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var r=window,t=document,u=function(a,b){t.addEventListener?t.addEventListener(a,b,!1):t.attachEvent&&t.attachEvent("on"+a,b)};var v=/:[0-9]+$/,x=function(a,b){b&&(b=String(b).toLowerCase());if("protocol"===b||"port"===b)a.protocol=w(a.protocol)||w(r.location.protocol);"port"===b?a.port=String(Number(a.hostname?a.port:r.location.port)||("http"==a.protocol?80:"https"==a.protocol?443:"")):"host"===b&&(a.hostname=(a.hostname||r.location.hostname).replace(v,"").toLowerCase());var c=w(a.protocol);b&&(b=String(b).toLowerCase());switch(b){case "url_no_fragment":b="";a&&a.href&&(b=a.href.indexOf("#"),b=0>b?a.href:a.href.substr(0,
|
2 |
+
b));a=b;break;case "protocol":a=c;break;case "host":a=a.hostname.replace(v,"").toLowerCase();break;case "port":a=String(Number(a.port)||("http"==c?80:"https"==c?443:""));break;case "path":a="/"==a.pathname.substr(0,1)?a.pathname:"/"+a.pathname;a=a.split("/");a:if(b=a[a.length-1],c=[],Array.prototype.indexOf)b=c.indexOf(b),b="number"==typeof b?b:-1;else{for(var d=0;d<c.length;d++)if(c[d]===b){b=d;break a}b=-1}0<=b&&(a[a.length-1]="");a=a.join("/");break;case "query":a=a.search.replace("?","");break;
|
3 |
+
case "extension":a=a.pathname.split(".");a=1<a.length?a[a.length-1]:"";a=a.split("/")[0];break;case "fragment":a=a.hash.replace("#","");break;default:a=a&&a.href}return a},w=function(a){return a?a.replace(":","").toLowerCase():""},y=function(a){var b=t.createElement("a");a&&(b.href=a);a=b.pathname;"/"!==a[0]&&(a="/"+a);var c=b.hostname.replace(v,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:c,pathname:a,search:b.search,hash:b.hash,port:b.port}};function z(){for(var a=A,b={},c=0;c<a.length;++c)b[a[c]]=c;return b}function B(){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ";a+=a.toLowerCase()+"0123456789-_";return a+"."}
|
4 |
+
var A,C,D=function(a){A=A||B();C=C||z();for(var b=[],c=0;c<a.length;c+=3){var d=c+1<a.length,e=c+2<a.length,g=a.charCodeAt(c),f=d?a.charCodeAt(c+1):0,h=e?a.charCodeAt(c+2):0,p=g>>2;g=(g&3)<<4|f>>4;f=(f&15)<<2|h>>6;h&=63;e||(h=64,d||(f=64));b.push(A[p],A[g],A[f],A[h])}return b.join("")},E=function(a){function b(b){for(;d<a.length;){var c=a.charAt(d++),e=C[c];if(null!=e)return e;if(!/^[\s\xa0]*$/.test(c))throw Error("Unknown base64 encoding at char: "+c);}return b}A=A||B();C=C||z();for(var c="",d=0;;){var e=
|
5 |
+
b(-1),g=b(0),f=b(64),h=b(64);if(64===h&&-1===e)return c;c+=String.fromCharCode(e<<2|g>>4);64!=f&&(c+=String.fromCharCode(g<<4&240|f>>2),64!=h&&(c+=String.fromCharCode(f<<6&192|h)))}};var F;function G(a,b){if(!a||b===t.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}var H=function(){var a={};var b=r.google_tag_data;r.google_tag_data=void 0===b?a:b;a=r.google_tag_data;b=a.gl;b&&b.decorators||(b={decorators:[]},a.gl=b);return b};var I=/(.*?)\*(.*?)\*(.*)/,J=/([^?#]+)(\?[^#]*)?(#.*)?/,K=/(.*?)(^|&)_gl=([^&]*)&?(.*)/,M=function(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];void 0!==d&&d===d&&null!==d&&"[object Object]"!==d.toString()&&(b.push(c),b.push(D(String(d))))}a=b.join("*");return["1",L(a),a].join("*")},L=function(a,b){a=[window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1E3)-(void 0===b?0:b),a].join("*");
|
6 |
+
if(!(b=F)){b=Array(256);for(var c=0;256>c;c++){for(var d=c,e=0;8>e;e++)d=d&1?d>>>1^3988292384:d>>>1;b[c]=d}}F=b;b=4294967295;for(c=0;c<a.length;c++)b=b>>>8^F[(b^a.charCodeAt(c))&255];return((b^-1)>>>0).toString(36)},P=function(a){return function(b){var c=y(r.location.href),d=c.search.replace("?","");a:{var e=d.split("&");for(var g=0;g<e.length;g++){var f=e[g].split("=");if("_gl"===decodeURIComponent(f[0]).replace(/\+/g," ")){e=f.slice(1).join("=");break a}}e=void 0}b.query=N(e||"")||{};e=x(c,"fragment");
|
7 |
+
g=e.match(K);b.fragment=N(g&&g[3]||"")||{};a&&O(c,d,e)}};function Q(a){var b=K.exec(a);if(b){var c=b[2],d=b[4];a=b[1];d&&(a=a+c+d)}return a}
|
8 |
+
var O=function(a,b,c){function d(a,b){a=Q(a);a.length&&(a=b+a);return a}r.history&&r.history.replaceState&&(K.test(b)||K.test(c))&&(a=x(a,"path"),b=d(b,"?"),c=d(c,"#"),r.history.replaceState({},void 0,""+a+b+c))},N=function(a){var b=void 0===b?3:b;try{if(a){a:{for(var c=0;3>c;++c){var d=I.exec(a);if(d){var e=d;break a}a=decodeURIComponent(a)}e=void 0}if(e&&"1"===e[1]){var g=e[2],f=e[3];a:{for(e=0;e<b;++e)if(g===L(f,e)){var h=!0;break a}h=!1}if(h){b={};var p=f?f.split("*"):[];for(f=0;f<p.length;f+=
|
9 |
+
2)b[p[f]]=E(p[f+1]);return b}}}}catch(X){}};function R(a,b,c){function d(a){a=Q(a);var b=a.charAt(a.length-1);a&&"&"!==b&&(a+="&");return a+f}c=void 0===c?!1:c;var e=J.exec(b);if(!e)return"";b=e[1];var g=e[2]||"";e=e[3]||"";var f="_gl="+a;c?e="#"+d(e.substring(1)):g="?"+d(g.substring(1));return""+b+g+e}
|
10 |
+
function S(a,b,c){for(var d={},e={},g=H().decorators,f=0;f<g.length;++f){var h=g[f];(!c||h.forms)&&G(h.domains,b)&&(h.fragment?m(e,h.callback()):m(d,h.callback()))}n(d)&&(b=M(d),c?T(b,a):U(b,a,!1));!c&&n(e)&&(c=M(e),U(c,a,!0))}function U(a,b,c){b.href&&(a=R(a,b.href,void 0===c?!1:c),q.test(a)&&(b.href=a))}
|
11 |
+
function T(a,b){if(b&&b.action){var c=(b.method||"").toLowerCase();if("get"===c){c=b.childNodes||[];for(var d=!1,e=0;e<c.length;e++){var g=c[e];if("_gl"===g.name){g.setAttribute("value",a);d=!0;break}}d||(c=t.createElement("input"),c.setAttribute("type","hidden"),c.setAttribute("name","_gl"),c.setAttribute("value",a),b.appendChild(c))}else"post"===c&&(a=R(a,b.action),q.test(a)&&(b.action=a))}}
|
12 |
+
var V=function(a){try{a:{var b=a.target||a.srcElement||{};for(a=100;b&&0<a;){if(b.href&&b.nodeName.match(/^a(?:rea)?$/i)){var c=b;break a}b=b.parentNode;a--}c=null}if(c){var d=c.protocol;"http:"!==d&&"https:"!==d||S(c,c.hostname,!1)}}catch(e){}},W=function(a){try{var b=a.target||a.srcElement||{};if(b.action){var c=x(y(b.action),"host");S(b,c,!0)}}catch(d){}};l("google_tag_data.glBridge.auto",function(a,b,c,d){var e=H();e.init||(u("mousedown",V),u("keyup",V),u("submit",W),e.init=!0);a={callback:a,domains:b,fragment:"fragment"===c,forms:!!d};H().decorators.push(a)});l("google_tag_data.glBridge.decorate",function(a,b,c){c=!!c;a=M(a);if(b.tagName){if("a"==b.tagName.toLowerCase())return U(a,b,c);if("form"==b.tagName.toLowerCase())return T(a,b)}if("string"==typeof b)return R(a,b,c)});l("google_tag_data.glBridge.generate",M);
|
13 |
+
l("google_tag_data.glBridge.get",function(a,b){var c=P(!!b);b=H();b.data||(b.data={query:{},fragment:{}},c(b.data));c={};if(b=b.data)m(c,b.query),a&&m(c,b.fragment);return c});})(window);
|
14 |
+
(function(){function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b]||0);return a.join("")+"~"};var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return"function"==typeof a},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:"")+(M.referrer?M.referrer:""),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/
|
15 |
+
1E3)].join(".")},ta=function(a){var b=M.createElement("img");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}catch(e){J(27)}},f=/^[\w\-:/.?=&%!\[\]]+$/,Nd=/^[\w+/_-]+[=]{0,2}$/,wa=function(a,b,c){if(a){var d=M.querySelector&&M.querySelector("script[nonce]")||null;d=d?d.nonce||d.getAttribute&&
|
16 |
+
d.getAttribute("nonce")||"":"";if(c){var e=c="";b&&f.test(b)&&(c=' id="'+b+'"');d&&Nd.test(d)&&(e=' nonce="'+d+'"');f.test(a)&&M.write("<script"+c+e+' src="'+a+'">\x3c/script>')}else c=M.createElement("script"),c.type="text/javascript",c.async=!0,c.src=a,b&&(c.id=b),d&&c.setAttribute("nonce",d),a=M.getElementsByTagName("script")[0],a.parentNode.insertBefore(c,a)}},be=function(a,b){return E(M.location[b?"href":"search"],a)},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,
|
17 |
+
"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0:c}},za=function(a,b){if(1==b.length&&null!=
|
18 |
+
b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if("object"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[":"+a]=b:this.values[":"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(":"+a)?this.m[":"+a]:this.values[":"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F["ga-disable-"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}a=[];b=String(Ea.cookie||document.cookie).split(";");for(c=0;c<b.length;c++){var d=b[c].split("="),e=d[0].replace(/^\s*|\s*$/g,"");e&&"AMP_TOKEN"==e&&((d=d.slice(1).join("=").replace(/^\s*|\s*$/g,""))&&(d=decodeURIComponent(d)),a.push(d))}for(b=0;b<a.length;b++)if("$OPT_OUT"==a[b])return!0;return!1};var Ca=function(a){var b=[],c=M.cookie.split(";");a=new RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g){e=G(e)?!1:eb.test(M.location.hostname)||"/"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+"="+b+"; path="+c+"; ";g&&(c+="expires="+(new Date((new Date).getTime()+g)).toGMTString()+"; ");d&&"none"!==d&&(c+="domain="+d+";");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=Ca(a);
|
19 |
+
for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29"):a},vc=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,eb=/(^|\.)doubleclick\.net$/i;var oc,Id=/^.*Version\/?(\d+)[^\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf("Chrome"))&&!(0<=b.indexOf("CriOS"))&&(0<=b.indexOf("Safari/")||0<=b.indexOf("Safari,")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\/\/[^/]*cdn\.ampproject\.org\//,Ue=/^(?:www\.|m\.|amp\.)+/,Ub=[],da=function(a){a:{if(ja.test(M.referrer)){var b=M.location.hostname.replace(Ue,"");b:{var c=M.referrer;c=c.replace(/^https?:\/\//,"");var d=c.replace(/^[^/]+/,"").split("/"),e=d[2];d=(d="s"==e?d[3]:e)?decodeURIComponent(d):d;if(!d){if(0==c.indexOf("xn--")){c="";break b}(c=c.match(/(.*)\.cdn\.ampproject\.org\/?$/))&&2==c.length&&(d=c[1].replace(/-/g,".").replace(/\.\./g,"-"))}c=d?d.replace(Ue,""):""}if(b==
|
20 |
+
c){b=!0;break a}else J(78)}b=!1}if(b&&!1!==a[Kd]&&(void 0===Ab&&(b=(b=De.get())&&b._ga||void 0)&&(Ab=b,J(81)),void 0!==Ab))return a[Q]||(a[Q]=Ab),!1;if(a[Kd]){J(67);if(a[ac]&&"cookie"!=a[ac])return!1;if(void 0!==Ab)a[Q]||(a[Q]=Ab);else{a:if(b=String(a[W]||xa()),c=String(a[Yb]||"/"),d=Ca(String(a[U]||"_ga")),b=na(d,b,c),!b||jd.test(b))b=!0;else if(b=Ca("AMP_TOKEN"),0==b.length)b=!0;else{if(1==b.length&&(b=decodeURIComponent(b[0]),"$RETRIEVING"==b||"$OPT_OUT"==b||"$ERROR"==b||"$NOT_FOUND"==b)){b=!0;
|
21 |
+
break a}b=!1}if(b&&tc(ic,String(a[Na])))return!0}}return!1},ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca("AMP_TOKEN");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||"");if("$OPT_OUT"==c||"$ERROR"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&"$NOT_FOUND"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if("$RETRIEVING"==c)return J(57),va(function(){tc(a,b)},1E4),!0;Fa=!0;c&&"$"!=c[0]||(xc("$RETRIEVING",3E4),setTimeout(Mc,3E4),
|
22 |
+
c="");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!("withCredentials"in e))return J(60),!1;e.open("POST",(c||"https://ampcid.google.com/v1/publisher:getClientId")+"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM",!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=e.status&&(J(61),Qc("","$ERROR",3E4));var d=JSON.parse(e.responseText);
|
23 |
+
d.optOut?(J(63),Qc("","$OPT_OUT",31536E6)):d.clientId?Qc(d.clientId,d.securityToken,31536E6):!c&&d.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,d.alternateUrl)):(J(64),Qc("","$NOT_FOUND",36E5))}catch(ca){J(65),Qc("","$ERROR",3E4)}e=null}};d={originScope:"AMP_ECID_GOOGLE"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc("","$ERROR",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===fb){fb="";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc("AMP_TOKEN",
|
24 |
+
encodeURIComponent(a),"/",e,"",b)){fb=e;return}}}zc("AMP_TOKEN",encodeURIComponent(a),"/",fb,"",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)};var oe=function(){return(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,d){var e=O.XMLHttpRequest;
|
25 |
+
if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var a=g.responseText;if(1>a.length)ge("xhr","ver","0"),c();else if("1"!=a.charAt(0))ge("xhr","ver",String(a.length)),c();else if(3<d.count++)ge("xhr","tmr",""+d.count),c();else if(1==a.length)c();else{var b=a.charAt(1);if("d"==b)pe("https://stats.g.doubleclick.net/j/collect",
|
26 |
+
d.U,d,c);else if("g"==b){var e="https://www.google.%/ads/ga-audiences".replace("%","com");wc(e,d.google,c);var w=a.substring(2);if(w)if(/^[a-z.]{1,6}$/.test(w)){var ha="https://www.google.%/ads/ga-audiences".replace("%",w);wc(ha,d.google,ua)}else ge("tld","bcc",w)}else ge("xhr","brc",b),c()}}catch(ue){ge("xhr","rsp"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*Math.random()||G("?")||
|
27 |
+
(a=["t=error","_e="+a,"_v=j73","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc("https://www.google-analytics.com/u/d",a.join("&"),ua))};var h=function(a){var b=O.gaData=O.gaData||{};return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";}
|
28 |
+
function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];Qa.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});b.push("z="+Bd());a.set(Ra,b.join("&"),!0)}
|
29 |
+
function Sa(a){var b=P(a,gd)||oe()+"/collect",c=a.get(qe),d=P(a,fa);!d&&a.get(Vd)&&(d="beacon");if(c)pe(b,P(a,Ra),c,a.get(Ia));else if(d){c=d;d=P(a,Ra);var e=a.get(Ia);e=e||ua;"image"==c?wc(b,d,e):"xhr"==c&&wd(b,d,e)||"beacon"==c&&x(b,d,e)||ba(b,d,e)}else ba(b,P(a,Ra),a.get(Ia));b=a.get(Na);b=h(b);c=b.hitcount;b.hitcount=c?c+1:1;b=a.get(Na);delete h(b).pending_experiments;a.set(Ia,ua,!0)}
|
30 |
+
function Hc(a){(O.gaData=O.gaData||{}).expId&&a.set(Nc,(O.gaData=O.gaData||{}).expId);(O.gaData=O.gaData||{}).expVar&&a.set(Oc,(O.gaData=O.gaData||{}).expVar);var b=a.get(Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";}
|
31 |
+
function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee},Qa=new ee,Za=[];Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:1*a};Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};
|
32 |
+
var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)},bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=Qa.get(a);if(!b)for(var c=0;c<Za.length;c++){var d=Za[c],e=d[0].exec(a);if(e){b=d[1](e);Qa.set(b.name,b);break}}return b},yc=function(a){var b;Qa.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);Qa.set(a.name,a);return a.name},cb=function(a,
|
33 |
+
b){Za.push([new RegExp("^"+a+"$"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var gb=qa(window.GoogleAnalyticsObject)&&sa(window.GoogleAnalyticsObject)||"ga",jd=/^(?:utma\.)?\d+\.\d+$/,kd=/^amp-[\w.-]{22,64}$/,Ba=!1,hb=T("apiVersion","v"),ib=T("clientVersion","_v");S("anonymizeIp","aip");var jb=S("adSenseId","a"),Va=S("hitType","t"),Ia=S("hitCallback"),Ra=S("hitPayload");S("nonInteraction","ni");S("currencyCode","cu");S("dataSource","ds");var Vd=S("useBeacon",void 0,!1),fa=S("transport");S("sessionControl","sc","");S("sessionGroup","sg");S("queueTime","qt");var Ac=S("_s","_s");
|
34 |
+
S("screenName","cd");var kb=S("location","dl",""),lb=S("referrer","dr"),mb=S("page","dp","");S("hostname","dh");var nb=S("language","ul"),ob=S("encoding","de");S("title","dt",function(){return M.title||void 0});cb("contentGroup([0-9]+)",function(a){return new bb(a[0],"cg"+a[1])});var pb=S("screenColors","sd"),qb=S("screenResolution","sr"),rb=S("viewportSize","vp"),sb=S("javaEnabled","je"),tb=S("flashVersion","fl");S("campaignId","ci");S("campaignName","cn");S("campaignSource","cs");
|
35 |
+
S("campaignMedium","cm");S("campaignKeyword","ck");S("campaignContent","cc");
|
36 |
+
var ub=S("eventCategory","ec"),xb=S("eventAction","ea"),yb=S("eventLabel","el"),zb=S("eventValue","ev"),Bb=S("socialNetwork","sn"),Cb=S("socialAction","sa"),Db=S("socialTarget","st"),Eb=S("l1","plt"),Fb=S("l2","pdt"),Gb=S("l3","dns"),Hb=S("l4","rrt"),Ib=S("l5","srt"),Jb=S("l6","tcp"),Kb=S("l7","dit"),Lb=S("l8","clt"),Ve=S("l9","_gst"),We=S("l10","_gbt"),Xe=S("l11","_cst"),Ye=S("l12","_cbt"),Mb=S("timingCategory","utc"),Nb=S("timingVar","utv"),Ob=S("timingLabel","utl"),Pb=S("timingValue","utt");
|
37 |
+
S("appName","an");S("appVersion","av","");S("appId","aid","");S("appInstallerId","aiid","");S("exDescription","exd");S("exFatal","exf");var Nc=S("expId","xid"),Oc=S("expVar","xvar"),m=S("exp","exp"),Rc=S("_utma","_utma"),Sc=S("_utmz","_utmz"),Tc=S("_utmht","_utmht"),Ua=S("_hc",void 0,0),Xa=S("_ti",void 0,0),Wa=S("_to",void 0,20);cb("dimension([0-9]+)",function(a){return new bb(a[0],"cd"+a[1])});cb("metric([0-9]+)",function(a){return new bb(a[0],"cm"+a[1])});S("linkerParam",void 0,void 0,Bc,db);
|
38 |
+
var Ze=T("_cd2l",void 0,!1),ld=S("usage","_u"),Gd=S("_um");S("forceSSL",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S("_j1","jid"),ia=S("_j2","gjid");cb("\\&(.*)",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(a){return a.get(c)},b.o=function(a,b,g,ca){a.set(c,g,ca)},b.F=void 0);return b});
|
39 |
+
var Qb=T("_oot"),dd=S("previewTask"),Rb=S("checkProtocolTask"),md=S("validationTask"),Sb=S("checkStorageTask"),Uc=S("historyImportTask"),Tb=S("samplerTask"),Vb=S("_rlt"),Wb=S("buildHitTask"),Xb=S("sendHitTask"),Vc=S("ceTask"),zd=S("devIdTask"),Cd=S("timingTask"),Ld=S("displayFeaturesTask"),oa=S("customTask"),V=T("name"),Q=T("clientId","cid"),n=T("clientIdTime"),xd=T("storedClientId"),Ad=S("userId","uid"),Na=T("trackingId","tid"),U=T("cookieName",void 0,"_ga"),W=T("cookieDomain"),Yb=T("cookiePath",
|
40 |
+
void 0,"/"),Zb=T("cookieExpires",void 0,63072E3),Hd=T("cookieUpdate",void 0,!0),$b=T("legacyCookieDomain"),Wc=T("legacyHistoryImport",void 0,!0),ac=T("storage",void 0,"cookie"),bc=T("allowLinker",void 0,!1),cc=T("allowAnchor",void 0,!0),Ka=T("sampleRate","sf",100),dc=T("siteSpeedSampleRate",void 0,1),ec=T("alwaysSendReferrer",void 0,!1),I=T("_gid","_gid"),la=T("_gcn"),Kd=T("useAmpClientId"),ce=T("_gclid"),fe=T("_gt"),he=T("_ge",void 0,7776E6),ie=T("_gclsrc"),je=T("storeGac",void 0,!0),gd=S("transportUrl"),
|
41 |
+
Md=S("_r","_r"),qe=S("_dp"),Ud=S("allowAdFeatures",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge("exc",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa="detourexp";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf("Shockwave Flash")&&(a=d.description)}if(!a)try{var e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),a="WIN 6,0,21,0",e.AllowScriptAccess="always",a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),a=e.GetVariable("$version")}catch(g){}a&&
|
42 |
+
(e=a.match(/[\d]+/g))&&3<=e.length&&(a=e[0]+"."+e[1]+" r"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),Y(b,Ve),Y(b,We),Y(b,Xe),Y(b,Ye),va(function(){a(b)},10)):L(O,"load",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;
|
43 |
+
a[Jb]=b.connectEnd-b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;a[Ve]=N.L-c;a[We]=N.ya-c;O.google_tag_manager&&O.google_tag_manager._li&&(b=O.google_tag_manager._li,a[Xe]=b.cst,a[Ye]=b.cbt);return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;
|
44 |
+
a[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&!a.I){a.I=!0;var c=aa(b),d=0<E(b.get(kb),"gclid").length;(c||d)&&gc(function(b){c&&a.send("timing",b);d&&a.send("adtiming",b)})}}};var hc=!1,mc=function(a){if("cookie"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}ma(a,I,la,864E5);if(a.get(je)){var c=a.get(ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=a.get(fe),g=a.get(ie),ca=kc(P(a,Yb)),l=lc(P(a,W));a=P(a,Na);g&&"aw.ds"!=g?b&&(b.ua=!0):(c=["1",e,Cc(c)].join("."),0<d&&(b&&(b.ta=!0),zc("_gac_"+Cc(a),c,ca,l,a,d)));le(b)}}else J(75)}},ma=function(a,b,c,d){var e=nd(a,b);if(e){c=
|
45 |
+
P(a,c);var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Na);if("auto"!=ca)zc(c,e,g,ca,l,d)&&(hc=!0);else{J(32);for(var k=id(),w=0;w<k.length;w++)if(ca=k[w],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,l,d)){hc=!0;return}a.data.set(W,"auto")}}},nc=function(a){if("cookie"==P(a,ac)&&!hc&&(mc(a),!hc))throw"abort";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc("__utma",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),!0),a.set(Rc,d.R),(b=Xc("__utmz",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=
|
46 |
+
Cc(P(a,b));var c=lc(P(a,W)).split(".").length;a=jc(P(a,Yb));1<a&&(c+="-"+a);return b?["GA1",c,b].join("."):""},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(".");var l=ca.shift();("GA1"==l||"1"==l)&&1<ca.length?(g=ca.shift().split("-"),1==g.length&&(g[1]="1"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(".")}):ca=kd.test(g)?{H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);
|
47 |
+
else{J(14);d=Gc(d,lc(b).split(".").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(".")?a.substr(1):a},id=function(){var a=[],b=xa().split(".");if(4==b.length){var c=b[b.length-1];if(parseInt(c,10)==c)return["none"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join("."));
|
48 |
+
b=M.location.hostname;eb.test(b)||vc.test(b)||a.push("none");return a},kc=function(a){if(!a)return"/";1<a.length&&a.lastIndexOf("/")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf("/")&&(a="/"+a);return a},jc=function(a){a=kc(a);return"/"==a?1:a.split("/").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){"none"==b&&(b="");var d=[],e=Ca(a);a="__utma"==a?6:2;for(var g=0;g<e.length;g++){var ca=(""+e[g]).split(".");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var od=new RegExp(/^https?:\/\/([^\/:]+)/),De=O.google_tag_data.glBridge,pd=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,me=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){if(a.get(Ze))return J(35),De.generate($e(a));var b=a.get(Q),c=a.get(I)||"";b="_ga=2."+K(pa(c+b,0)+"."+c+"-"+b);(a=af(a))?(J(44),a="&_gac=1."+K([pa(a.qa,0),a.timestamp,a.qa].join("."))):a="";return b+a}
|
49 |
+
function Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join("."))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||"",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join("."))}
|
50 |
+
var Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a){if(this.target.get(Ze))return De.decorate($e(this.target),a,b);if(a.tagName){if("a"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if("form"==a.tagName.toLowerCase())return rd(this,a)}if("string"==typeof a)return qd(this,a,b)}};
|
51 |
+
var qd=function(a,b,c){var d=pd.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));(d=me.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));a=a.target.get("linkerParam");var e=b.indexOf("?");d=b.indexOf("#");c?b+=(-1==d?"#":"&")+a:(c=-1==e?"?":"&",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,"&_ga=");return b=b.replace(/&+_gac=/,"&_gac=")},rd=function(a,b){if(b&&b.action)if("get"==b.method.toLowerCase()){a=a.target.get("linkerParam").split("&");for(var c=0;c<a.length;c++){var d=
|
52 |
+
a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute("value",e);ca=!0;break}ca||(g=M.createElement("input"),g.setAttribute("type","hidden"),g.setAttribute("name",d),g.setAttribute("value",e),b.appendChild(g))}}else"post"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};
|
53 |
+
Dc.prototype.S=function(a,b,c){function d(c){try{c=c||O.event;a:{var d=c.target||c.srcElement;for(c=100;d&&0<c;){if(d.href&&d.nodeName.match(/^a(?:rea)?$/i)){var g=d;break a}d=d.parentNode;c--}g={}}("http:"==g.protocol||"https:"==g.protocol)&&sd(a,g.hostname||"")&&g.href&&(g.href=qd(e,g.href,b))}catch(k){J(26)}}var e=this;this.target.get(Ze)?De.auto(function(){return $e(e.target)},a,b?"fragment":"",c):(this.T||(this.T=!0,L(M,"mousedown",d,!1),L(M,"keyup",d,!1)),c&&L(M,"submit",function(b){b=b||O.event;
|
54 |
+
if((b=b.target||b.srcElement)&&b.action){var c=b.action.match(od);c&&sd(a,c[1])&&rd(e,b)}}))};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)}function $e(a){var b=af(a);return{_ga:a.get(Q),_gid:a.get(I)||void 0,_gac:b?[b.qa,b.timestamp].join("."):void 0}}
|
55 |
+
function af(a){function b(a){return void 0==a||""===a?0:Number(a)}var c=a.get(ce);if(c&&a.get(je)){var d=b(a.get(fe));if(1E3*d+b(a.get(he))<=(new Date).getTime())J(76);else return{timestamp:d,qa:c}}};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g,Aa=/^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/,t=function(a){function b(a,b){b&&(c+="&"+a+"="+K(b))}var c="https://www.google-analytics.com/gtm/js?id="+K(a.id);"dataLayer"!=a.B&&b("l",a.B);b("t",a.target);b("cid",a.clientId);b("cidt",a.ka);b("gac",a.la);b("aip",a.ia);a.sync&&b("m","sync");b("cycle",a.G);a.qa&&b("gclid",a.qa);Aa.test(M.referrer)&&b("cb",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&"t0"!=b?Wd.test(b)?"_gat_"+Cc(P(a,Na)):"_gat_"+Cc(b):"_gat");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(b){Pd(a,b,ed);Pd(a,b,ia);var d=c(b);Qd(a,b);return d});var d=b.get(Xb);b.set(Xb,function(b){var c=d(b);if(se(b)){if(ne()!==H(a,b)){J(80);var e={U:re(a,b,1),google:re(a,b,2),count:0};pe("https://stats.g.doubleclick.net/j/collect",e.U,e)}else ta(re(a,b,0));b.set(ed,"",!0)}return c})},Pd=function(a,b,c){!1===b.get(Ud)||
|
56 |
+
b.get(c)||("1"==Ca(a.Y)[0]?b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,"1",b.get(Yb),b.get(W),b.get(Na),6E4)},se=function(a){return!!a.get(ed)&&a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(a){$a(a).F&&d.set($a(a).F,b.get(a))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g="";d.map(function(a,b){g+=K(a)+"=";g+=K(""+b)+"&"});g+="z="+hd();0==c?g=a.aa+g:1==c?g="t=dc&aip=1&_r=3&"+g:2==c&&(g="t=sr&aip=1&_r=4&slf_rd=1&"+g);return g},
|
57 |
+
H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\d+$/;var fd=function(a,b){a=a.b;if(!a.get("dcLoaded")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&",d);Rd(b,a);a.set("dcLoaded",!0)}};var Sd=function(a){if(!a.get("dcLoaded")&&"cookie"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(gd,oe()+"/j/collect",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(gd,oe()+"/r/collect",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var ad,bd=function(a,b,c){if(!ad){var d=M.location.hash;var e=O.name,g=/^#?gaso=([^&]*)/;if(e=(d=(d=d&&d.match(g)||e&&e.match(g))?d[1]:Ca("GASO")[0]||"")&&d.match(/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i))zc("GASO",""+d,c,b,a,0),window._udo||(window._udo=b),window._utcp||(window._utcp=c),a=e[1],wa("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+hd(),"_gasojs");ad=!0}};var wb=/^(UA|YT|MO|GP)-(\d+)-(\d+)$/,pc=function(a){function b(a,b){d.b.data.set(a,b)}function c(a,c){b(a,c);d.filters.add(a)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(Ze,a[Ze]);b(hb,1);b(ib,"j73");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);c(Sb,nc);c(Uc,Yc);c(Tb,
|
58 |
+
Ja);c(Vb,Ta);c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));Kc(this.b);Jc(this.b,a[Q]);this.b.set(jb,Lc());bd(this.b.get(Na),this.b.get(W),this.b.get(Yb))},Jc=function(a,b){var c=P(a,U);a.data.set(la,"_ga"==c?"_gid":c+"_gid");if("cookie"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc("__utma",d,c);void 0!=c?(J(10),c=c.O[1]+"."+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split("."),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<
|
59 |
+
(new Date).getTime()/1E3}else d=!1;d&&(c=void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),c=Ca(P(a,la)),(c=Xd(a,c))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&"aw.ds"!=d)){c={};if(M){d=[];e=M.cookie.split(";");for(var g=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split("."),"1"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=
|
60 |
+
[],e[d[g].ja].push({timestamp:ca[1],qa:ca[2]}));d=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd)&&(c=be("_ga",a.get(cc)),d=be("_gl",a.get(cc)),e=De.get(a.get(cc)),g=e._ga,d&&0<d.indexOf("_ga")&&!g&&J(30),c||g))if(c&&g&&J(36),a.get(bc)){if(g&&(J(38),a.data.set(Q,g),e._gid&&(J(51),a.data.set(I,e._gid)),e._gac&&(d=e._gac.split("."))&&2==d.length&&(J(37),a.data.set(ce,d[0]),a.data.set(fe,d[1]))),c)b:if(d=c.indexOf("."),-1==d)J(22);
|
61 |
+
else{e=c.substring(0,d);g=c.substring(d+1);d=g.indexOf(".");c=g.substring(0,d);g=g.substring(d+1);if("1"==e){if(d=g,ke(d,c)){J(23);break b}}else if("2"==e){d=g.indexOf("-");e="";0<d?(e=g.substring(0,d),d=g.substring(d+1)):d=g.substring(1);if(ke(e+d,c)){J(53);break b}e&&(J(2),a.data.set(I,e))}else{J(22);break b}J(11);a.data.set(Q,d);if(c=be("_gac",a.get(cc)))c=c.split("."),"1"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,c[2]),J(70))}}else J(21);b&&(J(9),a.data.set(Q,
|
62 |
+
K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},Kc=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(a.get(ec),a.get(Kd)));if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&(J(31),e="/"+e);a.set(kb,d.protocol+"//"+d.hostname+e+d.search)}c&&a.set(qb,c.width+"x"+c.height);c&&a.set(pb,c.colorDepth+"-bit");c=M.documentElement;var g=(e=M.body)&&e.clientWidth&&e.clientHeight,
|
63 |
+
ca=[];c&&c.clientWidth&&c.clientHeight&&("CSS1Compat"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||!1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());a.data.set(ce,be("gclid",!0));a.data.set(ie,be("gclsrc",!0));a.data.set(fe,Math.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&
|
64 |
+
(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],"utm_id")||D(b[c],"utm_campaign")||D(b[c],"utm_source")||D(b[c],"utm_medium")||D(b[c],"utm_term")||D(b[c],"utm_content")||D(b[c],"gclid")||D(b[c],"dclid")||D(b[c],"gclsrc"))&&d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};var qc={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};
|
65 |
+
pc.prototype.send=function(a){if(!(1>arguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(qc[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var td=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=td.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.C=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.C,this.i="require"==this.C,this.g="provide"==this.C,this.ba="remove"==this.C),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.C)throw"abort";if(this.i&&(!qa(b)||""==b))throw"abort";
|
66 |
+
if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};
|
67 |
+
var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);if(p.test(b)){J(52);a=N.j(a);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get(">m")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.clientId=
|
68 |
+
String(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));a=d.B;c=(new Date).getTime();O[a]=O[a]||[];c={"gtm.start":c};e||(c.event="gtm.js");O[a].push(c);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);c&&(c&&0<=c.indexOf("/")||(c=(Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com/plugins/ua/"+c),d=ae(c),a=d.protocol,c=M.location.protocol,
|
69 |
+
("https:"==a||a==c||("http:"!=a?0:"http:"==c))&&B(d)&&(wa(d.url,void 0,e),$d.set(b,!0)))}},v=function(a,b){var c=A.get(a)||[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,"https://www.google-analytics.com/gtm/js?id="))return!0;if(a.query||0<=a.url.indexOf("?")||0<=a.path.indexOf("://"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b="http:"==a.protocol?80:443;return"www.google-analytics.com"==
|
70 |
+
a.host&&(a.port||b)==b&&D(a.path,"/plugins/")?!0:!1},ae=function(a){function b(a){var b=a.hostname||"",c=0<=b.indexOf("]");b=b.split(c?"]":":")[0].toLowerCase();c&&(b+="]");c=(a.protocol||"").toLowerCase();c=1*a.port||("http:"==c?80:"https:"==c?443:"");a=a.pathname||"";D(a,"/")||(a="/"+a);return[b,""+c,a]}var c=M.createElement("a");c.href=M.location.href;var d=(c.protocol||"").toLowerCase(),e=b(c),g=c.search||"",ca=d+"//"+e[0]+(e[1]?":"+e[1]:"");D(a,"//")?a=d+a:D(a,"/")?a=ca+a:!a||D(a,"?")?a=ca+e[2]+
|
71 |
+
(a||g):0>a.split("/")[0].indexOf(":")&&(a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a;d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};
|
72 |
+
Z.v=function(a){try{if(a.u)a.u.call(O,N.j("t0"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if("t0"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.C,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.C].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.ya=0;N.answer=42;var uc=[Na,W,V];N.create=function(a){var b=za(uc,[].slice.call(arguments));b[V]||(b[V]="t0");var c=""+b[V];if(N.h[c])return N.h[c];if(da(b))return null;b=new pc(b);N.h[c]=b;N.P.push(b);return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};
|
73 |
+
N.N=function(){"ga"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.ya=1*new Date;N.loaded=!0;var b=O[gb]=N;X("create",b,b.create);X("remove",b,b.remove);X("getByName",b,b.j,5);X("getAll",b,b.getAll,6);b=pc.prototype;X("get",b,b.get,7);X("set",b,b.set,4);X("send",b,b.send);X("requireSync",b,b.ma);b=Ya.prototype;X("get",b,b.get);X("set",b,b.set);if("https:"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName("script");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf("https://www.google-analytics.com/analytics")){b=
|
74 |
+
!0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var te=N.N,ve=O[gb];ve&&ve.r?te():z(te);z(function(){Z.D(["provide","render",ua])});})(window);
|
components/ga-cache/includes/classes/class.configurate-ga.php
CHANGED
@@ -1,129 +1,160 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
-
*
|
4 |
-
*
|
5 |
-
*
|
6 |
-
*
|
|
|
|
|
|
|
|
|
7 |
*/
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
);
|
44 |
-
|
45 |
-
$schedules['monthly'] = array(
|
46 |
-
'interval' => DAY_IN_SECONDS * 30,
|
47 |
-
'display' => __('Once Monthly'),
|
48 |
-
);
|
49 |
-
|
50 |
-
return $schedules;
|
51 |
-
}
|
52 |
-
|
53 |
-
public function updateLocalGoogleAnaliticScript()
|
54 |
-
{
|
55 |
-
include(WGA_PLUGIN_DIR . '/includes/update-local-ga.php');
|
56 |
-
}
|
57 |
-
|
58 |
-
private function addGoogleAnaliticsScript()
|
59 |
-
{
|
60 |
-
$ga_tracking_id = $this->getPopulateOption('ga_tracking_id');
|
61 |
-
|
62 |
-
if( !empty($ga_tracking_id) ) {
|
63 |
-
$local_ga_file = WGA_PLUGIN_DIR . '/cache/local-ga.js';
|
64 |
-
// If file is not created yet, create now!
|
65 |
-
if( !file_exists($local_ga_file) ) {
|
66 |
-
ob_start();
|
67 |
-
do_action('wbcr_ga_update_local_script');
|
68 |
-
ob_end_clean();
|
69 |
-
}
|
70 |
-
|
71 |
-
$ga_script_position = $this->getPopulateOption('ga_script_position', 'footer');
|
72 |
-
$ga_enqueue_order = $this->getPopulateOption('ga_enqueue_order', 0);
|
73 |
-
|
74 |
-
switch( $ga_script_position ) {
|
75 |
-
case 'header':
|
76 |
-
add_action('wp_head', array($this, 'printGoogleAnalitics'), $ga_enqueue_order);
|
77 |
-
break;
|
78 |
-
default:
|
79 |
-
add_action('wp_footer', array($this, 'printGoogleAnalitics'), $ga_enqueue_order);
|
80 |
-
}
|
81 |
-
}
|
82 |
}
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
// If user is admin we don't want to render the tracking code, when option is disabled.
|
93 |
-
if( empty($ga_tracking_id) || (current_user_can('manage_options') && (!$ga_track_admin)) ) {
|
94 |
-
return;
|
95 |
-
}
|
96 |
-
|
97 |
-
$ga_adjusted_bounce_rate = $this->getPopulateOption('ga_adjusted_bounce_rate', 0);
|
98 |
-
$ga_anonymize_ip = $this->getPopulateOption('ga_anonymize_ip', false);
|
99 |
-
$ga_caos_disable_display_features = $this->getPopulateOption('ga_caos_disable_display_features', false);
|
100 |
-
|
101 |
-
echo "<!-- Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
|
102 |
-
|
103 |
-
echo "<script>" . PHP_EOL;
|
104 |
-
echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
105 |
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
106 |
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
107 |
})(window,document,'script','" . WGA_PLUGIN_URL . "/cache/local-ga.js','ga');" . PHP_EOL;
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
}
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* This class configures the google analytics cache
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 2017 Webraftic Ltd
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
class WGA_ConfigGACache extends Wbcr_FactoryClearfy206_Configurate {
|
15 |
+
|
16 |
+
|
17 |
+
public function registerActionsAndFilters() {
|
18 |
+
|
19 |
+
if ( $this->getPopulateOption( 'ga_cache' ) ) {
|
20 |
+
add_filter( 'cron_schedules', array( $this, 'cron_additions' ) );
|
21 |
+
|
22 |
+
// Load update script to schedule in wp_cron.
|
23 |
+
add_action( 'wbcr/gac/update_analytic_library', array( $this, 'update_local_analytic' ) );
|
24 |
+
|
25 |
+
if ( ! is_admin() ) {
|
26 |
+
$this->add_google_analitics_script();
|
27 |
+
}
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
/**
|
32 |
+
* Extends the recurrence interval of cron tasks. In the core,
|
33 |
+
* the number of recurrence intervals for cron tasks is limited.
|
34 |
+
* Therefore, we create 3 additional recurrences weekly,
|
35 |
+
* twicemonthly, monthly.
|
36 |
+
*
|
37 |
+
* @param array $schedules an array of already recorded recurrences
|
38 |
+
*
|
39 |
+
* @return mixed
|
40 |
*/
|
41 |
+
public function cron_additions( $schedules ) {
|
42 |
+
$schedules['weekly'] = array(
|
43 |
+
'interval' => DAY_IN_SECONDS * 7,
|
44 |
+
'display' => __( 'Once Weekly' ),
|
45 |
+
);
|
46 |
+
|
47 |
+
$schedules['twicemonthly'] = array(
|
48 |
+
'interval' => DAY_IN_SECONDS * 14,
|
49 |
+
'display' => __( 'Twice Monthly' ),
|
50 |
+
);
|
51 |
+
|
52 |
+
$schedules['monthly'] = array(
|
53 |
+
'interval' => DAY_IN_SECONDS * 30,
|
54 |
+
'display' => __( 'Once Monthly' ),
|
55 |
+
);
|
56 |
+
|
57 |
+
return $schedules;
|
58 |
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Enables update-local-ga.php, which creates and updates
|
62 |
+
* the Google analytics library locally on the user's site.
|
63 |
+
* This method performs via cron and manually if the library
|
64 |
+
* file has not yet been created.
|
65 |
+
*
|
66 |
+
* @since 3.0.1
|
67 |
+
* @return void
|
68 |
+
*/
|
69 |
+
public function update_local_analytic() {
|
70 |
+
include( WGA_PLUGIN_DIR . '/includes/update-local-ga.php' );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Generates tracking code based on the user options set. Then it just
|
75 |
+
* prints this code on the page. The code can be printed to the header
|
76 |
+
* or footer, depending on which action called this method.
|
77 |
+
*
|
78 |
+
* @since 3.0.1
|
79 |
+
* @return void
|
80 |
+
*/
|
81 |
+
public function print_google_analytics() {
|
82 |
+
|
83 |
+
$tracking_id = $this->getPopulateOption( 'ga_tracking_id' );
|
84 |
+
$track_admin = $this->getPopulateOption( 'ga_track_admin' );
|
85 |
+
|
86 |
+
// If user is admin we don't want to render the tracking code, when option is disabled.
|
87 |
+
if ( empty( $tracking_id ) || ( current_user_can( 'manage_options' ) && ( ! $track_admin ) ) ) {
|
88 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
+
|
91 |
+
$adjusted_bounce_rate = $this->getPopulateOption( 'ga_adjusted_bounce_rate', 0 );
|
92 |
+
$anonymize_ip = $this->getPopulateOption( 'ga_anonymize_ip', false );
|
93 |
+
$disable_display_features = $this->getPopulateOption( 'ga_disable_display_features', false );
|
94 |
+
|
95 |
+
echo "<!-- Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
|
96 |
+
|
97 |
+
echo "<script>" . PHP_EOL;
|
98 |
+
echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
100 |
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
101 |
})(window,document,'script','" . WGA_PLUGIN_URL . "/cache/local-ga.js','ga');" . PHP_EOL;
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Allows you to complement the current configuration analytics.
|
105 |
+
* For example, one of the users wanted to add google adwords ID
|
106 |
+
* to this code.
|
107 |
+
*
|
108 |
+
* When using this action, you must enter only javascript code,
|
109 |
+
* without opening and closing tags.
|
110 |
+
*
|
111 |
+
* @since 3.0.1
|
112 |
+
*/
|
113 |
+
do_action( 'wbcr/gac/print_analytic_options', array(
|
114 |
+
'tracking_id' => $tracking_id,
|
115 |
+
'track_admin' => $track_admin,
|
116 |
+
'adjusted_bounce_rate' => $adjusted_bounce_rate,
|
117 |
+
'anonymize_ip' => $anonymize_ip,
|
118 |
+
'disable_display_features' => $disable_display_features
|
119 |
+
) );
|
120 |
+
|
121 |
+
echo "ga('create', '" . $tracking_id . "', 'auto');" . PHP_EOL;
|
122 |
+
echo $disable_display_features ? "ga('set', 'displayFeaturesTask', null);" . PHP_EOL : '';
|
123 |
+
echo $anonymize_ip ? "ga('set', 'anonymizeIp', true);" . PHP_EOL : '';
|
124 |
+
echo "ga('send', 'pageview');";
|
125 |
+
echo $adjusted_bounce_rate ? PHP_EOL . 'setTimeout("ga(' . "'send','event','adjusted bounce rate','" . $adjusted_bounce_rate . " seconds')" . '"' . ',' . $adjusted_bounce_rate * 1000 . ');' : '';
|
126 |
+
echo PHP_EOL . '</script>' . PHP_EOL;
|
127 |
+
|
128 |
+
echo "<!-- end Google Analytics Local by " . $this->plugin->getPluginTitle() . " -->" . PHP_EOL;
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Inserts tracking code in header and footer. Before insertion,
|
133 |
+
* it executes the wbcr_ga_update_local_script action to update
|
134 |
+
* Google local analytics library.
|
135 |
+
*
|
136 |
+
* @since 3.0.1
|
137 |
+
* @return void
|
138 |
+
*/
|
139 |
+
private function add_google_analitics_script() {
|
140 |
+
$tracking_id = $this->getPopulateOption( 'ga_tracking_id' );
|
141 |
+
|
142 |
+
if ( ! empty( $tracking_id ) ) {
|
143 |
+
$local_ga_file = WGA_PLUGIN_DIR . '/cache/local-ga.js';
|
144 |
+
// If file is not created yet, create now!
|
145 |
+
if ( ! file_exists( $local_ga_file ) ) {
|
146 |
+
ob_start();
|
147 |
+
do_action( 'wbcr_ga_update_local_script' );
|
148 |
+
ob_end_clean();
|
149 |
+
}
|
150 |
+
|
151 |
+
$enqueue_order = $this->getPopulateOption( 'ga_enqueue_order', 0 );
|
152 |
+
|
153 |
+
if ( $this->getPopulateOption( 'ga_script_position', 'footer' ) == 'header' ) {
|
154 |
+
add_action( 'wp_head', array( $this, 'print_google_analytics' ), $enqueue_order );
|
155 |
+
} else {
|
156 |
+
add_action( 'wp_footer', array( $this, 'print_google_analytics' ), $enqueue_order );
|
157 |
+
}
|
158 |
}
|
159 |
}
|
160 |
+
}
|
components/ga-cache/languages/simple-google-analytics-es_ES.mo
ADDED
Binary file
|
components/ga-cache/languages/simple-google-analytics-es_ES.po
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:27+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:27+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:34
|
29 |
+
msgid "The <b>Simple Google Analytics</b> plugin has some major changes!"
|
30 |
+
msgstr "El plugin <b>Simple Google Analytics</b> tiene cambios importantes."
|
31 |
+
|
32 |
+
#: admin/boot.php:35
|
33 |
+
msgid ""
|
34 |
+
"Unfortunately, the old version of the plugin (2.2.2) is no longer supported, "
|
35 |
+
"but you still can download it from the WordPress repository in case if the "
|
36 |
+
"new release doesn’t work for you."
|
37 |
+
msgstr ""
|
38 |
+
"Desafortunadamente, la versión anterior del complemento (2.2.2) ya no aplica "
|
39 |
+
"soporte, pero aún puede descargarlo del repositorio de WordPress en caso de "
|
40 |
+
"que la nueva versión no funcione para usted."
|
41 |
+
|
42 |
+
#: admin/boot.php:36
|
43 |
+
msgid ""
|
44 |
+
"We’ve updated the code and fixed the compatibility issue for the latest "
|
45 |
+
"WordPress and PHP versions. We’ve also added additional feature of the Local "
|
46 |
+
"Google Analytics – this way your website will load faster. The plugin’s name "
|
47 |
+
"has been changed to Local Google Analytics, but all features remained the "
|
48 |
+
"same."
|
49 |
+
msgstr ""
|
50 |
+
"Hemos actualizado el código y hemos solucionado el problema de "
|
51 |
+
"compatibilidad para las últimas versiones de WordPress y PHP. También hemos "
|
52 |
+
"agregado una función adicional de Local Google Analytics, de esta manera su "
|
53 |
+
"sitio web cargará más rápido. El nombre del plugin se ha cambiado a Local "
|
54 |
+
"Google Analytics, pero todas las características siguen siendo las mismas."
|
55 |
+
|
56 |
+
#: admin/boot.php:37
|
57 |
+
#, php-format
|
58 |
+
msgid ""
|
59 |
+
"Please, check <a href=\"%s\">plugin settings</a> and its performance on your "
|
60 |
+
"website. We do care about you and want to avoid any problems with the new "
|
61 |
+
"version."
|
62 |
+
msgstr ""
|
63 |
+
"Verifique <a href=\"%s\">configuraciónes de plugins</a> y el rendimiento de "
|
64 |
+
"su Website. Nos preocupamos por usted, queremos evitar problemas con la "
|
65 |
+
"nueva versión."
|
66 |
+
|
67 |
+
#: admin/boot.php:38
|
68 |
+
#, php-format
|
69 |
+
msgid ""
|
70 |
+
"We are aimed to pay more attention to the speed and security aspects of your "
|
71 |
+
"website. That’s why you should definitely try our basic WordPress "
|
72 |
+
"optimization plugin as well. Clearfy includes functionality of this plugin "
|
73 |
+
"and has many additional features for the website optimization:\n"
|
74 |
+
"<a href=\"%s\">Donwload Clearfy for free</a>"
|
75 |
+
msgstr ""
|
76 |
+
"Nuestro meta es prestar más atención a los aspectos de velocidad y seguridad "
|
77 |
+
"de su sitio web. Por eso prueba nuestro plugin básico de optimización "
|
78 |
+
"WordPress. Clearfy incluye funcionalidades de este plugin y posee "
|
79 |
+
"características adicionales para optimización de sitios web:\n"
|
80 |
+
"<a href=\"%s\">Descargue Clearfy de forma gratuita</a>"
|
81 |
+
|
82 |
+
#: admin/boot.php:170 admin/options.php:29 admin/pages/ga_cache.php:54
|
83 |
+
msgid "Google Analytics Cache"
|
84 |
+
msgstr "Cache de Google Analytics"
|
85 |
+
|
86 |
+
#: admin/boot.php:176 admin/options.php:49
|
87 |
+
msgid "Google analytic Code"
|
88 |
+
msgstr "Código de Google Analytics"
|
89 |
+
|
90 |
+
#: admin/boot.php:181 admin/options.php:70
|
91 |
+
msgid "Use adjusted bounce rate?"
|
92 |
+
msgstr "¿Usar tasa de rebote ajustada?"
|
93 |
+
|
94 |
+
#: admin/boot.php:186 admin/options.php:79
|
95 |
+
msgid "Change enqueue order?"
|
96 |
+
msgstr "¿Cambiar orden del turno?"
|
97 |
+
|
98 |
+
#: admin/boot.php:191 admin/options.php:88
|
99 |
+
msgid "Disable all display features functionality?"
|
100 |
+
msgstr "¿Desactivar todas las funciones de la pantalla?"
|
101 |
+
|
102 |
+
#: admin/boot.php:196 admin/options.php:97
|
103 |
+
msgid "Use Anonymize IP? (Required by law for some countries)"
|
104 |
+
msgstr "¿Usar IP Anónima? (Requerimiento legal en algunos países)"
|
105 |
+
|
106 |
+
#: admin/boot.php:201 admin/options.php:106 admin/options.php:108
|
107 |
+
msgid "Track logged in Administrators?"
|
108 |
+
msgstr "¿Registrados en Administradores?"
|
109 |
+
|
110 |
+
#: admin/boot.php:232
|
111 |
+
msgid "Get ultimate plugin free"
|
112 |
+
msgstr "Obtener el ultimate plugin gratis"
|
113 |
+
|
114 |
+
#: admin/options.php:22
|
115 |
+
msgid "<strong>Google Analytics cache</strong>."
|
116 |
+
msgstr "<strong>Google Analytics cache</strong>."
|
117 |
+
|
118 |
+
#: admin/options.php:22
|
119 |
+
msgid ""
|
120 |
+
"To improve Google Page Speed indicators Analytics caching is needed. "
|
121 |
+
"However, it can also slightly increase your website loading speed, because "
|
122 |
+
"Analytics js files will load locally. The second case that you might need "
|
123 |
+
"these settings is the usual Google Analytics connection to your website. You "
|
124 |
+
"do not need to do this with other plugins or insert the tracking code into "
|
125 |
+
"your theme."
|
126 |
+
msgstr ""
|
127 |
+
"Para mejorar el ranking en Google Page Speed, es necesario el almacenamiento "
|
128 |
+
"en caché de Analytics. con esto, aumentará ligeramente la velocidad de carga "
|
129 |
+
"de su sitio web, ya que los archivos de Analytics js se cargarán localmente. "
|
130 |
+
"El segundo caso en el que puede necesitar estos ajustes, es con la conexión "
|
131 |
+
"habitual de Google Analytics a su sitio web. No necesita hacer esto con "
|
132 |
+
"otros plugins ni insertar el código de seguimiento en su tema."
|
133 |
+
|
134 |
+
#: admin/options.php:31
|
135 |
+
msgid ""
|
136 |
+
"If you enable this option, the plugin will begin to save a local copy of "
|
137 |
+
"Google Analytics to speed up the loading of your website and improve Google "
|
138 |
+
"Page Speed."
|
139 |
+
msgstr ""
|
140 |
+
"Si habilita esta opción, el complemento comenzará a guardar una copia local "
|
141 |
+
"de Google Analytics acelerando la carga de su sitio web y mejorando el "
|
142 |
+
"ranking en Google Page Speed ."
|
143 |
+
|
144 |
+
#: admin/options.php:31
|
145 |
+
msgid ""
|
146 |
+
"ATTENTION! Before using this option, remove the previously installed Google "
|
147 |
+
"Analytics code inside your theme or plugins associated with this feature!"
|
148 |
+
msgstr ""
|
149 |
+
"¡ATENCIÓN! ¡Antes de usar esta opción, elimine el código de Google Analytics "
|
150 |
+
"instalado previamente dentro de su tema o los complementos asociados con "
|
151 |
+
"esta función!"
|
152 |
+
|
153 |
+
#: admin/options.php:51
|
154 |
+
msgid "Set the Google Analytics tracking code."
|
155 |
+
msgstr "Configure el código de seguimiento de Google Analytics."
|
156 |
+
|
157 |
+
#: admin/options.php:62
|
158 |
+
msgid "Save GA in"
|
159 |
+
msgstr "Guardar GA en"
|
160 |
+
|
161 |
+
#: admin/options.php:63
|
162 |
+
msgid "Select location for the Google Analytics code."
|
163 |
+
msgstr "Seleccione la ubicación para el código de Google Analytics."
|
164 |
+
|
165 |
+
#: admin/options.php:73
|
166 |
+
msgid ""
|
167 |
+
"Essentially, you set up an event which is triggered after a user spends a "
|
168 |
+
"certain amount of time on the landing page, telling Google Analytics not to "
|
169 |
+
"count these users as bounces. A user may come to your website, find all of "
|
170 |
+
"the information they need (a phone number, for example) and then leave the "
|
171 |
+
"site without visiting another page. Without adjusted bounce rate, such a "
|
172 |
+
"user would be considered a bounce, even though they had a successful "
|
173 |
+
"experience. By defining a time limit after which you can consider a user to "
|
174 |
+
"be \"engaged,\" that user would no longer count as a bounce, and you'd get a "
|
175 |
+
"more accurate idea of whether they found what they were looking for."
|
176 |
+
msgstr ""
|
177 |
+
"Básicamente, configura un evento que se activa después de que un usuario "
|
178 |
+
"pasa una cierta cantidad de tiempo en la página de destino, diciéndole a "
|
179 |
+
"Google Analytics que no cuente a estos usuarios como rebotes. Un usuario "
|
180 |
+
"puede ir a su sitio web, buscar toda la información que necesita (un número "
|
181 |
+
"de teléfono, por ejemplo) y luego abandonar el sitio sin visitar otra "
|
182 |
+
"página. Sin una tasa de rebote ajustada, dicho usuario se consideraría un "
|
183 |
+
"rebote aunque tuviera una experiencia exitosa. Al definir un límite de "
|
184 |
+
"tiempo, un usuario se consideraría \"comprometido\", ese usuario ya no se "
|
185 |
+
"contaría como un rebote ya que sería obvio que encontró lo que buscó."
|
186 |
+
|
187 |
+
#: admin/options.php:82
|
188 |
+
msgid ""
|
189 |
+
"By default, Google Analytics code is loaded before other scripts and "
|
190 |
+
"javasscript code, but if you set the value to 100, the GA code will be "
|
191 |
+
"loaded after all other scripts. By changing the priority, you can set code "
|
192 |
+
"position on the page."
|
193 |
+
msgstr ""
|
194 |
+
"Por defecto, el código de Google Analytics se carga antes que otros scripts "
|
195 |
+
"y el código javasscript, pero si establece el valor a 100, el código GA se "
|
196 |
+
"cargará después de todos los demás scripts. Al cambiar la prioridad, puede "
|
197 |
+
"establecer la posición del código en la página."
|
198 |
+
|
199 |
+
#: admin/options.php:90
|
200 |
+
#, php-format
|
201 |
+
msgid "Disable all <a href=\"%s\">display features functionality?</a>"
|
202 |
+
msgstr ""
|
203 |
+
"Deshabilitar todas las <a href=\"%s\">¿Características de funciones?</a>"
|
204 |
+
|
205 |
+
#: admin/options.php:99
|
206 |
+
#, php-format
|
207 |
+
msgid ""
|
208 |
+
"Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
|
209 |
+
msgstr ""
|
210 |
+
"Use <a href=\"%s\">¿Anonimizar IP?</a> (Requisito legal para algunos países)"
|
211 |
+
|
212 |
+
#: admin/pages/ga_cache.php:38
|
213 |
+
msgid "Local Google Analytics"
|
214 |
+
msgstr "Google Analytics local"
|
215 |
+
|
216 |
+
#: admin/pages/ga_cache.php:55
|
217 |
+
msgid "General"
|
218 |
+
msgstr "General"
|
219 |
+
|
220 |
+
#: includes/classes/class.configurate-ga.php:44
|
221 |
+
msgid "Once Weekly"
|
222 |
+
msgstr "Una vez a la semana"
|
223 |
+
|
224 |
+
#: includes/classes/class.configurate-ga.php:49
|
225 |
+
msgid "Twice Monthly"
|
226 |
+
msgstr "Dos veces al mes"
|
227 |
+
|
228 |
+
#: includes/classes/class.configurate-ga.php:54
|
229 |
+
msgid "Once Monthly"
|
230 |
+
msgstr "Una vez al mes"
|
231 |
+
|
232 |
+
#: simple_google_analytics.php:83
|
233 |
+
msgid "Webcraftic Local Google Analytics"
|
234 |
+
msgstr "Webcraftic Local Google Analytics"
|
components/ga-cache/languages/simple-google-analytics-ru_RU.po
CHANGED
@@ -16,7 +16,7 @@ msgstr ""
|
|
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: google-analytics-cache.php\n"
|
19 |
-
"X-Poedit-SearchPath-1: includes/class
|
20 |
"X-Poedit-SearchPath-2: admin/options.php\n"
|
21 |
"X-Poedit-SearchPath-3: includes/classes/class.configurate-ga.php\n"
|
22 |
"X-Poedit-SearchPath-4: admin/pages/ga_cache.php\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: google-analytics-cache.php\n"
|
19 |
+
"X-Poedit-SearchPath-1: includes/class-rio-plugin.php\n"
|
20 |
"X-Poedit-SearchPath-2: admin/options.php\n"
|
21 |
"X-Poedit-SearchPath-3: includes/classes/class.configurate-ga.php\n"
|
22 |
"X-Poedit-SearchPath-4: admin/pages/ga_cache.php\n"
|
components/ga-cache/simple_google_analytics.php
CHANGED
@@ -1,73 +1,94 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
define('WGA_PLUGIN_VERSION', '3.0.1');
|
19 |
-
|
20 |
-
define('WGA_PLUGIN_DIR', dirname(__FILE__));
|
21 |
-
define('WGA_PLUGIN_BASE', plugin_basename(__FILE__));
|
22 |
-
define('WGA_PLUGIN_URL', plugins_url(null, __FILE__));
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
$plugin_info = array(
|
32 |
-
'prefix' => 'wbcr_gac_',
|
33 |
-
'plugin_name' => 'wbcr_gac',
|
34 |
-
'plugin_title' => __('Webcraftic Local Google Analytics', 'simple-google-analytics'),
|
35 |
-
'plugin_version' => WGA_PLUGIN_VERSION,
|
36 |
-
'plugin_build' => 'free',
|
37 |
-
//'updates' => WGA_PLUGIN_DIR . '/updates/'
|
38 |
-
);
|
39 |
-
|
40 |
-
/**
|
41 |
-
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
42 |
-
*/
|
43 |
-
$compatibility = new Wbcr_FactoryClearfy_Compatibility(array_merge($plugin_info, array(
|
44 |
-
'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
|
45 |
-
'plugin_as_component' => defined('LOADING_GA_CACHE_AS_ADDON'),
|
46 |
-
'plugin_dir' => WGA_PLUGIN_DIR,
|
47 |
-
'plugin_base' => WGA_PLUGIN_BASE,
|
48 |
-
'plugin_url' => WGA_PLUGIN_URL,
|
49 |
-
'required_php_version' => '5.3',
|
50 |
-
'required_wp_version' => '4.2.0',
|
51 |
-
'required_clearfy_check_component' => true
|
52 |
-
)));
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
56 |
-
* а пользователь получит предупреждение.
|
57 |
-
*/
|
58 |
-
if( !$compatibility->check() ) {
|
59 |
-
return;
|
60 |
-
}
|
61 |
-
|
62 |
-
define('WGA_PLUGIN_ACTIVE', true);
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
67 |
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Webcraftic Local Google Analytics
|
4 |
+
* Plugin URI: https://wordpress.org/plugins/simple-google-analytics/
|
5 |
+
* Description: Old plugin name: Simple Google Analytics. To improve Google Page Speed indicators Analytics caching is needed. However, it can also slightly increase your website loading speed, because Analytics js files will load locally. The second case that you might need these settings is the usual Google Analytics connection to your website. You do not need to do this with other plugins or insert the tracking code into your theme.
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>, JeromeMeyer62<jerome.meyer@hollywoud.net>
|
7 |
+
* Version: 3.0.2
|
8 |
+
* Text Domain: simple-google-analytics
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: http://clearfy.pro
|
11 |
+
*/
|
12 |
|
13 |
+
// Exit if accessed directly
|
14 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
+
exit;
|
16 |
+
}
|
17 |
+
if ( ! defined( 'WGA_PLUGIN_VERSION' ) ) {
|
18 |
+
define( 'WGA_PLUGIN_VERSION', '3.0.1' );
|
19 |
+
}
|
|
|
|
|
|
|
20 |
|
21 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
22 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
23 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
24 |
+
// --------------------------------------
|
25 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
26 |
+
return;
|
27 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
30 |
+
return;
|
31 |
+
}
|
32 |
+
// ----------------------------------------
|
33 |
|
34 |
+
if ( ! defined( 'WGA_PLUGIN_DIR' ) ) {
|
35 |
+
define( 'WGA_PLUGIN_DIR', dirname( __FILE__ ) );
|
36 |
+
}
|
37 |
+
if ( ! defined( 'WGA_PLUGIN_BASE' ) ) {
|
38 |
+
define( 'WGA_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
39 |
+
}
|
40 |
+
if ( ! defined( 'WGA_PLUGIN_URL' ) ) {
|
41 |
+
define( 'WGA_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
42 |
+
}
|
43 |
|
44 |
+
|
45 |
+
|
46 |
+
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
47 |
+
require_once( WGA_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
48 |
+
require_once( WGA_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
49 |
+
}
|
50 |
+
|
51 |
+
$plugin_info = array(
|
52 |
+
'prefix' => 'wbcr_gac_',
|
53 |
+
'plugin_name' => 'wbcr_gac',
|
54 |
+
'plugin_title' => __( 'Webcraftic Local Google Analytics', 'simple-google-analytics' ),
|
55 |
+
'plugin_version' => WGA_PLUGIN_VERSION,
|
56 |
+
'plugin_build' => 'free',
|
57 |
+
'updates' => WGA_PLUGIN_DIR . '/updates/'
|
58 |
+
);
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
62 |
+
*/
|
63 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
64 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
65 |
+
'plugin_already_activate' => defined( 'WGA_PLUGIN_ACTIVE' ),
|
66 |
+
'plugin_as_component' => defined( 'LOADING_GA_CACHE_AS_ADDON' ),
|
67 |
+
'plugin_dir' => WGA_PLUGIN_DIR,
|
68 |
+
'plugin_base' => WGA_PLUGIN_BASE,
|
69 |
+
'plugin_url' => WGA_PLUGIN_URL,
|
70 |
+
'required_php_version' => '5.3',
|
71 |
+
'required_wp_version' => '4.2.0',
|
72 |
+
'required_clearfy_check_component' => true
|
73 |
+
) ) );
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
77 |
+
* а пользователь получит предупреждение.
|
78 |
+
*/
|
79 |
+
if ( ! $compatibility->check() ) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
+
define( 'WGA_PLUGIN_ACTIVE', true );
|
84 |
+
|
85 |
+
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
86 |
+
require_once( WGA_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
87 |
+
}
|
88 |
+
|
89 |
+
require_once( WGA_PLUGIN_DIR . '/includes/class.plugin.php' );
|
90 |
+
|
91 |
+
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
92 |
+
new WGA_Plugin( __FILE__, $plugin_info );
|
93 |
+
}
|
94 |
|
components/ga-cache/updates/030002.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 WGACUpdate030002 extends Wbcr_Factory409_Update {
|
8 |
+
|
9 |
+
public function install() {
|
10 |
+
/**
|
11 |
+
* Remove the old cron hook
|
12 |
+
*/
|
13 |
+
if ( wp_next_scheduled( 'wbcr_clearfy_update_local_ga' ) ) {
|
14 |
+
wp_clear_scheduled_hook( 'wbcr_clearfy_update_local_ga' );
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Add a new cron hook
|
19 |
+
*/
|
20 |
+
if ( ! wp_next_scheduled( 'wbcr/gac/update_analytic_library' ) ) {
|
21 |
+
wp_schedule_event( time(), 'twicedaily', 'wbcr/gac/update_analytic_library' );
|
22 |
+
}
|
23 |
+
|
24 |
+
$disable_display_features = $this->plugin->getPopulateOption( 'ga_caos_disable_display_features', false );
|
25 |
+
$this->plugin->updatePopulateOption( 'ga_disable_display_features', $disable_display_features );
|
26 |
+
|
27 |
+
$this->plugin->deletePopulateOption( 'ga_caos_disable_display_features' );
|
28 |
+
$this->plugin->deletePopulateOption( 'ga_caos_remove_wp_cron' );
|
29 |
+
}
|
30 |
+
}
|
components/ga-cache/updates/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
components/html-minify/html-minify.php
CHANGED
@@ -1,98 +1,119 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
define('WHTM_PLUGIN_VERSION', '1.0.1');
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
|
98 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: HTML Мinify
|
4 |
+
* Plugin URI: https://clearfy.pro/html-minify/
|
5 |
+
* Description: Ever look at the HTML markup of your website and notice how sloppy and amateurish it looks? The HTML Мinify options cleans up sloppy looking markup and minifies, which also speeds up download.
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.1
|
8 |
+
* Text Domain: html-minify
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
+
|
14 |
+
/*
|
15 |
+
* #### CREDITS ####
|
16 |
+
* This plugin is based on the plugin Autoptimize by the author Frank Goossens, we have finalized this code for our project and our goals.
|
17 |
+
* Many thanks to Frank Goossens for the quality solution for optimizing scripts in Wordpress.
|
18 |
+
*
|
19 |
+
* Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free.
|
20 |
+
*/
|
21 |
+
|
22 |
+
// Exit if accessed directly
|
23 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
+
exit;
|
25 |
+
}
|
26 |
+
if ( ! defined( 'WHTM_PLUGIN_VERSION' ) ) {
|
27 |
+
define( 'WHTM_PLUGIN_VERSION', '1.0.1' );
|
28 |
+
}
|
29 |
+
|
30 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
31 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
32 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
33 |
+
// --------------------------------------
|
34 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
// ----------------------------------------
|
42 |
+
|
43 |
+
// Директория плагина
|
44 |
+
if ( ! defined( 'WHTM_PLUGIN_DIR' ) ) {
|
45 |
+
define( 'WHTM_PLUGIN_DIR', dirname( __FILE__ ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
// Относительный путь к плагину
|
49 |
+
if ( ! defined( 'WHTM_PLUGIN_BASE' ) ) {
|
50 |
+
define( 'WHTM_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
51 |
+
}
|
52 |
+
|
53 |
+
// Ссылка к директории плагина
|
54 |
+
if ( ! defined( 'WHTM_PLUGIN_URL' ) ) {
|
55 |
+
define( 'WHTM_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
56 |
+
}
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
+
if ( ! defined( 'LOADING_HTML_MINIFY_AS_ADDON' ) ) {
|
61 |
+
require_once( WHTM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
62 |
+
require_once( WHTM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
63 |
+
}
|
64 |
+
|
65 |
+
$plugin_info = array(
|
66 |
+
'prefix' => 'wbcr_htm_', // префикс для базы данных и полей формы
|
67 |
+
'plugin_name' => 'wbcr_html_minify', // имя плагина, как уникальный идентификатор
|
68 |
+
'plugin_title' => __( 'Webcraftic HTML Minify', 'html-minify' ), // заголовок плагина
|
69 |
+
'plugin_version' => WHTM_PLUGIN_VERSION, // текущая версия плагина
|
70 |
+
'plugin_build' => 'free', // сборка плагина
|
71 |
+
//'updates' => WHTM_PLUGIN_DIR . '/updates/' в этой папке хранятся миграции для разных версий плагина
|
72 |
+
);
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
76 |
+
*/
|
77 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
78 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
79 |
+
'plugin_already_activate' => defined( 'WHTM_PLUGIN_ACTIVE' ),
|
80 |
+
'plugin_as_component' => defined( 'LOADING_HTML_MINIFY_AS_ADDON' ),
|
81 |
+
'plugin_dir' => WHTM_PLUGIN_DIR,
|
82 |
+
'plugin_base' => WHTM_PLUGIN_BASE,
|
83 |
+
'plugin_url' => WHTM_PLUGIN_URL,
|
84 |
+
'required_php_version' => '5.4',
|
85 |
+
'required_wp_version' => '4.2.0',
|
86 |
+
'required_clearfy_check_component' => true
|
87 |
+
) ) );
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
91 |
+
* а пользователь получит предупреждение.
|
92 |
+
*/
|
93 |
+
if ( ! $compatibility->check() ) {
|
94 |
+
return;
|
95 |
+
}
|
96 |
+
|
97 |
+
// Устанавливаем контстанту, что плагин уже используется
|
98 |
+
define( 'WHTM_PLUGIN_ACTIVE', true );
|
99 |
+
|
100 |
+
// Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
|
101 |
+
// а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
|
102 |
+
// Константа LOADING_HTML_MINIFY_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory409_Plugin
|
103 |
+
|
104 |
+
if ( ! defined( 'LOADING_HTML_MINIFY_AS_ADDON' ) ) {
|
105 |
+
// Фреймворк - отвечает за интерфейс, содержит общие функции для серии плагинов и готовые шаблоны для быстрого развертывания плагина.
|
106 |
+
require_once( WHTM_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
107 |
+
}
|
108 |
+
|
109 |
+
// Основной класс плагина
|
110 |
+
require_once( WHTM_PLUGIN_DIR . '/includes/class.plugin.php' );
|
111 |
+
|
112 |
+
// Класс WHTM_Plugin создается только, если этот плагин работает, как самостоятельный плагин.
|
113 |
+
// Если плагин работает, как аддон, то класс создается родительским плагином.
|
114 |
+
|
115 |
+
if ( ! defined( 'LOADING_HTML_MINIFY_AS_ADDON' ) ) {
|
116 |
+
new WHTM_Plugin( __FILE__, $plugin_info );
|
117 |
+
}
|
118 |
|
119 |
|
components/html-minify/languages/html-minify-es_ES.mo
ADDED
Binary file
|
components/html-minify/languages/html-minify-es_ES.po
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:28+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:28+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:23
|
29 |
+
msgid ""
|
30 |
+
"Clearfy: Html minify component is not compatible with the Autoptimize "
|
31 |
+
"plugin, please do not use them together to avoid conflicts. Please disable "
|
32 |
+
"the Html minify component"
|
33 |
+
msgstr ""
|
34 |
+
"Clearfy: el componente html minify no es compatible con el plugin "
|
35 |
+
"( Autoptimize ), no los use juntos para evitar conflictos. Por favor "
|
36 |
+
"deshabilite el componente html minify"
|
37 |
+
|
38 |
+
#: admin/boot.php:46 admin/boot.php:96
|
39 |
+
msgid "Optimize HTML Code?"
|
40 |
+
msgstr "¿Optimizar código HTML?"
|
41 |
+
|
42 |
+
#: admin/boot.php:52 admin/boot.php:106
|
43 |
+
msgid "Keep HTML comments?"
|
44 |
+
msgstr "¿Mantener los comentarios HTML?"
|
45 |
+
|
46 |
+
#: admin/boot.php:69
|
47 |
+
msgid "One click optimize html code"
|
48 |
+
msgstr "Optimizar html con un Click"
|
49 |
+
|
50 |
+
#: admin/boot.php:71
|
51 |
+
msgid "One click optimize html code and scripts"
|
52 |
+
msgstr "Optimizar html y scripts con un Click"
|
53 |
+
|
54 |
+
#: admin/boot.php:88
|
55 |
+
msgid "HTML Options"
|
56 |
+
msgstr "Opciones HTML"
|
57 |
+
|
58 |
+
#: admin/boot.php:88
|
59 |
+
msgid ""
|
60 |
+
"Ever look at the HTML markup of your website and notice how sloppy and "
|
61 |
+
"amateurish it looks? The Minify HTML options cleans up sloppy looking markup "
|
62 |
+
"and minifies, which also speeds up download."
|
63 |
+
msgstr ""
|
64 |
+
"¿Alguna vez has mirado el código HTML de tu sitio web y has notado lo "
|
65 |
+
"descuidado y extraño que se ve? Las opciones Minify HTML solventan ese "
|
66 |
+
"inconveniente y minimizan, acelerando la carga de su Web."
|
67 |
+
|
68 |
+
#: admin/boot.php:108
|
69 |
+
msgid "Enable this if you want HTML comments to remain in the page."
|
70 |
+
msgstr ""
|
71 |
+
"Habilita esto si quieres que los comentarios HTML permanezcan en la página."
|
72 |
+
|
73 |
+
#: admin/pages/settings.php:40 admin/pages/settings.php:63
|
74 |
+
msgid "HTML Minify"
|
75 |
+
msgstr "Minificar HTML"
|
76 |
+
|
77 |
+
#: admin/pages/settings.php:64
|
78 |
+
msgid "General"
|
79 |
+
msgstr "General"
|
80 |
+
|
81 |
+
#: html-minify.php:102
|
82 |
+
msgid "Webcraftic HTML Minify"
|
83 |
+
msgstr "Webcraftic HTML Minify"
|
components/minify-and-combine/admin/pages/settings.php
CHANGED
@@ -305,7 +305,7 @@ This can be fully automated for different types of pages with the Мinify And Co
|
|
305 |
|
306 |
$options[] = array(
|
307 |
'type' => 'html',
|
308 |
-
'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __( 'Cache Info', 'minify-and-combine' ) . '</strong><p
|
309 |
);
|
310 |
|
311 |
// Произвольный html код
|
305 |
|
306 |
$options[] = array(
|
307 |
'type' => 'html',
|
308 |
+
'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __( 'Cache Info', 'minify-and-combine' ) . '</strong><p></p></div>'
|
309 |
);
|
310 |
|
311 |
// Произвольный html код
|
components/minify-and-combine/includes/classes/class.mac-base.php
CHANGED
@@ -368,9 +368,9 @@ abstract class WMAC_PluginBase
|
|
368 |
$filehash = null;
|
369 |
|
370 |
// Grab the parts we need.
|
371 |
-
|
372 |
if ( ! empty( $parts ) ) {
|
373 |
-
|
374 |
$filehash = isset( $parts[1] ) ? $parts[1] : null;
|
375 |
}
|
376 |
|
368 |
$filehash = null;
|
369 |
|
370 |
// Grab the parts we need.
|
371 |
+
$parts = explode( '|', $matches[1] );
|
372 |
if ( ! empty( $parts ) ) {
|
373 |
+
$filepath = isset( $parts[0] ) ? base64_decode($parts[0]) : null;
|
374 |
$filehash = isset( $parts[1] ) ? $parts[1] : null;
|
375 |
}
|
376 |
|
components/minify-and-combine/includes/classes/class.mac-helper.php
CHANGED
@@ -38,28 +38,6 @@ class WMAC_PluginHelper
|
|
38 |
return $available;
|
39 |
}
|
40 |
|
41 |
-
/**
|
42 |
-
* Returns true when iconv is available.
|
43 |
-
*
|
44 |
-
* @param bool|null $override Allows overriding the decision.
|
45 |
-
*
|
46 |
-
* @return bool
|
47 |
-
*/
|
48 |
-
public static function iconvAvailable( $override = null )
|
49 |
-
{
|
50 |
-
static $available = null;
|
51 |
-
|
52 |
-
if ( null === $available ) {
|
53 |
-
$available = \extension_loaded( 'iconv' );
|
54 |
-
}
|
55 |
-
|
56 |
-
if ( null !== $override ) {
|
57 |
-
$available = $override;
|
58 |
-
}
|
59 |
-
|
60 |
-
return $available;
|
61 |
-
}
|
62 |
-
|
63 |
/**
|
64 |
* Multibyte-capable strpos() if support is available on the server.
|
65 |
* If not, it falls back to using \strpos().
|
@@ -75,8 +53,6 @@ class WMAC_PluginHelper
|
|
75 |
{
|
76 |
if ( self::mbstringAvailable() ) {
|
77 |
return ( null === $encoding ) ? \mb_strpos( $haystack, $needle, $offset ) : \mb_strlen( $haystack, $needle, $offset, $encoding );
|
78 |
-
} elseif ( self::iconvAvailable() ) {
|
79 |
-
return ( null === $encoding ) ? \iconv_strpos( $haystack, $needle, $offset ) : \iconv_strpos( $haystack, $needle, $offset, $encoding );
|
80 |
} else {
|
81 |
return \strpos( $haystack, $needle, $offset );
|
82 |
}
|
@@ -84,7 +60,7 @@ class WMAC_PluginHelper
|
|
84 |
|
85 |
/**
|
86 |
* Attempts to return the number of characters in the given $string if
|
87 |
-
* mbstring
|
88 |
* (instead of characters) as fallback.
|
89 |
*
|
90 |
* @param string $string String.
|
@@ -97,8 +73,6 @@ class WMAC_PluginHelper
|
|
97 |
{
|
98 |
if ( self::mbstringAvailable() ) {
|
99 |
return ( null === $encoding ) ? \mb_strlen( $string ) : \mb_strlen( $string, $encoding );
|
100 |
-
} elseif ( self::iconvAvailable() ) {
|
101 |
-
return ( null === $encoding ) ? @iconv_strlen( $string ) : @iconv_strlen( $string, $encoding );
|
102 |
} else {
|
103 |
return \strlen( $string );
|
104 |
}
|
@@ -107,7 +81,7 @@ class WMAC_PluginHelper
|
|
107 |
/**
|
108 |
* Our wrapper around implementations of \substr_replace()
|
109 |
* that attempts to not break things horribly if at all possible.
|
110 |
-
* Uses mbstring
|
111 |
* substr_replace() (which works just fine in the majority of cases).
|
112 |
*
|
113 |
* @param string $string String.
|
@@ -153,70 +127,11 @@ class WMAC_PluginHelper
|
|
153 |
}
|
154 |
|
155 |
return "{$leader}{$replacement}{$trailer}";
|
156 |
-
} elseif ( self::iconvAvailable() ) {
|
157 |
-
$strlen = self::strlen( $string, $encoding );
|
158 |
-
|
159 |
-
if ( $start < 0 ) {
|
160 |
-
$start = \max( 0, $strlen + $start );
|
161 |
-
$start = $strlen + $start;
|
162 |
-
if ( $start < 0 ) {
|
163 |
-
$start = 0;
|
164 |
-
}
|
165 |
-
} elseif ( $start > $strlen ) {
|
166 |
-
$start = $strlen;
|
167 |
-
}
|
168 |
-
|
169 |
-
if ( $length < 0 ) {
|
170 |
-
$length = \max( 0, $strlen - $start + $length );
|
171 |
-
} elseif ( null === $length || ( $length > $strlen ) ) {
|
172 |
-
$length = $strlen;
|
173 |
-
}
|
174 |
-
|
175 |
-
if ( ( $start + $length ) > $strlen ) {
|
176 |
-
$length = $strlen - $start;
|
177 |
-
}
|
178 |
-
|
179 |
-
if ( null === $encoding ) {
|
180 |
-
return self::iconvSubstr( $string, 0, $start ) . $replacement . self::iconvSubstr( $string, $start + $length, $strlen - $start - $length );
|
181 |
-
}
|
182 |
-
|
183 |
-
return self::iconvSubstr( $string, 0, $start, $encoding ) . $replacement . self::iconvSubstr( $string, $start + $length, $strlen - $start - $length, $encoding );
|
184 |
}
|
185 |
|
186 |
return ( null === $length ) ? \substr_replace( $string, $replacement, $start ) : \substr_replace( $string, $replacement, $start, $length );
|
187 |
}
|
188 |
|
189 |
-
/**
|
190 |
-
* Wrapper around iconv_substr().
|
191 |
-
*
|
192 |
-
* @param string $s String.
|
193 |
-
* @param int $start Start offset.
|
194 |
-
* @param int|null $length Length.
|
195 |
-
* @param string|null $encoding Encoding.
|
196 |
-
*
|
197 |
-
* @return string
|
198 |
-
*/
|
199 |
-
protected static function iconvSubstr( $s, $start, $length = null, $encoding = null )
|
200 |
-
{
|
201 |
-
if ( $start < 0 ) {
|
202 |
-
$start = self::strlen( $s, $encoding ) + $start;
|
203 |
-
if ( $start < 0 ) {
|
204 |
-
$start = 0;
|
205 |
-
}
|
206 |
-
}
|
207 |
-
|
208 |
-
if ( null === $length ) {
|
209 |
-
$length = 2147483647;
|
210 |
-
} elseif ( $length < 0 ) {
|
211 |
-
$length = self::strlen( $s, $encoding ) + ( $length - $start );
|
212 |
-
if ( $length < 0 ) {
|
213 |
-
return '';
|
214 |
-
}
|
215 |
-
}
|
216 |
-
|
217 |
-
return (string) ( null === $encoding ) ? \iconv_substr( $s, $start, $length ) : \iconv_substr( $s, $start, $length, $encoding );
|
218 |
-
}
|
219 |
-
|
220 |
/**
|
221 |
* Decides whether this is a "subdirectory site" or not.
|
222 |
*
|
38 |
return $available;
|
39 |
}
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
/**
|
42 |
* Multibyte-capable strpos() if support is available on the server.
|
43 |
* If not, it falls back to using \strpos().
|
53 |
{
|
54 |
if ( self::mbstringAvailable() ) {
|
55 |
return ( null === $encoding ) ? \mb_strpos( $haystack, $needle, $offset ) : \mb_strlen( $haystack, $needle, $offset, $encoding );
|
|
|
|
|
56 |
} else {
|
57 |
return \strpos( $haystack, $needle, $offset );
|
58 |
}
|
60 |
|
61 |
/**
|
62 |
* Attempts to return the number of characters in the given $string if
|
63 |
+
* mbstring is available. Returns the number of bytes
|
64 |
* (instead of characters) as fallback.
|
65 |
*
|
66 |
* @param string $string String.
|
73 |
{
|
74 |
if ( self::mbstringAvailable() ) {
|
75 |
return ( null === $encoding ) ? \mb_strlen( $string ) : \mb_strlen( $string, $encoding );
|
|
|
|
|
76 |
} else {
|
77 |
return \strlen( $string );
|
78 |
}
|
81 |
/**
|
82 |
* Our wrapper around implementations of \substr_replace()
|
83 |
* that attempts to not break things horribly if at all possible.
|
84 |
+
* Uses mbstring if available, before falling back to regular
|
85 |
* substr_replace() (which works just fine in the majority of cases).
|
86 |
*
|
87 |
* @param string $string String.
|
127 |
}
|
128 |
|
129 |
return "{$leader}{$replacement}{$trailer}";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
|
132 |
return ( null === $length ) ? \substr_replace( $string, $replacement, $start ) : \substr_replace( $string, $replacement, $start, $length );
|
133 |
}
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
/**
|
136 |
* Decides whether this is a "subdirectory site" or not.
|
137 |
*
|
components/minify-and-combine/includes/classes/class.mac-main.php
CHANGED
@@ -79,6 +79,15 @@
|
|
79 |
if( !defined('WMAC_HASH') ) {
|
80 |
define('WMAC_HASH', wp_hash(WMAC_PluginCache::getCacheUrl()));
|
81 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
/**
|
79 |
if( !defined('WMAC_HASH') ) {
|
80 |
define('WMAC_HASH', wp_hash(WMAC_PluginCache::getCacheUrl()));
|
81 |
}
|
82 |
+
|
83 |
+
// Multibyte-capable string replacements are available with a filter.
|
84 |
+
// Also requires 'mbstring' extension.
|
85 |
+
$with_mbstring = apply_filters( 'wbcr/mac/main_use_mbstring', false );
|
86 |
+
if ( $with_mbstring ) {
|
87 |
+
WMAC_PluginHelper::mbstringAvailable( \extensions_loaded( 'mbstring' ) );
|
88 |
+
} else {
|
89 |
+
WMAC_PluginHelper::mbstringAvailable( false );
|
90 |
+
}
|
91 |
}
|
92 |
|
93 |
/**
|
components/minify-and-combine/includes/classes/class.mac-styles.php
CHANGED
@@ -234,8 +234,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase
|
|
234 |
"this.onload=null;this.rel='stylesheet'",
|
235 |
$url
|
236 |
);
|
237 |
-
|
238 |
-
|
239 |
array(
|
240 |
"rel='stylesheet'",
|
241 |
'rel="stylesheet"',
|
@@ -816,29 +816,6 @@ class WMAC_PluginStyles extends WMAC_PluginBase
|
|
816 |
if ( $this->defer ) {
|
817 |
$preloadCssBlock = '';
|
818 |
$noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
|
819 |
-
|
820 |
-
/*$defer_inline_code = $this->defer_inline;
|
821 |
-
if ( ! empty( $defer_inline_code ) ) {
|
822 |
-
if ( apply_filters( 'wmac_filter_css_critcss_minify', true ) ) {
|
823 |
-
$iCssHash = md5( $defer_inline_code );
|
824 |
-
$iCssCache = new WMAC_PluginCache( $iCssHash, 'css' );
|
825 |
-
if ( $iCssCache->check() ) {
|
826 |
-
// we have the optimized inline CSS in cache.
|
827 |
-
$defer_inline_code = $iCssCache->retrieve();
|
828 |
-
} else {
|
829 |
-
$cssmin = new WMAC_PluginCSSmin();
|
830 |
-
$tmp_code = trim( $cssmin->run( $defer_inline_code ) );
|
831 |
-
|
832 |
-
if ( ! empty( $tmp_code ) ) {
|
833 |
-
$defer_inline_code = $tmp_code;
|
834 |
-
$iCssCache->cache( $defer_inline_code, 'text/css' );
|
835 |
-
unset( $tmp_code );
|
836 |
-
}
|
837 |
-
}
|
838 |
-
}
|
839 |
-
$code_out = '<style type="text/css" id="aoatfcss" media="all">' . $defer_inline_code . '</style>';
|
840 |
-
$this->injectInHtml( $code_out, $replaceTag );
|
841 |
-
}*/
|
842 |
}
|
843 |
|
844 |
foreach ( $this->url as $media => $url ) {
|
@@ -849,7 +826,6 @@ class WMAC_PluginStyles extends WMAC_PluginBase
|
|
849 |
$preloadCssBlock .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preloadOnLoad . '" />';
|
850 |
$noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
|
851 |
} else {
|
852 |
-
// $this->inject_in_html('<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag);
|
853 |
if ( strlen( $this->csscode[$media] ) > $this->cssinlinesize ) {
|
854 |
$this->injectInHtml( '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag );
|
855 |
} elseif ( strlen( $this->csscode[$media] ) > 0 ) {
|
@@ -928,6 +904,7 @@ class WMAC_PluginStyles extends WMAC_PluginBase
|
|
928 |
* $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
929 |
*/
|
930 |
$newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_WP_ROOT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
|
|
931 |
|
932 |
/**
|
933 |
* Hash the url + whatever was behind potentially for replacement
|
234 |
"this.onload=null;this.rel='stylesheet'",
|
235 |
$url
|
236 |
);
|
237 |
+
// Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
|
238 |
+
$new_tag = '<noscript>' . $new_tag . '</noscript>' . str_replace(
|
239 |
array(
|
240 |
"rel='stylesheet'",
|
241 |
'rel="stylesheet"',
|
816 |
if ( $this->defer ) {
|
817 |
$preloadCssBlock = '';
|
818 |
$noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
}
|
820 |
|
821 |
foreach ( $this->url as $media => $url ) {
|
826 |
$preloadCssBlock .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preloadOnLoad . '" />';
|
827 |
$noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
|
828 |
} else {
|
|
|
829 |
if ( strlen( $this->csscode[$media] ) > $this->cssinlinesize ) {
|
830 |
$this->injectInHtml( '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag );
|
831 |
} elseif ( strlen( $this->csscode[$media] ) > 0 ) {
|
904 |
* $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
905 |
*/
|
906 |
$newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_WP_ROOT_URL . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
907 |
+
$newurl = apply_filters( 'wbcr/mac/css_fixurl_newurl', $newurl );
|
908 |
|
909 |
/**
|
910 |
* Hash the url + whatever was behind potentially for replacement
|
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php
CHANGED
@@ -1,864 +1,935 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
|
3 |
+
/*!
|
4 |
+
* CssMin
|
5 |
+
* Author: Tubal Martin - http://tubalmartin.me/
|
6 |
+
* Repo: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port
|
7 |
+
*
|
8 |
+
* This is a PHP port of the CSS minification tool distributed with YUICompressor,
|
9 |
+
* itself a port of the cssmin utility by Isaac Schlueter - http://foohack.com/
|
10 |
+
* Permission is hereby granted to use the PHP version under the same
|
11 |
+
* conditions as the YUICompressor.
|
12 |
+
*/
|
13 |
+
|
14 |
+
/*!
|
15 |
+
* YUI Compressor
|
16 |
+
* http://developer.yahoo.com/yui/compressor/
|
17 |
+
* Author: Julien Lecomte - http://www.julienlecomte.net/
|
18 |
+
* Copyright (c) 2013 Yahoo! Inc. All rights reserved.
|
19 |
+
* The copyrights embodied in the content of this file are licensed
|
20 |
+
* by Yahoo! Inc. under the BSD (revised) open source license.
|
21 |
+
*/
|
22 |
+
|
23 |
+
namespace WMAC\tubalmartin\CssMin;
|
24 |
+
|
25 |
+
class Minifier
|
26 |
+
{
|
27 |
+
const QUERY_FRACTION = '_CSSMIN_QF_';
|
28 |
+
const COMMENT_TOKEN = '_CSSMIN_CMT_%d_';
|
29 |
+
const COMMENT_TOKEN_START = '_CSSMIN_CMT_';
|
30 |
+
const RULE_BODY_TOKEN = '_CSSMIN_RBT_%d_';
|
31 |
+
const PRESERVED_TOKEN = '_CSSMIN_PTK_%d_';
|
32 |
+
const UNQUOTED_FONT_TOKEN = '_CSSMIN_UFT_%d_';
|
33 |
+
|
34 |
+
// Token lists
|
35 |
+
private $comments = array();
|
36 |
+
private $ruleBodies = array();
|
37 |
+
private $preservedTokens = array();
|
38 |
+
private $unquotedFontTokens = array();
|
39 |
+
|
40 |
+
// Output options
|
41 |
+
private $keepImportantComments = true;
|
42 |
+
private $keepSourceMapComment = false;
|
43 |
+
private $linebreakPosition = 0;
|
44 |
+
|
45 |
+
// PHP ini limits
|
46 |
+
private $raisePhpLimits;
|
47 |
+
private $memoryLimit;
|
48 |
+
private $maxExecutionTime = 60; // 1 min
|
49 |
+
private $pcreBacktrackLimit;
|
50 |
+
private $pcreRecursionLimit;
|
51 |
+
|
52 |
+
// Color maps
|
53 |
+
private $hexToNamedColorsMap;
|
54 |
+
private $namedToHexColorsMap;
|
55 |
+
|
56 |
+
// Regexes
|
57 |
+
private $numRegex;
|
58 |
+
private $charsetRegex = '/@charset [^;]+;/Si';
|
59 |
+
private $importRegex = '/@import [^;]+;/Si';
|
60 |
+
private $namespaceRegex = '/@namespace [^;]+;/Si';
|
61 |
+
private $namedToHexColorsRegex;
|
62 |
+
private $shortenOneZeroesRegex;
|
63 |
+
private $shortenTwoZeroesRegex;
|
64 |
+
private $shortenThreeZeroesRegex;
|
65 |
+
private $shortenFourZeroesRegex;
|
66 |
+
private $unitsGroupRegex = '(?:ch|cm|em|ex|gd|in|mm|px|pt|pc|q|rem|vh|vmax|vmin|vw|%)';
|
67 |
+
private $unquotedFontsRegex = '/(font-family:|font:)([^\'"]+?)[^};]*/Si';
|
68 |
+
|
69 |
+
/**
|
70 |
+
* @param bool|int $raisePhpLimits If true, PHP settings will be raised if needed
|
71 |
+
*/
|
72 |
+
public function __construct($raisePhpLimits = true)
|
73 |
+
{
|
74 |
+
$this->raisePhpLimits = (bool) $raisePhpLimits;
|
75 |
+
$this->memoryLimit = 128 * 1048576; // 128MB in bytes
|
76 |
+
$this->pcreBacktrackLimit = 1000 * 1000;
|
77 |
+
$this->pcreRecursionLimit = 500 * 1000;
|
78 |
+
$this->hexToNamedColorsMap = Colors::getHexToNamedMap();
|
79 |
+
$this->namedToHexColorsMap = Colors::getNamedToHexMap();
|
80 |
+
$this->namedToHexColorsRegex = sprintf(
|
81 |
+
'/([:,( ])(%s)( |,|\)|;|$)/Si',
|
82 |
+
implode('|', array_keys($this->namedToHexColorsMap))
|
83 |
+
);
|
84 |
+
$this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex);
|
85 |
+
$this->setShortenZeroValuesRegexes();
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Parses & minifies the given input CSS string
|
90 |
+
* @param string $css
|
91 |
+
* @return string
|
92 |
+
*/
|
93 |
+
public function run($css = '')
|
94 |
+
{
|
95 |
+
if (empty($css) || !is_string($css)) {
|
96 |
+
return '';
|
97 |
+
}
|
98 |
+
|
99 |
+
$this->resetRunProperties();
|
100 |
+
|
101 |
+
if ($this->raisePhpLimits) {
|
102 |
+
$this->doRaisePhpLimits();
|
103 |
+
}
|
104 |
+
|
105 |
+
return $this->minify($css);
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Sets whether to keep or remove sourcemap special comment.
|
110 |
+
* Sourcemap comments are removed by default.
|
111 |
+
* @param bool $keepSourceMapComment
|
112 |
+
*/
|
113 |
+
public function keepSourceMapComment($keepSourceMapComment = true)
|
114 |
+
{
|
115 |
+
$this->keepSourceMapComment = (bool) $keepSourceMapComment;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Sets whether to keep or remove important comments.
|
120 |
+
* Important comments outside of a declaration block are kept by default.
|
121 |
+
* @param bool $removeImportantComments
|
122 |
+
*/
|
123 |
+
public function removeImportantComments($removeImportantComments = true)
|
124 |
+
{
|
125 |
+
$this->keepImportantComments = !(bool) $removeImportantComments;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Sets the approximate column after which long lines will be splitted in the output
|
130 |
+
* with a linebreak.
|
131 |
+
* @param int $position
|
132 |
+
*/
|
133 |
+
public function setLineBreakPosition($position)
|
134 |
+
{
|
135 |
+
$this->linebreakPosition = (int) $position;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Sets the memory limit for this script
|
140 |
+
* @param int|string $limit
|
141 |
+
*/
|
142 |
+
public function setMemoryLimit($limit)
|
143 |
+
{
|
144 |
+
$this->memoryLimit = Utils::normalizeInt($limit);
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Sets the maximum execution time for this script
|
149 |
+
* @param int|string $seconds
|
150 |
+
*/
|
151 |
+
public function setMaxExecutionTime($seconds)
|
152 |
+
{
|
153 |
+
$this->maxExecutionTime = (int) $seconds;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Sets the PCRE backtrack limit for this script
|
158 |
+
* @param int $limit
|
159 |
+
*/
|
160 |
+
public function setPcreBacktrackLimit($limit)
|
161 |
+
{
|
162 |
+
$this->pcreBacktrackLimit = (int) $limit;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Sets the PCRE recursion limit for this script
|
167 |
+
* @param int $limit
|
168 |
+
*/
|
169 |
+
public function setPcreRecursionLimit($limit)
|
170 |
+
{
|
171 |
+
$this->pcreRecursionLimit = (int) $limit;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Builds regular expressions needed for shortening zero values
|
176 |
+
*/
|
177 |
+
private function setShortenZeroValuesRegexes()
|
178 |
+
{
|
179 |
+
$zeroRegex = '0'. $this->unitsGroupRegex;
|
180 |
+
$numOrPosRegex = '('. $this->numRegex .'|top|left|bottom|right|center) ';
|
181 |
+
$oneZeroSafeProperties = array(
|
182 |
+
'(?:line-)?height',
|
183 |
+
'(?:(?:min|max)-)?width',
|
184 |
+
'top',
|
185 |
+
'left',
|
186 |
+
'background-position',
|
187 |
+
'bottom',
|
188 |
+
'right',
|
189 |
+
'border(?:-(?:top|left|bottom|right))?(?:-width)?',
|
190 |
+
'border-(?:(?:top|bottom)-(?:left|right)-)?radius',
|
191 |
+
'column-(?:gap|width)',
|
192 |
+
'margin(?:-(?:top|left|bottom|right))?',
|
193 |
+
'outline-width',
|
194 |
+
'padding(?:-(?:top|left|bottom|right))?'
|
195 |
+
);
|
196 |
+
|
197 |
+
// First zero regex
|
198 |
+
$regex = '/(^|;)('. implode('|', $oneZeroSafeProperties) .'):%s/Si';
|
199 |
+
$this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex);
|
200 |
+
|
201 |
+
// Multiple zeroes regexes
|
202 |
+
$regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si';
|
203 |
+
$this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex);
|
204 |
+
$this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex);
|
205 |
+
$this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex);
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Resets properties whose value may change between runs
|
210 |
+
*/
|
211 |
+
private function resetRunProperties()
|
212 |
+
{
|
213 |
+
$this->comments = array();
|
214 |
+
$this->ruleBodies = array();
|
215 |
+
$this->preservedTokens = array();
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Tries to configure PHP to use at least the suggested minimum settings
|
220 |
+
* @return void
|
221 |
+
*/
|
222 |
+
private function doRaisePhpLimits()
|
223 |
+
{
|
224 |
+
$phpLimits = array(
|
225 |
+
'memory_limit' => $this->memoryLimit,
|
226 |
+
'max_execution_time' => $this->maxExecutionTime,
|
227 |
+
'pcre.backtrack_limit' => $this->pcreBacktrackLimit,
|
228 |
+
'pcre.recursion_limit' => $this->pcreRecursionLimit
|
229 |
+
);
|
230 |
+
|
231 |
+
// If current settings are higher respect them.
|
232 |
+
foreach ($phpLimits as $name => $suggested) {
|
233 |
+
$current = Utils::normalizeInt(ini_get($name));
|
234 |
+
|
235 |
+
if ($current >= $suggested) {
|
236 |
+
continue;
|
237 |
+
}
|
238 |
+
|
239 |
+
// memoryLimit exception: allow -1 for "no memory limit".
|
240 |
+
if ($name === 'memory_limit' && $current === -1) {
|
241 |
+
continue;
|
242 |
+
}
|
243 |
+
|
244 |
+
// maxExecutionTime exception: allow 0 for "no memory limit".
|
245 |
+
if ($name === 'max_execution_time' && $current === 0) {
|
246 |
+
continue;
|
247 |
+
}
|
248 |
+
|
249 |
+
ini_set($name, $suggested);
|
250 |
+
}
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Registers a preserved token
|
255 |
+
* @param string $token
|
256 |
+
* @return string The token ID string
|
257 |
+
*/
|
258 |
+
private function registerPreservedToken($token)
|
259 |
+
{
|
260 |
+
$tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens));
|
261 |
+
$this->preservedTokens[$tokenId] = $token;
|
262 |
+
return $tokenId;
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Registers a candidate comment token
|
267 |
+
* @param string $comment
|
268 |
+
* @return string The comment token ID string
|
269 |
+
*/
|
270 |
+
private function registerCommentToken($comment)
|
271 |
+
{
|
272 |
+
$tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments));
|
273 |
+
$this->comments[$tokenId] = $comment;
|
274 |
+
return $tokenId;
|
275 |
+
}
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Registers a rule body token
|
279 |
+
* @param string $body the minified rule body
|
280 |
+
* @return string The rule body token ID string
|
281 |
+
*/
|
282 |
+
private function registerRuleBodyToken($body)
|
283 |
+
{
|
284 |
+
if (empty($body)) {
|
285 |
+
return '';
|
286 |
+
}
|
287 |
+
|
288 |
+
$tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies));
|
289 |
+
$this->ruleBodies[$tokenId] = $body;
|
290 |
+
return $tokenId;
|
291 |
+
}
|
292 |
+
|
293 |
+
private function registerUnquotedFontToken($body)
|
294 |
+
{
|
295 |
+
if (empty($body)) {
|
296 |
+
return '';
|
297 |
+
}
|
298 |
+
|
299 |
+
$tokenId = sprintf(self::UNQUOTED_FONT_TOKEN, count($this->unquotedFontTokens));
|
300 |
+
$this->unquotedFontTokens[$tokenId] = $body;
|
301 |
+
return $tokenId;
|
302 |
+
}
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Parses & minifies the given input CSS string
|
306 |
+
* @param string $css
|
307 |
+
* @return string
|
308 |
+
*/
|
309 |
+
private function minify($css)
|
310 |
+
{
|
311 |
+
// Process data urls
|
312 |
+
$css = $this->processDataUrls($css);
|
313 |
+
|
314 |
+
// Process comments
|
315 |
+
$css = preg_replace_callback(
|
316 |
+
'/(?<!\\\\)\/\*(.*?)\*(?<!\\\\)\//Ss',
|
317 |
+
array($this, 'processCommentsCallback'),
|
318 |
+
$css
|
319 |
+
);
|
320 |
+
|
321 |
+
// IE7: Process Microsoft matrix filters (whitespaces between Matrix parameters). Can contain strings inside.
|
322 |
+
$css = preg_replace_callback(
|
323 |
+
'/filter:\s*progid:DXImageTransform\.Microsoft\.Matrix\(([^)]+)\)/Ss',
|
324 |
+
array($this, 'processOldIeSpecificMatrixDefinitionCallback'),
|
325 |
+
$css
|
326 |
+
);
|
327 |
+
|
328 |
+
// Process quoted unquotable attribute selectors to unquote them. Covers most common cases.
|
329 |
+
// Likelyhood of a quoted attribute selector being a substring in a string: Very very low.
|
330 |
+
$css = preg_replace(
|
331 |
+
'/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi',
|
332 |
+
'[$1$2$3]',
|
333 |
+
$css
|
334 |
+
);
|
335 |
+
|
336 |
+
// Process strings so their content doesn't get accidentally minified
|
337 |
+
$css = preg_replace_callback(
|
338 |
+
'/(?:"(?:[^\\\\"]|\\\\.|\\\\)*")|'."(?:'(?:[^\\\\']|\\\\.|\\\\)*')/S",
|
339 |
+
array($this, 'processStringsCallback'),
|
340 |
+
$css
|
341 |
+
);
|
342 |
+
|
343 |
+
// Normalize all whitespace strings to single spaces. Easier to work with that way.
|
344 |
+
$css = preg_replace('/\s+/S', ' ', $css);
|
345 |
+
|
346 |
+
// Process import At-rules with unquoted URLs so URI reserved characters such as a semicolon may be used safely.
|
347 |
+
$css = preg_replace_callback(
|
348 |
+
'/@import url\(([^\'"]+?)\)( |;)/Si',
|
349 |
+
array($this, 'processImportUnquotedUrlAtRulesCallback'),
|
350 |
+
$css
|
351 |
+
);
|
352 |
+
|
353 |
+
// Process comments
|
354 |
+
$css = $this->processComments($css);
|
355 |
+
|
356 |
+
// Process rule bodies
|
357 |
+
$css = $this->processRuleBodies($css);
|
358 |
+
|
359 |
+
// Process at-rules and selectors
|
360 |
+
$css = $this->processAtRulesAndSelectors($css);
|
361 |
+
|
362 |
+
// Restore preserved rule bodies before splitting
|
363 |
+
$css = strtr($css, $this->ruleBodies);
|
364 |
+
|
365 |
+
// Split long lines in output if required
|
366 |
+
$css = $this->processLongLineSplitting($css);
|
367 |
+
|
368 |
+
// Restore preserved comments and strings
|
369 |
+
$css = strtr($css, $this->preservedTokens);
|
370 |
+
|
371 |
+
return trim($css);
|
372 |
+
}
|
373 |
+
|
374 |
+
/**
|
375 |
+
* Searches & replaces all data urls with tokens before we start compressing,
|
376 |
+
* to avoid performance issues running some of the subsequent regexes against large string chunks.
|
377 |
+
* @param string $css
|
378 |
+
* @return string
|
379 |
+
*/
|
380 |
+
private function processDataUrls($css)
|
381 |
+
{
|
382 |
+
$ret = '';
|
383 |
+
$searchOffset = $substrOffset = 0;
|
384 |
+
|
385 |
+
// Since we need to account for non-base64 data urls, we need to handle
|
386 |
+
// ' and ) being part of the data string.
|
387 |
+
while (preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset)) {
|
388 |
+
$matchStartIndex = $m[0][1];
|
389 |
+
$dataStartIndex = $matchStartIndex + 4; // url( length
|
390 |
+
$searchOffset = $matchStartIndex + strlen($m[0][0]);
|
391 |
+
$terminator = $m[1][0]; // ', " or empty (not quoted)
|
392 |
+
$terminatorRegex = '/(?<!\\\\)'. (strlen($terminator) === 0 ? '' : $terminator.'\s*') .'(\))/S';
|
393 |
+
|
394 |
+
$ret .= substr($css, $substrOffset, $matchStartIndex - $substrOffset);
|
395 |
+
|
396 |
+
// Terminator found
|
397 |
+
if (preg_match($terminatorRegex, $css, $matches, PREG_OFFSET_CAPTURE, $searchOffset)) {
|
398 |
+
$matchEndIndex = $matches[1][1];
|
399 |
+
$searchOffset = $matchEndIndex + 1;
|
400 |
+
$token = substr($css, $dataStartIndex, $matchEndIndex - $dataStartIndex);
|
401 |
+
|
402 |
+
// Remove all spaces only for base64 encoded URLs.
|
403 |
+
if (stripos($token, 'base64,') !== false) {
|
404 |
+
$token = preg_replace('/\s+/S', '', $token);
|
405 |
+
}
|
406 |
+
|
407 |
+
$ret .= 'url('. $this->registerPreservedToken(trim($token)) .')';
|
408 |
+
// No end terminator found, re-add the whole match. Should we throw/warn here?
|
409 |
+
} else {
|
410 |
+
$ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex);
|
411 |
+
}
|
412 |
+
|
413 |
+
$substrOffset = $searchOffset;
|
414 |
+
}
|
415 |
+
|
416 |
+
$ret .= substr($css, $substrOffset);
|
417 |
+
|
418 |
+
return $ret;
|
419 |
+
}
|
420 |
+
|
421 |
+
/**
|
422 |
+
* Registers all comments found as candidates to be preserved.
|
423 |
+
* @param array $matches
|
424 |
+
* @return string
|
425 |
+
*/
|
426 |
+
private function processCommentsCallback($matches)
|
427 |
+
{
|
428 |
+
return '/*'. $this->registerCommentToken($matches[1]) .'*/';
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* Preserves old IE Matrix string definition
|
433 |
+
* @param array $matches
|
434 |
+
* @return string
|
435 |
+
*/
|
436 |
+
private function processOldIeSpecificMatrixDefinitionCallback($matches)
|
437 |
+
{
|
438 |
+
return 'filter:progid:DXImageTransform.Microsoft.Matrix('. $this->registerPreservedToken($matches[1]) .')';
|
439 |
+
}
|
440 |
+
|
441 |
+
/**
|
442 |
+
* Preserves strings found
|
443 |
+
* @param array $matches
|
444 |
+
* @return string
|
445 |
+
*/
|
446 |
+
private function processStringsCallback($matches)
|
447 |
+
{
|
448 |
+
$match = $matches[0];
|
449 |
+
$quote = substr($match, 0, 1);
|
450 |
+
$match = substr($match, 1, -1);
|
451 |
+
|
452 |
+
// maybe the string contains a comment-like substring?
|
453 |
+
// one, maybe more? put'em back then
|
454 |
+
if (strpos($match, self::COMMENT_TOKEN_START) !== false) {
|
455 |
+
$match = strtr($match, $this->comments);
|
456 |
+
}
|
457 |
+
|
458 |
+
// minify alpha opacity in filter strings
|
459 |
+
$match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match);
|
460 |
+
|
461 |
+
return $quote . $this->registerPreservedToken($match) . $quote;
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon
|
466 |
+
* may be used safely in a URL.
|
467 |
+
* @param array $matches
|
468 |
+
* @return string
|
469 |
+
*/
|
470 |
+
private function processImportUnquotedUrlAtRulesCallback($matches)
|
471 |
+
{
|
472 |
+
return '@import url('. $this->registerPreservedToken($matches[1]) .')'. $matches[2];
|
473 |
+
}
|
474 |
+
|
475 |
+
/**
|
476 |
+
* Preserves or removes comments found.
|
477 |
+
* @param string $css
|
478 |
+
* @return string
|
479 |
+
*/
|
480 |
+
private function processComments($css)
|
481 |
+
{
|
482 |
+
foreach ($this->comments as $commentId => $comment) {
|
483 |
+
$commentIdString = '/*'. $commentId .'*/';
|
484 |
+
|
485 |
+
// ! in the first position of the comment means preserve
|
486 |
+
// so push to the preserved tokens keeping the !
|
487 |
+
if ($this->keepImportantComments && strpos($comment, '!') === 0) {
|
488 |
+
$preservedTokenId = $this->registerPreservedToken($comment);
|
489 |
+
// Put new lines before and after /*! important comments
|
490 |
+
$css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css);
|
491 |
+
continue;
|
492 |
+
}
|
493 |
+
|
494 |
+
// # sourceMappingURL= in the first position of the comment means sourcemap
|
495 |
+
// so push to the preserved tokens if {$this->keepSourceMapComment} is truthy.
|
496 |
+
if ($this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0) {
|
497 |
+
$preservedTokenId = $this->registerPreservedToken($comment);
|
498 |
+
// Add new line before the sourcemap comment
|
499 |
+
$css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css);
|
500 |
+
continue;
|
501 |
+
}
|
502 |
+
|
503 |
+
// Keep empty comments after child selectors (IE7 hack)
|
504 |
+
// e.g. html >/**/ body
|
505 |
+
if (strlen($comment) === 0 && strpos($css, '>/*'.$commentId) !== false) {
|
506 |
+
$css = str_replace($commentId, $this->registerPreservedToken(''), $css);
|
507 |
+
continue;
|
508 |
+
}
|
509 |
+
|
510 |
+
// in all other cases kill the comment
|
511 |
+
$css = str_replace($commentIdString, '', $css);
|
512 |
+
}
|
513 |
+
|
514 |
+
// Normalize whitespace again
|
515 |
+
$css = preg_replace('/ +/S', ' ', $css);
|
516 |
+
|
517 |
+
return $css;
|
518 |
+
}
|
519 |
+
|
520 |
+
/**
|
521 |
+
* Finds, minifies & preserves all rule bodies.
|
522 |
+
* @param string $css the whole stylesheet.
|
523 |
+
* @return string
|
524 |
+
*/
|
525 |
+
private function processRuleBodies($css)
|
526 |
+
{
|
527 |
+
$ret = '';
|
528 |
+
$searchOffset = $substrOffset = 0;
|
529 |
+
|
530 |
+
while (($blockStartPos = strpos($css, '{', $searchOffset)) !== false) {
|
531 |
+
$blockEndPos = strpos($css, '}', $blockStartPos);
|
532 |
+
// When ending curly brace is missing, let's
|
533 |
+
// behave like there was one at the end of the block...
|
534 |
+
if ( false === $blockEndPos ) {
|
535 |
+
$blockEndPos = strlen($css) - 1;
|
536 |
+
}
|
537 |
+
$nextBlockStartPos = strpos($css, '{', $blockStartPos + 1);
|
538 |
+
$ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset);
|
539 |
+
|
540 |
+
if ($nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos) {
|
541 |
+
$ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos);
|
542 |
+
$searchOffset = $nextBlockStartPos;
|
543 |
+
} else {
|
544 |
+
$ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1);
|
545 |
+
$ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody));
|
546 |
+
$ret .= '{'. $ruleBodyToken .'}';
|
547 |
+
$searchOffset = $blockEndPos + 1;
|
548 |
+
}
|
549 |
+
|
550 |
+
$substrOffset = $searchOffset;
|
551 |
+
}
|
552 |
+
|
553 |
+
$ret .= substr($css, $substrOffset);
|
554 |
+
|
555 |
+
return $ret;
|
556 |
+
}
|
557 |
+
|
558 |
+
/**
|
559 |
+
* Compresses non-group rule bodies.
|
560 |
+
* @param string $body The rule body without curly braces
|
561 |
+
* @return string
|
562 |
+
*/
|
563 |
+
private function processRuleBody($body)
|
564 |
+
{
|
565 |
+
$body = trim($body);
|
566 |
+
|
567 |
+
// Remove spaces before the things that should not have spaces before them.
|
568 |
+
$body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body);
|
569 |
+
|
570 |
+
// Remove the spaces after the things that should not have spaces after them.
|
571 |
+
$body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body);
|
572 |
+
|
573 |
+
// Replace multiple semi-colons in a row by a single one
|
574 |
+
$body = preg_replace('/;;+/S', ';', $body);
|
575 |
+
|
576 |
+
// Remove semicolon before closing brace except when:
|
577 |
+
// - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers.
|
578 |
+
if (!preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body)) {
|
579 |
+
$body = rtrim($body, ';');
|
580 |
+
}
|
581 |
+
|
582 |
+
// Remove important comments inside a rule body (because they make no sense here).
|
583 |
+
if (strpos($body, '/*') !== false) {
|
584 |
+
$body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body);
|
585 |
+
}
|
586 |
+
|
587 |
+
// Empty rule body? Exit :)
|
588 |
+
if (empty($body)) {
|
589 |
+
return '';
|
590 |
+
}
|
591 |
+
|
592 |
+
// Shorten font-weight values
|
593 |
+
$body = preg_replace(
|
594 |
+
array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'),
|
595 |
+
array('${1}700', '${1}400'),
|
596 |
+
$body
|
597 |
+
);
|
598 |
+
|
599 |
+
// Shorten background property
|
600 |
+
$body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body);
|
601 |
+
|
602 |
+
// Shorten opacity IE filter
|
603 |
+
$body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body);
|
604 |
+
|
605 |
+
// Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space)
|
606 |
+
// Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space)
|
607 |
+
// This makes it more likely that it'll get further compressed in the next step.
|
608 |
+
$body = preg_replace_callback(
|
609 |
+
'/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si',
|
610 |
+
array($this, 'shortenHslAndRgbToHexCallback'),
|
611 |
+
$body
|
612 |
+
);
|
613 |
+
|
614 |
+
// Shorten colors from #AABBCC to #ABC or shorter color name:
|
615 |
+
// - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters)
|
616 |
+
$body = preg_replace_callback(
|
617 |
+
'/(?<!=)#([0-9a-f]{3,6})( |,|\)|;|$)/Si',
|
618 |
+
array($this, 'shortenHexColorsCallback'),
|
619 |
+
$body
|
620 |
+
);
|
621 |
+
|
622 |
+
// Tokenize unquoted font names in order to hide them from
|
623 |
+
// color name replacements.
|
624 |
+
$body = preg_replace_callback(
|
625 |
+
$this->unquotedFontsRegex,
|
626 |
+
array($this, 'preserveUnquotedFontTokens'),
|
627 |
+
$body
|
628 |
+
);
|
629 |
+
|
630 |
+
// Shorten long named colors with a shorter HEX counterpart: white -> #fff.
|
631 |
+
// Run at least 2 times to cover most cases
|
632 |
+
$body = preg_replace_callback(
|
633 |
+
array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex),
|
634 |
+
array($this, 'shortenNamedColorsCallback'),
|
635 |
+
$body
|
636 |
+
);
|
637 |
+
|
638 |
+
// Restore unquoted font tokens now after colors have been changed.
|
639 |
+
$body = $this->restoreUnquotedFontTokens($body);
|
640 |
+
|
641 |
+
// Replace positive sign from numbers before the leading space is removed.
|
642 |
+
// +1.2em to 1.2em, +.8px to .8px, +2% to 2%
|
643 |
+
$body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body);
|
644 |
+
|
645 |
+
// shorten ms to s
|
646 |
+
$body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) {
|
647 |
+
return $matches[1] . $matches[2] . ((int) $matches[3] / 1000) .'s';
|
648 |
+
}, $body);
|
649 |
+
|
650 |
+
// Remove leading zeros from integer and float numbers.
|
651 |
+
// 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05
|
652 |
+
$body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body);
|
653 |
+
|
654 |
+
// Remove trailing zeros from float numbers.
|
655 |
+
// -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px
|
656 |
+
$body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body);
|
657 |
+
|
658 |
+
// Remove trailing .0 -> -9.0 to -9
|
659 |
+
$body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body);
|
660 |
+
|
661 |
+
// Replace 0 length numbers with 0
|
662 |
+
$body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body);
|
663 |
+
|
664 |
+
// Shorten zero values for safe properties only
|
665 |
+
$body = preg_replace(
|
666 |
+
array(
|
667 |
+
$this->shortenOneZeroesRegex,
|
668 |
+
$this->shortenTwoZeroesRegex,
|
669 |
+
$this->shortenThreeZeroesRegex,
|
670 |
+
$this->shortenFourZeroesRegex
|
671 |
+
),
|
672 |
+
array(
|
673 |
+
'$1$2:0',
|
674 |
+
'$1$2:$3 0',
|
675 |
+
'$1$2:$3 $4 0',
|
676 |
+
'$1$2:$3 $4 $5 0'
|
677 |
+
),
|
678 |
+
$body
|
679 |
+
);
|
680 |
+
|
681 |
+
// Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property.
|
682 |
+
$body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body);
|
683 |
+
|
684 |
+
// Shorten suitable shorthand properties with repeated values
|
685 |
+
$body = preg_replace(
|
686 |
+
array(
|
687 |
+
'/(margin|padding|border-(?:width|radius)):('.$this->numRegex.')(?: \2)+( !|;|$)/Si',
|
688 |
+
'/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si'
|
689 |
+
),
|
690 |
+
'$1:$2$3',
|
691 |
+
$body
|
692 |
+
);
|
693 |
+
$body = preg_replace(
|
694 |
+
array(
|
695 |
+
'/(margin|padding|border-(?:width|radius)):'.
|
696 |
+
'('.$this->numRegex.') ('.$this->numRegex.') \2 \3( !|;|$)/Si',
|
697 |
+
'/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si'
|
698 |
+
),
|
699 |
+
'$1:$2 $3$4',
|
700 |
+
$body
|
701 |
+
);
|
702 |
+
$body = preg_replace(
|
703 |
+
array(
|
704 |
+
'/(margin|padding|border-(?:width|radius)):'.
|
705 |
+
'('.$this->numRegex.') ('.$this->numRegex.') ('.$this->numRegex.') \3( !|;|$)/Si',
|
706 |
+
'/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si'
|
707 |
+
),
|
708 |
+
'$1:$2 $3 $4$5',
|
709 |
+
$body
|
710 |
+
);
|
711 |
+
|
712 |
+
// Lowercase some common functions that can be values
|
713 |
+
$body = preg_replace_callback(
|
714 |
+
'/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|'.
|
715 |
+
'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|'.
|
716 |
+
'steps|to|url|var|-webkit-gradient|'.
|
717 |
+
'(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si',
|
718 |
+
array($this, 'strtolowerCallback'),
|
719 |
+
$body
|
720 |
+
);
|
721 |
+
|
722 |
+
// Lowercase all uppercase properties
|
723 |
+
$body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body);
|
724 |
+
|
725 |
+
return $body;
|
726 |
+
}
|
727 |
+
|
728 |
+
private function preserveUnquotedFontTokens($matches)
|
729 |
+
{
|
730 |
+
return $this->registerUnquotedFontToken($matches[0]);
|
731 |
+
}
|
732 |
+
|
733 |
+
private function restoreUnquotedFontTokens($body)
|
734 |
+
{
|
735 |
+
return strtr($body, $this->unquotedFontTokens);
|
736 |
+
}
|
737 |
+
|
738 |
+
/**
|
739 |
+
* Compresses At-rules and selectors.
|
740 |
+
* @param string $css the whole stylesheet with rule bodies tokenized.
|
741 |
+
* @return string
|
742 |
+
*/
|
743 |
+
private function processAtRulesAndSelectors($css)
|
744 |
+
{
|
745 |
+
$charset = '';
|
746 |
+
$imports = '';
|
747 |
+
$namespaces = '';
|
748 |
+
|
749 |
+
// Remove spaces before the things that should not have spaces before them.
|
750 |
+
$css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css);
|
751 |
+
|
752 |
+
// Remove the spaces after the things that should not have spaces after them.
|
753 |
+
$css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css);
|
754 |
+
|
755 |
+
// Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2)
|
756 |
+
$css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css);
|
757 |
+
|
758 |
+
// Retain space for special IE6 cases
|
759 |
+
$css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) {
|
760 |
+
return ':first-'. strtolower($matches[1]) .' '. $matches[2];
|
761 |
+
}, $css);
|
762 |
+
|
763 |
+
// Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1)
|
764 |
+
// Add token to add the "/" back in later
|
765 |
+
$css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2'. self::QUERY_FRACTION .'$3)', $css);
|
766 |
+
|
767 |
+
// Remove empty rule blocks up to 2 levels deep.
|
768 |
+
$css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css);
|
769 |
+
$css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css);
|
770 |
+
|
771 |
+
// Two important comments next to each other? Remove extra newline.
|
772 |
+
if ($this->keepImportantComments) {
|
773 |
+
$css = str_replace("\n\n", "\n", $css);
|
774 |
+
}
|
775 |
+
|
776 |
+
// Restore fraction
|
777 |
+
$css = str_replace(self::QUERY_FRACTION, '/', $css);
|
778 |
+
|
779 |
+
// Lowercase some popular @directives
|
780 |
+
$css = preg_replace_callback(
|
781 |
+
'/(?<!\\\\)@(?:charset|document|font-face|import|(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?keyframes|media|'.
|
782 |
+
'namespace|page|supports|viewport)/Si',
|
783 |
+
array($this, 'strtolowerCallback'),
|
784 |
+
$css
|
785 |
+
);
|
786 |
+
|
787 |
+
// Lowercase some popular media types
|
788 |
+
$css = preg_replace_callback(
|
789 |
+
'/[ ,](?:all|aural|braille|handheld|print|projection|screen|tty|tv|embossed|speech)[ ,;{]/Si',
|
790 |
+
array($this, 'strtolowerCallback'),
|
791 |
+
$css
|
792 |
+
);
|
793 |
+
|
794 |
+
// Lowercase some common pseudo-classes & pseudo-elements
|
795 |
+
$css = preg_replace_callback(
|
796 |
+
'/(?<!\\\\):(?:active|after|before|checked|default|disabled|empty|enabled|first-(?:child|of-type)|'.
|
797 |
+
'focus(?:-within)?|hover|indeterminate|in-range|invalid|lang\(|last-(?:child|of-type)|left|link|not\(|'.
|
798 |
+
'nth-(?:child|of-type)\(|nth-last-(?:child|of-type)\(|only-(?:child|of-type)|optional|out-of-range|'.
|
799 |
+
'read-(?:only|write)|required|right|root|:selection|target|valid|visited)/Si',
|
800 |
+
array($this, 'strtolowerCallback'),
|
801 |
+
$css
|
802 |
+
);
|
803 |
+
|
804 |
+
// @charset handling
|
805 |
+
if (preg_match($this->charsetRegex, $css, $matches)) {
|
806 |
+
// Keep the first @charset at-rule found
|
807 |
+
$charset = $matches[0];
|
808 |
+
// Delete all @charset at-rules
|
809 |
+
$css = preg_replace($this->charsetRegex, '', $css);
|
810 |
+
}
|
811 |
+
|
812 |
+
// @import handling
|
813 |
+
$css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) {
|
814 |
+
// Keep all @import at-rules found for later
|
815 |
+
$imports .= $matches[0];
|
816 |
+
// Delete all @import at-rules
|
817 |
+
return '';
|
818 |
+
}, $css);
|
819 |
+
|
820 |
+
// @namespace handling
|
821 |
+
$css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) {
|
822 |
+
// Keep all @namespace at-rules found for later
|
823 |
+
$namespaces .= $matches[0];
|
824 |
+
// Delete all @namespace at-rules
|
825 |
+
return '';
|
826 |
+
}, $css);
|
827 |
+
|
828 |
+
// Order critical at-rules:
|
829 |
+
// 1. @charset first
|
830 |
+
// 2. @imports below @charset
|
831 |
+
// 3. @namespaces below @imports
|
832 |
+
$css = $charset . $imports . $namespaces . $css;
|
833 |
+
|
834 |
+
return $css;
|
835 |
+
}
|
836 |
+
|
837 |
+
/**
|
838 |
+
* Splits long lines after a specific column.
|
839 |
+
*
|
840 |
+
* Some source control tools don't like it when files containing lines longer
|
841 |
+
* than, say 8000 characters, are checked in. The linebreak option is used in
|
842 |
+
* that case to split long lines after a specific column.
|
843 |
+
*
|
844 |
+
* @param string $css the whole stylesheet.
|
845 |
+
* @return string
|
846 |
+
*/
|
847 |
+
private function processLongLineSplitting($css)
|
848 |
+
{
|
849 |
+
if ($this->linebreakPosition > 0) {
|
850 |
+
$l = strlen($css);
|
851 |
+
$offset = $this->linebreakPosition;
|
852 |
+
while (preg_match('/(?<!\\\\)\}(?!\n)/S', $css, $matches, PREG_OFFSET_CAPTURE, $offset)) {
|
853 |
+
$matchIndex = $matches[0][1];
|
854 |
+
$css = substr_replace($css, "\n", $matchIndex + 1, 0);
|
855 |
+
$offset = $matchIndex + 2 + $this->linebreakPosition;
|
856 |
+
$l += 1;
|
857 |
+
if ($offset > $l) {
|
858 |
+
break;
|
859 |
+
}
|
860 |
+
}
|
861 |
+
}
|
862 |
+
|
863 |
+
return $css;
|
864 |
+
}
|
865 |
+
|
866 |
+
/**
|
867 |
+
* Converts hsl() & rgb() colors to HEX format.
|
868 |
+
* @param $matches
|
869 |
+
* @return string
|
870 |
+
*/
|
871 |
+
private function shortenHslAndRgbToHexCallback($matches)
|
872 |
+
{
|
873 |
+
$type = $matches[1];
|
874 |
+
$values = explode(',', $matches[2]);
|
875 |
+
$terminator = $matches[3];
|
876 |
+
|
877 |
+
if ($type === 'hsl') {
|
878 |
+
$values = Utils::hslToRgb($values);
|
879 |
+
}
|
880 |
+
|
881 |
+
$hexColors = Utils::rgbToHex($values);
|
882 |
+
|
883 |
+
// Restore space after rgb() or hsl() function in some cases such as:
|
884 |
+
// background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%);
|
885 |
+
if (!empty($terminator) && !preg_match('/[ ,);]/S', $terminator)) {
|
886 |
+
$terminator = ' '. $terminator;
|
887 |
+
}
|
888 |
+
|
889 |
+
return '#'. implode('', $hexColors) . $terminator;
|
890 |
+
}
|
891 |
+
|
892 |
+
/**
|
893 |
+
* Compresses HEX color values of the form #AABBCC to #ABC or short color name.
|
894 |
+
* @param $matches
|
895 |
+
* @return string
|
896 |
+
*/
|
897 |
+
private function shortenHexColorsCallback($matches)
|
898 |
+
{
|
899 |
+
$hex = $matches[1];
|
900 |
+
|
901 |
+
// Shorten suitable 6 chars HEX colors
|
902 |
+
if (strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m)) {
|
903 |
+
$hex = $m[1] . $m[2] . $m[3];
|
904 |
+
}
|
905 |
+
|
906 |
+
// Lowercase
|
907 |
+
$hex = '#'. strtolower($hex);
|
908 |
+
|
909 |
+
// Replace Hex colors with shorter color names
|
910 |
+
$color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
|
911 |
+
|
912 |
+
return $color . $matches[2];
|
913 |
+
}
|
914 |
+
|
915 |
+
/**
|
916 |
+
* Shortens all named colors with a shorter HEX counterpart for a set of safe properties
|
917 |
+
* e.g. white -> #fff
|
918 |
+
* @param array $matches
|
919 |
+
* @return string
|
920 |
+
*/
|
921 |
+
private function shortenNamedColorsCallback($matches)
|
922 |
+
{
|
923 |
+
return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
|
924 |
+
}
|
925 |
+
|
926 |
+
/**
|
927 |
+
* Makes a string lowercase
|
928 |
+
* @param array $matches
|
929 |
+
* @return string
|
930 |
+
*/
|
931 |
+
private function strtolowerCallback($matches)
|
932 |
+
{
|
933 |
+
return strtolower($matches[0]);
|
934 |
+
}
|
935 |
+
}
|
components/minify-and-combine/languages/minify-and-combine-es_ES.mo
ADDED
Binary file
|
components/minify-and-combine/languages/minify-and-combine-es_ES.po
ADDED
@@ -0,0 +1,273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:29+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:29+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/boot.php:23
|
29 |
+
msgid ""
|
30 |
+
"Clearfy: Minify and Combine component is not compatible with the Autoptimize "
|
31 |
+
"plugin, please do not use them together to avoid conflicts. Please disable "
|
32 |
+
"the Minify and Combine component"
|
33 |
+
msgstr ""
|
34 |
+
"Clearfy: Nuestro componente Minify and Combine no es compatible con el "
|
35 |
+
"plugin ( Autoptimize ), no los use juntos para evitar conflictos. Por favor "
|
36 |
+
"deshabilite el componente Minify y Combine"
|
37 |
+
|
38 |
+
#: admin/boot.php:50 admin/pages/settings.php:103
|
39 |
+
msgid "Optimize JavaScript Code?"
|
40 |
+
msgstr "¿Optimizar código JavaScript?"
|
41 |
+
|
42 |
+
#: admin/boot.php:55 admin/pages/settings.php:124
|
43 |
+
msgid "Aggregate JS-files?"
|
44 |
+
msgstr "¿Agregar archivos JS?"
|
45 |
+
|
46 |
+
#: admin/boot.php:60 admin/pages/settings.php:145
|
47 |
+
msgid "Also aggregate inline JS?"
|
48 |
+
msgstr "¿También agregar inline JS?"
|
49 |
+
|
50 |
+
#: admin/boot.php:65 admin/pages/settings.php:166
|
51 |
+
msgid "Force JavaScript in <head>?"
|
52 |
+
msgstr "Forzar JavaScript en <head>?"
|
53 |
+
|
54 |
+
#: admin/boot.php:70 admin/pages/settings.php:175
|
55 |
+
msgid "Exclude scripts from Мinify And Combine:"
|
56 |
+
msgstr "Excluir scripts de Мinify And Combine:"
|
57 |
+
|
58 |
+
#: admin/boot.php:75 admin/pages/settings.php:185
|
59 |
+
msgid "Add try-catch wrapping?"
|
60 |
+
msgstr "¿Añadir envoltura try-catch?"
|
61 |
+
|
62 |
+
#: admin/boot.php:83 admin/pages/settings.php:206
|
63 |
+
msgid "Optimize CSS Code?"
|
64 |
+
msgstr "¿Optimizar código CSS?"
|
65 |
+
|
66 |
+
#: admin/boot.php:89 admin/pages/settings.php:222
|
67 |
+
msgid "Aggregate CSS-files?"
|
68 |
+
msgstr "¿Agregar archivos CSS?"
|
69 |
+
|
70 |
+
#: admin/boot.php:95 admin/pages/settings.php:243
|
71 |
+
msgid "Also aggregate inline CSS?"
|
72 |
+
msgstr "¿También agregar inline CSS?"
|
73 |
+
|
74 |
+
#: admin/boot.php:101 admin/pages/settings.php:264
|
75 |
+
msgid "Generate data: URIs for images?"
|
76 |
+
msgstr "Generar datos: ¿URIs para imágenes?"
|
77 |
+
|
78 |
+
#: admin/boot.php:107 admin/pages/settings.php:274
|
79 |
+
msgid "Inline and Defer CSS?"
|
80 |
+
msgstr "¿Inline y aplazar CSS?"
|
81 |
+
|
82 |
+
#: admin/boot.php:113 admin/pages/settings.php:285
|
83 |
+
msgid "Inline all CSS?"
|
84 |
+
msgstr "¿Inline todo el CSS?"
|
85 |
+
|
86 |
+
#: admin/boot.php:119
|
87 |
+
msgid "Exclude CSS from Мinify And Combine"
|
88 |
+
msgstr "Excluir CSS de Мinify And Combine"
|
89 |
+
|
90 |
+
#: admin/boot.php:135
|
91 |
+
msgid "One click optimize scripts (js, css)"
|
92 |
+
msgstr "Optimizar scripts con un clik (js, css)"
|
93 |
+
|
94 |
+
#: admin/boot.php:137
|
95 |
+
msgid "One click optimize html code and scripts"
|
96 |
+
msgstr "Optimizar html y scripts con un Click"
|
97 |
+
|
98 |
+
#: admin/pages/settings.php:39
|
99 |
+
msgid "Minify (JS/CSS)"
|
100 |
+
msgstr "Minificar (JS/CSS)"
|
101 |
+
|
102 |
+
#: admin/pages/settings.php:60
|
103 |
+
msgid "Minify (Html/JS/CSS)"
|
104 |
+
msgstr "Minificar (Html/JS/CSS)"
|
105 |
+
|
106 |
+
#: admin/pages/settings.php:60
|
107 |
+
msgid "General"
|
108 |
+
msgstr "General"
|
109 |
+
|
110 |
+
#: admin/pages/settings.php:78
|
111 |
+
msgid "The cache has been successfully cleaned."
|
112 |
+
msgstr "El caché se ha limpiado con éxito."
|
113 |
+
|
114 |
+
#: admin/pages/settings.php:96
|
115 |
+
msgid "JavaScript Options"
|
116 |
+
msgstr "Opciones de JavaScript"
|
117 |
+
|
118 |
+
#: admin/pages/settings.php:126
|
119 |
+
msgid ""
|
120 |
+
"Aggregate all linked JS-files to have them loaded non-render blocking? If "
|
121 |
+
"this option is off, the individual JS-files will remain in place but will be "
|
122 |
+
"minified."
|
123 |
+
msgstr ""
|
124 |
+
"¿Agregar todos los archivos JS vinculados para que sean cargados sin "
|
125 |
+
"procesamiento? Si esta opción está desactivada, los archivos JS individuales "
|
126 |
+
"permanecerán en su lugar pero se minimizarán."
|
127 |
+
|
128 |
+
#: admin/pages/settings.php:147
|
129 |
+
msgid ""
|
130 |
+
"Let Мinify And Combine also extract JS from the HTML. Warning: this can make "
|
131 |
+
"Мinify And Combine's cache size grow quickly, so only enable this if you "
|
132 |
+
"know what you're doing."
|
133 |
+
msgstr ""
|
134 |
+
"Deje que Мinify And Combine también extraiga JS del HTML. Advertencia: esto "
|
135 |
+
"puede hacer que el tamaño del caché de Мinify And Combine crezca "
|
136 |
+
"rápidamente, así que habilítelo solo si sabe lo que está haciendo."
|
137 |
+
|
138 |
+
#: admin/pages/settings.php:168
|
139 |
+
msgid ""
|
140 |
+
"Load JavaScript early, this can potentially fix some JS-errors, but makes "
|
141 |
+
"the JS render blocking."
|
142 |
+
msgstr ""
|
143 |
+
"Cargar primero JavaScript puede corregir algunos errores potenciales de JS, "
|
144 |
+
"pero hace que JS renderice el bloqueo."
|
145 |
+
|
146 |
+
#: admin/pages/settings.php:177
|
147 |
+
msgid ""
|
148 |
+
"A comma-separated list of scripts you want to exclude from being optimized, "
|
149 |
+
"for example 'whatever.js, another.js' (without the quotes) to exclude those "
|
150 |
+
"scripts from being aggregated and minimized by Мinify And Combine."
|
151 |
+
msgstr ""
|
152 |
+
"Lista de scripts separados por comas para ser excluídos de la optimización, "
|
153 |
+
"ejemplo, 'whatever.js, another.js' (sin las comillas) excluir estos scripts "
|
154 |
+
"de ser agregados para minimizarlos por Мinify And Combine."
|
155 |
+
|
156 |
+
#: admin/pages/settings.php:187 admin/pages/settings.php:208
|
157 |
+
msgid ""
|
158 |
+
"If your scripts break because of a JS-error, you might want to try this."
|
159 |
+
msgstr "Si sus scripts se rompen debido a un error de JS, intente esto."
|
160 |
+
|
161 |
+
#: admin/pages/settings.php:199
|
162 |
+
msgid "CSS Options"
|
163 |
+
msgstr "Opciones de CSS"
|
164 |
+
|
165 |
+
#: admin/pages/settings.php:224
|
166 |
+
msgid ""
|
167 |
+
"Aggregate all linked CSS-files? If this option is off, the individual CSS-"
|
168 |
+
"files will remain in place but will be minified."
|
169 |
+
msgstr ""
|
170 |
+
"¿Agregar todos los archivos CSS vinculados? Si esta opción es desactivada, "
|
171 |
+
"los archivos CSS individuales permanecerán en su lugar pero se minimizarán."
|
172 |
+
|
173 |
+
#: admin/pages/settings.php:245
|
174 |
+
msgid ""
|
175 |
+
"Check this option for Мinify And Combine to also aggregate CSS in the HTML."
|
176 |
+
msgstr ""
|
177 |
+
"Marque esta opción para Мinificar y combinar asi como agregar también CSS en "
|
178 |
+
"el HTML."
|
179 |
+
|
180 |
+
#: admin/pages/settings.php:266
|
181 |
+
msgid ""
|
182 |
+
"Enable this to include small background-images in the CSS itself instead of "
|
183 |
+
"as separate downloads."
|
184 |
+
msgstr ""
|
185 |
+
"Habilite esto para incluir pequeñas imágenes de fondo en el CSS, "
|
186 |
+
"descarguelas de forma separada."
|
187 |
+
|
188 |
+
#: admin/pages/settings.php:276
|
189 |
+
msgid ""
|
190 |
+
"Inline \"above the fold CSS\" while loading the main auto optimized CSS only "
|
191 |
+
"after page load. Check the FAQ for more info.\n"
|
192 |
+
"This can be fully automated for different types of pages with the Мinify And "
|
193 |
+
"Combine CriticalCSS Power-Up."
|
194 |
+
msgstr ""
|
195 |
+
"En línea \"above the fold CSS\" mientras se carga el auto optimizado de CSS "
|
196 |
+
"principal. Consulte FAQ para obtener más información.\n"
|
197 |
+
"Esto puede automatizarse completamente para diferentes tipos de páginas con "
|
198 |
+
"la función de \"Мinify And Combine CriticalCSS\"."
|
199 |
+
|
200 |
+
#: admin/pages/settings.php:287
|
201 |
+
msgid ""
|
202 |
+
"Inlining all CSS can improve performance for sites with a low pageviews/ "
|
203 |
+
"visitor-rate, but may slow down performance otherwise."
|
204 |
+
msgstr ""
|
205 |
+
"La incorporación de todo el CSS puede mejorar el rendimiento de los sitios "
|
206 |
+
"con un bajo pageviews/ visitor-rate, pero también podría relentizar el "
|
207 |
+
"rendimiento."
|
208 |
+
|
209 |
+
#: admin/pages/settings.php:294
|
210 |
+
msgid "Exclude CSS from Мinify And Combine:"
|
211 |
+
msgstr "Excluir CSS de Мinify And Combine:"
|
212 |
+
|
213 |
+
#: admin/pages/settings.php:296
|
214 |
+
msgid "A comma-separated list of CSS you want to exclude from being optimized."
|
215 |
+
msgstr "Lista de CSS separada por comas para ser excluídas de la optimización."
|
216 |
+
|
217 |
+
#: admin/pages/settings.php:308
|
218 |
+
msgid "Cache Info"
|
219 |
+
msgstr "Información de caché"
|
220 |
+
|
221 |
+
#: admin/pages/settings.php:368 includes/boot.php:52 includes/boot.php:71
|
222 |
+
msgid "Clear cache"
|
223 |
+
msgstr "Limpiar cache"
|
224 |
+
|
225 |
+
#: admin/pages/settings.php:386
|
226 |
+
msgid ""
|
227 |
+
"<b>This could break things!</b><br>If you notice any errors on your website "
|
228 |
+
"after having activated this setting, just deactivate it again, and your site "
|
229 |
+
"will be back to normal."
|
230 |
+
msgstr ""
|
231 |
+
"<b>¡Esto podría dañar algo!</b> <br> Si observa algún error en su sitio web "
|
232 |
+
"después de haber activado esta configuración, simplemente desactívela "
|
233 |
+
"nuevamente y su sitio volverá a la normalidad."
|
234 |
+
|
235 |
+
#: includes/classes/class.mac-cache-checker.php:84
|
236 |
+
msgid "Мinify And Combine cache size warning"
|
237 |
+
msgstr "Advertencia de tamaño Мinify And Combine en Cache"
|
238 |
+
|
239 |
+
#: includes/classes/class.mac-cache-checker.php:85
|
240 |
+
msgid ""
|
241 |
+
"Мinify And Combine's cache size is getting big, consider purging the cache. "
|
242 |
+
"Have a look at https://wordpress.org/plugins/ to see how you can keep the "
|
243 |
+
"cache size under control."
|
244 |
+
msgstr ""
|
245 |
+
"El tamaño del caché de Мinify And Combine está incrementándose, considere "
|
246 |
+
"purgar el caché. Busque en https://wordpress.org/plugins/ para ver cómo "
|
247 |
+
"puedes mantener el tamaño del caché bajo control."
|
248 |
+
|
249 |
+
#: includes/classes/class.mac-cache-checker.php:107
|
250 |
+
msgid ""
|
251 |
+
"<strong>Мinify And Combine's cache size is getting big</strong>, consider "
|
252 |
+
"purging the cache. Have a look at <a href=\"https://wordpress.org/plugins/\" "
|
253 |
+
"target=\"_blank\" rel=\"noopener noreferrer\">the Мinify And Combine FAQ</a> "
|
254 |
+
"to see how you can keep the cache size under control."
|
255 |
+
msgstr ""
|
256 |
+
"<strong>El tamaño del caché de Мinify And Combine está incrementándose</"
|
257 |
+
"strong>, considere purgar el caché. Vea cómo hacerlo: <a href=\"https://"
|
258 |
+
"wordpress.org/plugins/\" target=\"_blank\" rel=\"noopener noreferrer\">the "
|
259 |
+
"Мinify And Combine FAQ</a> para saber cómo mantener el tamaño de caché bajo "
|
260 |
+
"control."
|
261 |
+
|
262 |
+
#: includes/classes/class.mac-main.php:426
|
263 |
+
#, php-format
|
264 |
+
msgid ""
|
265 |
+
"Мinify And Combine cannot write to the cache directory (%s), please fix to "
|
266 |
+
"enable CSS/ JS optimization!"
|
267 |
+
msgstr ""
|
268 |
+
"Мinify And Combine no puede escribir en el directorio de caché (% s), "
|
269 |
+
"corríjalo para habilitar la optimización CSS / JS."
|
270 |
+
|
271 |
+
#: minify-and-combine.php:101
|
272 |
+
msgid "Webcraftic minify and combine"
|
273 |
+
msgstr "Webcraftic minify and combine"
|
components/minify-and-combine/minify-and-combine.php
CHANGED
@@ -1,98 +1,118 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
// Директория плагина
|
30 |
-
define('WMAC_PLUGIN_DIR', dirname(__FILE__));
|
31 |
-
|
|
|
32 |
// Относительный путь к плагину
|
33 |
-
define('WMAC_PLUGIN_BASE', plugin_basename(__FILE__));
|
34 |
-
|
|
|
35 |
// Ссылка к директории плагина
|
36 |
-
define('WMAC_PLUGIN_URL', plugins_url(null, __FILE__));
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
|
|
|
|
98 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Мinify And Combine
|
4 |
+
* Plugin URI: https://clearfy.pro/minify-and-combine/
|
5 |
+
* Description: Optimizes your website, concatenating the CSS and JavaScript code, and compressing it.
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.1
|
8 |
+
* Text Domain: minify-and-combine
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
+
|
14 |
+
/*
|
15 |
+
* #### CREDITS ####
|
16 |
+
* This plugin is based on the plugin Autoptimize by the author Frank Goossens, we have finalized this code for our project and our goals.
|
17 |
+
* Many thanks to Frank Goossens for the quality solution for optimizing scripts in Wordpress.
|
18 |
+
*
|
19 |
+
* Public License is a GPLv2 compatible license allowing you to change and use this version of the plugin for free.
|
20 |
+
*/
|
21 |
+
|
22 |
+
// Exit if accessed directly
|
23 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
+
exit;
|
25 |
+
}
|
26 |
+
|
27 |
+
if ( ! defined( 'WMAC_PLUGIN_VERSION' ) ) {
|
28 |
+
define( 'WMAC_PLUGIN_VERSION', '1.0.1' );
|
29 |
+
}
|
30 |
+
|
31 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
32 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
33 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
34 |
+
// --------------------------------------
|
35 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
36 |
+
return;
|
37 |
+
}
|
38 |
+
|
39 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
40 |
+
return;
|
41 |
+
}
|
42 |
+
// ----------------------------------------
|
43 |
+
|
44 |
+
if ( ! defined( 'WMAC_PLUGIN_DIR' ) ) {
|
45 |
// Директория плагина
|
46 |
+
define( 'WMAC_PLUGIN_DIR', dirname( __FILE__ ) );
|
47 |
+
}
|
48 |
+
if ( ! defined( 'WMAC_PLUGIN_BASE' ) ) {
|
49 |
// Относительный путь к плагину
|
50 |
+
define( 'WMAC_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
51 |
+
}
|
52 |
+
if ( ! defined( 'WMAC_PLUGIN_URL' ) ) {
|
53 |
// Ссылка к директории плагина
|
54 |
+
define( 'WMAC_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
55 |
+
}
|
56 |
+
|
57 |
+
|
58 |
+
|
59 |
+
if ( ! defined( 'LOADING_MINIFY_AND_COMBINE_AS_ADDON' ) ) {
|
60 |
+
require_once( WMAC_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
61 |
+
require_once( WMAC_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
62 |
+
}
|
63 |
+
|
64 |
+
$plugin_info = array(
|
65 |
+
'prefix' => 'wbcr_mac_', // префикс для базы данных и полей формы
|
66 |
+
'plugin_name' => 'wbcr_minify_and_combine', // имя плагина, как уникальный идентификатор
|
67 |
+
'plugin_title' => __( 'Webcraftic minify and combine', 'minify-and-combine' ), // заголовок плагина
|
68 |
+
'plugin_version' => WMAC_PLUGIN_VERSION, // текущая версия плагина
|
69 |
+
'plugin_build' => 'free', // сборка плагина
|
70 |
+
//'updates' => WMAC_PLUGIN_DIR . '/updates/' в этой папке хранятся миграции для разных версий плагина
|
71 |
+
);
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
75 |
+
*/
|
76 |
+
|
77 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
78 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
79 |
+
'plugin_already_activate' => defined( 'WMAC_PLUGIN_ACTIVE' ),
|
80 |
+
'plugin_as_component' => defined( 'LOADING_MINIFY_AND_COMBINE_AS_ADDON' ),
|
81 |
+
'plugin_dir' => WMAC_PLUGIN_DIR,
|
82 |
+
'plugin_base' => WMAC_PLUGIN_BASE,
|
83 |
+
'plugin_url' => WMAC_PLUGIN_URL,
|
84 |
+
'required_php_version' => '5.4',
|
85 |
+
'required_wp_version' => '4.2.0',
|
86 |
+
'required_clearfy_check_component' => true
|
87 |
+
) ) );
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
91 |
+
* а пользователь получит предупреждение.
|
92 |
+
*/
|
93 |
+
if ( ! $compatibility->check() ) {
|
94 |
+
return;
|
95 |
+
}
|
96 |
+
|
97 |
+
// Устанавливаем контстанту, что плагин уже используется
|
98 |
+
define( 'WMAC_PLUGIN_ACTIVE', true );
|
99 |
+
|
100 |
+
// Этот плагин может быть аддоном плагина Clearfy, если он загружен, как аддон, то мы не подключаем фреймворк,
|
101 |
+
// а наследуем функции фреймворка от плагина Clearfy. Если плагин скомпилирован, как отдельный плагин, то он использует собственный фреймворк для работы.
|
102 |
+
// Константа LOADING_MINIFY_AND_COMBINE_AS_ADDON утсанавливается в классе libs/factory/core/includes/Wbcr_Factory409_Plugin
|
103 |
+
|
104 |
+
if ( ! defined( 'LOADING_MINIFY_AND_COMBINE_AS_ADDON' ) ) {
|
105 |
+
// Фреймворк - отвечает за интерфейс, содержит общие функции для серии плагинов и готовые шаблоны для быстрого развертывания плагина.
|
106 |
+
require_once( WMAC_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
107 |
+
}
|
108 |
+
|
109 |
+
// Основной класс плагина
|
110 |
+
require_once( WMAC_PLUGIN_DIR . '/includes/class.plugin.php' );
|
111 |
+
|
112 |
+
// Класс WMAC_Plugin создается только, если этот плагин работает, как самостоятельный плагин.
|
113 |
+
// Если плагин работает, как аддон, то класс создается родительским плагином.
|
114 |
+
|
115 |
+
if ( ! defined( 'LOADING_MINIFY_AND_COMBINE_AS_ADDON' ) ) {
|
116 |
+
new WMAC_Plugin( __FILE__, $plugin_info );
|
117 |
+
}
|
118 |
|
components/updates-manager/admin/assets/css/general.css
CHANGED
@@ -1,155 +1,155 @@
|
|
1 |
-
/**
|
2 |
-
* General styles
|
3 |
-
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
-
* @copyright Alex Kovalev 23.08.2017
|
5 |
-
*/
|
6 |
-
#WBCR {
|
7 |
-
/* upm */
|
8 |
-
}
|
9 |
-
#WBCR .wp-list-table th,
|
10 |
-
#WBCR .wp-list-table .plugin-name {
|
11 |
-
font-size: 13px;
|
12 |
-
font-weight: 600;
|
13 |
-
}
|
14 |
-
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td {
|
15 |
-
background: #f9f2f0 !important;
|
16 |
-
}
|
17 |
-
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td .factory-buttons-way,
|
18 |
-
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td input[type="checkbox"] {
|
19 |
-
border-color: #fff;
|
20 |
-
background: #fff;
|
21 |
-
}
|
22 |
-
#WBCR .wp-list-table th.wbcr-upm-column-premium,
|
23 |
-
#WBCR .wp-list-table td.wbcr-upm-column-premium {
|
24 |
-
background: #f9f2f0 !important;
|
25 |
-
}
|
26 |
-
#WBCR .wp-list-table th.wbcr-upm-column-premium .factory-buttons-way,
|
27 |
-
#WBCR .wp-list-table td.wbcr-upm-column-premium .factory-buttons-way,
|
28 |
-
#WBCR .wp-list-table th.wbcr-upm-column-premium input[type="checkbox"],
|
29 |
-
#WBCR .wp-list-table td.wbcr-upm-column-premium input[type="checkbox"] {
|
30 |
-
border-color: #fff;
|
31 |
-
background: #fff;
|
32 |
-
}
|
33 |
-
#WBCR .wp-list-table .plugin-update-tr.active td,
|
34 |
-
#WBCR .wp-list-table.plugins .active th.check-column {
|
35 |
-
border-left: 4px solid #e6e6e6 !important;
|
36 |
-
padding-left: 8px !important;
|
37 |
-
}
|
38 |
-
#WBCR .wp-list-table.plugins .row-actions,
|
39 |
-
#WBCR .wp-list-table.plugins .second {
|
40 |
-
padding: 0 0 5px;
|
41 |
-
color: #949292;
|
42 |
-
}
|
43 |
-
#WBCR .wp-list-table.plugins .active td,
|
44 |
-
#WBCR .wp-list-table.plugins .active th {
|
45 |
-
background-color: #ffffff;
|
46 |
-
}
|
47 |
-
#WBCR .wp-list-table.plugins,
|
48 |
-
#WBCR .wp-list-table.plugins td,
|
49 |
-
#WBCR .wp-list-table.plugins th,
|
50 |
-
#WBCR .wp-list-table .row-actions .network_active,
|
51 |
-
#WBCR .wp-list-table .row-actions .network_only {
|
52 |
-
color: #777;
|
53 |
-
}
|
54 |
-
#WBCR .wp-list-table .widefat ol,
|
55 |
-
#WBCR .wp-list-table .widefat p,
|
56 |
-
#WBCR .wp-list-table .widefat tfoot tr td,
|
57 |
-
#WBCR .wp-list-table .widefat tfoot tr th,
|
58 |
-
#WBCR .wp-list-table .widefat thead tr td,
|
59 |
-
#WBCR .wp-list-table .widefat thead tr th,
|
60 |
-
#WBCR .wp-list-table .widefat ul {
|
61 |
-
color: #7d7d7d;
|
62 |
-
}
|
63 |
-
#WBCR .wp-list-table #disable_updates,
|
64 |
-
#WBCR .wp-list-table #disable_auto_updates,
|
65 |
-
#WBCR .wp-list-table #disable_translation_updates,
|
66 |
-
#WBCR .wp-list-table #hide_item {
|
67 |
-
width: 100px;
|
68 |
-
}
|
69 |
-
#WBCR .column-flags .factory-checkbox {
|
70 |
-
display: inline-flex;
|
71 |
-
}
|
72 |
-
#WBCR .wp-list-table.autoupdate th {
|
73 |
-
white-space: normal !important;
|
74 |
-
}
|
75 |
-
#WBCR .wp-list-table.autoupdate .plugin-title {
|
76 |
-
white-space: normal !important;
|
77 |
-
}
|
78 |
-
#WBCR .wp-list-table__plugins .plugin-title {
|
79 |
-
max-width: 12rem;
|
80 |
-
}
|
81 |
-
#WBCR .wbcr-upm-group-header-pro {
|
82 |
-
position: relative;
|
83 |
-
display: inline-block;
|
84 |
-
}
|
85 |
-
#WBCR .wbcr-upm-group-header-pro:after {
|
86 |
-
display: inline-block;
|
87 |
-
position: relative;
|
88 |
-
content: 'PRO';
|
89 |
-
background: #ff5722;
|
90 |
-
border-radius: 4px;
|
91 |
-
color: #fff;
|
92 |
-
font-size: 10px;
|
93 |
-
line-height: 1;
|
94 |
-
font-style: normal;
|
95 |
-
padding: 4px 6px;
|
96 |
-
margin-left: 4px;
|
97 |
-
vertical-align: top;
|
98 |
-
top: 0;
|
99 |
-
left: auto;
|
100 |
-
right: 0;
|
101 |
-
z-index: 11;
|
102 |
-
}
|
103 |
-
#WBCR #disable_translation_updates,
|
104 |
-
#WBCR #hide_item {
|
105 |
-
position: relative;
|
106 |
-
}
|
107 |
-
#WBCR #disable_translation_updates.wbcr-upm-column-pro:after,
|
108 |
-
#WBCR #hide_item.wbcr-upm-column-pro:after {
|
109 |
-
display: inline-block;
|
110 |
-
position: absolute;
|
111 |
-
content: 'PRO';
|
112 |
-
background: #ff5722;
|
113 |
-
border-radius: 4px;
|
114 |
-
color: #fff;
|
115 |
-
font-size: 10px;
|
116 |
-
line-height: 1;
|
117 |
-
font-style: normal;
|
118 |
-
padding: 4px 6px;
|
119 |
-
margin-left: 4px;
|
120 |
-
vertical-align: top;
|
121 |
-
top: -10px;
|
122 |
-
left: auto;
|
123 |
-
right: 0;
|
124 |
-
z-index: 11;
|
125 |
-
}
|
126 |
-
#WBCR .factory-checkbox.wbcr-upm-icon-pro:after {
|
127 |
-
display: inline-block;
|
128 |
-
position: relative;
|
129 |
-
content: 'PRO';
|
130 |
-
background: #ff5722;
|
131 |
-
border-radius: 4px;
|
132 |
-
color: #fff;
|
133 |
-
font-size: 10px;
|
134 |
-
line-height: 1;
|
135 |
-
font-style: normal;
|
136 |
-
padding: 4px 6px;
|
137 |
-
margin-left: 4px;
|
138 |
-
vertical-align: top;
|
139 |
-
top: -8px;
|
140 |
-
left: -10px;
|
141 |
-
right: auto;
|
142 |
-
z-index: 11;
|
143 |
-
}
|
144 |
-
#WBCR .wp-list-table.autoupdate .check-column {
|
145 |
-
padding: 10px 9px;
|
146 |
-
}
|
147 |
-
.factory-checkbox-disabled input,
|
148 |
-
.factory-checkbox-disabled button {
|
149 |
-
pointer-events: none;
|
150 |
-
cursor: not-allowed;
|
151 |
-
opacity: .65;
|
152 |
-
filter: alpha(opacity=65);
|
153 |
-
-webkit-box-shadow: none;
|
154 |
-
box-shadow: none;
|
155 |
-
}
|
1 |
+
/**
|
2 |
+
* General styles
|
3 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
+
* @copyright Alex Kovalev 23.08.2017
|
5 |
+
*/
|
6 |
+
#WBCR {
|
7 |
+
/* upm */
|
8 |
+
}
|
9 |
+
#WBCR .wp-list-table th,
|
10 |
+
#WBCR .wp-list-table .plugin-name {
|
11 |
+
font-size: 13px;
|
12 |
+
font-weight: 600;
|
13 |
+
}
|
14 |
+
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td {
|
15 |
+
background: #f9f2f0 !important;
|
16 |
+
}
|
17 |
+
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td .factory-buttons-way,
|
18 |
+
#WBCR .wp-list-table.wbcr-upm-list-table-pro.wbcr-upm-column-premium td input[type="checkbox"] {
|
19 |
+
border-color: #fff;
|
20 |
+
background: #fff;
|
21 |
+
}
|
22 |
+
#WBCR .wp-list-table th.wbcr-upm-column-premium,
|
23 |
+
#WBCR .wp-list-table td.wbcr-upm-column-premium {
|
24 |
+
background: #f9f2f0 !important;
|
25 |
+
}
|
26 |
+
#WBCR .wp-list-table th.wbcr-upm-column-premium .factory-buttons-way,
|
27 |
+
#WBCR .wp-list-table td.wbcr-upm-column-premium .factory-buttons-way,
|
28 |
+
#WBCR .wp-list-table th.wbcr-upm-column-premium input[type="checkbox"],
|
29 |
+
#WBCR .wp-list-table td.wbcr-upm-column-premium input[type="checkbox"] {
|
30 |
+
border-color: #fff;
|
31 |
+
background: #fff;
|
32 |
+
}
|
33 |
+
#WBCR .wp-list-table .plugin-update-tr.active td,
|
34 |
+
#WBCR .wp-list-table.plugins .active th.check-column {
|
35 |
+
border-left: 4px solid #e6e6e6 !important;
|
36 |
+
padding-left: 8px !important;
|
37 |
+
}
|
38 |
+
#WBCR .wp-list-table.plugins .row-actions,
|
39 |
+
#WBCR .wp-list-table.plugins .second {
|
40 |
+
padding: 0 0 5px;
|
41 |
+
color: #949292;
|
42 |
+
}
|
43 |
+
#WBCR .wp-list-table.plugins .active td,
|
44 |
+
#WBCR .wp-list-table.plugins .active th {
|
45 |
+
background-color: #ffffff;
|
46 |
+
}
|
47 |
+
#WBCR .wp-list-table.plugins,
|
48 |
+
#WBCR .wp-list-table.plugins td,
|
49 |
+
#WBCR .wp-list-table.plugins th,
|
50 |
+
#WBCR .wp-list-table .row-actions .network_active,
|
51 |
+
#WBCR .wp-list-table .row-actions .network_only {
|
52 |
+
color: #777;
|
53 |
+
}
|
54 |
+
#WBCR .wp-list-table .widefat ol,
|
55 |
+
#WBCR .wp-list-table .widefat p,
|
56 |
+
#WBCR .wp-list-table .widefat tfoot tr td,
|
57 |
+
#WBCR .wp-list-table .widefat tfoot tr th,
|
58 |
+
#WBCR .wp-list-table .widefat thead tr td,
|
59 |
+
#WBCR .wp-list-table .widefat thead tr th,
|
60 |
+
#WBCR .wp-list-table .widefat ul {
|
61 |
+
color: #7d7d7d;
|
62 |
+
}
|
63 |
+
#WBCR .wp-list-table #disable_updates,
|
64 |
+
#WBCR .wp-list-table #disable_auto_updates,
|
65 |
+
#WBCR .wp-list-table #disable_translation_updates,
|
66 |
+
#WBCR .wp-list-table #hide_item {
|
67 |
+
width: 100px;
|
68 |
+
}
|
69 |
+
#WBCR .column-flags .factory-checkbox {
|
70 |
+
display: inline-flex;
|
71 |
+
}
|
72 |
+
#WBCR .wp-list-table.autoupdate th {
|
73 |
+
white-space: normal !important;
|
74 |
+
}
|
75 |
+
#WBCR .wp-list-table.autoupdate .plugin-title {
|
76 |
+
white-space: normal !important;
|
77 |
+
}
|
78 |
+
#WBCR .wp-list-table__plugins .plugin-title {
|
79 |
+
max-width: 12rem;
|
80 |
+
}
|
81 |
+
#WBCR .wbcr-upm-group-header-pro {
|
82 |
+
position: relative;
|
83 |
+
display: inline-block;
|
84 |
+
}
|
85 |
+
#WBCR .wbcr-upm-group-header-pro:after {
|
86 |
+
display: inline-block;
|
87 |
+
position: relative;
|
88 |
+
content: 'PRO';
|
89 |
+
background: #ff5722;
|
90 |
+
border-radius: 4px;
|
91 |
+
color: #fff;
|
92 |
+
font-size: 10px;
|
93 |
+
line-height: 1;
|
94 |
+
font-style: normal;
|
95 |
+
padding: 4px 6px;
|
96 |
+
margin-left: 4px;
|
97 |
+
vertical-align: top;
|
98 |
+
top: 0;
|
99 |
+
left: auto;
|
100 |
+
right: 0;
|
101 |
+
z-index: 11;
|
102 |
+
}
|
103 |
+
#WBCR #disable_translation_updates,
|
104 |
+
#WBCR #hide_item {
|
105 |
+
position: relative;
|
106 |
+
}
|
107 |
+
#WBCR #disable_translation_updates.wbcr-upm-column-pro:after,
|
108 |
+
#WBCR #hide_item.wbcr-upm-column-pro:after {
|
109 |
+
display: inline-block;
|
110 |
+
position: absolute;
|
111 |
+
content: 'PRO';
|
112 |
+
background: #ff5722;
|
113 |
+
border-radius: 4px;
|
114 |
+
color: #fff;
|
115 |
+
font-size: 10px;
|
116 |
+
line-height: 1;
|
117 |
+
font-style: normal;
|
118 |
+
padding: 4px 6px;
|
119 |
+
margin-left: 4px;
|
120 |
+
vertical-align: top;
|
121 |
+
top: -10px;
|
122 |
+
left: auto;
|
123 |
+
right: 0;
|
124 |
+
z-index: 11;
|
125 |
+
}
|
126 |
+
#WBCR .factory-checkbox.wbcr-upm-icon-pro:after {
|
127 |
+
display: inline-block;
|
128 |
+
position: relative;
|
129 |
+
content: 'PRO';
|
130 |
+
background: #ff5722;
|
131 |
+
border-radius: 4px;
|
132 |
+
color: #fff;
|
133 |
+
font-size: 10px;
|
134 |
+
line-height: 1;
|
135 |
+
font-style: normal;
|
136 |
+
padding: 4px 6px;
|
137 |
+
margin-left: 4px;
|
138 |
+
vertical-align: top;
|
139 |
+
top: -8px;
|
140 |
+
left: -10px;
|
141 |
+
right: auto;
|
142 |
+
z-index: 11;
|
143 |
+
}
|
144 |
+
#WBCR .wp-list-table.autoupdate .check-column {
|
145 |
+
padding: 10px 9px;
|
146 |
+
}
|
147 |
+
.factory-checkbox-disabled input,
|
148 |
+
.factory-checkbox-disabled button {
|
149 |
+
pointer-events: none;
|
150 |
+
cursor: not-allowed;
|
151 |
+
opacity: .65;
|
152 |
+
filter: alpha(opacity=65);
|
153 |
+
-webkit-box-shadow: none;
|
154 |
+
box-shadow: none;
|
155 |
+
}
|
components/updates-manager/admin/assets/css/themes.css
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
-
/* update manager button */
|
2 |
-
/*#wpbody .search-form:not(.hide-placeholder):before {
|
3 |
-
display: inline-block;
|
4 |
-
content: 'Update manager';
|
5 |
-
margin-left: 4px;
|
6 |
-
padding: 4px 8px;
|
7 |
-
position: relative;
|
8 |
-
top: -3px;
|
9 |
-
text-decoration: none;
|
10 |
-
border: 1px solid #ccc;
|
11 |
-
border-radius: 2px;
|
12 |
-
background: #f7f7f7;
|
13 |
-
text-shadow: none;
|
14 |
-
font-weight: 600;
|
15 |
-
font-size: 13px;
|
16 |
-
line-height: normal;
|
17 |
-
color: #0073aa;
|
18 |
-
cursor: pointer;
|
19 |
-
outline: 0;
|
20 |
-
}*/
|
1 |
+
/* update manager button */
|
2 |
+
/*#wpbody .search-form:not(.hide-placeholder):before {
|
3 |
+
display: inline-block;
|
4 |
+
content: 'Update manager';
|
5 |
+
margin-left: 4px;
|
6 |
+
padding: 4px 8px;
|
7 |
+
position: relative;
|
8 |
+
top: -3px;
|
9 |
+
text-decoration: none;
|
10 |
+
border: 1px solid #ccc;
|
11 |
+
border-radius: 2px;
|
12 |
+
background: #f7f7f7;
|
13 |
+
text-shadow: none;
|
14 |
+
font-weight: 600;
|
15 |
+
font-size: 13px;
|
16 |
+
line-height: normal;
|
17 |
+
color: #0073aa;
|
18 |
+
cursor: pointer;
|
19 |
+
outline: 0;
|
20 |
+
}*/
|
components/updates-manager/includes/classes/class.configurate-updates.php
CHANGED
@@ -1,339 +1,382 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* This class configures the parameters seo
|
5 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
-
* @copyright (c) 2017 Webraftic Ltd
|
7 |
-
* @version 1.0
|
8 |
-
*/
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
public function registerActionsAndFilters()
|
20 |
-
{
|
21 |
-
/**
|
22 |
-
* Plugin updates
|
23 |
-
*/
|
24 |
-
$plugins_update = $this->getPopulateOption('plugin_updates');
|
25 |
-
|
26 |
-
switch( $this->getPopulateOption('plugin_updates') ) {
|
27 |
-
case 'disable_plugin_updates':
|
28 |
-
// and disable version check
|
29 |
-
add_filter('site_transient_update_plugins', array($this, 'lastCheckedNow'), 50);
|
30 |
-
add_action('admin_init', array($this, 'adminInitForPlugins'));
|
31 |
-
add_filter('auto_update_plugin', '__return_false');
|
32 |
-
break;
|
33 |
-
case 'enable_plugin_auto_updates':
|
34 |
-
// exclude some plugins in update list
|
35 |
-
add_filter('auto_update_plugin', array($this, 'pluginsAutoUpdate'), 50, 2);
|
36 |
-
break;
|
37 |
-
}
|
38 |
|
39 |
-
|
40 |
-
add_filter('site_transient_update_plugins', array($this, 'disablePluginNotifications'), 50);
|
41 |
-
add_filter('http_request_args', array($this, 'httpRequestArgsRemovePlugins'), 5, 2);
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Theme updates
|
46 |
-
*/
|
47 |
-
switch( $this->getPopulateOption('theme_updates') ) {
|
48 |
-
case 'disable_theme_updates':
|
49 |
-
add_filter('site_transient_update_themes', array($this, 'lastCheckedNow'), 50);
|
50 |
-
add_action('admin_init', array($this, 'adminInitForThemes'));
|
51 |
-
add_filter('auto_update_theme', '__return_false');
|
52 |
-
break;
|
53 |
-
case 'enable_theme_auto_updates':
|
54 |
-
add_filter('auto_update_theme', '__return_true', 1);
|
55 |
-
break;
|
56 |
-
}
|
57 |
|
58 |
-
|
59 |
-
* disable wp default translation update
|
60 |
-
*/
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
switch( $this->getPopulateOption('wp_update_core') ) {
|
71 |
-
case 'disable_core_updates':
|
72 |
-
$this->disableAllCoreUpdates();
|
73 |
-
break;
|
74 |
-
case 'disable_core_auto_updates':
|
75 |
-
add_filter('allow_major_auto_core_updates', '__return_false');
|
76 |
-
add_filter('allow_dev_auto_core_updates', '__return_false');
|
77 |
-
add_filter('allow_minor_auto_core_updates', '__return_false');
|
78 |
-
break;
|
79 |
-
case 'major':
|
80 |
-
add_filter('allow_major_auto_core_updates', '__return_true');
|
81 |
-
break;
|
82 |
-
case 'development':
|
83 |
-
add_filter('allow_dev_auto_core_updates', '__return_true');
|
84 |
-
break;
|
85 |
-
default:
|
86 |
-
add_filter('allow_minor_auto_core_updates', '__return_true');
|
87 |
-
break;
|
88 |
-
}
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
if( $this->getPopulateOption('updates_nags_only_for_admin') && !current_user_can('update_core') ) {
|
101 |
-
remove_action('admin_notices', 'update_nag', 3);
|
102 |
-
}
|
103 |
|
104 |
-
|
|
|
105 |
}
|
106 |
|
107 |
/**
|
108 |
-
*
|
109 |
-
* @param $event
|
110 |
-
* @return bool
|
111 |
*/
|
112 |
-
public function filterCronEvents($event)
|
113 |
-
{
|
114 |
-
$core_updates = $this->getPopulateOption('wp_update_core') == 'disable_core_updates';
|
115 |
-
//$plugins_updates = $this->getPopulateOption('plugin_updates') == 'disable_plugin_updates';
|
116 |
-
$themes_updates = $this->getPopulateOption('theme_updates') == 'disable_theme_updates';
|
117 |
-
|
118 |
-
if( !is_object($event) || empty($event->hook) ) {
|
119 |
-
return $event;
|
120 |
-
}
|
121 |
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
|
135 |
-
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
|
138 |
/**
|
139 |
-
*
|
140 |
-
*
|
141 |
-
* @param bool $update Whether the item has automatic updates enabled
|
142 |
-
* @param object $item Object holding the asset to be updated
|
143 |
-
* @return bool True of automatic updates enabled, false if not
|
144 |
*/
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
$actual_slug = array_shift($slug_parts);
|
149 |
|
150 |
-
|
151 |
-
|
152 |
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
-
|
|
|
160 |
}
|
161 |
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
|
|
|
|
|
|
|
|
173 |
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
-
|
177 |
-
|
178 |
-
|
|
|
|
|
179 |
|
180 |
-
|
|
|
181 |
|
182 |
-
|
183 |
-
|
184 |
-
|
|
|
|
|
|
|
185 |
}
|
|
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
return $plugins;
|
188 |
}
|
189 |
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
return $r;
|
201 |
}
|
|
|
|
|
|
|
|
|
202 |
|
203 |
-
|
204 |
-
|
205 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
$actual_slug = array_shift($slug_parts);
|
211 |
|
212 |
-
|
|
|
|
|
|
|
213 |
|
214 |
-
|
215 |
-
unset($r_plugins['plugins'][$slug]);
|
216 |
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
|
|
|
|
221 |
}
|
222 |
}
|
223 |
}
|
224 |
-
$r['body']['plugins'] = json_encode($r_plugins);
|
225 |
}
|
226 |
-
|
227 |
-
return $r;
|
228 |
}
|
229 |
|
|
|
|
|
230 |
|
231 |
-
public function disableAllCoreUpdates()
|
232 |
-
{
|
233 |
-
add_action('admin_init', array($this, 'adminInitForCore'));
|
234 |
-
add_action('admin_init', array($this, 'disableUpdateNag'));
|
235 |
-
|
236 |
-
/*
|
237 |
-
* Disable All Automatic Updates
|
238 |
-
* 3.7+
|
239 |
-
*
|
240 |
-
* @author sLa NGjI's @ slangji.wordpress.com
|
241 |
-
*/
|
242 |
-
add_filter('automatic_updater_disabled', '__return_true');
|
243 |
-
add_filter('allow_minor_auto_core_updates', '__return_false');
|
244 |
-
add_filter('allow_major_auto_core_updates', '__return_false');
|
245 |
-
add_filter('allow_dev_auto_core_updates', '__return_false');
|
246 |
-
add_filter('auto_update_core', '__return_false');
|
247 |
-
add_filter('wp_auto_update_core', '__return_false');
|
248 |
-
add_filter('auto_core_update_send_email', '__return_false');
|
249 |
-
add_filter('send_core_update_notification_email', '__return_false');
|
250 |
-
add_filter('automatic_updates_send_debug_email', '__return_false');
|
251 |
-
add_filter('automatic_updates_is_vcs_checkout', '__return_true');
|
252 |
-
}
|
253 |
|
254 |
-
|
255 |
-
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
*/
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
|
265 |
-
|
266 |
-
|
267 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
*/
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
* 3.0
|
282 |
-
*/
|
283 |
-
remove_action('load-update-core.php', 'wp_update_plugins');
|
284 |
-
wp_clear_scheduled_hook('wp_update_plugins');
|
285 |
-
}
|
286 |
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
}
|
304 |
|
305 |
-
|
306 |
-
|
307 |
-
|
|
|
|
|
|
|
|
|
|
|
308 |
*/
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
|
322 |
-
remove_action('admin_init', 'wp_maybe_auto_update');
|
323 |
-
remove_action('admin_init', 'wp_auto_update_core');
|
324 |
-
wp_clear_scheduled_hook('wp_maybe_auto_update');
|
325 |
-
}
|
326 |
|
327 |
-
|
328 |
-
|
329 |
-
global $wp_version;
|
330 |
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
|
|
|
|
|
|
336 |
|
337 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
}
|
339 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
+
/**
|
4 |
+
* This class configures the parameters seo
|
5 |
+
*
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* @copyright (c) 2017 Webraftic Ltd
|
8 |
+
* @version 1.0
|
9 |
+
*/
|
10 |
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
require_once WUPM_PLUGIN_DIR . '/admin/includes/class.plugin-filters.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
+
class WUPM_ConfigUpdates extends Wbcr_FactoryClearfy206_Configurate {
|
|
|
|
|
19 |
|
20 |
+
public function registerActionsAndFilters() {
|
21 |
+
/**
|
22 |
+
* Plugin updates
|
23 |
+
*/
|
24 |
+
$plugins_update = $this->getPopulateOption( 'plugin_updates' );
|
25 |
+
|
26 |
+
switch ( $this->getPopulateOption( 'plugin_updates' ) ) {
|
27 |
+
case 'disable_plugin_updates':
|
28 |
+
// and disable version check
|
29 |
+
add_filter( 'site_transient_update_plugins', [ $this, 'lastCheckedNow' ], 50 );
|
30 |
+
add_action( 'admin_init', [ $this, 'adminInitForPlugins' ] );
|
31 |
+
add_filter( 'auto_update_plugin', '__return_false' );
|
32 |
+
break;
|
33 |
+
case 'enable_plugin_auto_updates':
|
34 |
+
// exclude some plugins in update list
|
35 |
+
add_filter( 'auto_update_plugin', [ $this, 'pluginsAutoUpdate' ], 50, 2 );
|
36 |
+
break;
|
37 |
+
}
|
38 |
|
39 |
+
if ( $plugins_update != 'disable_plugin_updates' ) {
|
40 |
+
add_filter( 'site_transient_update_plugins', [ $this, 'disablePluginNotifications' ], 50 );
|
41 |
+
add_filter( 'http_request_args', [ $this, 'httpRequestArgsRemovePlugins' ], 5, 2 );
|
42 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
+
/**
|
45 |
+
* Theme updates
|
46 |
+
*/
|
47 |
+
switch ( $this->getPopulateOption( 'theme_updates' ) ) {
|
48 |
+
case 'disable_theme_updates':
|
49 |
+
add_filter( 'site_transient_update_themes', [ $this, 'lastCheckedNow' ], 50 );
|
50 |
+
add_action( 'admin_init', [ $this, 'adminInitForThemes' ] );
|
51 |
+
add_filter( 'auto_update_theme', '__return_false' );
|
52 |
+
break;
|
53 |
+
case 'enable_theme_auto_updates':
|
54 |
+
add_filter( 'auto_update_theme', '__return_true', 1 );
|
55 |
+
break;
|
56 |
+
}
|
57 |
|
58 |
+
/**
|
59 |
+
* disable wp default translation update
|
60 |
+
*/
|
|
|
|
|
|
|
61 |
|
62 |
+
if ( $this->getPopulateOption( 'auto_tran_update' ) ) {
|
63 |
+
add_filter( 'auto_update_translation', '__return_false', 1 );
|
64 |
}
|
65 |
|
66 |
/**
|
67 |
+
* control WP Auto core update
|
|
|
|
|
68 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
+
switch ( $this->getPopulateOption( 'wp_update_core' ) ) {
|
71 |
+
case 'disable_core_updates':
|
72 |
+
$this->disableAllCoreUpdates();
|
73 |
+
break;
|
74 |
+
case 'disable_core_auto_updates':
|
75 |
+
add_filter( 'allow_major_auto_core_updates', '__return_false' );
|
76 |
+
add_filter( 'allow_dev_auto_core_updates', '__return_false' );
|
77 |
+
add_filter( 'allow_minor_auto_core_updates', '__return_false' );
|
78 |
+
break;
|
79 |
+
case 'major':
|
80 |
+
add_filter( 'allow_major_auto_core_updates', '__return_true' );
|
81 |
+
break;
|
82 |
+
case 'development':
|
83 |
+
add_filter( 'allow_dev_auto_core_updates', '__return_true' );
|
84 |
+
break;
|
85 |
+
default:
|
86 |
+
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
|
87 |
+
break;
|
88 |
+
}
|
89 |
|
90 |
+
/**
|
91 |
+
* disable wp default translation update
|
92 |
+
*/
|
93 |
+
if ( $this->getPopulateOption( 'enable_update_vcs' ) ) {
|
94 |
+
add_filter( 'automatic_updates_is_vcs_checkout', '__return_false', 1 );
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
+
* disable updates nags for all users except admin
|
|
|
|
|
|
|
|
|
99 |
*/
|
100 |
+
if ( $this->getPopulateOption( 'updates_nags_only_for_admin' ) && ! current_user_can( 'update_core' ) ) {
|
101 |
+
remove_action( 'admin_notices', 'update_nag', 3 );
|
102 |
+
}
|
|
|
103 |
|
104 |
+
add_action( 'schedule_event', [ $this, 'filterCronEvents' ] );
|
105 |
+
}
|
106 |
|
107 |
+
/**
|
108 |
+
* Filter cron events
|
109 |
+
*
|
110 |
+
* @param $event
|
111 |
+
*
|
112 |
+
* @return bool
|
113 |
+
*/
|
114 |
+
public function filterCronEvents( $event ) {
|
115 |
+
$core_updates = $this->getPopulateOption( 'wp_update_core' ) == 'disable_core_updates';
|
116 |
+
//$plugins_updates = $this->getPopulateOption('plugin_updates') == 'disable_plugin_updates';
|
117 |
+
$themes_updates = $this->getPopulateOption( 'theme_updates' ) == 'disable_theme_updates';
|
118 |
|
119 |
+
if ( ! is_object( $event ) || empty( $event->hook ) ) {
|
120 |
+
return $event;
|
121 |
}
|
122 |
|
123 |
+
switch ( $event->hook ) {
|
124 |
+
case 'wp_version_check':
|
125 |
+
$event = $core_updates ? false : $event;
|
126 |
+
break;
|
127 |
+
|
128 |
+
case 'wp_update_themes':
|
129 |
+
$event = $themes_updates ? false : $event;
|
130 |
+
break;
|
131 |
+
case 'wp_maybe_auto_update':
|
132 |
+
$event = $core_updates ? false : $event;
|
133 |
+
break;
|
134 |
+
}
|
135 |
+
|
136 |
+
return $event;
|
137 |
+
}
|
138 |
|
139 |
+
/**
|
140 |
+
* Enables plugin automatic updates on an individual basis.
|
141 |
+
*
|
142 |
+
* @param bool $update Whether the item has automatic updates enabled
|
143 |
+
* @param object $item Object holding the asset to be updated
|
144 |
+
*
|
145 |
+
* @return bool True of automatic updates enabled, false if not
|
146 |
+
*/
|
147 |
+
public function pluginsAutoUpdate( $update, $item ) {
|
148 |
|
149 |
+
// Fix php warnings UM-29:
|
150 |
+
// Some users submit reports on php notifications "Undefined property: stdClass::$plugin"
|
151 |
+
if ( ! is_object( $item ) || ! isset( $item->plugin ) ) {
|
152 |
+
return false;
|
153 |
+
}
|
154 |
|
155 |
+
$slug_parts = explode( '/', $item->plugin );
|
156 |
+
$actual_slug = array_shift( $slug_parts );
|
157 |
|
158 |
+
$pluginFilters = new WUPM_PluginFilters( $this->plugin );
|
159 |
+
$filters = $pluginFilters->getFilters( [ $actual_slug ] );
|
160 |
+
|
161 |
+
if ( ! empty( $filters ) ) {
|
162 |
+
if ( isset( $filters['disable_auto_updates'][ $actual_slug ] ) and $filters['disable_auto_updates'][ $actual_slug ] ) {
|
163 |
+
return false;
|
164 |
}
|
165 |
+
}
|
166 |
|
167 |
+
return true;
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Disables plugin updates on an individual basis.
|
172 |
+
*
|
173 |
+
* @param object $plugins Plugins that may have update notifications
|
174 |
+
*
|
175 |
+
* @return object Updated plugins list with updates
|
176 |
+
*/
|
177 |
+
public function disablePluginNotifications( $plugins ) {
|
178 |
+
if ( ! isset( $plugins->response ) || empty( $plugins->response ) ) {
|
179 |
return $plugins;
|
180 |
}
|
181 |
|
182 |
+
$pluginFilters = new WUPM_PluginFilters( $this->plugin );
|
183 |
+
|
184 |
+
foreach ( (array) $plugins->response as $slug => $plugin ) {
|
185 |
+
$slug_parts = explode( '/', $slug );
|
186 |
+
$actual_slug = array_shift( $slug_parts );
|
187 |
+
|
188 |
+
$filters = $pluginFilters->getPlugins( [ $actual_slug ] );
|
189 |
+
|
190 |
+
if ( isset( $filters['disable_updates'][ $actual_slug ] ) && $filters['disable_updates'][ $actual_slug ] ) {
|
191 |
+
unset( $plugins->response[ $slug ] );
|
|
|
192 |
}
|
193 |
+
}
|
194 |
+
|
195 |
+
return $plugins;
|
196 |
+
}
|
197 |
|
198 |
+
/**
|
199 |
+
* Disables plugin http requests on an individual basis.
|
200 |
+
*
|
201 |
+
* @param array $r Request array
|
202 |
+
* @param string $url URL requested
|
203 |
+
*
|
204 |
+
* @return array Updated Request array
|
205 |
+
*/
|
206 |
+
public function httpRequestArgsRemovePlugins( $r, $url ) {
|
207 |
+
if ( ! is_string( $url ) || 0 !== strpos( $url, 'https://api.wordpress.org/plugins/update-check/1.1/' ) ) {
|
208 |
+
return $r;
|
209 |
+
}
|
210 |
|
211 |
+
if ( isset( $r['body']['plugins'] ) ) {
|
212 |
+
$r_plugins = json_decode( $r['body']['plugins'], true );
|
213 |
+
$pluginFilters = new WUPM_PluginFilters( $this->plugin );
|
|
|
214 |
|
215 |
+
if ( isset( $r_plugins['plugins'] ) && ! empty( $r_plugins['plugins'] ) ) {
|
216 |
+
foreach ( $r_plugins['plugins'] as $slug => $plugin ) {
|
217 |
+
$slug_parts = explode( '/', $slug );
|
218 |
+
$actual_slug = array_shift( $slug_parts );
|
219 |
|
220 |
+
$filters = $pluginFilters->getPlugins( [ $actual_slug ] );
|
|
|
221 |
|
222 |
+
if ( isset( $filters['disable_updates'][ $actual_slug ] ) and $filters['disable_updates'][ $actual_slug ] ) {
|
223 |
+
unset( $r_plugins['plugins'][ $slug ] );
|
224 |
+
|
225 |
+
if ( false !== $key = array_search( $slug, $r_plugins['active'] ) ) {
|
226 |
+
unset( $r_plugins['active'][ $key ] );
|
227 |
+
$r_plugins['active'] = array_values( $r_plugins['active'] );
|
228 |
}
|
229 |
}
|
230 |
}
|
|
|
231 |
}
|
232 |
+
$r['body']['plugins'] = json_encode( $r_plugins );
|
|
|
233 |
}
|
234 |
|
235 |
+
return $r;
|
236 |
+
}
|
237 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
|
239 |
+
public function disableAllCoreUpdates() {
|
240 |
+
add_action( 'admin_init', [ $this, 'adminInitForCore' ] );
|
241 |
+
add_action( 'admin_init', [ $this, 'disableUpdateNag' ] );
|
242 |
+
|
243 |
+
/*
|
244 |
+
* Disable All Automatic Updates
|
245 |
+
* 3.7+
|
246 |
+
*
|
247 |
+
* @author sLa NGjI's @ slangji.wordpress.com
|
248 |
*/
|
249 |
+
add_filter( 'automatic_updater_disabled', '__return_true' );
|
250 |
+
add_filter( 'allow_minor_auto_core_updates', '__return_false' );
|
251 |
+
add_filter( 'allow_major_auto_core_updates', '__return_false' );
|
252 |
+
add_filter( 'allow_dev_auto_core_updates', '__return_false' );
|
253 |
+
add_filter( 'auto_update_core', '__return_false' );
|
254 |
+
add_filter( 'wp_auto_update_core', '__return_false' );
|
255 |
+
add_filter( 'auto_core_update_send_email', '__return_false' );
|
256 |
+
add_filter( 'send_core_update_notification_email', '__return_false' );
|
257 |
+
add_filter( 'automatic_updates_send_debug_email', '__return_false' );
|
258 |
+
add_filter( 'automatic_updates_is_vcs_checkout', '__return_true' );
|
259 |
+
|
260 |
+
// change update nag
|
261 |
+
add_filter( 'wp_get_update_data', [ $this, 'updateCounter' ], 10, 2 );
|
262 |
+
add_filter( 'site_transient_update_core', [ $this, 'hideCoreUpdateForm' ], 10, 2 );
|
263 |
+
}
|
264 |
|
265 |
+
/**
|
266 |
+
* callback for action "admin_init"
|
267 |
+
* remove update nag in admin pages
|
268 |
+
*/
|
269 |
+
function disableUpdateNag() {
|
270 |
+
remove_action( 'admin_notices', 'update_nag', 3 );
|
271 |
+
remove_action( 'admin_notices', 'maintenance_nag' );
|
272 |
+
remove_action( 'network_admin_notices', 'update_nag', 3 );
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Initialize and load the plugin stuff
|
277 |
+
*
|
278 |
+
* @author scripts@schloebe.de
|
279 |
+
*/
|
280 |
+
function adminInitForPlugins() {
|
281 |
+
/*
|
282 |
+
* 2.8 to 3.0
|
283 |
*/
|
284 |
+
remove_action( 'load-plugins.php', 'wp_update_plugins' );
|
285 |
+
remove_action( 'load-update.php', 'wp_update_plugins' );
|
286 |
+
remove_action( 'admin_init', '_maybe_update_plugins' );
|
287 |
+
remove_action( 'wp_update_plugins', 'wp_update_plugins' );
|
288 |
+
wp_clear_scheduled_hook( 'wp_update_plugins' );
|
289 |
+
|
290 |
+
/*
|
291 |
+
* 3.0
|
292 |
+
*/
|
293 |
+
remove_action( 'load-update-core.php', 'wp_update_plugins' );
|
294 |
+
wp_clear_scheduled_hook( 'wp_update_plugins' );
|
295 |
+
}
|
|
|
|
|
|
|
|
|
|
|
296 |
|
297 |
+
function adminInitForThemes() {
|
298 |
+
/*
|
299 |
+
* 2.8 to 3.0
|
300 |
+
*/
|
301 |
+
remove_action( 'load-themes.php', 'wp_update_themes' );
|
302 |
+
remove_action( 'load-update.php', 'wp_update_themes' );
|
303 |
+
remove_action( 'admin_init', '_maybe_update_themes' );
|
304 |
+
remove_action( 'wp_update_themes', 'wp_update_themes' );
|
305 |
+
wp_clear_scheduled_hook( 'wp_update_themes' );
|
306 |
+
|
307 |
+
/*
|
308 |
+
* 3.0
|
309 |
+
*/
|
310 |
+
remove_action( 'load-update-core.php', 'wp_update_themes' );
|
311 |
+
wp_clear_scheduled_hook( 'wp_update_themes' );
|
312 |
+
}
|
|
|
313 |
|
314 |
+
/**
|
315 |
+
* Initialize and load the plugin stuff
|
316 |
+
*
|
317 |
+
* @author scripts@schloebe.de
|
318 |
+
*/
|
319 |
+
function adminInitForCore() {
|
320 |
+
/*
|
321 |
+
* 2.8 to 3.0
|
322 |
*/
|
323 |
+
remove_action( 'wp_version_check', 'wp_version_check' );
|
324 |
+
remove_action( 'admin_init', '_maybe_update_core' );
|
325 |
+
wp_clear_scheduled_hook( 'wp_version_check' );
|
326 |
+
|
327 |
+
/*
|
328 |
+
* 3.7+
|
329 |
+
*/
|
330 |
+
remove_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' );
|
331 |
+
remove_action( 'admin_init', 'wp_maybe_auto_update' );
|
332 |
+
remove_action( 'admin_init', 'wp_auto_update_core' );
|
333 |
+
wp_clear_scheduled_hook( 'wp_maybe_auto_update' );
|
334 |
+
}
|
|
|
|
|
|
|
|
|
|
|
335 |
|
336 |
+
public function lastCheckedNow( $transient ) {
|
337 |
+
global $wp_version;
|
|
|
338 |
|
339 |
+
include ABSPATH . WPINC . '/version.php';
|
340 |
+
$current = new stdClass;
|
341 |
+
$current->updates = [];
|
342 |
+
$current->version_checked = $wp_version;
|
343 |
+
$current->last_checked = time();
|
344 |
+
|
345 |
+
return $current;
|
346 |
+
}
|
347 |
|
348 |
+
/**
|
349 |
+
* callback for filter wp_get_update_data
|
350 |
+
* If disableAllCoreUpdates recalc the update badge
|
351 |
+
*
|
352 |
+
* @param $update_data
|
353 |
+
* @param $titles
|
354 |
+
*
|
355 |
+
* @return mixed $update_data
|
356 |
+
*/
|
357 |
+
function updateCounter( $update_data, $titles ) {
|
358 |
+
if ( $update_data['counts']['wordpress'] > 0 ) {
|
359 |
+
$new_num = $update_data['counts']['total'] = $update_data['counts']['total'] - $update_data['counts']['wordpress'];
|
360 |
+
preg_replace( '/[0-9]+/', $new_num, $titles['wordpress'] );
|
361 |
+
$update_data['counts']['wordpress'] = 0;
|
362 |
}
|
363 |
+
|
364 |
+
return $update_data;
|
365 |
+
}
|
366 |
+
|
367 |
+
/** Modify data about core available updates
|
368 |
+
* Hide update buttons on update page and dashboard home page
|
369 |
+
*
|
370 |
+
* @param $val
|
371 |
+
* @param $transient
|
372 |
+
*
|
373 |
+
* @return mixed $val
|
374 |
+
*/
|
375 |
+
function hideCoreUpdateForm( $val, $transient ) {
|
376 |
+
if ( is_object( $val ) ) {
|
377 |
+
$val->updates = [];
|
378 |
+
}
|
379 |
+
|
380 |
+
return $val;
|
381 |
+
}
|
382 |
+
}
|
components/updates-manager/languages/webcraftic-updates-manager-es_ES.mo
ADDED
Binary file
|
components/updates-manager/languages/webcraftic-updates-manager-es_ES.po
ADDED
@@ -0,0 +1,478 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:31+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:31+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
|
28 |
+
#: admin/ajax/change-flag.php:26
|
29 |
+
msgid "Required arguments of slug, flag is empty!"
|
30 |
+
msgstr "Argumentos requeridos de slug, bandera está vacía!"
|
31 |
+
|
32 |
+
#: admin/ajax/change-flag.php:38
|
33 |
+
#, php-format
|
34 |
+
msgid "Method %s is not found!"
|
35 |
+
msgstr "¡El método %s no se encuentra!"
|
36 |
+
|
37 |
+
#: admin/boot.php:55
|
38 |
+
#, php-format
|
39 |
+
msgid ""
|
40 |
+
"We found that you have the plugin %s installed. The functions of this plugin "
|
41 |
+
"already exist in %s. Please deactivate plugin %s to avoid conflicts between "
|
42 |
+
"plugins' functions."
|
43 |
+
msgstr ""
|
44 |
+
"Usted tiene el plugin %s instalado. Las funciones de este complemento ya "
|
45 |
+
"existen en %s. Desactive el complemento %s para evitar conflictos entre las "
|
46 |
+
"funciones ambos plugin."
|
47 |
+
|
48 |
+
#: admin/boot.php:56
|
49 |
+
#, php-format
|
50 |
+
msgid ""
|
51 |
+
"If you do not want to deactivate the plugin %s for some reason, we strongly "
|
52 |
+
"recommend do not use the same plugins' functions at the same time!"
|
53 |
+
msgstr ""
|
54 |
+
"Si no desea desactivar el plugin %s por algún motivo, le recomendamos que no "
|
55 |
+
"utilice las mismas funciones de ambos plugin al mismo tiempo."
|
56 |
+
|
57 |
+
#: admin/boot.php:100
|
58 |
+
msgid "Disable plugin updates"
|
59 |
+
msgstr "Deshabilitar actualizaciones de plugin"
|
60 |
+
|
61 |
+
#: admin/boot.php:106
|
62 |
+
msgid "Disable theme updates"
|
63 |
+
msgstr "Deshabilitar actualizaciones de temas"
|
64 |
+
|
65 |
+
#: admin/boot.php:112 admin/pages/updates.php:128
|
66 |
+
msgid "Disable Automatic Translation Updates"
|
67 |
+
msgstr "Deshabilitar actualizaciones de traducción automática"
|
68 |
+
|
69 |
+
#: admin/boot.php:117
|
70 |
+
msgid "Disable wordPress core updates"
|
71 |
+
msgstr "Deshabilitar las actualizaciones del Core WordPress."
|
72 |
+
|
73 |
+
#: admin/boot.php:123 admin/pages/updates.php:180
|
74 |
+
msgid "Enable updates for VCS Installations"
|
75 |
+
msgstr "Habilitar actualizaciones para instalaciones VCS"
|
76 |
+
|
77 |
+
#: admin/boot.php:128
|
78 |
+
msgid "Plugin filters"
|
79 |
+
msgstr "Filtros de plugin"
|
80 |
+
|
81 |
+
#: admin/boot.php:133 admin/pages/updates.php:190
|
82 |
+
msgid "Updates nags only for Admin"
|
83 |
+
msgstr "Actualizaciones de nags solo para admin"
|
84 |
+
|
85 |
+
#: admin/boot.php:138 admin/pages/updates.php:238 admin/pages/updates.php:245
|
86 |
+
msgid "Core notifications"
|
87 |
+
msgstr "Notificaciones genéricas"
|
88 |
+
|
89 |
+
#: admin/boot.php:143
|
90 |
+
msgid "Notify me when update successful installed"
|
91 |
+
msgstr "Notificarme cuando la actualización sea exitosa"
|
92 |
+
|
93 |
+
#: admin/boot.php:148 admin/pages/updates.php:229
|
94 |
+
msgid "Email address"
|
95 |
+
msgstr "Dirección de correo electrónico"
|
96 |
+
|
97 |
+
#: admin/boot.php:160
|
98 |
+
msgid "One click disable all updates"
|
99 |
+
msgstr "Deshabilitar todas las actualizaciones con un click"
|
100 |
+
|
101 |
+
#: admin/boot.php:181
|
102 |
+
msgid "Get ultimate plugin free"
|
103 |
+
msgstr "Obtener el ultimate plugin gratis"
|
104 |
+
|
105 |
+
#: admin/boot.php:230 admin/boot.php:275
|
106 |
+
msgid "Update manager"
|
107 |
+
msgstr "Gestor de actualizaciones"
|
108 |
+
|
109 |
+
#: admin/boot.php:238
|
110 |
+
msgid "Auto-update disabled"
|
111 |
+
msgstr "Actualización automática deshabilitada"
|
112 |
+
|
113 |
+
#: admin/boot.php:239
|
114 |
+
msgid "Auto-update enabled"
|
115 |
+
msgstr "Actualización automática habilitada"
|
116 |
+
|
117 |
+
#: admin/boot.php:240
|
118 |
+
msgid "Update disabled"
|
119 |
+
msgstr "Actualización deshabilitada"
|
120 |
+
|
121 |
+
#: admin/boot.php:241
|
122 |
+
msgid "Translation update disabled"
|
123 |
+
msgstr "Actualización de traducción desactivada"
|
124 |
+
|
125 |
+
#: admin/pages/advanced.php:43
|
126 |
+
msgid "Advanced"
|
127 |
+
msgstr "Avanzado"
|
128 |
+
|
129 |
+
#: admin/pages/advanced.php:71
|
130 |
+
msgid "Please, wait 90 sec. to see the forced automatic update result."
|
131 |
+
msgstr ""
|
132 |
+
"Por favor, espera 90 Seg. para ver resultados de la actualizacion automática "
|
133 |
+
"forzada."
|
134 |
+
|
135 |
+
#: admin/pages/advanced.php:81
|
136 |
+
msgid "Force Automatic Updates"
|
137 |
+
msgstr "Forzar actualizaciones automáticas"
|
138 |
+
|
139 |
+
#: admin/pages/advanced.php:83
|
140 |
+
msgid ""
|
141 |
+
"This will attempt to force automatic updates. This is useful for debugging."
|
142 |
+
msgstr ""
|
143 |
+
"Esto intentará forzar actualizaciones automáticas. Esto es útil para la "
|
144 |
+
"depuración."
|
145 |
+
|
146 |
+
#: admin/pages/advanced.php:84
|
147 |
+
msgid "Force update"
|
148 |
+
msgstr "Forzar actualización"
|
149 |
+
|
150 |
+
#: admin/pages/plugins.php:72
|
151 |
+
msgid "Plugins"
|
152 |
+
msgstr "Plugins"
|
153 |
+
|
154 |
+
#: admin/pages/plugins.php:91
|
155 |
+
msgid ""
|
156 |
+
"- To disable updates individually choose the “Manual or automatic plugin "
|
157 |
+
"updates” option then save settings and comeback to this page."
|
158 |
+
msgstr ""
|
159 |
+
"- Para deshabilitar las actualizaciones individualmente, elija la opción "
|
160 |
+
"\"Actualizaciones de plugins manuales o automáticas\", luego guarde las "
|
161 |
+
"configuraciones y vuelva a esta página."
|
162 |
+
|
163 |
+
#: admin/pages/plugins.php:95
|
164 |
+
msgid ""
|
165 |
+
"- To configure plugin auto updates individually, choose the “Enable auto "
|
166 |
+
"updates” option then save settings and comeback to this page."
|
167 |
+
msgstr ""
|
168 |
+
"- Para configurar las actualizaciones automáticas de plugin de forma "
|
169 |
+
"individual, elija la opción \"Habilitar actualizaciones automáticas\" y "
|
170 |
+
"luego guarde la configuración y vuelva a esta página."
|
171 |
+
|
172 |
+
#: admin/pages/plugins.php:326
|
173 |
+
msgid "Plugins list"
|
174 |
+
msgstr "Lista de plugins"
|
175 |
+
|
176 |
+
#: admin/pages/plugins.php:329
|
177 |
+
msgid "This page you can individually disable plugin updates and auto updates."
|
178 |
+
msgstr ""
|
179 |
+
"Esta página puede deshabilitar individualmente las actualizaciones de "
|
180 |
+
"complementos y actualizaciones automáticas."
|
181 |
+
|
182 |
+
#: admin/pages/plugins.php:345 admin/pages/themes.php:321
|
183 |
+
msgid "Bulk actions"
|
184 |
+
msgstr "Acciones a granel"
|
185 |
+
|
186 |
+
#: admin/pages/plugins.php:346 admin/pages/plugins.php:366
|
187 |
+
#: admin/pages/themes.php:322 admin/pages/themes.php:340
|
188 |
+
#: admin/pages/updates.php:102 admin/pages/updates.php:117
|
189 |
+
#: admin/pages/updates.php:139
|
190 |
+
msgid "Disable updates"
|
191 |
+
msgstr "Deshabilitar actualizaciones"
|
192 |
+
|
193 |
+
#: admin/pages/plugins.php:347 admin/pages/themes.php:323
|
194 |
+
msgid "Enable updates"
|
195 |
+
msgstr "Activar actualizaciones"
|
196 |
+
|
197 |
+
#: admin/pages/plugins.php:348 admin/pages/themes.php:324
|
198 |
+
msgid "Enable auto-updates"
|
199 |
+
msgstr "Activar auto actualizaciones"
|
200 |
+
|
201 |
+
#: admin/pages/plugins.php:349 admin/pages/themes.php:325
|
202 |
+
msgid "Disable auto-updates"
|
203 |
+
msgstr "Deshabilitar las actualizaciones automáticas"
|
204 |
+
|
205 |
+
#: admin/pages/plugins.php:350 admin/pages/themes.php:326
|
206 |
+
msgid "Disable translation updates"
|
207 |
+
msgstr "Deshabilitar actualizaciones de traducción"
|
208 |
+
|
209 |
+
#: admin/pages/plugins.php:351 admin/pages/themes.php:327
|
210 |
+
msgid "Enable translation updates"
|
211 |
+
msgstr "Habilitar actualizaciones de traducción"
|
212 |
+
|
213 |
+
#: admin/pages/plugins.php:352 admin/pages/plugins.php:375
|
214 |
+
msgid "Hide plugin"
|
215 |
+
msgstr "Ocultar plugin"
|
216 |
+
|
217 |
+
#: admin/pages/plugins.php:353
|
218 |
+
msgid "Show plugin"
|
219 |
+
msgstr "Mostrar plugin"
|
220 |
+
|
221 |
+
#: admin/pages/plugins.php:355 admin/pages/themes.php:329
|
222 |
+
msgid "Apply"
|
223 |
+
msgstr "Aplicar"
|
224 |
+
|
225 |
+
#: admin/pages/plugins.php:364
|
226 |
+
msgid "Plugin"
|
227 |
+
msgstr "Plugin"
|
228 |
+
|
229 |
+
#: admin/pages/plugins.php:369 admin/pages/themes.php:343
|
230 |
+
msgid "Auto-updates"
|
231 |
+
msgstr "Actualizaciones automáticas"
|
232 |
+
|
233 |
+
#: admin/pages/plugins.php:372 admin/pages/themes.php:346
|
234 |
+
msgid "Translation updates"
|
235 |
+
msgstr "Actualizaciones de traducción"
|
236 |
+
|
237 |
+
#: admin/pages/plugins.php:441 admin/pages/themes.php:396
|
238 |
+
msgid "Select"
|
239 |
+
msgstr "Seleccionar"
|
240 |
+
|
241 |
+
#: admin/pages/plugins.php:469 admin/pages/plugins.php:486
|
242 |
+
#: admin/pages/plugins.php:502 admin/pages/plugins.php:518
|
243 |
+
#: admin/pages/themes.php:420 admin/pages/themes.php:439
|
244 |
+
#: admin/pages/themes.php:458
|
245 |
+
msgid "On"
|
246 |
+
msgstr "On"
|
247 |
+
|
248 |
+
#: admin/pages/plugins.php:470 admin/pages/plugins.php:487
|
249 |
+
#: admin/pages/plugins.php:503 admin/pages/plugins.php:519
|
250 |
+
#: admin/pages/themes.php:421 admin/pages/themes.php:440
|
251 |
+
#: admin/pages/themes.php:459
|
252 |
+
msgid "Off"
|
253 |
+
msgstr "Off"
|
254 |
+
|
255 |
+
#: admin/pages/themes.php:69
|
256 |
+
msgid "Themes"
|
257 |
+
msgstr "Plantillas"
|
258 |
+
|
259 |
+
#: admin/pages/themes.php:88
|
260 |
+
msgid ""
|
261 |
+
"- To disable updates individually choose the “Manual or automatic theme "
|
262 |
+
"updates” option then save settings and comeback to this page."
|
263 |
+
msgstr ""
|
264 |
+
"- Para deshabilitar las actualizaciones por separado, elija la opción "
|
265 |
+
"“Actualizaciones de temas manuales o automáticas”, luego guarde las "
|
266 |
+
"configuraciones y vuelva a esta página."
|
267 |
+
|
268 |
+
#: admin/pages/themes.php:92
|
269 |
+
msgid ""
|
270 |
+
"- To configure theme auto updates individually, choose the “Enable auto "
|
271 |
+
"updates” option then save settings and comeback to this page."
|
272 |
+
msgstr ""
|
273 |
+
"- Para configurar las actualizaciones automáticas del tema individualmente, "
|
274 |
+
"elija la opción \"Habilitar actualizaciones automáticas\" y luego guarde la "
|
275 |
+
"configuración y vuelva a esta página."
|
276 |
+
|
277 |
+
#: admin/pages/themes.php:302
|
278 |
+
msgid "Themes list"
|
279 |
+
msgstr "Listado de Plantillas"
|
280 |
+
|
281 |
+
#: admin/pages/themes.php:305
|
282 |
+
msgid "This page you can individually disable theme updates and auto updates."
|
283 |
+
msgstr ""
|
284 |
+
"En esta página puedes deshabilitar individualmente las actualizaciones de "
|
285 |
+
"temas y actualizaciones automáticas."
|
286 |
+
|
287 |
+
#: admin/pages/themes.php:338
|
288 |
+
msgid "Theme"
|
289 |
+
msgstr "Plantilla"
|
290 |
+
|
291 |
+
#: admin/pages/updates.php:43
|
292 |
+
msgid "Updates manager"
|
293 |
+
msgstr "Gestor de actualizaciones"
|
294 |
+
|
295 |
+
#: admin/pages/updates.php:44
|
296 |
+
msgid "Manage all site updates"
|
297 |
+
msgstr "Administrar todas las actualizaciones del sitio"
|
298 |
+
|
299 |
+
#: admin/pages/updates.php:57
|
300 |
+
msgid "Updates"
|
301 |
+
msgstr "Actualizaciones"
|
302 |
+
|
303 |
+
#: admin/pages/updates.php:57
|
304 |
+
msgid "General"
|
305 |
+
msgstr "General"
|
306 |
+
|
307 |
+
#: admin/pages/updates.php:91
|
308 |
+
msgid "General settings for WordPress, plugins and themes updates"
|
309 |
+
msgstr ""
|
310 |
+
"Configuraciones generales para WordPress, complementos y actualizaciones de "
|
311 |
+
"temas."
|
312 |
+
|
313 |
+
#: admin/pages/updates.php:91
|
314 |
+
msgid ""
|
315 |
+
"This page, you can enable or disable automatic updates. To test the "
|
316 |
+
"automatic updates, click the \"Advanced\" tab."
|
317 |
+
msgstr ""
|
318 |
+
"En esta página, puede habilitar o deshabilitar actualizaciones automáticas. "
|
319 |
+
"Para probar las actualizaciones automáticas, haga clic en la pestaña "
|
320 |
+
"\"Avanzado \"."
|
321 |
+
|
322 |
+
#: admin/pages/updates.php:98
|
323 |
+
msgid "Plugin Updates"
|
324 |
+
msgstr "Actualizaciones de plugins"
|
325 |
+
|
326 |
+
#: admin/pages/updates.php:100 admin/pages/updates.php:115
|
327 |
+
msgid "Manual updates"
|
328 |
+
msgstr "Actualizaciones manuales"
|
329 |
+
|
330 |
+
#: admin/pages/updates.php:101 admin/pages/updates.php:116
|
331 |
+
msgid "Enable auto updates"
|
332 |
+
msgstr "Habilitar actualizaciones automáticas"
|
333 |
+
|
334 |
+
#: admin/pages/updates.php:105
|
335 |
+
msgid ""
|
336 |
+
"You can disable all plugin updates or choose manual or automatic update mode."
|
337 |
+
msgstr ""
|
338 |
+
"Puede deshabilitar todas las actualizaciones de plugins o elegir el modo de "
|
339 |
+
"actualización manual o automática."
|
340 |
+
|
341 |
+
#: admin/pages/updates.php:113
|
342 |
+
msgid "Theme Updates"
|
343 |
+
msgstr "Actualizaciones del tema"
|
344 |
+
|
345 |
+
#: admin/pages/updates.php:120
|
346 |
+
msgid ""
|
347 |
+
"You can disable all themes updates or choose manual or automatic update mode."
|
348 |
+
msgstr ""
|
349 |
+
"Puede desactivar todas las actualizaciones de temas o elegir el modo de "
|
350 |
+
"actualización manual o automática."
|
351 |
+
|
352 |
+
#: admin/pages/updates.php:137
|
353 |
+
msgid "WordPress Core Updates"
|
354 |
+
msgstr "Actualizaciones del Core WordPress"
|
355 |
+
|
356 |
+
#: admin/pages/updates.php:140
|
357 |
+
msgid "Disable auto updates"
|
358 |
+
msgstr "Deshabilitar actualizaciones automáticas"
|
359 |
+
|
360 |
+
#: admin/pages/updates.php:143
|
361 |
+
msgid "Allow minor auto updates"
|
362 |
+
msgstr "Permitir actualizaciones automáticas menores"
|
363 |
+
|
364 |
+
#: admin/pages/updates.php:147
|
365 |
+
msgid "Allow major auto updates"
|
366 |
+
msgstr "Permitir actualizaciones automáticas importantes"
|
367 |
+
|
368 |
+
#: admin/pages/updates.php:151
|
369 |
+
msgid "Allow development auto updates"
|
370 |
+
msgstr "Permitir actualizaciones automáticas de desarrollo"
|
371 |
+
|
372 |
+
#: admin/pages/updates.php:155
|
373 |
+
msgid ""
|
374 |
+
"You can disable all core WordPress updates, or disable only automatic "
|
375 |
+
"updates. Also you can select the update mode. By default (minor)"
|
376 |
+
msgstr ""
|
377 |
+
"deshabilitar actualizaciones básicas de WordPress o deshabilitar solo las "
|
378 |
+
"actualizaciones automáticas. También puede seleccionar el modo de "
|
379 |
+
"actualización. Por defecto (menor)"
|
380 |
+
|
381 |
+
#: admin/pages/updates.php:155
|
382 |
+
msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
|
383 |
+
msgstr ""
|
384 |
+
"Mayor - se actualiza automáticamente a las versiones principales (por "
|
385 |
+
"ejemplo, 4.1, 4.2, 4.3)."
|
386 |
+
|
387 |
+
#: admin/pages/updates.php:155
|
388 |
+
msgid ""
|
389 |
+
"Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
|
390 |
+
msgstr ""
|
391 |
+
"Menor - se actualiza automáticamente a versiones menores (por ejemplo, "
|
392 |
+
"4.1.1, 4.1.2, 4.1.3).."
|
393 |
+
|
394 |
+
#: admin/pages/updates.php:155
|
395 |
+
msgid "Development - update automatically to Bleeding Edge releases."
|
396 |
+
msgstr ""
|
397 |
+
"Desarrollo - actualizar automáticamente a las versiones de Bleeding Edge."
|
398 |
+
|
399 |
+
#: admin/pages/updates.php:182
|
400 |
+
msgid ""
|
401 |
+
"Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
|
402 |
+
"the WordPress directory"
|
403 |
+
msgstr ""
|
404 |
+
"Habilite las actualizaciones automáticas incluso si se encuentra una carpeta "
|
405 |
+
"VCS (.git, .hg, .svn) en el directorio de WordPress"
|
406 |
+
|
407 |
+
#: admin/pages/updates.php:192
|
408 |
+
msgid ""
|
409 |
+
"This plugin allows you to hide the update WordPress reminder from all users "
|
410 |
+
"that are not assumed Administrators (cannot upgrade plugins).\n"
|
411 |
+
"\n"
|
412 |
+
"If you have multiple users then this means those who are not admins don’t "
|
413 |
+
"need to see the message. Useful for CMS based sites, so the client doesn’t "
|
414 |
+
"see the notice."
|
415 |
+
msgstr ""
|
416 |
+
"Este plugin te permite ocultar el recordatorio de actualización de WordPress "
|
417 |
+
"a todos los usuarios que no se consideren administradores (no se pueden "
|
418 |
+
"actualizar los complementos).\n"
|
419 |
+
"\n"
|
420 |
+
"Si tiene varios usuarios, esto significa que aquellos que no son "
|
421 |
+
"administradores no necesitan ver el mensaje. Útil para sitios basados en CMS "
|
422 |
+
"donde usuarios no admin no veran el aviso."
|
423 |
+
|
424 |
+
#: admin/pages/updates.php:200
|
425 |
+
msgid "Email Notifications"
|
426 |
+
msgstr "Notificaciones Email"
|
427 |
+
|
428 |
+
#: admin/pages/updates.php:200
|
429 |
+
msgid ""
|
430 |
+
"Email notifications are send once a day, you can choose what notifications "
|
431 |
+
"to send below."
|
432 |
+
msgstr ""
|
433 |
+
"Las notificaciones vía Email se envían una vez al día, puede elegir qué "
|
434 |
+
"notificaciones enviar a continuación."
|
435 |
+
|
436 |
+
#: admin/pages/updates.php:207
|
437 |
+
msgid "Update available"
|
438 |
+
msgstr "Actualización disponible"
|
439 |
+
|
440 |
+
#: admin/pages/updates.php:208
|
441 |
+
msgid "Send me emails when an update is available."
|
442 |
+
msgstr ""
|
443 |
+
"Enviarme correos electrónicos cuando haya una actualización disponible."
|
444 |
+
|
445 |
+
#: admin/pages/updates.php:218
|
446 |
+
msgid "Successful update"
|
447 |
+
msgstr "Actualización exitosa"
|
448 |
+
|
449 |
+
#: admin/pages/updates.php:219
|
450 |
+
msgid "Send me emails when something has been updated."
|
451 |
+
msgstr "Enviarme correos electrónicos cuando algo se haya actualizado."
|
452 |
+
|
453 |
+
#: admin/pages/updates.php:230
|
454 |
+
msgid "Seperate email addresses using commas."
|
455 |
+
msgstr "Separe las direcciones de correo con comas."
|
456 |
+
|
457 |
+
#: admin/pages/updates.php:238
|
458 |
+
msgid ""
|
459 |
+
"Core notifications are handled by WordPress and not by this plugin. You can "
|
460 |
+
"only disable them, changing your email address in the settings above will "
|
461 |
+
"not affect these notifications."
|
462 |
+
msgstr ""
|
463 |
+
"Las notificaciones genéricas son manejadas por WordPress y no por este "
|
464 |
+
"complemento. Solo puede deshabilitarlas, cambiar su dirección de correo "
|
465 |
+
"electrónico en la configuración anterior no afectará estas notificaciones."
|
466 |
+
|
467 |
+
#: admin/pages/updates.php:246
|
468 |
+
msgid ""
|
469 |
+
"By default wordpress sends an email when a core update happend. Uncheck this "
|
470 |
+
"box to disable these emails."
|
471 |
+
msgstr ""
|
472 |
+
"Por defecto, wordpress envía un correo electrónico cuando se produce una "
|
473 |
+
"actualización del núcleo. Desmarque esta casilla para deshabilitar estos "
|
474 |
+
"correos electrónicos."
|
475 |
+
|
476 |
+
#: webcraftic-updates-manager.php:78
|
477 |
+
msgid "Webcraftic Updates Manager"
|
478 |
+
msgstr "Gestor de Actualizaciones Webcraftic"
|
components/updates-manager/webcraftic-updates-manager.php
CHANGED
@@ -1,68 +1,88 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
13 |
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
-
|
21 |
|
22 |
-
if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
|
23 |
-
require_once(WUPM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php');
|
24 |
-
require_once(WUPM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php');
|
25 |
-
}
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
'plugin_version' => WUPM_PLUGIN_VERSION,
|
32 |
-
'plugin_build' => 'free',
|
33 |
-
//'updates' => WUPM_PLUGIN_DIR . '/updates/'
|
34 |
-
);
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
'plugin_url' => WUPM_PLUGIN_URL,
|
45 |
-
'required_php_version' => '5.3',
|
46 |
-
'required_wp_version' => '4.2.0',
|
47 |
-
'required_clearfy_check_component' => true
|
48 |
-
)));
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
-
|
61 |
-
require_once(WUPM_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
62 |
-
}
|
63 |
|
64 |
-
|
|
|
|
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Webcraftic Updates manager
|
4 |
+
* Plugin URI: https://wordpress.org/plugins/webcraftic-updates-manager/
|
5 |
+
* Description: Manage all your WordPress updates, automatic updates, logs, and loads more.
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.8
|
8 |
+
* Text Domain: webcraftic-updates-manager
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://clearfy.pro
|
11 |
+
* Framework Version: FACTORY_409_VERSION
|
12 |
+
*/
|
13 |
+
if ( ! defined( 'WUPM_PLUGIN_VERSION' ) ) {
|
14 |
+
define( 'WUPM_PLUGIN_VERSION', '1.0.8' );
|
15 |
+
}
|
16 |
|
17 |
+
// Fix for ithemes sync. When the ithemes sync plugin accepts the request, set the WP_ADMIN constant,
|
18 |
+
// after which the plugin Clearfy begins to create errors, and how the logic of its work is broken.
|
19 |
+
// Solution to simply terminate the plugin if there is a request from ithemes sync
|
20 |
+
// --------------------------------------
|
21 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'ithemes_sync_request' ) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
|
25 |
+
if ( isset( $_GET['ithemes-sync-request'] ) && ! empty( $_GET['ithemes-sync-request'] ) ) {
|
26 |
+
return;
|
27 |
+
}
|
28 |
+
// ----------------------------------------
|
29 |
+
if ( ! defined( 'WUPM_PLUGIN_DIR' ) ) {
|
30 |
+
define( 'WUPM_PLUGIN_DIR', dirname( __FILE__ ) );
|
31 |
+
}
|
32 |
+
if ( ! defined( 'WUPM_PLUGIN_BASE' ) ) {
|
33 |
+
define( 'WUPM_PLUGIN_BASE', plugin_basename( __FILE__ ) );
|
34 |
+
}
|
35 |
+
if ( ! defined( 'WUPM_PLUGIN_URL' ) ) {
|
36 |
+
define( 'WUPM_PLUGIN_URL', plugins_url( null, __FILE__ ) );
|
37 |
+
}
|
38 |
|
|
|
39 |
|
|
|
|
|
|
|
|
|
40 |
|
41 |
+
if ( ! defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ) ) {
|
42 |
+
require_once( WUPM_PLUGIN_DIR . '/libs/factory/core/includes/check-compatibility.php' );
|
43 |
+
require_once( WUPM_PLUGIN_DIR . '/libs/factory/clearfy/includes/check-clearfy-compatibility.php' );
|
44 |
+
}
|
|
|
|
|
|
|
|
|
45 |
|
46 |
+
$plugin_info = array(
|
47 |
+
'prefix' => 'wbcr_upm_',//wbcr_upm_
|
48 |
+
'plugin_name' => 'wbcr_updates_manager',
|
49 |
+
'plugin_title' => __( 'Webcraftic Updates Manager', 'webcraftic-updates-manager' ),
|
50 |
+
'plugin_version' => WUPM_PLUGIN_VERSION,
|
51 |
+
'plugin_build' => 'free',
|
52 |
+
//'updates' => WUPM_PLUGIN_DIR . '/updates/'
|
53 |
+
);
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
+
/**
|
56 |
+
* Проверяет совместимость с Wordpress, php и другими плагинами.
|
57 |
+
*/
|
58 |
+
$compatibility = new Wbcr_FactoryClearfy_Compatibility( array_merge( $plugin_info, array(
|
59 |
+
'factory_version' => 'FACTORY_409_VERSION',
|
60 |
+
'plugin_already_activate' => defined( 'WUPM_PLUGIN_ACTIVE' ),
|
61 |
+
'plugin_as_component' => defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ),
|
62 |
+
'plugin_dir' => WUPM_PLUGIN_DIR,
|
63 |
+
'plugin_base' => WUPM_PLUGIN_BASE,
|
64 |
+
'plugin_url' => WUPM_PLUGIN_URL,
|
65 |
+
'required_php_version' => '5.3',
|
66 |
+
'required_wp_version' => '4.2.0',
|
67 |
+
'required_clearfy_check_component' => true
|
68 |
+
) ) );
|
69 |
|
70 |
+
/**
|
71 |
+
* Если плагин совместим, то он продолжит свою работу, иначе будет остановлен,
|
72 |
+
* а пользователь получит предупреждение.
|
73 |
+
*/
|
74 |
+
if ( ! $compatibility->check() ) {
|
75 |
+
return;
|
76 |
+
}
|
77 |
|
78 |
+
define( 'WUPM_PLUGIN_ACTIVE', true );
|
|
|
|
|
79 |
|
80 |
+
if ( ! defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ) ) {
|
81 |
+
require_once( WUPM_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
82 |
+
}
|
83 |
|
84 |
+
require_once( WUPM_PLUGIN_DIR . '/includes/class.plugin.php' );
|
85 |
+
|
86 |
+
if ( ! defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ) ) {
|
87 |
+
new WUPM_Plugin( __FILE__, $plugin_info );
|
88 |
+
}
|
includes/class.plugin.php
CHANGED
@@ -248,6 +248,7 @@ class WCL_Plugin extends Wbcr_Factory409_Plugin {
|
|
248 |
}
|
249 |
|
250 |
private function globalScripts() {
|
|
|
251 |
require_once( WCL_PLUGIN_DIR . '/includes/boot.php' );
|
252 |
|
253 |
require_once( WCL_PLUGIN_DIR . '/includes/classes/class.configurate-performance.php' );
|
248 |
}
|
249 |
|
250 |
private function globalScripts() {
|
251 |
+
|
252 |
require_once( WCL_PLUGIN_DIR . '/includes/boot.php' );
|
253 |
|
254 |
require_once( WCL_PLUGIN_DIR . '/includes/classes/class.configurate-performance.php' );
|
includes/classes/class.configurate-advanced.php
CHANGED
@@ -1,248 +1,148 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
-
*
|
4 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
-
* @copyright (c) 2017 Webraftic Ltd
|
6 |
-
* @version 1.0
|
7 |
*/
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
* @param WCL_Plugin $plugin
|
18 |
-
*/
|
19 |
-
public function __construct(WCL_Plugin $plugin)
|
20 |
-
{
|
21 |
-
parent::__construct($plugin);
|
22 |
-
|
23 |
-
$this->plugin = $plugin;
|
24 |
}
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
if( $this->getPopulateOption('disable_heartbeat') && $this->getPopulateOption('disable_heartbeat') != 'default' ) {
|
29 |
-
add_action('init', array($this, 'disableHeartbeat'), 1);
|
30 |
-
}
|
31 |
-
|
32 |
-
if( $this->getPopulateOption('heartbeat_frequency') && $this->getPopulateOption('heartbeat_frequency') != 'default' ) {
|
33 |
-
add_filter('heartbeat_settings', array($this, 'clearfyHeartbeatFrequency'));
|
34 |
-
}
|
35 |
-
|
36 |
-
//============================================================
|
37 |
-
// POST TOOLS COMPONENT
|
38 |
-
//============================================================
|
39 |
-
|
40 |
-
if( $this->plugin->isActivateComponent('post_tools') ) {
|
41 |
-
if( ($this->getPopulateOption('revision_limit') || $this->getPopulateOption('revisions_disable')) && is_admin() ) {
|
42 |
-
add_filter('wp_revisions_to_keep', array($this, 'clearfyRevisionsToKeep'), 10, 2);
|
43 |
-
}
|
44 |
-
|
45 |
-
if( $this->getPopulateOption('disable_post_autosave') && is_admin() ) {
|
46 |
-
add_action('wp_print_scripts', array($this, 'disableAutoSave'));
|
47 |
-
}
|
48 |
-
|
49 |
-
if( $this->getPopulateOption('disable_texturization') ) {
|
50 |
-
remove_filter('comment_text', 'wptexturize');
|
51 |
-
remove_filter('the_content', 'wptexturize');
|
52 |
-
remove_filter('the_excerpt', 'wptexturize');
|
53 |
-
remove_filter('the_title', 'wptexturize');
|
54 |
-
remove_filter('the_content_feed', 'wptexturize');
|
55 |
-
}
|
56 |
-
|
57 |
-
if( $this->getPopulateOption('disable_auto_correct_dangit') ) {
|
58 |
-
remove_filter('the_content', 'capital_P_dangit');
|
59 |
-
remove_filter('the_title', 'capital_P_dangit');
|
60 |
-
remove_filter('comment_text', 'capital_P_dangit');
|
61 |
-
}
|
62 |
-
|
63 |
-
if( $this->getPopulateOption('disable_auto_paragraph') ) {
|
64 |
-
remove_filter('the_content', 'wpautop');
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
//============================================================
|
69 |
-
// ADMINBAR MANAGER COMPONENT
|
70 |
-
//============================================================
|
71 |
-
|
72 |
-
if( $this->plugin->isActivateComponent('adminbar_manager') && is_user_logged_in() ) {
|
73 |
-
if( $this->getPopulateOption('replace_howdy_welcome') ) {
|
74 |
-
add_filter('admin_bar_menu', array($this, 'replaceHowdyText'), 25);
|
75 |
-
}
|
76 |
-
|
77 |
-
if( $this->getPopulateOption('disable_admin_bar') == 'for_all_users' ) {
|
78 |
-
add_filter('show_admin_bar', '__return_false', 999999);
|
79 |
-
}
|
80 |
-
|
81 |
-
if( $this->getPopulateOption('disable_admin_bar') == 'for_all_users_except_administrator' ) {
|
82 |
-
add_filter('show_admin_bar', array($this, 'removeFunctionAdminBar'));
|
83 |
-
}
|
84 |
-
|
85 |
-
if( $this->getPopulateOption('disable_admin_bar_logo') ) {
|
86 |
-
add_action('wp_before_admin_bar_render', array($this, 'removeWpLogo'));
|
87 |
-
}
|
88 |
-
}
|
89 |
-
|
90 |
-
//============================================================
|
91 |
-
// WIDGETS TOOLS COMPONENT
|
92 |
-
//============================================================
|
93 |
-
|
94 |
-
if( $this->plugin->isActivateComponent('widget_tools') ) {
|
95 |
-
add_action('widgets_init', array($this, 'unregisterDefaultWidgets'), 11);
|
96 |
-
}
|
97 |
}
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
unregister_widget('WP_Widget_Calendar');
|
107 |
-
}
|
108 |
-
if( $this->getPopulateOption('remove_unneeded_widget_tag_cloud') ) {
|
109 |
-
unregister_widget('WP_Widget_Tag_Cloud');
|
110 |
-
}
|
111 |
-
if( $this->getPopulateOption('remove_unneeded_widget_archives') ) {
|
112 |
-
unregister_widget('WP_Widget_Archives');
|
113 |
-
}
|
114 |
-
if( $this->getPopulateOption('remove_unneeded_widget_links') ) {
|
115 |
-
unregister_widget('WP_Widget_Links');
|
116 |
-
}
|
117 |
-
if( $this->getPopulateOption('remove_unneeded_widget_meta') ) {
|
118 |
-
unregister_widget('WP_Widget_Meta');
|
119 |
-
}
|
120 |
-
if( $this->getPopulateOption('remove_unneeded_widget_search') ) {
|
121 |
-
unregister_widget('WP_Widget_Search');
|
122 |
-
}
|
123 |
-
if( $this->getPopulateOption('remove_unneeded_widget_text') ) {
|
124 |
-
unregister_widget('WP_Widget_Text');
|
125 |
-
}
|
126 |
-
if( $this->getPopulateOption('remove_unneeded_widget_categories') ) {
|
127 |
-
unregister_widget('WP_Widget_Categories');
|
128 |
-
}
|
129 |
-
if( $this->getPopulateOption('remove_unneeded_widget_recent_posts') ) {
|
130 |
-
unregister_widget('WP_Widget_Recent_Posts');
|
131 |
-
}
|
132 |
-
if( $this->getPopulateOption('remove_unneeded_widget_recent_comments') ) {
|
133 |
-
unregister_widget('WP_Widget_Recent_Comments');
|
134 |
-
}
|
135 |
-
if( $this->getPopulateOption('remove_unneeded_widget_rss') ) {
|
136 |
-
unregister_widget('WP_Widget_RSS');
|
137 |
-
}
|
138 |
-
if( $this->getPopulateOption('remove_unneeded_widget_menu') ) {
|
139 |
-
unregister_widget('WP_Nav_Menu_Widget');
|
140 |
}
|
141 |
-
|
142 |
-
|
|
|
143 |
}
|
144 |
}
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
public function clearfyRevisionsToKeep($num, $post)
|
153 |
-
{
|
154 |
-
if( $this->getPopulateOption('revision_limit', null) && is_numeric($this->getPopulateOption('revision_limit', null)) ) {
|
155 |
-
$num = $this->getPopulateOption('revision_limit', 0);
|
156 |
-
}
|
157 |
-
|
158 |
-
if( $this->getPopulateOption('revisions_disable') ) {
|
159 |
-
$num = 0;
|
160 |
-
}
|
161 |
-
|
162 |
-
return $num;
|
163 |
}
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
public function clearfyHeartbeatFrequency($settings)
|
172 |
-
{
|
173 |
-
if( 0 < (int)$this->getPopulateOption('heartbeat_frequency') ) {
|
174 |
-
$settings['interval'] = (int)$this->getPopulateOption('heartbeat_frequency');
|
175 |
-
}
|
176 |
-
|
177 |
-
return $settings;
|
178 |
}
|
179 |
-
|
180 |
-
|
181 |
-
{
|
182 |
-
switch( $this->getPopulateOption('disable_heartbeat') ) {
|
183 |
-
case 'everywhere':
|
184 |
-
wp_deregister_script('heartbeat');
|
185 |
-
break;
|
186 |
-
case 'allow_only_on_post_edit_pages':
|
187 |
-
global $pagenow;
|
188 |
-
if( $pagenow != 'post.php' && $pagenow != 'post-new.php' ) {
|
189 |
-
wp_deregister_script('heartbeat');
|
190 |
-
}
|
191 |
-
break;
|
192 |
-
case 'on_dashboard_page':
|
193 |
-
global $pagenow;
|
194 |
-
if( 'index.php' === $pagenow ) {
|
195 |
-
wp_deregister_script('heartbeat');
|
196 |
-
}
|
197 |
-
break;
|
198 |
-
}
|
199 |
}
|
200 |
-
|
201 |
-
|
202 |
-
{
|
203 |
-
wp_deregister_script('autosave');
|
204 |
}
|
205 |
-
|
206 |
-
|
207 |
-
* @param WP_Admin_Bar $wp_admin_bar
|
208 |
-
*/
|
209 |
-
public function replaceHowdyText($wp_admin_bar)
|
210 |
-
{
|
211 |
-
#Fix bug when the attribute $wp_admin_bar does not belong to the class WP_Admin_Bar
|
212 |
-
require_once ABSPATH . "/wp-includes/class-wp-admin-bar.php";
|
213 |
-
|
214 |
-
if( empty($wp_admin_bar) || !($wp_admin_bar instanceof WP_Admin_Bar) ) {
|
215 |
-
return;
|
216 |
-
}
|
217 |
-
$my_account = $wp_admin_bar->get_node('my-account');
|
218 |
-
|
219 |
-
$newtitle = str_replace(__('Howdy', 'clearfy') . ',', __('Welcome', 'clearfy') . ',', $my_account->title);
|
220 |
-
$wp_admin_bar->add_node(array(
|
221 |
-
'id' => 'my-account',
|
222 |
-
'title' => $newtitle,
|
223 |
-
));
|
224 |
}
|
225 |
-
|
226 |
-
|
227 |
-
* @param $content
|
228 |
-
* @return bool
|
229 |
-
*/
|
230 |
-
public function removeFunctionAdminBar($content)
|
231 |
-
{
|
232 |
-
return (current_user_can('administrator'))
|
233 |
-
? $content
|
234 |
-
: false;
|
235 |
}
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
}
|
|
|
246 |
|
247 |
|
248 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* This class configures the parameters advanced
|
4 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
+
* @copyright (c) 2017 Webraftic Ltd
|
6 |
+
* @version 1.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
// Exit if accessed directly
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
class WCL_ConfigAdvanced extends Wbcr_FactoryClearfy206_Configurate {
|
15 |
+
|
16 |
/**
|
17 |
+
* @param WCL_Plugin $plugin
|
|
|
|
|
|
|
18 |
*/
|
19 |
+
public function __construct( WCL_Plugin $plugin ) {
|
20 |
+
parent::__construct( $plugin );
|
21 |
+
|
22 |
+
$this->plugin = $plugin;
|
23 |
}
|
24 |
+
|
25 |
+
public function registerActionsAndFilters() {
|
26 |
+
if ( $this->getPopulateOption( 'disable_heartbeat' ) && $this->getPopulateOption( 'disable_heartbeat' ) != 'default' ) {
|
27 |
+
add_action( 'init', array( $this, 'disableHeartbeat' ), 1 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
+
if ( $this->getPopulateOption( 'heartbeat_frequency' ) && $this->getPopulateOption( 'heartbeat_frequency' ) != 'default' ) {
|
31 |
+
add_filter( 'heartbeat_settings', array( $this, 'clearfyHeartbeatFrequency' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
+
|
34 |
+
//============================================================
|
35 |
+
// ADMINBAR MANAGER COMPONENT
|
36 |
+
//============================================================
|
37 |
+
|
38 |
+
if ( $this->plugin->isActivateComponent( 'adminbar_manager' ) && is_user_logged_in() ) {
|
39 |
+
if ( $this->getPopulateOption( 'disable_admin_bar' ) == 'for_all_users' ) {
|
40 |
+
add_filter( 'show_admin_bar', '__return_false', 999999 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
+
|
43 |
+
if ( $this->getPopulateOption( 'disable_admin_bar' ) == 'for_all_users_except_administrator' ) {
|
44 |
+
add_filter( 'show_admin_bar', array( $this, 'removeFunctionAdminBar' ) );
|
45 |
}
|
46 |
}
|
47 |
+
|
48 |
+
//============================================================
|
49 |
+
// WIDGETS TOOLS COMPONENT
|
50 |
+
//============================================================
|
51 |
+
|
52 |
+
if ( $this->plugin->isActivateComponent( 'widget_tools' ) ) {
|
53 |
+
add_action( 'widgets_init', array( $this, 'unregisterDefaultWidgets' ), 11 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
+
}
|
56 |
+
|
57 |
+
// unregister all widgets
|
58 |
+
public function unregisterDefaultWidgets() {
|
59 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_page' ) ) {
|
60 |
+
unregister_widget( 'WP_Widget_Pages' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
}
|
62 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_calendar' ) ) {
|
63 |
+
unregister_widget( 'WP_Widget_Calendar' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_tag_cloud' ) ) {
|
66 |
+
unregister_widget( 'WP_Widget_Tag_Cloud' );
|
|
|
|
|
67 |
}
|
68 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_archives' ) ) {
|
69 |
+
unregister_widget( 'WP_Widget_Archives' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
}
|
71 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_links' ) ) {
|
72 |
+
unregister_widget( 'WP_Widget_Links' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
}
|
74 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_meta' ) ) {
|
75 |
+
unregister_widget( 'WP_Widget_Meta' );
|
76 |
+
}
|
77 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_search' ) ) {
|
78 |
+
unregister_widget( 'WP_Widget_Search' );
|
79 |
+
}
|
80 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_text' ) ) {
|
81 |
+
unregister_widget( 'WP_Widget_Text' );
|
82 |
+
}
|
83 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_categories' ) ) {
|
84 |
+
unregister_widget( 'WP_Widget_Categories' );
|
85 |
+
}
|
86 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_recent_posts' ) ) {
|
87 |
+
unregister_widget( 'WP_Widget_Recent_Posts' );
|
88 |
+
}
|
89 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_recent_comments' ) ) {
|
90 |
+
unregister_widget( 'WP_Widget_Recent_Comments' );
|
91 |
+
}
|
92 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_rss' ) ) {
|
93 |
+
unregister_widget( 'WP_Widget_RSS' );
|
94 |
+
}
|
95 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_menu' ) ) {
|
96 |
+
unregister_widget( 'WP_Nav_Menu_Widget' );
|
97 |
+
}
|
98 |
+
if ( $this->getPopulateOption( 'remove_unneeded_widget_twenty_eleven_ephemera' ) ) {
|
99 |
+
unregister_widget( 'Twenty_Eleven_Ephemera_Widget' );
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Revisions limit
|
105 |
+
*
|
106 |
+
* @since 0.9.5
|
107 |
+
*/
|
108 |
+
|
109 |
+
public function clearfyHeartbeatFrequency( $settings ) {
|
110 |
+
if ( 0 < (int) $this->getPopulateOption( 'heartbeat_frequency' ) ) {
|
111 |
+
$settings['interval'] = (int) $this->getPopulateOption( 'heartbeat_frequency' );
|
112 |
}
|
113 |
+
|
114 |
+
return $settings;
|
115 |
+
}
|
116 |
+
|
117 |
+
public function disableHeartbeat() {
|
118 |
+
switch ( $this->getPopulateOption( 'disable_heartbeat' ) ) {
|
119 |
+
case 'everywhere':
|
120 |
+
wp_deregister_script( 'heartbeat' );
|
121 |
+
break;
|
122 |
+
case 'allow_only_on_post_edit_pages':
|
123 |
+
global $pagenow;
|
124 |
+
if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' ) {
|
125 |
+
wp_deregister_script( 'heartbeat' );
|
126 |
+
}
|
127 |
+
break;
|
128 |
+
case 'on_dashboard_page':
|
129 |
+
global $pagenow;
|
130 |
+
if ( 'index.php' === $pagenow ) {
|
131 |
+
wp_deregister_script( 'heartbeat' );
|
132 |
+
}
|
133 |
+
break;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* @param $content
|
139 |
+
*
|
140 |
+
* @return bool
|
141 |
+
*/
|
142 |
+
public function removeFunctionAdminBar( $content ) {
|
143 |
+
return ( current_user_can( 'administrator' ) ) ? $content : false;
|
144 |
}
|
145 |
+
}
|
146 |
|
147 |
|
148 |
|
includes/classes/class.configurate-google-performance.php
CHANGED
@@ -1,382 +1,368 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
-
*
|
4 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
5 |
-
* @copyright (c) 2017 Webraftic Ltd
|
6 |
-
* @version 1.0
|
7 |
*/
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
* @param WCL_Plugin $plugin
|
18 |
-
*/
|
19 |
-
public function __construct(WCL_Plugin $plugin)
|
20 |
-
{
|
21 |
-
parent::__construct($plugin);
|
22 |
-
|
23 |
-
$this->plugin = $plugin;
|
24 |
}
|
25 |
-
|
26 |
-
public function registerActionsAndFilters()
|
27 |
-
{
|
28 |
-
if( $this->getPopulateOption('disable_google_fonts') ) {
|
29 |
-
add_action('wp_enqueue_scripts', array($this, 'disableAllGoogleFonts'), 999);
|
30 |
-
}
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
}
|
43 |
}
|
44 |
}
|
|
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
}
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
|
63 |
-
|
64 |
-
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
|
72 |
-
|
73 |
-
|
74 |
-
}
|
75 |
}
|
76 |
-
|
77 |
-
return $html;
|
78 |
}
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
/** ======================================================================== */
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
|
88 |
-
|
89 |
-
|
90 |
|
91 |
-
|
|
|
92 |
|
93 |
-
|
94 |
-
|
|
|
|
|
95 |
}
|
96 |
}
|
97 |
}
|
|
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
$async_links = $this->checkGooglefontsFontawesomeStyles();
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
}
|
111 |
}
|
|
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
} elseif( $load_font_awesome && ( false !== strpos($wp_styles->registered[$handle]->src, $font_awesome_slug) || false !== strpos($wp_styles->registered[$handle]->src, $font_awesome_slug_alt ) ) ) {
|
139 |
-
|
140 |
-
wp_dequeue_style($handle);
|
141 |
-
|
142 |
-
$font_awesome_links[false !== strpos($wp_styles->registered[$handle]->src, site_url())
|
143 |
-
? 'internal'
|
144 |
-
: 'external'][] = array(
|
145 |
-
'ver' => $wp_styles->registered[$handle]->ver
|
146 |
-
? $wp_styles->registered[$handle]->ver
|
147 |
-
: false,
|
148 |
-
'link' => $wp_styles->registered[$handle]->src,
|
149 |
-
);
|
150 |
-
}
|
151 |
}
|
152 |
|
153 |
-
$
|
154 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
|
156 |
-
|
157 |
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
|
|
|
|
162 |
|
163 |
-
|
164 |
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
|
|
172 |
}
|
173 |
}
|
|
|
174 |
|
175 |
-
|
176 |
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
|
182 |
-
|
183 |
|
184 |
-
|
185 |
|
186 |
-
|
187 |
-
} else {
|
188 |
-
$this->updateSavedGoogleFontsRequest(0);
|
189 |
-
}
|
190 |
} else {
|
191 |
-
$this->
|
192 |
-
$this->updateSavedGoogleFontsRequest(0);
|
193 |
}
|
|
|
|
|
|
|
194 |
}
|
195 |
-
|
196 |
-
return $ret;
|
197 |
}
|
198 |
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
|
205 |
-
|
206 |
|
207 |
-
|
208 |
-
|
209 |
-
}
|
210 |
}
|
|
|
211 |
|
212 |
-
|
213 |
-
|
214 |
-
$count = !isset($count)
|
215 |
-
? 0
|
216 |
-
: (int)$count;
|
217 |
|
218 |
-
|
219 |
|
220 |
-
|
221 |
-
|
222 |
-
}
|
223 |
}
|
|
|
224 |
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
$font_awesome = (int)WCL_Plugin::app()->getPopulateOption('combined_font_awesome_requests_number');
|
229 |
|
230 |
-
|
231 |
-
|
232 |
-
: 0;
|
233 |
-
$font_awesome_saved = 1 < $font_awesome
|
234 |
-
? $font_awesome - 1
|
235 |
-
: 0;
|
236 |
|
237 |
-
|
238 |
-
|
239 |
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
if( !is_array($links) ) {
|
250 |
-
return $links;
|
251 |
-
}
|
252 |
|
253 |
-
|
|
|
|
|
254 |
|
255 |
-
|
256 |
-
return $links[0];
|
257 |
-
}
|
258 |
|
259 |
-
|
260 |
-
$
|
261 |
-
|
262 |
-
$subset_arg = 'subset';
|
263 |
|
264 |
-
|
265 |
-
|
|
|
|
|
266 |
|
267 |
-
|
268 |
-
|
269 |
|
270 |
-
|
271 |
-
|
272 |
|
273 |
-
|
|
|
274 |
|
275 |
-
|
276 |
|
277 |
-
|
278 |
-
$args_str = substr($args_str, $family_arg_len + 2, strlen($args_str));
|
279 |
-
}
|
280 |
|
281 |
-
|
282 |
-
$
|
283 |
-
for($i = 0; $i < $tmp_count; $i++) {
|
284 |
-
$clean_links[] = $tmp[$i];
|
285 |
-
}
|
286 |
}
|
287 |
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
-
|
291 |
|
292 |
-
|
293 |
|
294 |
-
|
295 |
|
296 |
-
|
297 |
|
298 |
-
|
299 |
-
$font_name = str_replace(' ', '+', $tmp[0]);
|
300 |
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
|
|
|
|
|
|
307 |
|
308 |
-
|
309 |
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
}
|
318 |
}
|
319 |
}
|
|
|
320 |
|
321 |
-
|
322 |
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
|
327 |
-
|
328 |
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
|
333 |
-
|
334 |
-
|
335 |
-
}
|
336 |
}
|
337 |
}
|
338 |
-
}
|
339 |
}// End if().
|
340 |
-
}// End
|
|
|
341 |
|
342 |
-
|
343 |
|
344 |
-
|
345 |
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
|
350 |
-
|
351 |
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
|
358 |
-
|
359 |
|
360 |
-
|
361 |
-
|
362 |
-
}
|
363 |
-
|
364 |
-
if( !empty($val['subsets']) ) {
|
365 |
-
$subsets = array_merge($subsets, $val['subsets']);
|
366 |
-
}
|
367 |
-
|
368 |
-
$i++;
|
369 |
}
|
370 |
|
371 |
-
if( !empty($subsets) ) {
|
372 |
-
$
|
373 |
}
|
|
|
|
|
374 |
}
|
375 |
|
376 |
-
|
|
|
|
|
377 |
}
|
378 |
|
379 |
-
|
380 |
-
// End Lazy load fonts
|
381 |
-
/** ======================================================================== */
|
382 |
}
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* This class configures the google performance settings
|
4 |
+
*
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 2017 Webraftic Ltd
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
// Exit if accessed directly
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
class WCL_ConfigGooglePerformance extends Wbcr_FactoryClearfy206_Configurate {
|
16 |
+
|
17 |
/**
|
18 |
+
* @param WCL_Plugin $plugin
|
|
|
|
|
|
|
19 |
*/
|
20 |
+
public function __construct( WCL_Plugin $plugin ) {
|
21 |
+
parent::__construct( $plugin );
|
22 |
+
|
23 |
+
$this->plugin = $plugin;
|
24 |
}
|
25 |
+
|
26 |
+
public function registerActionsAndFilters() {
|
27 |
+
if ( $this->getPopulateOption( 'disable_google_fonts' ) ) {
|
28 |
+
add_action( 'wp_enqueue_scripts', [ $this, 'disableAllGoogleFonts' ], 999 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
if ( ! is_admin() ) {
|
32 |
+
$load_google_fonts = $this->getPopulateOption( 'lazy_load_google_fonts' );
|
33 |
+
$load_font_awesome = $this->getPopulateOption( 'lazy_load_font_awesome' );
|
34 |
|
35 |
+
if ( $load_google_fonts || $load_font_awesome ) {
|
36 |
+
add_action( 'wp_print_styles', [ $this, 'enqueueScripts' ], - 1 );
|
37 |
+
}
|
38 |
|
39 |
+
if ( $this->getPopulateOption( 'disable_google_maps' ) ) {
|
40 |
+
add_action( "wp_loaded", [ $this, 'disableGoogleMapsObStart' ] );
|
|
|
41 |
}
|
42 |
}
|
43 |
+
}
|
44 |
|
45 |
+
/** ======================================================================== */
|
46 |
+
// Disable google maps
|
47 |
+
/** ======================================================================== */
|
48 |
|
49 |
+
public function disableGoogleMapsObStart() {
|
50 |
+
ob_start( [ $this, 'disableGoogleMapsObEnd' ] );
|
51 |
+
}
|
|
|
52 |
|
53 |
+
/**
|
54 |
+
* @param string $html
|
55 |
+
*
|
56 |
+
* @return mixed
|
57 |
+
*/
|
58 |
+
public function disableGoogleMapsObEnd( $html ) {
|
59 |
+
global $post;
|
60 |
|
61 |
+
$exclude_ids = [];
|
62 |
+
$exclude_from_disable_google_maps = $this->getPopulateOption( 'exclude_from_disable_google_maps' );
|
63 |
|
64 |
+
if ( '' !== $exclude_from_disable_google_maps ) {
|
65 |
+
$exclude_ids = array_map( 'intval', explode( ',', $exclude_from_disable_google_maps ) );
|
66 |
+
}
|
67 |
+
if ( $post && ! in_array( $post->ID, $exclude_ids, true ) ) {
|
68 |
+
$html = preg_replace( '/<script[^<>]*\/\/maps.(googleapis|google|gstatic).com\/[^<>]*><\/script>/i', '', $html );
|
69 |
|
70 |
+
if ( $this->getPopulateOption( 'remove_iframe_google_maps' ) ) {
|
71 |
+
$html = preg_replace( '/<iframe[^<>]*\/\/(www\.)?google\.com(\.\w*)?\/maps\/[^<>]*><\/iframe>/i', '', $html );
|
|
|
72 |
}
|
|
|
|
|
73 |
}
|
74 |
|
75 |
+
return $html;
|
76 |
+
}
|
|
|
77 |
|
78 |
+
/** ======================================================================== */
|
79 |
+
// End disable google maps
|
80 |
+
/** ======================================================================== */
|
81 |
|
82 |
+
public function disableAllGoogleFonts() {
|
83 |
+
global $wp_styles;
|
84 |
|
85 |
+
// multiple patterns hook
|
86 |
+
$regex = '/fonts\.googleapis\.com\/css\?family/i';
|
87 |
|
88 |
+
if ( ! empty( $wp_styles->registered ) && is_array( $wp_styles->registered ) ) {
|
89 |
+
foreach ( $wp_styles->registered as $registered ) {
|
90 |
+
if ( preg_match( $regex, $registered->src ) ) {
|
91 |
+
wp_dequeue_style( $registered->handle );
|
92 |
}
|
93 |
}
|
94 |
}
|
95 |
+
}
|
96 |
|
97 |
+
/** ======================================================================== */
|
98 |
+
// Lazy load fonts
|
99 |
+
/** ======================================================================== */
|
100 |
|
101 |
+
public function enqueueScripts() {
|
102 |
+
$async_links = $this->checkGooglefontsFontawesomeStyles();
|
|
|
103 |
|
104 |
+
if ( ! empty( $async_links ) ) {
|
105 |
+
wp_enqueue_script( $this->plugin->getPluginName() . '-css-lazy-load', WCL_PLUGIN_URL . '/assets/js/css-lazy-load.min.js', [ 'jquery' ], $this->plugin->getPluginVersion() );
|
106 |
+
wp_localize_script( $this->plugin->getPluginName() . '-css-lazy-load', 'wbcr_clearfy_async_links', $async_links );
|
|
|
107 |
}
|
108 |
+
}
|
109 |
|
110 |
+
private function checkGooglefontsFontawesomeStyles() {
|
111 |
+
global $wp_styles;
|
112 |
+
|
113 |
+
$ret = [];
|
114 |
+
|
115 |
+
if ( isset( $wp_styles ) && ! empty( $wp_styles ) ) {
|
116 |
+
|
117 |
+
$load_google_fonts = $this->getPopulateOption( 'lazy_load_google_fonts', false );
|
118 |
+
$load_font_awesome = $this->getPopulateOption( 'lazy_load_font_awesome', false );
|
119 |
+
|
120 |
+
if ( $load_google_fonts || $load_font_awesome ) {
|
121 |
+
|
122 |
+
$gfonts_base_url = 'fonts.googleapis.com/css';
|
123 |
+
$gfonts_links = [];
|
124 |
+
|
125 |
+
$font_awesome_slug = 'font-awesome';
|
126 |
+
$font_awesome_slug_alt = 'fontawesome';
|
127 |
+
$font_awesome_links = [
|
128 |
+
'external' => [],
|
129 |
+
'internal' => [],
|
130 |
+
];
|
131 |
+
|
132 |
+
foreach ( $wp_styles->queue as $handle ) {
|
133 |
+
if ( ! isset( $wp_styles->registered[ $handle ] ) ) {
|
134 |
+
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
}
|
136 |
|
137 |
+
$style = $wp_styles->registered[ $handle ];
|
138 |
+
$style_src = isset( $style ) ? $style->src : null;
|
139 |
+
$style_ver = isset( $style ) ? $style->ver : false;
|
140 |
+
|
141 |
+
if ( $load_google_fonts && false !== strpos( $style_src, $gfonts_base_url ) ) {
|
142 |
+
$gfonts_links[] = urldecode( str_replace( [ '&' ], [ '&' ], $style_src ) );
|
143 |
+
|
144 |
+
wp_dequeue_style( $handle );
|
145 |
+
} else if ( $load_font_awesome && ( false !== strpos( $style_src, $font_awesome_slug ) || false !== strpos( $style_src, $font_awesome_slug_alt ) ) ) {
|
146 |
|
147 |
+
wp_dequeue_style( $handle );
|
148 |
|
149 |
+
$font_awesome_links[ false !== strpos( $style_src, site_url() ) ? 'internal' : 'external' ][] = [
|
150 |
+
'ver' => $style_ver,
|
151 |
+
'link' => $style_src,
|
152 |
+
];
|
153 |
+
}
|
154 |
+
}
|
155 |
|
156 |
+
if ( $load_font_awesome && ( ! empty( $font_awesome_links['internal'] ) || ! empty( $font_awesome_links['external'] ) ) ) {
|
157 |
|
158 |
+
// @note: Prioritize external links.
|
159 |
+
$fa_links = ! empty( $font_awesome_links['external'] ) ? $font_awesome_links['external'] : $font_awesome_links['internal'];
|
160 |
+
|
161 |
+
$selected_fa_link = $fa_links[0];
|
162 |
+
|
163 |
+
$links_count = count( $fa_links );
|
164 |
+
if ( 1 < $links_count ) {
|
165 |
+
for ( $i = 1; $i < $links_count; $i ++ ) {
|
166 |
+
if ( false !== $fa_links[ $i ]['ver'] && ( false === $selected_fa_link['ver'] || version_compare( $selected_fa_link['ver'], $fa_links[ $i ]['ver'], '<' ) ) ) {
|
167 |
+
$selected_fa_link = $fa_links[ $i ];
|
168 |
}
|
169 |
}
|
170 |
+
}
|
171 |
|
172 |
+
$ret[ $this->plugin->getPluginName() . '-font-awesome' ] = esc_url( $selected_fa_link['link'] );
|
173 |
|
174 |
+
$this->updateSavedFontAwesomeRequests( count( $font_awesome_links['internal'] ) + count( $font_awesome_links['external'] ) );
|
175 |
+
} else {
|
176 |
+
$this->updateSavedFontAwesomeRequests( 0 );
|
177 |
+
}
|
178 |
|
179 |
+
if ( $load_google_fonts && ! empty( $gfonts_links ) ) {
|
180 |
|
181 |
+
$ret[ $this->plugin->getPluginName() . '-google-fonts' ] = esc_url( $this->combineGoogleFontsLinks( $gfonts_links ) );
|
182 |
|
183 |
+
$this->updateSavedGoogleFontsRequest( count( $gfonts_links ) );
|
|
|
|
|
|
|
184 |
} else {
|
185 |
+
$this->updateSavedGoogleFontsRequest( 0 );
|
|
|
186 |
}
|
187 |
+
} else {
|
188 |
+
$this->updateSavedFontAwesomeRequests( 0 );
|
189 |
+
$this->updateSavedGoogleFontsRequest( 0 );
|
190 |
}
|
|
|
|
|
191 |
}
|
192 |
|
193 |
+
return $ret;
|
194 |
+
}
|
195 |
+
|
196 |
+
private function updateSavedGoogleFontsRequest( $count ) {
|
197 |
+
$count = ! isset( $count ) ? 0 : (int) $count;
|
198 |
|
199 |
+
$old_val = $this->getPopulateOption( 'combined_font_awesome_requests_number' );
|
200 |
|
201 |
+
if ( false === $old_val || ( false !== $old_val && $count > (int) $old_val ) ) {
|
202 |
+
$this->updatePopulateOption( 'combined_font_awesome_requests_number', $count );
|
|
|
203 |
}
|
204 |
+
}
|
205 |
|
206 |
+
private function updateSavedFontAwesomeRequests( $count ) {
|
207 |
+
$count = ! isset( $count ) ? 0 : (int) $count;
|
|
|
|
|
|
|
208 |
|
209 |
+
$old_val = $this->getPopulateOption( 'combined_google_fonts_requests_number' );
|
210 |
|
211 |
+
if ( false === $old_val || ( false !== $old_val && $count > (int) $old_val ) ) {
|
212 |
+
$this->updatePopulateOption( 'combined_google_fonts_requests_number', $count );
|
|
|
213 |
}
|
214 |
+
}
|
215 |
|
216 |
+
public static function saved_external_requests() {
|
217 |
+
$google_fonts = (int) WCL_Plugin::app()->getPopulateOption( 'combined_google_fonts_requests_number' );
|
218 |
+
$font_awesome = (int) WCL_Plugin::app()->getPopulateOption( 'combined_font_awesome_requests_number' );
|
|
|
219 |
|
220 |
+
$google_fonts_saved = 1 < $google_fonts ? $google_fonts - 1 : 0;
|
221 |
+
$font_awesome_saved = 1 < $font_awesome ? $font_awesome - 1 : 0;
|
|
|
|
|
|
|
|
|
222 |
|
223 |
+
return $google_fonts_saved + $font_awesome_saved;
|
224 |
+
}
|
225 |
|
226 |
+
/**
|
227 |
+
* Combine multiple Google Fonts links into one.
|
228 |
+
*
|
229 |
+
* @param array $links An array of the different Google Fonts links. Default array().
|
230 |
+
*
|
231 |
+
* @return string|array The compined Google Fonts link.
|
232 |
+
*/
|
233 |
+
private function combineGoogleFontsLinks( $links = [] ) {
|
|
|
|
|
|
|
|
|
234 |
|
235 |
+
if ( ! is_array( $links ) ) {
|
236 |
+
return $links;
|
237 |
+
}
|
238 |
|
239 |
+
$links = array_unique( $links );
|
|
|
|
|
240 |
|
241 |
+
if ( 1 === count( $links ) ) {
|
242 |
+
return $links[0];
|
243 |
+
}
|
|
|
244 |
|
245 |
+
$protocol = 'https';
|
246 |
+
$base_url = '//fonts.googleapis.com/css';
|
247 |
+
$family_arg = 'family';
|
248 |
+
$subset_arg = 'subset';
|
249 |
|
250 |
+
$base_url_len = strlen( $base_url );
|
251 |
+
$family_arg_len = strlen( $family_arg );
|
252 |
|
253 |
+
$fonts = [];
|
254 |
+
$cnt = 0;
|
255 |
|
256 |
+
$clean_links = [];
|
257 |
+
foreach ( $links as $k => $v ) {
|
258 |
|
259 |
+
$base_url_pos = strrpos( $v, $base_url );
|
260 |
|
261 |
+
$args_str = trim( substr( $v, ( $base_url_len + $base_url_pos ), strlen( $v ) ) );
|
|
|
|
|
262 |
|
263 |
+
if ( substr( $args_str, 0, $family_arg_len + 2 ) === '?' . $family_arg . '=' ) {
|
264 |
+
$args_str = substr( $args_str, $family_arg_len + 2, strlen( $args_str ) );
|
|
|
|
|
|
|
265 |
}
|
266 |
|
267 |
+
$tmp = explode( '|', $args_str );
|
268 |
+
$tmp_count = count( $tmp );
|
269 |
+
for ( $i = 0; $i < $tmp_count; $i ++ ) {
|
270 |
+
$clean_links[] = $tmp[ $i ];
|
271 |
+
}
|
272 |
+
}
|
273 |
|
274 |
+
foreach ( $clean_links as $k => $v ) {
|
275 |
|
276 |
+
$expl = explode( '&' . $subset_arg, $v );
|
277 |
|
278 |
+
if ( isset( $expl[0] ) && ! empty( $expl[0] ) ) {
|
279 |
|
280 |
+
$tmp = explode( ':', $expl[0] );
|
281 |
|
282 |
+
if ( isset( $tmp[0] ) && ! empty( $tmp[0] ) ) {
|
|
|
283 |
|
284 |
+
// Has font family name.
|
285 |
+
$font_name = str_replace( ' ', '+', $tmp[0] );
|
286 |
+
|
287 |
+
if ( ! isset( $fonts[ $font_name ] ) ) {
|
288 |
+
$fonts[ $font_name ] = [
|
289 |
+
'sizes' => [],
|
290 |
+
'subsets' => [],
|
291 |
+
];
|
292 |
+
}
|
293 |
|
294 |
+
if ( isset( $tmp[1] ) && ! empty( $tmp[1] ) ) {
|
295 |
|
296 |
+
// Has font sizes.
|
297 |
+
$x = explode( ',', $tmp[1] );
|
298 |
+
$xc = count( $x );
|
299 |
|
300 |
+
foreach ( $x as $xk => $xv ) {
|
301 |
+
if ( ! in_array( $xv, $fonts[ $font_name ]['sizes'], true ) && ( 400 !== (int) $xv || $xc > 1 ) ) {
|
302 |
+
$fonts[ $font_name ]['sizes'][] = $xv;
|
|
|
303 |
}
|
304 |
}
|
305 |
+
}
|
306 |
|
307 |
+
if ( isset( $expl[1] ) && ! empty( $expl[1] ) ) {
|
308 |
|
309 |
+
// Has subsets.
|
310 |
+
$y = explode( ',', $expl[1] );
|
311 |
+
$yc = count( $y );
|
312 |
|
313 |
+
foreach ( $y as $yk => $yv ) {
|
314 |
|
315 |
+
if ( '=' === substr( $yv, 0, 1 ) ) {
|
316 |
+
$yv = substr( $yv, 1, strlen( $yv ) );
|
317 |
+
}
|
318 |
|
319 |
+
if ( ! in_array( $yv, $fonts[ $font_name ]['subsets'], true ) && ( 'latin' !== $yv || $yc > 1 ) ) {
|
320 |
+
$fonts[ $font_name ]['subsets'][] = $yv;
|
|
|
321 |
}
|
322 |
}
|
323 |
+
}
|
324 |
}// End if().
|
325 |
+
}// End if().
|
326 |
+
}// End foreach().
|
327 |
|
328 |
+
$ret = '';
|
329 |
|
330 |
+
if ( ! empty( $fonts ) ) {
|
331 |
|
332 |
+
$ret .= $protocol . ':' . $base_url;
|
333 |
+
$i = 0;
|
334 |
+
$subsets = [];
|
335 |
|
336 |
+
foreach ( $fonts as $key => $val ) {
|
337 |
|
338 |
+
if ( 0 === $i ) {
|
339 |
+
$ret .= '?' . $family_arg . '=';
|
340 |
+
} else {
|
341 |
+
$ret .= '|';
|
342 |
+
}
|
343 |
|
344 |
+
$ret .= $key;
|
345 |
|
346 |
+
if ( ! empty( $val['sizes'] ) ) {
|
347 |
+
$ret .= ':' . implode( ',', $val['sizes'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
}
|
349 |
|
350 |
+
if ( ! empty( $val['subsets'] ) ) {
|
351 |
+
$subsets = array_merge( $subsets, $val['subsets'] );
|
352 |
}
|
353 |
+
|
354 |
+
$i ++;
|
355 |
}
|
356 |
|
357 |
+
if ( ! empty( $subsets ) ) {
|
358 |
+
$ret .= '&' . $subset_arg . '=' . implode( ',', $subsets );
|
359 |
+
}
|
360 |
}
|
361 |
|
362 |
+
return $ret;
|
|
|
|
|
363 |
}
|
364 |
+
|
365 |
+
/** ======================================================================== */
|
366 |
+
// End Lazy load fonts
|
367 |
+
/** ======================================================================== */
|
368 |
+
}
|
includes/classes/class.configurate-performance.php
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* This class configures the code cleanup settings
|
4 |
-
*
|
|
|
5 |
* @copyright (c) 2017 Webraftic Ltd
|
6 |
-
* @version
|
7 |
*/
|
8 |
|
9 |
// Exit if accessed directly
|
@@ -12,72 +13,217 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
}
|
13 |
|
14 |
class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
15 |
-
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
18 |
*/
|
19 |
public function __construct( WCL_Plugin $plugin ) {
|
20 |
parent::__construct( $plugin );
|
21 |
-
|
22 |
$this->plugin = $plugin;
|
23 |
}
|
24 |
-
|
25 |
public function registerActionsAndFilters() {
|
26 |
if ( $this->getPopulateOption( 'disable_emoji' ) ) {
|
27 |
-
add_action( 'init',
|
28 |
}
|
29 |
-
|
30 |
-
if ( $this->getPopulateOption( 'remove_jquery_migrate' ) && ! is_admin() ) {
|
31 |
-
add_filter( 'wp_default_scripts', array( $this, 'removeJqueryMigrate' ) );
|
32 |
-
}
|
33 |
-
|
34 |
if ( $this->getPopulateOption( 'disable_embeds' ) ) {
|
35 |
-
add_action( 'init',
|
36 |
}
|
37 |
-
|
38 |
if ( $this->getPopulateOption( 'disable_json_rest_api' ) ) {
|
39 |
$this->removeRestApi();
|
40 |
}
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
if ( ! is_admin() ) {
|
|
|
|
|
|
|
|
|
43 |
if ( $this->getPopulateOption( 'disable_feed' ) ) {
|
44 |
$this->disableFeed();
|
45 |
}
|
46 |
-
|
47 |
if ( $this->getPopulateOption( 'disable_dashicons' ) ) {
|
48 |
-
add_action( 'wp_print_styles',
|
49 |
}
|
50 |
-
|
51 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
52 |
-
add_action( 'wp_loaded',
|
53 |
}
|
54 |
-
|
55 |
if ( $this->getPopulateOption( 'remove_recent_comments_style' ) ) {
|
56 |
-
add_action( 'widgets_init',
|
57 |
}
|
58 |
-
|
59 |
/**
|
60 |
* Priority set to 9999. Higher numbers correspond with later execution.
|
61 |
* Hook into the style loader and remove the version information.
|
62 |
*/
|
63 |
-
|
64 |
if ( $this->getPopulateOption( 'remove_style_version' ) ) {
|
65 |
-
add_filter( 'style_loader_src',
|
66 |
}
|
67 |
-
|
68 |
/**
|
69 |
* Hook into the script loader and remove the version information.
|
70 |
*/
|
71 |
-
|
72 |
if ( $this->getPopulateOption( 'remove_js_version' ) ) {
|
73 |
-
add_filter( 'script_loader_src',
|
74 |
}
|
75 |
-
|
76 |
$this->remove_tags_from_head();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
}
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
/**
|
82 |
* Remove wp version from any enqueued scripts
|
83 |
*
|
@@ -86,20 +232,21 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
86 |
* @return string
|
87 |
*/
|
88 |
public function hideWordpressVersionInScript( $src, $handle ) {
|
89 |
-
if ( is_user_logged_in()
|
90 |
return $src;
|
91 |
}
|
|
|
92 |
$filename_arr = explode( '?', basename( $src ) );
|
93 |
$exclude_file_list = $this->getPopulateOption( 'remove_version_exclude', '' );
|
94 |
$exclude_files_arr = array_map( 'trim', explode( PHP_EOL, $exclude_file_list ) );
|
95 |
-
|
96 |
if ( strpos( $src, 'ver=' ) && ! in_array( str_replace( '?' . $filename_arr[1], '', $src ), $exclude_files_arr, true ) ) {
|
97 |
$src = remove_query_arg( 'ver', $src );
|
98 |
}
|
99 |
-
|
100 |
return $src;
|
101 |
}
|
102 |
-
|
103 |
/**
|
104 |
* Disable dashicons for all but the auth user
|
105 |
*/
|
@@ -108,7 +255,7 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
108 |
wp_deregister_style( 'dashicons' );
|
109 |
}
|
110 |
}
|
111 |
-
|
112 |
/**
|
113 |
* Disable the emoji's
|
114 |
*/
|
@@ -121,37 +268,37 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
121 |
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
|
122 |
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
|
123 |
add_filter( 'emoji_svg_url', '__return_false' );
|
124 |
-
add_filter( 'tiny_mce_plugins',
|
125 |
-
add_filter( 'wp_resource_hints',
|
126 |
}
|
127 |
-
|
128 |
/**
|
129 |
* Filter function used to remove the tinymce emoji plugin.
|
130 |
*
|
131 |
-
* @param
|
132 |
*
|
133 |
* @return array Difference betwen the two arrays
|
134 |
*/
|
135 |
function disableEmojisTinymce( $plugins ) {
|
136 |
if ( is_array( $plugins ) ) {
|
137 |
-
return array_diff( $plugins,
|
138 |
}
|
139 |
-
|
140 |
-
return
|
141 |
}
|
142 |
-
|
143 |
/**
|
144 |
* Remove emoji CDN hostname from DNS prefetching hints.
|
145 |
*
|
146 |
-
* @param
|
147 |
-
* @param
|
148 |
*
|
149 |
* @return array Difference betwen the two arrays.
|
150 |
*/
|
151 |
function disableEmojisRemoveDnsPrefetch( $urls, $relation_type ) {
|
152 |
-
|
153 |
if ( 'dns-prefetch' == $relation_type ) {
|
154 |
-
|
155 |
// Strip out any URLs referencing the WordPress.org emoji location
|
156 |
$emoji_svg_url_bit = 'https://s.w.org/images/core/emoji/';
|
157 |
foreach ( $urls as $key => $url ) {
|
@@ -160,10 +307,10 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
160 |
}
|
161 |
}
|
162 |
}
|
163 |
-
|
164 |
return $urls;
|
165 |
}
|
166 |
-
|
167 |
/**
|
168 |
* Disables the WP REST API for visitors not logged into WordPress.
|
169 |
*/
|
@@ -173,82 +320,82 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
173 |
Link: <https://example.com/wp-json/>; rel="https://api.w.org/"
|
174 |
*/
|
175 |
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
|
176 |
-
|
177 |
/*
|
178 |
Disable REST API links in HTML <head>
|
179 |
<link rel='https://api.w.org/' href='https://example.com/wp-json/' />
|
180 |
*/
|
181 |
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
|
182 |
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
|
183 |
-
|
184 |
/*
|
185 |
Disable REST API
|
186 |
*/
|
187 |
if ( version_compare( get_bloginfo( 'version' ), '4.7', '>=' ) ) {
|
188 |
-
add_filter( 'rest_authentication_errors',
|
189 |
} else {
|
190 |
// REST API 1.x
|
191 |
add_filter( 'json_enabled', '__return_false' );
|
192 |
add_filter( 'json_jsonp_enabled', '__return_false' );
|
193 |
-
|
194 |
// REST API 2.x
|
195 |
add_filter( 'rest_enabled', '__return_false' );
|
196 |
add_filter( 'rest_jsonp_enabled', '__return_false' );
|
197 |
}
|
198 |
}
|
199 |
-
|
200 |
public function disableWpRestApi( $access ) {
|
201 |
if ( ! is_user_logged_in() ) {
|
202 |
-
|
203 |
$message = apply_filters( 'disable_wp_rest_api_error', __( 'REST API restricted to authenticated users.', 'clearfy' ) );
|
204 |
-
|
205 |
-
return new WP_Error( 'rest_login_required', $message,
|
206 |
}
|
207 |
-
|
208 |
return $access;
|
209 |
}
|
210 |
-
|
211 |
-
|
212 |
// todo: не работает должным образом, проверить
|
213 |
public function removeRecentCommentsStyle() {
|
214 |
global $wp_widget_factory;
|
215 |
-
|
216 |
$widget_recent_comments = isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ? $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] : null;
|
217 |
-
|
218 |
if ( ! empty( $widget_recent_comments ) ) {
|
219 |
-
remove_action( 'wp_head',
|
220 |
$wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
|
221 |
'recent_comments_style'
|
222 |
-
|
223 |
}
|
224 |
}
|
225 |
-
|
226 |
/**
|
227 |
* Disable feeds
|
228 |
*/
|
229 |
public function disableFeed() {
|
230 |
-
add_action( 'wp_loaded',
|
231 |
-
add_action( 'template_redirect',
|
232 |
-
add_filter( 'bbp_request',
|
233 |
}
|
234 |
-
|
235 |
-
|
236 |
public function removeFeedLinks() {
|
237 |
remove_action( 'wp_head', 'feed_links', 2 );
|
238 |
remove_action( 'wp_head', 'feed_links_extra', 3 );
|
239 |
}
|
240 |
-
|
241 |
public function filterFeeds() {
|
242 |
if ( ! is_feed() || is_404() ) {
|
243 |
return;
|
244 |
}
|
245 |
-
|
246 |
$this->disabled_feed_behaviour();
|
247 |
}
|
248 |
-
|
249 |
public function disabled_feed_behaviour() {
|
250 |
global $wp_rewrite, $wp_query;
|
251 |
-
|
252 |
if ( $this->getPopulateOption( 'disabled_feed_behaviour', 'redirect_301' ) == 'redirect_404' ) {
|
253 |
$wp_query->is_feed = false;
|
254 |
$wp_query->set_404();
|
@@ -260,60 +407,60 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
260 |
wp_redirect( esc_url_raw( remove_query_arg( 'feed' ) ), 301 );
|
261 |
exit;
|
262 |
}
|
263 |
-
|
264 |
if ( 'old' !== get_query_var( 'feed' ) ) { // WP redirects these anyway, and removing the query var will confuse it thoroughly
|
265 |
set_query_var( 'feed', '' );
|
266 |
}
|
267 |
-
|
268 |
redirect_canonical(); // Let WP figure out the appropriate redirect URL.
|
269 |
-
|
270 |
// Still here? redirect_canonical failed to redirect, probably because of a filter. Try the hard way.
|
271 |
$struct = ( ! is_singular() && is_comment_feed() ) ? $wp_rewrite->get_comment_feed_permastruct() : $wp_rewrite->get_feed_permastruct();
|
272 |
-
|
273 |
$struct = preg_quote( $struct, '#' );
|
274 |
$struct = str_replace( '%feed%', '(\w+)?', $struct );
|
275 |
$struct = preg_replace( '#/+#', '/', $struct );
|
276 |
$requested_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
277 |
-
|
278 |
$new_url = preg_replace( '#' . $struct . '/?$#', '', $requested_url );
|
279 |
-
|
280 |
if ( $new_url !== $requested_url ) {
|
281 |
wp_redirect( $new_url, 301 );
|
282 |
exit;
|
283 |
}
|
284 |
}
|
285 |
}
|
286 |
-
|
287 |
/**
|
288 |
* BBPress feed detection sourced from bbp_request_feed_trap() in BBPress Core.
|
289 |
*
|
290 |
-
* @param
|
291 |
*
|
292 |
* @return array
|
293 |
*/
|
294 |
public function filterBbpFeeds( $query_vars ) {
|
295 |
// Looking at a feed
|
296 |
if ( isset( $query_vars['feed'] ) ) {
|
297 |
-
|
298 |
// Forum/Topic/Reply Feed
|
299 |
if ( isset( $query_vars['post_type'] ) ) {
|
300 |
-
|
301 |
// Matched post type
|
302 |
$post_type = false;
|
303 |
-
$post_types =
|
304 |
-
|
305 |
if ( function_exists( 'bbp_get_forum_post_type' ) && function_exists( 'bbp_get_topic_post_type' ) && function_exists( 'bbp_get_reply_post_type' ) ) // Post types to check
|
306 |
{
|
307 |
-
$post_types =
|
308 |
bbp_get_forum_post_type(),
|
309 |
bbp_get_topic_post_type(),
|
310 |
bbp_get_reply_post_type(),
|
311 |
-
|
312 |
}
|
313 |
-
|
314 |
// Cast query vars as array outside of foreach loop
|
315 |
$qv_array = (array) $query_vars['post_type'];
|
316 |
-
|
317 |
// Check if this query is for a bbPress post type
|
318 |
foreach ( $post_types as $bbp_pt ) {
|
319 |
if ( in_array( $bbp_pt, $qv_array, true ) ) {
|
@@ -321,49 +468,46 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
321 |
break;
|
322 |
}
|
323 |
}
|
324 |
-
|
325 |
// Looking at a bbPress post type
|
326 |
if ( ! empty( $post_type ) ) {
|
327 |
$this->disabled_feed_behaviour();
|
328 |
}
|
329 |
}
|
330 |
}
|
331 |
-
|
332 |
// No feed so continue on
|
333 |
return $query_vars;
|
334 |
}
|
335 |
-
|
336 |
/**
|
337 |
* Remove unused tags from head
|
338 |
*/
|
339 |
public function remove_tags_from_head() {
|
340 |
-
|
341 |
-
remove_action('wp_head', 'wp_resource_hints', 2);
|
342 |
-
}*/
|
343 |
-
|
344 |
if ( $this->getPopulateOption( 'remove_rsd_link' ) ) {
|
345 |
remove_action( 'wp_head', 'rsd_link' );
|
346 |
}
|
347 |
-
|
348 |
if ( $this->getPopulateOption( 'remove_wlw_link' ) ) {
|
349 |
remove_action( 'wp_head', 'wlwmanifest_link' );
|
350 |
}
|
351 |
-
|
352 |
if ( $this->getPopulateOption( 'remove_adjacent_posts_link' ) ) {
|
353 |
-
remove_action( 'wp_head', 'adjacent_posts_rel_link'
|
354 |
-
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head'
|
355 |
}
|
356 |
-
|
357 |
if ( $this->getPopulateOption( 'remove_shortlink_link' ) ) {
|
358 |
-
remove_action( 'wp_head', 'wp_shortlink_wp_head'
|
359 |
-
remove_action( 'template_redirect', 'wp_shortlink_header', 11
|
360 |
}
|
361 |
-
|
362 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
363 |
-
add_filter( 'avf_profile_head_tag',
|
364 |
}
|
365 |
}
|
366 |
-
|
367 |
/**
|
368 |
* For more information about XFN relationships and examples concerning their use, see the
|
369 |
*
|
@@ -373,7 +517,7 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
373 |
public function removeXfnLink() {
|
374 |
return false;
|
375 |
}
|
376 |
-
|
377 |
/**
|
378 |
* Remove jQuery Migrate
|
379 |
*
|
@@ -381,36 +525,36 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
381 |
*/
|
382 |
public function removeJqueryMigrate( &$scripts ) {
|
383 |
$scripts->remove( 'jquery' );
|
384 |
-
$scripts->add( 'jquery', false,
|
385 |
}
|
386 |
-
|
387 |
// Disable Embeds
|
388 |
public function disableEmbeds() {
|
389 |
global $wp, $wp_embed;
|
390 |
-
|
391 |
-
$wp->public_query_vars = array_diff( $wp->public_query_vars,
|
392 |
-
remove_filter( 'the_content',
|
393 |
-
|
394 |
// Remove content feed filter
|
395 |
remove_filter( 'the_content_feed', '_oembed_filter_feed_content' );
|
396 |
-
|
397 |
// Abort embed libraries loading
|
398 |
remove_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 );
|
399 |
-
|
400 |
// No auto-embedding support
|
401 |
add_filter( 'pre_option_embed_autourls', '__return_false' );
|
402 |
-
|
403 |
// Avoid oEmbed auto discovery
|
404 |
add_filter( 'embed_oembed_discover', '__return_false' );
|
405 |
-
|
406 |
// Remove REST API related hooks
|
407 |
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
|
408 |
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10 );
|
409 |
-
|
410 |
// Remove header actions
|
411 |
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
|
412 |
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
|
413 |
-
|
414 |
remove_action( 'embed_head', 'enqueue_embed_scripts', 1 );
|
415 |
remove_action( 'embed_head', 'print_emoji_detection_script' );
|
416 |
remove_action( 'embed_head', 'print_embed_styles' );
|
@@ -419,39 +563,39 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
419 |
remove_action( 'embed_head', 'wp_no_robots' );
|
420 |
remove_action( 'embed_head', 'rel_canonical' );
|
421 |
remove_action( 'embed_head', 'locale_stylesheet', 30 );
|
422 |
-
|
423 |
remove_action( 'embed_content_meta', 'print_embed_comments_button' );
|
424 |
remove_action( 'embed_content_meta', 'print_embed_sharing_button' );
|
425 |
-
|
426 |
remove_action( 'embed_footer', 'print_embed_sharing_dialog' );
|
427 |
remove_action( 'embed_footer', 'print_embed_scripts' );
|
428 |
remove_action( 'embed_footer', 'wp_print_footer_scripts', 20 );
|
429 |
-
|
430 |
remove_filter( 'excerpt_more', 'wp_embed_excerpt_more', 20 );
|
431 |
remove_filter( 'the_excerpt_embed', 'wptexturize' );
|
432 |
remove_filter( 'the_excerpt_embed', 'convert_chars' );
|
433 |
remove_filter( 'the_excerpt_embed', 'wpautop' );
|
434 |
remove_filter( 'the_excerpt_embed', 'shortcode_unautop' );
|
435 |
remove_filter( 'the_excerpt_embed', 'wp_embed_excerpt_attachment' );
|
436 |
-
|
437 |
// Remove data and results filters
|
438 |
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
|
439 |
remove_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10 );
|
440 |
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
|
441 |
-
|
442 |
// WooCommerce embeds in short description
|
443 |
remove_filter( 'woocommerce_short_description', 'wc_do_oembeds' );
|
444 |
-
|
445 |
-
add_filter( 'tiny_mce_plugins',
|
446 |
-
add_filter( 'rewrite_rules_array',
|
447 |
}
|
448 |
-
|
449 |
public function disableEmbedsTinyMcePlugin( $plugins ) {
|
450 |
-
return array_diff( $plugins,
|
451 |
}
|
452 |
-
|
453 |
public function disableEmbedsRewrites( $rules ) {
|
454 |
-
$new_rules =
|
455 |
foreach ( $rules as $rule => $rewrite ) {
|
456 |
if ( false !== ( $pos = strpos( $rewrite, '?' ) ) ) {
|
457 |
$params = explode( '&', substr( $rewrite, $pos + 1 ) );
|
@@ -461,25 +605,25 @@ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
|
461 |
}
|
462 |
$new_rules[ $rule ] = $rewrite;
|
463 |
}
|
464 |
-
|
465 |
return $new_rules;
|
466 |
}
|
467 |
-
|
468 |
public function htmlCompressor() {
|
469 |
-
ob_start(
|
470 |
}
|
471 |
-
|
472 |
public function htmlCompressorMain( $content ) {
|
473 |
$old_content = $content;
|
474 |
-
|
475 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
476 |
$content = preg_replace( '/<link[^>]+href=(?:\'|")https?:\/\/gmpg.org\/xfn\/11(?:\'|")(?:[^>]+)?>/', '', $content );
|
477 |
-
|
478 |
if ( empty( $content ) ) {
|
479 |
$content = $old_content;
|
480 |
}
|
481 |
}
|
482 |
-
|
483 |
return $content;
|
484 |
}
|
485 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
* This class configures the code cleanup settings
|
4 |
+
*
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 2017 Webraftic Ltd
|
7 |
+
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly
|
13 |
}
|
14 |
|
15 |
class WCL_ConfigPerformance extends Wbcr_FactoryClearfy206_Configurate {
|
16 |
+
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
19 |
*/
|
20 |
public function __construct( WCL_Plugin $plugin ) {
|
21 |
parent::__construct( $plugin );
|
22 |
+
|
23 |
$this->plugin = $plugin;
|
24 |
}
|
25 |
+
|
26 |
public function registerActionsAndFilters() {
|
27 |
if ( $this->getPopulateOption( 'disable_emoji' ) ) {
|
28 |
+
add_action( 'init', [ $this, 'disableEmojis' ] );
|
29 |
}
|
30 |
+
|
|
|
|
|
|
|
|
|
31 |
if ( $this->getPopulateOption( 'disable_embeds' ) ) {
|
32 |
+
add_action( 'init', [ $this, 'disableEmbeds' ] );
|
33 |
}
|
34 |
+
|
35 |
if ( $this->getPopulateOption( 'disable_json_rest_api' ) ) {
|
36 |
$this->removeRestApi();
|
37 |
}
|
38 |
+
|
39 |
+
if ( ( $this->getPopulateOption( 'revision_limit' ) || $this->getPopulateOption( 'revisions_disable' ) ) ) {
|
40 |
+
add_filter( 'wp_revisions_to_keep', [ $this, 'revisions_to_keep' ], 10, 2 );
|
41 |
+
|
42 |
+
if ( $this->getPopulateOption( 'revisions_disable' ) ) {
|
43 |
+
add_action( 'admin_init', [ $this, 'disable_revision_support' ] );
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
if ( ! is_admin() ) {
|
48 |
+
if ( $this->getPopulateOption( 'remove_jquery_migrate' ) ) {
|
49 |
+
add_filter( 'wp_default_scripts', [ $this, 'removeJqueryMigrate' ] );
|
50 |
+
}
|
51 |
+
|
52 |
if ( $this->getPopulateOption( 'disable_feed' ) ) {
|
53 |
$this->disableFeed();
|
54 |
}
|
55 |
+
|
56 |
if ( $this->getPopulateOption( 'disable_dashicons' ) ) {
|
57 |
+
add_action( 'wp_print_styles', [ $this, 'disableDashicons' ], - 1 );
|
58 |
}
|
59 |
+
|
60 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
61 |
+
add_action( 'wp_loaded', [ $this, 'htmlCompressor' ] );
|
62 |
}
|
63 |
+
|
64 |
if ( $this->getPopulateOption( 'remove_recent_comments_style' ) ) {
|
65 |
+
add_action( 'widgets_init', [ $this, 'removeRecentCommentsStyle' ] );
|
66 |
}
|
67 |
+
|
68 |
/**
|
69 |
* Priority set to 9999. Higher numbers correspond with later execution.
|
70 |
* Hook into the style loader and remove the version information.
|
71 |
*/
|
72 |
+
|
73 |
if ( $this->getPopulateOption( 'remove_style_version' ) ) {
|
74 |
+
add_filter( 'style_loader_src', [ $this, 'hideWordpressVersionInScript' ], 9999, 2 );
|
75 |
}
|
76 |
+
|
77 |
/**
|
78 |
* Hook into the script loader and remove the version information.
|
79 |
*/
|
80 |
+
|
81 |
if ( $this->getPopulateOption( 'remove_js_version' ) ) {
|
82 |
+
add_filter( 'script_loader_src', [ $this, 'hideWordpressVersionInScript' ], 9999, 2 );
|
83 |
}
|
84 |
+
|
85 |
$this->remove_tags_from_head();
|
86 |
+
} else {
|
87 |
+
if ( $this->getPopulateOption( 'disable_post_autosave' ) ) {
|
88 |
+
add_action( 'wp_print_scripts', [ $this, 'disable_posts_autosave' ] );
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
if ( $this->getPopulateOption( 'gutenberg_autosave_control' ) ) {
|
93 |
+
add_action( 'admin_init', [ $this, 'register_gutenberg_autosave_settings' ] );
|
94 |
+
add_action( 'rest_api_init', [ $this, 'gutenberg_autosave_rest_mapping' ] );
|
95 |
+
add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_gutenberg_autosave_assets' ] );
|
96 |
}
|
97 |
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Gutenberg assets.
|
101 |
+
*/
|
102 |
+
public function enqueue_gutenberg_autosave_assets() {
|
103 |
+
/**
|
104 |
+
* Styles.
|
105 |
+
*/
|
106 |
+
wp_enqueue_style( 'wbcr-clearfy-gutenberg-autosave', WCL_PLUGIN_URL . '/admin/assets/css/gutenberg-autosave-control.css', [], $this->plugin->getPluginVersion(), 'all' );
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Scripts.
|
110 |
+
*/
|
111 |
+
wp_enqueue_script( 'wbcr-clearfy-gutenberg-autosave', WCL_PLUGIN_URL . '/admin/assets/gutenberg/build/index.build.js', [
|
112 |
+
'react',
|
113 |
+
'wp-api-fetch',
|
114 |
+
'wp-components',
|
115 |
+
'wp-compose',
|
116 |
+
'wp-data',
|
117 |
+
'wp-edit-post',
|
118 |
+
'wp-i18n',
|
119 |
+
'wp-plugins',
|
120 |
+
], $this->plugin->getPluginVersion(), true );
|
121 |
+
// todo: It is necessary to cteate the localization for the Gutenberg widget, which is responsible for the selection of AutoSave intveraval.
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Register settings for Gutenberg
|
126 |
+
*/
|
127 |
+
public function register_gutenberg_autosave_settings() {
|
128 |
+
register_setting( 'clearfy-gutenberg-autosave', $this->plugin->getPrefix() . 'autosave_interval', [ 'default' => 99999 ] );
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Get interval option.
|
133 |
+
*
|
134 |
+
* @return int
|
135 |
+
*/
|
136 |
+
public function get_gutenberg_autosave_interval() {
|
137 |
+
return (int) $this->getOption( 'gutenberg_autosave_interval', 99999 );
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Set interval option.
|
142 |
+
*
|
143 |
+
* @param \WP_REST_Request $request
|
144 |
+
*
|
145 |
+
* @return mixed
|
146 |
+
*/
|
147 |
+
public function set_get_gutenberg_autosave_interval( \WP_REST_Request $request ) {
|
148 |
+
if ( ! isset( $request['interval'] ) ) {
|
149 |
+
return new \WP_Error( 'no_interval', __( 'No interval specified', 'clearfy' ), [ 'status' => 400 ] );
|
150 |
+
}
|
151 |
+
|
152 |
+
return $this->updateOption( 'gutenberg_autosave_interval', (int) $request['interval'] );
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Setup REST API for managing interval option. Сreates an endpoint
|
157 |
+
* for working with autosave in gutenberg editor.
|
158 |
+
*/
|
159 |
+
public function gutenberg_autosave_rest_mapping() {
|
160 |
+
register_rest_route( 'clearfy-gutenberg-autosave/v1', '/interval', [
|
161 |
+
[
|
162 |
+
'methods' => \WP_REST_Server::READABLE,
|
163 |
+
'callback' => [ $this, 'get_gutenberg_autosave_interval' ],
|
164 |
+
],
|
165 |
+
[
|
166 |
+
'methods' => \WP_REST_Server::CREATABLE,
|
167 |
+
'callback' => [ $this, 'set_get_gutenberg_autosave_interval' ],
|
168 |
+
'args' => [
|
169 |
+
'interval' => [
|
170 |
+
'validate_callback' => function ( $param, $request, $key ) {
|
171 |
+
return is_numeric( $param );
|
172 |
+
},
|
173 |
+
],
|
174 |
+
],
|
175 |
+
'permission_callback' => function () {
|
176 |
+
return WCL_Plugin::app()->currentUserCan();
|
177 |
+
},
|
178 |
+
],
|
179 |
+
] );
|
180 |
+
}
|
181 |
+
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Disables automatic saving drafts.
|
185 |
+
*/
|
186 |
+
public function disable_posts_autosave() {
|
187 |
+
wp_deregister_script( 'autosave' );
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Full disable revision support in Wordpress
|
192 |
+
*
|
193 |
+
* @since 1.5.1
|
194 |
+
*/
|
195 |
+
public function disable_revision_support() {
|
196 |
+
$post_types = get_post_types();
|
197 |
+
|
198 |
+
if ( ! is_array( $post_types ) || empty( $post_types ) ) {
|
199 |
+
return;
|
200 |
+
}
|
201 |
+
|
202 |
+
foreach ( $post_types as $post_type ) {
|
203 |
+
remove_post_type_support( $post_type, 'revisions' );
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Revisions limit
|
209 |
+
*
|
210 |
+
* @since 0.9.5
|
211 |
+
*/
|
212 |
+
|
213 |
+
public function revisions_to_keep( $num, $post ) {
|
214 |
+
$revision_limit = $this->getPopulateOption( 'revision_limit', null );
|
215 |
+
if ( $revision_limit ) {
|
216 |
+
$num = (int) $revision_limit;
|
217 |
+
}
|
218 |
+
|
219 |
+
if ( $this->getPopulateOption( 'revisions_disable' ) ) {
|
220 |
+
$num = 0;
|
221 |
+
}
|
222 |
+
|
223 |
+
return $num;
|
224 |
+
}
|
225 |
+
|
226 |
+
|
227 |
/**
|
228 |
* Remove wp version from any enqueued scripts
|
229 |
*
|
232 |
* @return string
|
233 |
*/
|
234 |
public function hideWordpressVersionInScript( $src, $handle ) {
|
235 |
+
if ( is_user_logged_in() ) {
|
236 |
return $src;
|
237 |
}
|
238 |
+
|
239 |
$filename_arr = explode( '?', basename( $src ) );
|
240 |
$exclude_file_list = $this->getPopulateOption( 'remove_version_exclude', '' );
|
241 |
$exclude_files_arr = array_map( 'trim', explode( PHP_EOL, $exclude_file_list ) );
|
242 |
+
|
243 |
if ( strpos( $src, 'ver=' ) && ! in_array( str_replace( '?' . $filename_arr[1], '', $src ), $exclude_files_arr, true ) ) {
|
244 |
$src = remove_query_arg( 'ver', $src );
|
245 |
}
|
246 |
+
|
247 |
return $src;
|
248 |
}
|
249 |
+
|
250 |
/**
|
251 |
* Disable dashicons for all but the auth user
|
252 |
*/
|
255 |
wp_deregister_style( 'dashicons' );
|
256 |
}
|
257 |
}
|
258 |
+
|
259 |
/**
|
260 |
* Disable the emoji's
|
261 |
*/
|
268 |
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
|
269 |
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
|
270 |
add_filter( 'emoji_svg_url', '__return_false' );
|
271 |
+
add_filter( 'tiny_mce_plugins', [ $this, 'disableEmojisTinymce' ] );
|
272 |
+
add_filter( 'wp_resource_hints', [ $this, 'disableEmojisRemoveDnsPrefetch' ], 10, 2 );
|
273 |
}
|
274 |
+
|
275 |
/**
|
276 |
* Filter function used to remove the tinymce emoji plugin.
|
277 |
*
|
278 |
+
* @param array $plugins
|
279 |
*
|
280 |
* @return array Difference betwen the two arrays
|
281 |
*/
|
282 |
function disableEmojisTinymce( $plugins ) {
|
283 |
if ( is_array( $plugins ) ) {
|
284 |
+
return array_diff( $plugins, [ 'wpemoji' ] );
|
285 |
}
|
286 |
+
|
287 |
+
return [];
|
288 |
}
|
289 |
+
|
290 |
/**
|
291 |
* Remove emoji CDN hostname from DNS prefetching hints.
|
292 |
*
|
293 |
+
* @param array $urls URLs to print for resource hints.
|
294 |
+
* @param string $relation_type The relation type the URLs are printed for.
|
295 |
*
|
296 |
* @return array Difference betwen the two arrays.
|
297 |
*/
|
298 |
function disableEmojisRemoveDnsPrefetch( $urls, $relation_type ) {
|
299 |
+
|
300 |
if ( 'dns-prefetch' == $relation_type ) {
|
301 |
+
|
302 |
// Strip out any URLs referencing the WordPress.org emoji location
|
303 |
$emoji_svg_url_bit = 'https://s.w.org/images/core/emoji/';
|
304 |
foreach ( $urls as $key => $url ) {
|
307 |
}
|
308 |
}
|
309 |
}
|
310 |
+
|
311 |
return $urls;
|
312 |
}
|
313 |
+
|
314 |
/**
|
315 |
* Disables the WP REST API for visitors not logged into WordPress.
|
316 |
*/
|
320 |
Link: <https://example.com/wp-json/>; rel="https://api.w.org/"
|
321 |
*/
|
322 |
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
|
323 |
+
|
324 |
/*
|
325 |
Disable REST API links in HTML <head>
|
326 |
<link rel='https://api.w.org/' href='https://example.com/wp-json/' />
|
327 |
*/
|
328 |
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
|
329 |
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
|
330 |
+
|
331 |
/*
|
332 |
Disable REST API
|
333 |
*/
|
334 |
if ( version_compare( get_bloginfo( 'version' ), '4.7', '>=' ) ) {
|
335 |
+
add_filter( 'rest_authentication_errors', [ $this, 'disableWpRestApi' ] );
|
336 |
} else {
|
337 |
// REST API 1.x
|
338 |
add_filter( 'json_enabled', '__return_false' );
|
339 |
add_filter( 'json_jsonp_enabled', '__return_false' );
|
340 |
+
|
341 |
// REST API 2.x
|
342 |
add_filter( 'rest_enabled', '__return_false' );
|
343 |
add_filter( 'rest_jsonp_enabled', '__return_false' );
|
344 |
}
|
345 |
}
|
346 |
+
|
347 |
public function disableWpRestApi( $access ) {
|
348 |
if ( ! is_user_logged_in() ) {
|
349 |
+
|
350 |
$message = apply_filters( 'disable_wp_rest_api_error', __( 'REST API restricted to authenticated users.', 'clearfy' ) );
|
351 |
+
|
352 |
+
return new WP_Error( 'rest_login_required', $message, [ 'status' => rest_authorization_required_code() ] );
|
353 |
}
|
354 |
+
|
355 |
return $access;
|
356 |
}
|
357 |
+
|
358 |
+
|
359 |
// todo: не работает должным образом, проверить
|
360 |
public function removeRecentCommentsStyle() {
|
361 |
global $wp_widget_factory;
|
362 |
+
|
363 |
$widget_recent_comments = isset( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] ) ? $wp_widget_factory->widgets['WP_Widget_Recent_Comments'] : null;
|
364 |
+
|
365 |
if ( ! empty( $widget_recent_comments ) ) {
|
366 |
+
remove_action( 'wp_head', [
|
367 |
$wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
|
368 |
'recent_comments_style'
|
369 |
+
] );
|
370 |
}
|
371 |
}
|
372 |
+
|
373 |
/**
|
374 |
* Disable feeds
|
375 |
*/
|
376 |
public function disableFeed() {
|
377 |
+
add_action( 'wp_loaded', [ $this, 'removeFeedLinks' ] );
|
378 |
+
add_action( 'template_redirect', [ $this, 'filterFeeds' ], 1 );
|
379 |
+
add_filter( 'bbp_request', [ $this, 'filterBbpFeeds' ], 9 );
|
380 |
}
|
381 |
+
|
382 |
+
|
383 |
public function removeFeedLinks() {
|
384 |
remove_action( 'wp_head', 'feed_links', 2 );
|
385 |
remove_action( 'wp_head', 'feed_links_extra', 3 );
|
386 |
}
|
387 |
+
|
388 |
public function filterFeeds() {
|
389 |
if ( ! is_feed() || is_404() ) {
|
390 |
return;
|
391 |
}
|
392 |
+
|
393 |
$this->disabled_feed_behaviour();
|
394 |
}
|
395 |
+
|
396 |
public function disabled_feed_behaviour() {
|
397 |
global $wp_rewrite, $wp_query;
|
398 |
+
|
399 |
if ( $this->getPopulateOption( 'disabled_feed_behaviour', 'redirect_301' ) == 'redirect_404' ) {
|
400 |
$wp_query->is_feed = false;
|
401 |
$wp_query->set_404();
|
407 |
wp_redirect( esc_url_raw( remove_query_arg( 'feed' ) ), 301 );
|
408 |
exit;
|
409 |
}
|
410 |
+
|
411 |
if ( 'old' !== get_query_var( 'feed' ) ) { // WP redirects these anyway, and removing the query var will confuse it thoroughly
|
412 |
set_query_var( 'feed', '' );
|
413 |
}
|
414 |
+
|
415 |
redirect_canonical(); // Let WP figure out the appropriate redirect URL.
|
416 |
+
|
417 |
// Still here? redirect_canonical failed to redirect, probably because of a filter. Try the hard way.
|
418 |
$struct = ( ! is_singular() && is_comment_feed() ) ? $wp_rewrite->get_comment_feed_permastruct() : $wp_rewrite->get_feed_permastruct();
|
419 |
+
|
420 |
$struct = preg_quote( $struct, '#' );
|
421 |
$struct = str_replace( '%feed%', '(\w+)?', $struct );
|
422 |
$struct = preg_replace( '#/+#', '/', $struct );
|
423 |
$requested_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
424 |
+
|
425 |
$new_url = preg_replace( '#' . $struct . '/?$#', '', $requested_url );
|
426 |
+
|
427 |
if ( $new_url !== $requested_url ) {
|
428 |
wp_redirect( $new_url, 301 );
|
429 |
exit;
|
430 |
}
|
431 |
}
|
432 |
}
|
433 |
+
|
434 |
/**
|
435 |
* BBPress feed detection sourced from bbp_request_feed_trap() in BBPress Core.
|
436 |
*
|
437 |
+
* @param array $query_vars
|
438 |
*
|
439 |
* @return array
|
440 |
*/
|
441 |
public function filterBbpFeeds( $query_vars ) {
|
442 |
// Looking at a feed
|
443 |
if ( isset( $query_vars['feed'] ) ) {
|
444 |
+
|
445 |
// Forum/Topic/Reply Feed
|
446 |
if ( isset( $query_vars['post_type'] ) ) {
|
447 |
+
|
448 |
// Matched post type
|
449 |
$post_type = false;
|
450 |
+
$post_types = [];
|
451 |
+
|
452 |
if ( function_exists( 'bbp_get_forum_post_type' ) && function_exists( 'bbp_get_topic_post_type' ) && function_exists( 'bbp_get_reply_post_type' ) ) // Post types to check
|
453 |
{
|
454 |
+
$post_types = [
|
455 |
bbp_get_forum_post_type(),
|
456 |
bbp_get_topic_post_type(),
|
457 |
bbp_get_reply_post_type(),
|
458 |
+
];
|
459 |
}
|
460 |
+
|
461 |
// Cast query vars as array outside of foreach loop
|
462 |
$qv_array = (array) $query_vars['post_type'];
|
463 |
+
|
464 |
// Check if this query is for a bbPress post type
|
465 |
foreach ( $post_types as $bbp_pt ) {
|
466 |
if ( in_array( $bbp_pt, $qv_array, true ) ) {
|
468 |
break;
|
469 |
}
|
470 |
}
|
471 |
+
|
472 |
// Looking at a bbPress post type
|
473 |
if ( ! empty( $post_type ) ) {
|
474 |
$this->disabled_feed_behaviour();
|
475 |
}
|
476 |
}
|
477 |
}
|
478 |
+
|
479 |
// No feed so continue on
|
480 |
return $query_vars;
|
481 |
}
|
482 |
+
|
483 |
/**
|
484 |
* Remove unused tags from head
|
485 |
*/
|
486 |
public function remove_tags_from_head() {
|
487 |
+
|
|
|
|
|
|
|
488 |
if ( $this->getPopulateOption( 'remove_rsd_link' ) ) {
|
489 |
remove_action( 'wp_head', 'rsd_link' );
|
490 |
}
|
491 |
+
|
492 |
if ( $this->getPopulateOption( 'remove_wlw_link' ) ) {
|
493 |
remove_action( 'wp_head', 'wlwmanifest_link' );
|
494 |
}
|
495 |
+
|
496 |
if ( $this->getPopulateOption( 'remove_adjacent_posts_link' ) ) {
|
497 |
+
remove_action( 'wp_head', 'adjacent_posts_rel_link' );
|
498 |
+
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
|
499 |
}
|
500 |
+
|
501 |
if ( $this->getPopulateOption( 'remove_shortlink_link' ) ) {
|
502 |
+
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
|
503 |
+
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
|
504 |
}
|
505 |
+
|
506 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
507 |
+
add_filter( 'avf_profile_head_tag', [ $this, 'removeXfnLink' ] );
|
508 |
}
|
509 |
}
|
510 |
+
|
511 |
/**
|
512 |
* For more information about XFN relationships and examples concerning their use, see the
|
513 |
*
|
517 |
public function removeXfnLink() {
|
518 |
return false;
|
519 |
}
|
520 |
+
|
521 |
/**
|
522 |
* Remove jQuery Migrate
|
523 |
*
|
525 |
*/
|
526 |
public function removeJqueryMigrate( &$scripts ) {
|
527 |
$scripts->remove( 'jquery' );
|
528 |
+
$scripts->add( 'jquery', false, [ 'jquery-core' ], '1.12.4' );
|
529 |
}
|
530 |
+
|
531 |
// Disable Embeds
|
532 |
public function disableEmbeds() {
|
533 |
global $wp, $wp_embed;
|
534 |
+
|
535 |
+
$wp->public_query_vars = array_diff( $wp->public_query_vars, [ 'embed' ] );
|
536 |
+
remove_filter( 'the_content', [ $wp_embed, 'autoembed' ], 8 );
|
537 |
+
|
538 |
// Remove content feed filter
|
539 |
remove_filter( 'the_content_feed', '_oembed_filter_feed_content' );
|
540 |
+
|
541 |
// Abort embed libraries loading
|
542 |
remove_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0 );
|
543 |
+
|
544 |
// No auto-embedding support
|
545 |
add_filter( 'pre_option_embed_autourls', '__return_false' );
|
546 |
+
|
547 |
// Avoid oEmbed auto discovery
|
548 |
add_filter( 'embed_oembed_discover', '__return_false' );
|
549 |
+
|
550 |
// Remove REST API related hooks
|
551 |
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
|
552 |
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10 );
|
553 |
+
|
554 |
// Remove header actions
|
555 |
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
|
556 |
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
|
557 |
+
|
558 |
remove_action( 'embed_head', 'enqueue_embed_scripts', 1 );
|
559 |
remove_action( 'embed_head', 'print_emoji_detection_script' );
|
560 |
remove_action( 'embed_head', 'print_embed_styles' );
|
563 |
remove_action( 'embed_head', 'wp_no_robots' );
|
564 |
remove_action( 'embed_head', 'rel_canonical' );
|
565 |
remove_action( 'embed_head', 'locale_stylesheet', 30 );
|
566 |
+
|
567 |
remove_action( 'embed_content_meta', 'print_embed_comments_button' );
|
568 |
remove_action( 'embed_content_meta', 'print_embed_sharing_button' );
|
569 |
+
|
570 |
remove_action( 'embed_footer', 'print_embed_sharing_dialog' );
|
571 |
remove_action( 'embed_footer', 'print_embed_scripts' );
|
572 |
remove_action( 'embed_footer', 'wp_print_footer_scripts', 20 );
|
573 |
+
|
574 |
remove_filter( 'excerpt_more', 'wp_embed_excerpt_more', 20 );
|
575 |
remove_filter( 'the_excerpt_embed', 'wptexturize' );
|
576 |
remove_filter( 'the_excerpt_embed', 'convert_chars' );
|
577 |
remove_filter( 'the_excerpt_embed', 'wpautop' );
|
578 |
remove_filter( 'the_excerpt_embed', 'shortcode_unautop' );
|
579 |
remove_filter( 'the_excerpt_embed', 'wp_embed_excerpt_attachment' );
|
580 |
+
|
581 |
// Remove data and results filters
|
582 |
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
|
583 |
remove_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10 );
|
584 |
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
|
585 |
+
|
586 |
// WooCommerce embeds in short description
|
587 |
remove_filter( 'woocommerce_short_description', 'wc_do_oembeds' );
|
588 |
+
|
589 |
+
add_filter( 'tiny_mce_plugins', [ $this, 'disableEmbedsTinyMcePlugin' ] );
|
590 |
+
add_filter( 'rewrite_rules_array', [ $this, 'disableEmbedsRewrites' ] );
|
591 |
}
|
592 |
+
|
593 |
public function disableEmbedsTinyMcePlugin( $plugins ) {
|
594 |
+
return array_diff( $plugins, [ 'wpembed', 'wpview' ] );
|
595 |
}
|
596 |
+
|
597 |
public function disableEmbedsRewrites( $rules ) {
|
598 |
+
$new_rules = [];
|
599 |
foreach ( $rules as $rule => $rewrite ) {
|
600 |
if ( false !== ( $pos = strpos( $rewrite, '?' ) ) ) {
|
601 |
$params = explode( '&', substr( $rewrite, $pos + 1 ) );
|
605 |
}
|
606 |
$new_rules[ $rule ] = $rewrite;
|
607 |
}
|
608 |
+
|
609 |
return $new_rules;
|
610 |
}
|
611 |
+
|
612 |
public function htmlCompressor() {
|
613 |
+
ob_start( [ $this, 'htmlCompressorMain' ] );
|
614 |
}
|
615 |
+
|
616 |
public function htmlCompressorMain( $content ) {
|
617 |
$old_content = $content;
|
618 |
+
|
619 |
if ( $this->getPopulateOption( 'remove_xfn_link' ) ) {
|
620 |
$content = preg_replace( '/<link[^>]+href=(?:\'|")https?:\/\/gmpg.org\/xfn\/11(?:\'|")(?:[^>]+)?>/', '', $content );
|
621 |
+
|
622 |
if ( empty( $content ) ) {
|
623 |
$content = $old_content;
|
624 |
}
|
625 |
}
|
626 |
+
|
627 |
return $content;
|
628 |
}
|
629 |
}
|
includes/classes/class.configurate-privacy.php
CHANGED
@@ -2,9 +2,10 @@
|
|
2 |
|
3 |
/**
|
4 |
* This class configures the code cleanup settings
|
5 |
-
*
|
|
|
6 |
* @copyright (c) 2017 Webraftic Ltd
|
7 |
-
* @version
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly
|
@@ -13,58 +14,86 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
|
15 |
class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy206_Configurate {
|
16 |
-
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
19 |
*/
|
20 |
public function __construct( WCL_Plugin $plugin ) {
|
21 |
parent::__construct( $plugin );
|
22 |
-
|
23 |
$this->plugin = $plugin;
|
24 |
}
|
25 |
-
|
26 |
public function registerActionsAndFilters() {
|
27 |
if ( ! is_admin() ) {
|
28 |
if ( $this->getPopulateOption( 'remove_meta_generator' ) ) {
|
29 |
-
|
30 |
-
|
31 |
if ( class_exists( 'WooCommerce' ) ) {
|
32 |
remove_action( 'wp_head', 'woo_version' );
|
33 |
}
|
34 |
-
|
|
|
35 |
if ( class_exists( 'SitePress' ) ) {
|
36 |
global $sitepress;
|
37 |
-
remove_action( 'wp_head',
|
38 |
}
|
39 |
-
|
|
|
|
|
40 |
add_filter( 'the_generator', '__return_empty_string' );
|
41 |
-
|
42 |
-
//
|
43 |
-
|
44 |
-
add_action( 'wp_head', function () {
|
45 |
-
ob_start( function ( $content ) {
|
46 |
-
$raw_content = $content;
|
47 |
-
$content = preg_replace( '/<meta.*name="generator".*?\/>/m', '', $content );
|
48 |
-
if ( empty( $content ) ) {
|
49 |
-
return $raw_content;
|
50 |
-
}
|
51 |
-
|
52 |
-
return $content;
|
53 |
-
} );
|
54 |
-
}, 0, 0 );
|
55 |
}
|
56 |
-
|
57 |
if ( $this->getPopulateOption( 'remove_html_comments' ) ) {
|
58 |
-
add_action( 'wp_loaded',
|
59 |
}
|
60 |
}
|
61 |
}
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
-
|
68 |
/**
|
69 |
* !ngg_resource - can not be deleted, otherwise the plugin nextgen gallery will not work
|
70 |
*
|
@@ -72,8 +101,18 @@ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy206_Configurate {
|
|
72 |
*
|
73 |
* @return mixed
|
74 |
*/
|
75 |
-
public function
|
|
|
|
|
76 |
//CLRF-166 issue fix bug with noindex (\s?\/?noindex)
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
}
|
2 |
|
3 |
/**
|
4 |
* This class configures the code cleanup settings
|
5 |
+
*
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* @copyright (c) 2017 Webraftic Ltd
|
8 |
+
* @version 1.0
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
14 |
}
|
15 |
|
16 |
class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy206_Configurate {
|
17 |
+
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
20 |
*/
|
21 |
public function __construct( WCL_Plugin $plugin ) {
|
22 |
parent::__construct( $plugin );
|
23 |
+
|
24 |
$this->plugin = $plugin;
|
25 |
}
|
26 |
+
|
27 |
public function registerActionsAndFilters() {
|
28 |
if ( ! is_admin() ) {
|
29 |
if ( $this->getPopulateOption( 'remove_meta_generator' ) ) {
|
30 |
+
// Clean meta generator for Woocommerce
|
|
|
31 |
if ( class_exists( 'WooCommerce' ) ) {
|
32 |
remove_action( 'wp_head', 'woo_version' );
|
33 |
}
|
34 |
+
|
35 |
+
// Clean meta generator for SitePress
|
36 |
if ( class_exists( 'SitePress' ) ) {
|
37 |
global $sitepress;
|
38 |
+
remove_action( 'wp_head', [ $sitepress, 'meta_generator_tag' ] );
|
39 |
}
|
40 |
+
|
41 |
+
// Clean meta generator for Wordpress core
|
42 |
+
remove_action( 'wp_head', 'wp_generator' );
|
43 |
add_filter( 'the_generator', '__return_empty_string' );
|
44 |
+
|
45 |
+
// Clean all meta generators
|
46 |
+
add_action( 'wp_head', [ $this, 'clean_meta_generators' ], 100 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
48 |
+
|
49 |
if ( $this->getPopulateOption( 'remove_html_comments' ) ) {
|
50 |
+
add_action( 'wp_loaded', [ $this, 'clean_html_comments' ] );
|
51 |
}
|
52 |
}
|
53 |
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
57 |
+
* @since 1.5.3
|
58 |
+
*/
|
59 |
+
public function clean_meta_generators() {
|
60 |
+
ob_start( [ $this, 'replace_meta_generators' ] );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
65 |
+
* @since 1.0.0
|
66 |
+
*/
|
67 |
+
public function clean_html_comments() {
|
68 |
+
ob_start( [ $this, 'replace_html_comments' ] );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Replace <meta .* name="generator"> like tags
|
73 |
+
* which may contain versioning of
|
74 |
+
*
|
75 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
76 |
+
* @since 1.5.3
|
77 |
+
*
|
78 |
+
* @param $html
|
79 |
+
*
|
80 |
+
* @return string|string[]|null
|
81 |
+
*/
|
82 |
+
public function replace_meta_generators( $html ) {
|
83 |
+
$raw_html = $html;
|
84 |
+
|
85 |
+
$pattern = '/<meta[^>]+name=["\']generator["\'][^>]+>/i';
|
86 |
+
$html = preg_replace( $pattern, '', $html );
|
87 |
+
|
88 |
+
// If replacement is completed with an error, user will receive a white screen.
|
89 |
+
// We have to prevent it.
|
90 |
+
if ( empty( $html ) ) {
|
91 |
+
return $raw_html;
|
92 |
+
}
|
93 |
+
|
94 |
+
return $html;
|
95 |
}
|
96 |
+
|
97 |
/**
|
98 |
* !ngg_resource - can not be deleted, otherwise the plugin nextgen gallery will not work
|
99 |
*
|
101 |
*
|
102 |
* @return mixed
|
103 |
*/
|
104 |
+
public function replace_html_comments( $html ) {
|
105 |
+
$raw_html = $html;
|
106 |
+
|
107 |
//CLRF-166 issue fix bug with noindex (\s?\/?noindex)
|
108 |
+
$html = preg_replace( '#<!--(?!<!|\s?ngg_resource|\s?\/?noindex)[^\[>].*?-->#s', '', $html );
|
109 |
+
|
110 |
+
// If replacement is completed with an error, user will receive a white screen.
|
111 |
+
// We have to prevent it.
|
112 |
+
if ( empty( $html ) ) {
|
113 |
+
return $raw_html;
|
114 |
+
}
|
115 |
+
|
116 |
+
return $html;
|
117 |
}
|
118 |
}
|
includes/classes/class.configurate-seo.php
CHANGED
@@ -1,492 +1,476 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
/**
|
4 |
-
*
|
5 |
-
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
-
* @copyright (c) 2017 Webraftic Ltd
|
7 |
-
* @version 1.0
|
8 |
*/
|
|
|
|
|
9 |
|
10 |
-
|
11 |
-
if( !defined('ABSPATH') ) {
|
12 |
-
exit;
|
13 |
}
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
23 |
|
24 |
-
$this->
|
25 |
-
|
26 |
-
|
27 |
-
public function registerActionsAndFilters()
|
28 |
-
{
|
29 |
-
if( !is_admin() ) {
|
30 |
-
if( $this->getPopulateOption('content_image_auto_alt') ) {
|
31 |
-
add_filter('the_content', array($this, 'contentImageAutoAlt'));
|
32 |
-
add_filter('wp_get_attachment_image_attributes', array(
|
33 |
-
$this,
|
34 |
-
'changeAttachementImageAttributes'
|
35 |
-
), 20, 2);
|
36 |
-
}
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
|
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
add_filter('comment_reply_link', array($this, 'removeReplytocomLink'));
|
57 |
-
}
|
58 |
|
59 |
-
|
|
|
|
|
60 |
}
|
|
|
|
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
65 |
}
|
66 |
-
add_action('wp_logout', array($this, 'lastModifedFlushCookie'));
|
67 |
-
}
|
68 |
-
|
69 |
-
if( $this->plugin->isActivateComponent('yoast_seo') && defined('WPSEO_VERSION') ) {
|
70 |
-
if( !is_admin() ) {
|
71 |
-
if( $this->getPopulateOption('yoast_remove_json_ld_search') ) {
|
72 |
-
add_filter('disable_wpseo_json_ld_search', '__return_true');
|
73 |
-
}
|
74 |
|
75 |
-
|
76 |
-
|
77 |
-
}
|
78 |
-
if( $this->getPopulateOption('yoast_remove_head_comment') ) {
|
79 |
-
add_action('init', array($this, 'yoastRemoveHeadComment'));
|
80 |
-
}
|
81 |
-
/*if( $this->getPopulateOption('yoast_canonical_pagination') ) {
|
82 |
-
add_filter('wpseo_canonical', array($this, 'yoastCanonicalPagination'));
|
83 |
-
}*/
|
84 |
}
|
85 |
-
if( $this->getPopulateOption('
|
86 |
-
$this
|
87 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
}
|
|
|
90 |
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
|
99 |
-
|
100 |
-
|
101 |
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
|
|
108 |
|
109 |
-
|
110 |
-
|
111 |
-
global $post;
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
|
117 |
-
|
118 |
|
119 |
-
|
120 |
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
}
|
130 |
}
|
131 |
}
|
|
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
}
|
136 |
-
|
137 |
-
return $content;
|
138 |
}
|
139 |
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
}*/
|
158 |
-
|
159 |
-
/// Get title
|
160 |
-
$title = get_post_field('post_title', $parent);
|
161 |
-
if( '' === $attr['alt'] ) {
|
162 |
-
$attr['alt'] = $title;
|
163 |
-
}
|
164 |
-
$attr['title'] = $title;
|
165 |
|
|
|
166 |
return $attr;
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
|
|
168 |
|
169 |
-
|
170 |
-
|
171 |
-
*
|
172 |
-
* @param string $output
|
173 |
-
* @return mixed|string|void
|
174 |
-
*/
|
175 |
-
public function rightRobotsTxt($output)
|
176 |
-
{
|
177 |
-
if( $this->getPopulateOption('robots_txt_text') ) {
|
178 |
-
return $this->getPopulateOption('robots_txt_text');
|
179 |
-
}
|
180 |
|
181 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
}
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
*/
|
187 |
-
public function attachmentPagesRedirect()
|
188 |
-
{
|
189 |
-
global $post;
|
190 |
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
|
|
|
|
|
|
|
|
198 |
}
|
|
|
199 |
}
|
|
|
200 |
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
public function removeSinglePaginationDuplicate()
|
206 |
-
{
|
207 |
-
global $post, $page;
|
208 |
|
209 |
-
|
|
|
210 |
|
211 |
-
|
212 |
-
if( function_exists('bp_is_my_profile') ) {
|
213 |
-
if( bp_is_my_profile() ) {
|
214 |
-
return;
|
215 |
-
}
|
216 |
-
}
|
217 |
|
218 |
-
|
219 |
-
|
|
|
220 |
return;
|
221 |
}
|
|
|
222 |
|
223 |
-
|
|
|
|
|
|
|
224 |
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
229 |
}
|
230 |
}
|
|
|
231 |
|
232 |
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
if( strpos($link_output, 'breadcrumb_last') !== false ) {
|
244 |
-
$link_output = '';
|
245 |
-
}
|
246 |
|
247 |
-
|
|
|
248 |
}
|
249 |
|
250 |
-
|
251 |
-
|
252 |
-
*/
|
253 |
-
public function yoastRemoveHeadComment()
|
254 |
-
{
|
255 |
-
add_action('get_header', array($this, 'yoastRemoveHeadCommentStart'));
|
256 |
-
add_action('wp_head', array($this, 'yoastRemoveHeadCommentEnd'), 999);
|
257 |
-
}
|
258 |
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
|
|
|
|
|
|
263 |
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
}
|
268 |
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
}
|
273 |
|
|
|
|
|
|
|
274 |
|
275 |
-
/**
|
276 |
-
* Remove <image:image> from sitemap
|
277 |
-
*/
|
278 |
-
public function yoastRemoveImageFromXmlSitemap()
|
279 |
-
{
|
280 |
-
add_filter('wpseo_xml_sitemap_img', '__return_false');
|
281 |
-
add_filter('wpseo_sitemap_url', array($this, 'yoastRemoveImageFromXmlClean'), 10, 2);
|
282 |
-
}
|
283 |
|
284 |
-
|
285 |
-
|
286 |
-
|
|
|
|
|
|
|
|
|
287 |
|
288 |
-
|
289 |
-
|
290 |
|
291 |
-
|
292 |
-
|
293 |
-
*
|
294 |
-
* @param $canonical
|
295 |
-
*
|
296 |
-
* @return string
|
297 |
-
*/
|
298 |
-
/*public function yoastCanonicalPagination( $canonical ) {
|
299 |
-
if ( is_category() && is_paged() ) {
|
300 |
-
$cat = get_category( get_query_var( 'cat' ) );
|
301 |
-
$cat_id = $cat->cat_ID;
|
302 |
-
return get_category_link( $cat_id );
|
303 |
-
}
|
304 |
-
if ( is_home() && is_paged() ) {
|
305 |
-
return home_url('/');
|
306 |
-
}
|
307 |
-
return $canonical;
|
308 |
-
}*/
|
309 |
|
310 |
-
|
311 |
-
|
312 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
if( is_author() ) {
|
318 |
-
wp_redirect(home_url(), 301);
|
319 |
|
320 |
-
|
321 |
-
|
|
|
|
|
|
|
|
|
322 |
}
|
|
|
323 |
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
|
328 |
-
|
329 |
-
}
|
330 |
}
|
|
|
331 |
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
|
336 |
-
|
337 |
-
}
|
338 |
}
|
339 |
}
|
|
|
340 |
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
global $post;
|
347 |
-
|
348 |
-
if( !empty($post) && isset($_GET['replytocom']) && is_singular() ) {
|
349 |
-
$post_url = get_permalink($post->ID);
|
350 |
-
$comment_id = sanitize_text_field($_GET['replytocom']);
|
351 |
-
$query_string = remove_query_arg('replytocom', sanitize_text_field($_SERVER['QUERY_STRING']));
|
352 |
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
|
358 |
-
|
359 |
-
|
360 |
}
|
|
|
361 |
|
362 |
-
|
|
|
363 |
}
|
364 |
|
365 |
-
|
366 |
-
|
367 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
}
|
369 |
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
return;
|
374 |
-
}
|
375 |
|
376 |
-
|
|
|
|
|
377 |
return;
|
378 |
}
|
379 |
-
|
380 |
-
if( is_front_page() ) {
|
381 |
-
$last_modified_exclude_frontpage = $this->getPopulateOption('disable_frontpage_last_modified_headers');
|
382 |
-
if( $last_modified_exclude_frontpage ) {
|
383 |
-
return;
|
384 |
-
}
|
385 |
-
}
|
386 |
|
387 |
-
|
388 |
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
|
393 |
-
|
394 |
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
}
|
399 |
}
|
|
|
400 |
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
405 |
return;
|
406 |
}
|
407 |
-
|
408 |
-
$
|
409 |
/**
|
410 |
-
* If
|
411 |
*/
|
412 |
-
if(
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
$comments = get_comments(array(
|
424 |
-
'post_id' => $post->ID,
|
425 |
-
'number' => '1',
|
426 |
-
'status' => 'approve',
|
427 |
-
'orderby' => 'comment_date_gmt',
|
428 |
-
));
|
429 |
-
if( !empty($comments) && isset($comments[0]) ) {
|
430 |
-
$comment_time = strtotime($comments[0]->comment_date_gmt);
|
431 |
-
if( $comment_time > $post_time ) {
|
432 |
-
$modified_time = $comment_time;
|
433 |
-
}
|
434 |
}
|
435 |
}
|
436 |
-
$last_modified = str_replace('+0000', 'GMT', gmdate('r', $modified_time));
|
437 |
}
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
if( !isset($post->post_modified_gmt) ) {
|
448 |
-
return;
|
449 |
-
}
|
450 |
-
$post_time = strtotime($post->post_modified_gmt);
|
451 |
-
$modified_time = $post_time;
|
452 |
-
$last_modified = str_replace('+0000', 'GMT', gmdate('r', $modified_time));
|
453 |
}
|
454 |
-
|
455 |
-
|
456 |
-
* If headers already sent - do nothing
|
457 |
-
*/
|
458 |
-
|
459 |
-
if( headers_sent() ) {
|
460 |
return;
|
461 |
}
|
|
|
|
|
|
|
|
|
462 |
|
463 |
-
|
|
|
|
|
464 |
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
}
|
469 |
|
470 |
-
|
471 |
|
472 |
-
|
|
|
|
|
|
|
473 |
|
474 |
-
|
475 |
|
476 |
-
|
477 |
-
? $_SERVER['SERVER_PROTOCOL']
|
478 |
-
: 'HTTP/1.0');
|
479 |
|
480 |
-
|
481 |
-
|
|
|
|
|
|
|
482 |
}
|
483 |
}
|
484 |
}
|
|
|
485 |
|
486 |
-
|
487 |
-
{
|
488 |
-
|
489 |
-
setcookie("wbcr_lastmodifed_flush", 1, time() + 3600);
|
490 |
-
}
|
491 |
}
|
492 |
}
|
|
1 |
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This class configures the parameters seo
|
5 |
+
*
|
6 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* @copyright (c) 2017 Webraftic Ltd
|
8 |
+
* @version 1.0
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
class WCL_ConfigSeo extends Wbcr_FactoryClearfy206_Configurate {
|
17 |
+
|
18 |
/**
|
19 |
+
* @param WCL_Plugin $plugin
|
|
|
|
|
|
|
20 |
*/
|
21 |
+
public function __construct( WCL_Plugin $plugin ) {
|
22 |
+
parent::__construct( $plugin );
|
23 |
|
24 |
+
$this->plugin = $plugin;
|
|
|
|
|
25 |
}
|
26 |
|
27 |
+
public function registerActionsAndFilters() {
|
28 |
+
if ( ! is_admin() ) {
|
29 |
+
if ( $this->getPopulateOption( 'content_image_auto_alt' ) ) {
|
30 |
+
add_filter( 'the_content', [ $this, 'contentImageAutoAlt' ], 9999 );
|
31 |
+
add_filter( 'wp_get_attachment_image_attributes', [
|
32 |
+
$this,
|
33 |
+
'changeAttachementImageAttributes'
|
34 |
+
], 20, 2 );
|
35 |
+
}
|
36 |
|
37 |
+
if ( $this->getPopulateOption( 'right_robots_txt' ) ) {
|
38 |
+
add_filter( 'robots_txt', [ $this, 'rightRobotsTxt' ], 9999 );
|
39 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
+
if ( $this->getPopulateOption( 'remove_last_item_breadcrumb_yoast' ) ) {
|
42 |
+
add_filter( 'wpseo_breadcrumb_single_link', [ $this, 'removeLastItemBreadcrumbYoast' ] );
|
43 |
+
}
|
44 |
|
45 |
+
if ( $this->getPopulateOption( 'attachment_pages_redirect' ) ) {
|
46 |
+
add_action( 'template_redirect', [ $this, 'attachmentPagesRedirect' ] );
|
47 |
+
}
|
48 |
|
49 |
+
if ( $this->getPopulateOption( 'remove_single_pagination_duplicate' ) ) {
|
50 |
+
add_action( 'template_redirect', [ $this, 'removeSinglePaginationDuplicate' ] );
|
51 |
+
}
|
52 |
|
53 |
+
if ( $this->getPopulateOption( 'remove_replytocom' ) ) {
|
54 |
+
add_action( 'template_redirect', [ $this, 'removeReplytocomRedirect' ], 1 );
|
55 |
+
add_filter( 'comment_reply_link', [ $this, 'removeReplytocomLink' ] );
|
56 |
+
}
|
57 |
|
58 |
+
add_action( 'wp', [ $this, 'redirectArchives' ] );
|
59 |
+
}
|
|
|
|
|
60 |
|
61 |
+
if ( $this->getPopulateOption( 'set_last_modified_headers' ) ) {
|
62 |
+
if ( ! is_admin() ) {
|
63 |
+
add_action( 'template_redirect', [ $this, 'setLastModifiedHeaders' ] );
|
64 |
}
|
65 |
+
add_action( 'wp_logout', [ $this, 'lastModifedFlushCookie' ] );
|
66 |
+
}
|
67 |
|
68 |
+
if ( $this->plugin->isActivateComponent( 'yoast_seo' ) && defined( 'WPSEO_VERSION' ) ) {
|
69 |
+
if ( ! is_admin() ) {
|
70 |
+
if ( $this->getPopulateOption( 'yoast_remove_json_ld_search' ) ) {
|
71 |
+
add_filter( 'disable_wpseo_json_ld_search', '__return_true' );
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
+
if ( $this->getPopulateOption( 'yoast_remove_json_ld_output' ) ) {
|
75 |
+
add_filter( 'wpseo_json_ld_output', [ $this, 'removeYoastJson' ], 10, 1 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
+
if ( $this->getPopulateOption( 'yoast_remove_head_comment' ) ) {
|
78 |
+
add_action( 'init', [ $this, 'yoastRemoveHeadComment' ] );
|
79 |
}
|
80 |
+
/*if( $this->getPopulateOption('yoast_canonical_pagination') ) {
|
81 |
+
add_filter('wpseo_canonical', array($this, 'yoastCanonicalPagination'));
|
82 |
+
}*/
|
83 |
+
}
|
84 |
+
if ( $this->getPopulateOption( 'yoast_remove_image_from_xml_sitemap' ) ) {
|
85 |
+
$this->yoastRemoveImageFromXmlSitemap();
|
86 |
}
|
87 |
}
|
88 |
+
}
|
89 |
|
90 |
+
/**
|
91 |
+
* @param $data
|
92 |
+
*
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
public function removeYoastJson( $data ) {
|
96 |
+
$data = [];
|
97 |
|
98 |
+
return $data;
|
99 |
+
}
|
100 |
|
101 |
+
/**
|
102 |
+
* Add post title in image alt attribute
|
103 |
+
*
|
104 |
+
* @param $content
|
105 |
+
*
|
106 |
+
* @return mixed
|
107 |
+
*/
|
108 |
|
109 |
+
public function contentImageAutoAlt( $content ) {
|
110 |
+
global $post;
|
|
|
111 |
|
112 |
+
if ( empty( $post ) ) {
|
113 |
+
return $content;
|
114 |
+
}
|
115 |
|
116 |
+
$old_content = $content;
|
117 |
|
118 |
+
preg_match_all( '/<img[^>]+>/', $content, $images );
|
119 |
|
120 |
+
if ( ! is_null( $images ) ) {
|
121 |
+
foreach ( $images[0] as $index => $value ) {
|
122 |
+
if ( ! preg_match( '/alt=/', $value ) ) {
|
123 |
+
$new_img = str_replace( '<img', '<img alt="' . esc_attr( $post->post_title ) . '"', $images[0][ $index ] );
|
124 |
+
$content = str_replace( $images[0][ $index ], $new_img, $content );
|
125 |
+
} else if ( preg_match( '/alt=[\s"\']{2,3}/', $value ) ) {
|
126 |
+
$new_img = preg_replace( '/alt=[\s"\']{2,3}/', 'alt="' . esc_attr( $post->post_title ) . '"', $images[0][ $index ] );
|
127 |
+
$content = str_replace( $images[0][ $index ], $new_img, $content );
|
|
|
128 |
}
|
129 |
}
|
130 |
+
}
|
131 |
|
132 |
+
if ( empty( $content ) ) {
|
133 |
+
return $old_content;
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
+
return $content;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Setting attributes for post thumnails
|
141 |
+
*
|
142 |
+
* @param $attr
|
143 |
+
* @param $attachment
|
144 |
+
*
|
145 |
+
* @return mixed
|
146 |
+
*/
|
147 |
+
public function changeAttachementImageAttributes( $attr, $attachment ) {
|
148 |
+
// Get post parent
|
149 |
+
$parent = get_post_field( 'post_parent', $attachment );
|
150 |
+
|
151 |
+
// Get post type to check if it's product
|
152 |
+
//$type = get_post_field('post_type', $parent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
|
154 |
+
/*if( $type != 'product' ) {
|
155 |
return $attr;
|
156 |
+
}*/
|
157 |
+
|
158 |
+
/// Get title
|
159 |
+
$title = get_post_field( 'post_title', $parent );
|
160 |
+
if ( '' === $attr['alt'] ) {
|
161 |
+
$attr['alt'] = $title;
|
162 |
}
|
163 |
+
$attr['title'] = $title;
|
164 |
|
165 |
+
return $attr;
|
166 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
|
168 |
+
/**
|
169 |
+
* Add directories to virtual robots.txt file
|
170 |
+
*
|
171 |
+
* @param string $output
|
172 |
+
*
|
173 |
+
* @return mixed|string|void
|
174 |
+
*/
|
175 |
+
public function rightRobotsTxt( $output ) {
|
176 |
+
if ( $this->getPopulateOption( 'robots_txt_text' ) ) {
|
177 |
+
return $this->getPopulateOption( 'robots_txt_text' );
|
178 |
}
|
179 |
|
180 |
+
return WCL_Helper::getRightRobotTxt();
|
181 |
+
}
|
|
|
|
|
|
|
|
|
182 |
|
183 |
+
/**
|
184 |
+
* Attachment pages redirect
|
185 |
+
*/
|
186 |
+
public function attachmentPagesRedirect() {
|
187 |
+
global $post;
|
188 |
+
|
189 |
+
if ( is_attachment() ) {
|
190 |
+
if ( isset( $post->post_parent ) && ( $post->post_parent != 0 ) ) {
|
191 |
+
wp_redirect( get_permalink( $post->post_parent ), 301 );
|
192 |
+
} else {
|
193 |
+
wp_redirect( home_url(), 301 );
|
194 |
}
|
195 |
+
exit;
|
196 |
}
|
197 |
+
}
|
198 |
|
199 |
+
/**
|
200 |
+
* Remove single pagination duplicate
|
201 |
+
*/
|
|
|
|
|
|
|
|
|
202 |
|
203 |
+
public function removeSinglePaginationDuplicate() {
|
204 |
+
global $post, $page;
|
205 |
|
206 |
+
if ( is_singular() && ! is_front_page() ) {
|
|
|
|
|
|
|
|
|
|
|
207 |
|
208 |
+
// #CLRF-125 issue fix bug for buddy press
|
209 |
+
if ( function_exists( 'bp_is_my_profile' ) ) {
|
210 |
+
if ( bp_is_my_profile() ) {
|
211 |
return;
|
212 |
}
|
213 |
+
}
|
214 |
|
215 |
+
// if woocommerce just return
|
216 |
+
if ( class_exists( 'woocommerce' ) && function_exists( 'is_cart' ) && function_exists( 'is_checkout' ) && function_exists( 'is_woocommerce' ) && function_exists( 'is_account_page' ) && ( is_cart() || is_checkout() || is_woocommerce() || is_account_page() ) ) {
|
217 |
+
return;
|
218 |
+
}
|
219 |
|
220 |
+
$num_pages = substr_count( $post->post_content, '<!--nextpage-->' ) + 1;
|
221 |
+
|
222 |
+
if ( $page > $num_pages ) {
|
223 |
+
wp_safe_redirect( get_permalink( $post->ID ), 301 );
|
224 |
+
exit();
|
225 |
}
|
226 |
}
|
227 |
+
}
|
228 |
|
229 |
|
230 |
+
/**
|
231 |
+
* Remove last item from breadcrumbs SEO by YOAST
|
232 |
+
* http://www.wpdiv.com/remove-post-title-yoast-seo-plugin-breadcrumb/
|
233 |
+
*
|
234 |
+
* @param $link_output
|
235 |
+
*
|
236 |
+
* @return string
|
237 |
+
*/
|
238 |
+
public function removeLastItemBreadcrumbYoast( $link_output ) {
|
|
|
|
|
|
|
|
|
239 |
|
240 |
+
if ( strpos( $link_output, 'breadcrumb_last' ) !== false ) {
|
241 |
+
$link_output = '';
|
242 |
}
|
243 |
|
244 |
+
return $link_output;
|
245 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
|
247 |
+
/**
|
248 |
+
* Remove yoast comment
|
249 |
+
*/
|
250 |
+
public function yoastRemoveHeadComment() {
|
251 |
+
add_action( 'get_header', [ $this, 'yoastRemoveHeadCommentStart' ] );
|
252 |
+
add_action( 'wp_head', [ $this, 'yoastRemoveHeadCommentEnd' ], 999 );
|
253 |
+
}
|
254 |
|
255 |
+
public function yoastRemoveHeadCommentStart() {
|
256 |
+
ob_start( [ $this, 'yoastRemoveHeadCommentRemove' ] );
|
257 |
+
}
|
|
|
258 |
|
259 |
+
public function yoastRemoveHeadCommentEnd() {
|
260 |
+
ob_end_flush();
|
261 |
+
}
|
|
|
262 |
|
263 |
+
public function yoastRemoveHeadCommentRemove( $html ) {
|
264 |
+
return preg_replace( '/^<!--.*?[Yy]oast.*?-->$/mi', '', $html );
|
265 |
+
}
|
266 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
|
268 |
+
/**
|
269 |
+
* Remove <image:image> from sitemap
|
270 |
+
*/
|
271 |
+
public function yoastRemoveImageFromXmlSitemap() {
|
272 |
+
add_filter( 'wpseo_xml_sitemap_img', '__return_false' );
|
273 |
+
add_filter( 'wpseo_sitemap_url', [ $this, 'yoastRemoveImageFromXmlClean' ], 10, 2 );
|
274 |
+
}
|
275 |
|
276 |
+
public function yoastRemoveImageFromXmlClean( $output, $url ) {
|
277 |
+
$output = preg_replace( '/<image:image[^>]*?>.*?<\/image:image>/si', '', $output );
|
278 |
|
279 |
+
return $output;
|
280 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
|
282 |
+
/**
|
283 |
+
* Canonical link in pagination Yoast
|
284 |
+
*
|
285 |
+
* @param $canonical
|
286 |
+
*
|
287 |
+
* @return string
|
288 |
+
*/
|
289 |
+
/*public function yoastCanonicalPagination( $canonical ) {
|
290 |
+
if ( is_category() && is_paged() ) {
|
291 |
+
$cat = get_category( get_query_var( 'cat' ) );
|
292 |
+
$cat_id = $cat->cat_ID;
|
293 |
+
return get_category_link( $cat_id );
|
294 |
+
}
|
295 |
+
if ( is_home() && is_paged() ) {
|
296 |
+
return home_url('/');
|
297 |
+
}
|
298 |
+
return $canonical;
|
299 |
+
}*/
|
300 |
|
301 |
+
/**
|
302 |
+
* Redirect archives author, date, tags
|
303 |
+
*/
|
|
|
|
|
304 |
|
305 |
+
public function redirectArchives() {
|
306 |
+
if ( $this->getPopulateOption( 'redirect_archives_author' ) ) {
|
307 |
+
if ( is_author() ) {
|
308 |
+
wp_redirect( home_url(), 301 );
|
309 |
+
|
310 |
+
die();
|
311 |
}
|
312 |
+
}
|
313 |
|
314 |
+
if ( $this->getPopulateOption( 'redirect_archives_date' ) ) {
|
315 |
+
if ( is_date() ) {
|
316 |
+
wp_redirect( home_url(), 301 );
|
317 |
|
318 |
+
die();
|
|
|
319 |
}
|
320 |
+
}
|
321 |
|
322 |
+
if ( $this->getPopulateOption( 'redirect_archives_tag' ) ) {
|
323 |
+
if ( is_tag() ) {
|
324 |
+
wp_redirect( home_url(), 301 );
|
325 |
|
326 |
+
die();
|
|
|
327 |
}
|
328 |
}
|
329 |
+
}
|
330 |
|
331 |
+
/**
|
332 |
+
* Remove replytocom
|
333 |
+
*/
|
334 |
+
public function removeReplytocomRedirect() {
|
335 |
+
global $post;
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
|
337 |
+
if ( ! empty( $post ) && isset( $_GET['replytocom'] ) && is_singular() ) {
|
338 |
+
$post_url = get_permalink( $post->ID );
|
339 |
+
$comment_id = sanitize_text_field( $_GET['replytocom'] );
|
340 |
+
$query_string = remove_query_arg( 'replytocom', sanitize_text_field( $_SERVER['QUERY_STRING'] ) );
|
341 |
|
342 |
+
if ( ! empty( $query_string ) ) {
|
343 |
+
$post_url .= '?' . $query_string;
|
344 |
}
|
345 |
+
$post_url .= '#comment-' . $comment_id;
|
346 |
|
347 |
+
wp_safe_redirect( $post_url, 301 );
|
348 |
+
die();
|
349 |
}
|
350 |
|
351 |
+
return false;
|
352 |
+
}
|
353 |
+
|
354 |
+
public function removeReplytocomLink( $link ) {
|
355 |
+
return preg_replace( '`href=(["\'])(?:.*(?:\?|&|&)replytocom=(\d+)#respond)`', 'href=$1#comment-$2', $link );
|
356 |
+
}
|
357 |
+
|
358 |
+
public function setLastModifiedHeaders() {
|
359 |
+
if ( is_user_logged_in() && ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) {
|
360 |
+
return;
|
361 |
}
|
362 |
|
363 |
+
if ( class_exists( 'woocommerce' ) && function_exists( 'is_cart' ) && function_exists( 'is_checkout' ) && function_exists( 'is_account_page' ) && ( is_cart() || is_checkout() || is_account_page() ) ) {
|
364 |
+
return;
|
365 |
+
}
|
|
|
|
|
366 |
|
367 |
+
if ( is_front_page() ) {
|
368 |
+
$last_modified_exclude_frontpage = $this->getPopulateOption( 'disable_frontpage_last_modified_headers' );
|
369 |
+
if ( $last_modified_exclude_frontpage ) {
|
370 |
return;
|
371 |
}
|
372 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
|
374 |
+
$last_modified_flush = isset( $_COOKIE['wbcr_lastmodifed_flush'] );
|
375 |
|
376 |
+
global $wp;
|
377 |
+
$last_modified_exclude = $this->getPopulateOption( 'last_modified_exclude' );
|
378 |
+
$last_modified_exclude_exp = explode( PHP_EOL, $last_modified_exclude );
|
379 |
|
380 |
+
$current_url = home_url( add_query_arg( [], $wp->request ) );
|
381 |
|
382 |
+
foreach ( $last_modified_exclude_exp as $expr ) {
|
383 |
+
if ( ! empty( $expr ) && strpos( urldecode( $current_url ), $expr ) !== false ) {
|
384 |
+
return;
|
|
|
385 |
}
|
386 |
+
}
|
387 |
|
388 |
+
/**
|
389 |
+
* if Search - just return
|
390 |
+
*/
|
391 |
+
if ( is_search() ) {
|
392 |
+
return;
|
393 |
+
}
|
394 |
+
|
395 |
+
$last_modified = '';
|
396 |
+
/**
|
397 |
+
* If posts, pages, custom post types
|
398 |
+
*/
|
399 |
+
if ( is_singular() ) {
|
400 |
+
global $post;
|
401 |
+
if ( ! isset( $post->post_modified_gmt ) ) {
|
402 |
return;
|
403 |
}
|
404 |
+
$post_time = strtotime( $post->post_modified_gmt );
|
405 |
+
$modified_time = $post_time;
|
406 |
/**
|
407 |
+
* If we have comment set new modified date
|
408 |
*/
|
409 |
+
if ( (int) $post->comment_count > 0 ) {
|
410 |
+
$comments = get_comments( [
|
411 |
+
'post_id' => $post->ID,
|
412 |
+
'number' => '1',
|
413 |
+
'status' => 'approve',
|
414 |
+
'orderby' => 'comment_date_gmt',
|
415 |
+
] );
|
416 |
+
if ( ! empty( $comments ) && isset( $comments[0] ) ) {
|
417 |
+
$comment_time = strtotime( $comments[0]->comment_date_gmt );
|
418 |
+
if ( $comment_time > $post_time ) {
|
419 |
+
$modified_time = $comment_time;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
420 |
}
|
421 |
}
|
|
|
422 |
}
|
423 |
+
$last_modified = str_replace( '+0000', 'GMT', gmdate( 'r', $modified_time ) );
|
424 |
+
}
|
425 |
+
/**
|
426 |
+
* If any archives: categories, tags, taxonomy terms, post type archives
|
427 |
+
*/
|
428 |
+
if ( is_archive() || is_home() ) {
|
429 |
+
global $posts;
|
430 |
+
if ( empty( $posts ) ) {
|
431 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
}
|
433 |
+
$post = $posts[0];
|
434 |
+
if ( ! isset( $post->post_modified_gmt ) ) {
|
|
|
|
|
|
|
|
|
435 |
return;
|
436 |
}
|
437 |
+
$post_time = strtotime( $post->post_modified_gmt );
|
438 |
+
$modified_time = $post_time;
|
439 |
+
$last_modified = str_replace( '+0000', 'GMT', gmdate( 'r', $modified_time ) );
|
440 |
+
}
|
441 |
|
442 |
+
/**
|
443 |
+
* If headers already sent - do nothing
|
444 |
+
*/
|
445 |
|
446 |
+
if ( headers_sent() ) {
|
447 |
+
return;
|
448 |
+
}
|
|
|
449 |
|
450 |
+
if ( ! empty( $last_modified ) && ! empty( $modified_time ) ) {
|
451 |
|
452 |
+
//todo: Fix bug, admin bar is not hidden after logout
|
453 |
+
if ( $last_modified_flush ) {
|
454 |
+
$modified_time += rand( 1, 99 );
|
455 |
+
}
|
456 |
|
457 |
+
header( 'Last-Modified: ' . $last_modified );
|
458 |
|
459 |
+
if ( $this->getPopulateOption( 'if_modified_since_headers' ) && ! is_user_logged_in() ) {
|
|
|
|
|
460 |
|
461 |
+
if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) && strtotime( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) >= $modified_time ) {
|
462 |
+
|
463 |
+
$protocol = ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' );
|
464 |
+
|
465 |
+
header( $protocol . ' 304 Not Modified' );
|
466 |
}
|
467 |
}
|
468 |
}
|
469 |
+
}
|
470 |
|
471 |
+
function lastModifedFlushCookie() {
|
472 |
+
if ( ! isset( $_COOKIE['wbcr_lastmodifed_flush'] ) ) {
|
473 |
+
setcookie( "wbcr_lastmodifed_flush", 1, time() + 3600 );
|
|
|
|
|
474 |
}
|
475 |
}
|
476 |
+
}
|
languages/clearfy-es_ES.mo
ADDED
Binary file
|
languages/clearfy-es_ES.po
ADDED
@@ -0,0 +1,2367 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Plugins - Clearfy in Spanish (Spain)
|
2 |
+
# This file is distributed under the same license as the Plugins - Clearfy – WordPress optimization plugin and disable ultimate tweaker - Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: \n"
|
6 |
+
"POT-Creation-Date: 2019-04-28 06:19+0300\n"
|
7 |
+
"PO-Revision-Date: 2019-04-28 06:19+0300\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: es\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"X-Generator: Poedit 2.1.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
17 |
+
"X-Generator: Poedit 2.1.1\n"
|
18 |
+
"X-Poedit-Basepath: ..\n"
|
19 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
20 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
21 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
22 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
|
23 |
+
"X-Poedit-SearchPath-0: .\n"
|
24 |
+
"X-Poedit-SearchPathExcluded-0: libs\n"
|
25 |
+
"X-Poedit-SearchPathExcluded-1: components\n"
|
26 |
+
"X-Poedit-SearchPathExcluded-2: cache\n"
|
27 |
+
"X-Poedit-SearchPathExcluded-3: assets\n"
|
28 |
+
"X-Poedit-SearchPathExcluded-4: admin/assets\n"
|
29 |
+
|
30 |
+
#: _branding.php:98
|
31 |
+
msgid "Company widget 1"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: _branding.php:102 _branding.php:120
|
35 |
+
msgid ""
|
36 |
+
"You can create an arbitrary company widget, for technical support and any "
|
37 |
+
"other data, so that users can see it on the pages of the plugin."
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: _branding.php:116
|
41 |
+
msgid "Company widget 2"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: _branding.php:140
|
45 |
+
msgid "Yoast SEO"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: _branding.php:145
|
49 |
+
msgid ""
|
50 |
+
"Improve your WordPress SEO: Write better content and have a fully optimized "
|
51 |
+
"WordPress site using the Yoast SEO plugin."
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: admin/ajax/check-license.php:27
|
55 |
+
msgid "Licensing action not passed or this action is prohibited!"
|
56 |
+
msgstr "Ejecución de licencia no aprobada o esta acción está prohibida!"
|
57 |
+
|
58 |
+
#: admin/ajax/check-license.php:40
|
59 |
+
msgid ""
|
60 |
+
"License key is empty or license key too long (license key is 32 characters "
|
61 |
+
"long)"
|
62 |
+
msgstr ""
|
63 |
+
"Campo de (Clave de Licencia) está vacía o la clave de licencia es demasiado "
|
64 |
+
"larga (la clave de licencia tiene una longitud de 32 caracteres)"
|
65 |
+
|
66 |
+
#: admin/ajax/check-license.php:44
|
67 |
+
msgid "Your license has been successfully activated"
|
68 |
+
msgstr "Su licencia ha sido activada exitosamente."
|
69 |
+
|
70 |
+
#: admin/ajax/check-license.php:49
|
71 |
+
msgid "The license is deactivated"
|
72 |
+
msgstr "La licencia está desactivada."
|
73 |
+
|
74 |
+
#: admin/ajax/check-license.php:53
|
75 |
+
msgid "The license has been updated"
|
76 |
+
msgstr "La licencia ha sido actualizada."
|
77 |
+
|
78 |
+
#: admin/ajax/check-license.php:57
|
79 |
+
msgid "Subscription success cancelled"
|
80 |
+
msgstr "Suscripción cancelada correctamente"
|
81 |
+
|
82 |
+
#: admin/ajax/configurate.php:19 admin/ajax/import-settings.php:24
|
83 |
+
#: admin/ajax/install-addons.php:25 admin/ajax/install-addons.php:131
|
84 |
+
msgid "You don't have enough capability to edit this information."
|
85 |
+
msgstr "No tienes suficiente permisos para editar esta información."
|
86 |
+
|
87 |
+
#: admin/ajax/configurate.php:26 admin/ajax/configurate.php:34
|
88 |
+
msgid "Undefinded mode."
|
89 |
+
msgstr "Modo indefinido."
|
90 |
+
|
91 |
+
#: admin/ajax/import-settings.php:43
|
92 |
+
msgid "Settings are not defined or do not exist."
|
93 |
+
msgstr "Los ajustes no están definidos o no existen."
|
94 |
+
|
95 |
+
#: admin/ajax/install-addons.php:25
|
96 |
+
msgid "Something went wrong."
|
97 |
+
msgstr "Algo salió mal."
|
98 |
+
|
99 |
+
#: admin/ajax/install-addons.php:29
|
100 |
+
msgid "Required attributes are not passed or empty."
|
101 |
+
msgstr "Los atributos requeridos no se encuentran o están vacíos."
|
102 |
+
|
103 |
+
#: admin/ajax/install-addons.php:46 admin/ajax/install-addons.php:69
|
104 |
+
msgid "You are trying to perform an invalid action."
|
105 |
+
msgstr "Está intentando realizar una acción no válida."
|
106 |
+
|
107 |
+
#: admin/ajax/install-addons.php:105 admin/boot.php:202
|
108 |
+
#, php-format
|
109 |
+
msgid ""
|
110 |
+
"When you deactivate some components, permanent links may work incorrectly. "
|
111 |
+
"If this happens, please, <a href=\"%s\">update the permalinks</a>, so you "
|
112 |
+
"could complete the deactivation."
|
113 |
+
msgstr ""
|
114 |
+
"Cuando desactivas algunos componentes, los enlaces permanentes pueden "
|
115 |
+
"funcionar incorrectamente. De ser asi, usted debe, <a href=\"%s\">actualizar "
|
116 |
+
"los enlaces permanentes</a>, para completar la desactivación."
|
117 |
+
|
118 |
+
#: admin/ajax/install-addons.php:115 admin/ajax/update-package.php:82
|
119 |
+
msgid "An unknown error occurred during the activation of the component."
|
120 |
+
msgstr "Se produjo un error desconocido durante la activación del componente."
|
121 |
+
|
122 |
+
#: admin/ajax/install-addons.php:135
|
123 |
+
msgid "Required attribute [component_name] is empty."
|
124 |
+
msgstr "El atributo requerido [component_name] está vacío."
|
125 |
+
|
126 |
+
#: admin/ajax/update-package.php:28 admin/pages/components.php:110
|
127 |
+
msgid "To use premium components, you need activate a license!"
|
128 |
+
msgstr "Para usar los componentes premium, ¡usted debe activar una licencia!"
|
129 |
+
|
130 |
+
#: admin/ajax/update-package.php:28 admin/pages/components.php:110
|
131 |
+
msgid "Activate license"
|
132 |
+
msgstr "Activar licencia"
|
133 |
+
|
134 |
+
#: admin/ajax/update-package.php:47
|
135 |
+
msgid "Configuration updated."
|
136 |
+
msgstr "Configuración actualizada."
|
137 |
+
|
138 |
+
#: admin/boot.php:29
|
139 |
+
msgid "Clearfy settings"
|
140 |
+
msgstr "Configuraciones Clearfy"
|
141 |
+
|
142 |
+
#: admin/boot.php:109 includes/classes/class.package.php:278
|
143 |
+
msgid "Update in progress..."
|
144 |
+
msgstr "Actualización en progreso..."
|
145 |
+
|
146 |
+
#: admin/boot.php:109
|
147 |
+
msgid "Components have been successfully updated!"
|
148 |
+
msgstr "¡Los componentes se han actualizado con éxito!"
|
149 |
+
|
150 |
+
#: admin/boot.php:109
|
151 |
+
msgid "update now"
|
152 |
+
msgstr "actualizar ahora"
|
153 |
+
|
154 |
+
#: admin/boot.php:114
|
155 |
+
msgid "Updates are available for one of the components."
|
156 |
+
msgstr "Hay actualizaciones disponibles para uno de los componentes."
|
157 |
+
|
158 |
+
#: admin/boot.php:155
|
159 |
+
msgid "Business"
|
160 |
+
msgstr "Business"
|
161 |
+
|
162 |
+
#: admin/boot.php:245
|
163 |
+
msgid "Images optimization"
|
164 |
+
msgstr "Optimización de imágenes"
|
165 |
+
|
166 |
+
#: admin/boot.php:255
|
167 |
+
msgid "Unoptimized"
|
168 |
+
msgstr "No optimizado"
|
169 |
+
|
170 |
+
#: admin/boot.php:260
|
171 |
+
msgid "Optimized"
|
172 |
+
msgstr "Optimizado"
|
173 |
+
|
174 |
+
#: admin/boot.php:265
|
175 |
+
msgid "Error"
|
176 |
+
msgstr "Error"
|
177 |
+
|
178 |
+
#: admin/boot.php:272
|
179 |
+
msgid "Original size"
|
180 |
+
msgstr "Tamaño original"
|
181 |
+
|
182 |
+
#: admin/boot.php:278
|
183 |
+
msgid "Optimized size"
|
184 |
+
msgstr "Tamaño optimizado"
|
185 |
+
|
186 |
+
#: admin/boot.php:289
|
187 |
+
msgid "Bulk optimize"
|
188 |
+
msgstr "Optimizar a granel"
|
189 |
+
|
190 |
+
#: admin/boot.php:295
|
191 |
+
msgid "Normal"
|
192 |
+
msgstr "Normal"
|
193 |
+
|
194 |
+
#: admin/boot.php:296
|
195 |
+
msgid "Medium"
|
196 |
+
msgstr "Medio"
|
197 |
+
|
198 |
+
#: admin/boot.php:297
|
199 |
+
msgid "High"
|
200 |
+
msgstr "Alto"
|
201 |
+
|
202 |
+
#: admin/includes/classes/class.install-plugins-button.php:356
|
203 |
+
msgid "Activate"
|
204 |
+
msgstr "Activar"
|
205 |
+
|
206 |
+
#: admin/includes/classes/class.install-plugins-button.php:357
|
207 |
+
msgid "Install"
|
208 |
+
msgstr "Instalar"
|
209 |
+
|
210 |
+
#: admin/includes/classes/class.install-plugins-button.php:358
|
211 |
+
msgid "Deactivate"
|
212 |
+
msgstr "Desactivar"
|
213 |
+
|
214 |
+
#: admin/includes/classes/class.install-plugins-button.php:359
|
215 |
+
msgid "Delete"
|
216 |
+
msgstr "Borrar"
|
217 |
+
|
218 |
+
#: admin/includes/classes/class.install-plugins-button.php:360
|
219 |
+
msgid "Please wait..."
|
220 |
+
msgstr "Espere..."
|
221 |
+
|
222 |
+
#: admin/includes/classes/class.install-plugins-button.php:361
|
223 |
+
msgid "Preparation..."
|
224 |
+
msgstr "Preparación..."
|
225 |
+
|
226 |
+
#: admin/includes/classes/class.install-plugins-button.php:362
|
227 |
+
msgid "Read more"
|
228 |
+
msgstr "Leer más"
|
229 |
+
|
230 |
+
#: admin/includes/compatibility.php:18
|
231 |
+
msgid ""
|
232 |
+
"Please update the plugin Robin image Optimizer to the latest version, as it "
|
233 |
+
"may not work correctly with the new version of Clearfy!"
|
234 |
+
msgstr ""
|
235 |
+
"Actualice el plugin (Robin image Optimizer) a la última versión, ya que "
|
236 |
+
"puede que no funcione correctamente con la nueva versión de Clearfy."
|
237 |
+
|
238 |
+
#: admin/includes/compatibility.php:47
|
239 |
+
msgid ""
|
240 |
+
"Please update the plugin Hide login page to the latest version, as it may "
|
241 |
+
"not work correctly with the new version of Clearfy!"
|
242 |
+
msgstr ""
|
243 |
+
"Actualice el plugin (Hide login page) a la última versión, ya que es posible "
|
244 |
+
"que no funcione correctamente con la nueva versión de Clearfy!"
|
245 |
+
|
246 |
+
#: admin/includes/compatibility.php:84
|
247 |
+
#, php-format
|
248 |
+
msgid "Welcome to Clearfy (%s)"
|
249 |
+
msgstr "Bienvenido a Clearfy (%s)"
|
250 |
+
|
251 |
+
#: admin/includes/compatibility.php:85
|
252 |
+
msgid ""
|
253 |
+
"We moved the form to import and export plugin settings to another page. Now "
|
254 |
+
"all settings that relate only to the Clearfy plugin, we will post on this "
|
255 |
+
"additional page."
|
256 |
+
msgstr ""
|
257 |
+
"Movimos el formulario para importar y exportar la configuración del plugin a "
|
258 |
+
"otra página. Ahora, todas las configuraciones relacionadas con el plugin "
|
259 |
+
"Clearfy serán publicadas en esta página adicional."
|
260 |
+
|
261 |
+
#: admin/includes/options.php:18 admin/pages/performance-google.php:94
|
262 |
+
msgid "Google Fonts asynchronous"
|
263 |
+
msgstr "Fuentes de Google Asíncronas"
|
264 |
+
|
265 |
+
#: admin/includes/options.php:23 admin/pages/performance-google.php:104
|
266 |
+
msgid "Disable Google Fonts"
|
267 |
+
msgstr "Desactivar Google Fonts"
|
268 |
+
|
269 |
+
#: admin/includes/options.php:28 admin/pages/performance-google.php:132
|
270 |
+
msgid "Remove iframe Google maps"
|
271 |
+
msgstr "¿Eliminar Iframe en Google Maps?"
|
272 |
+
|
273 |
+
#: admin/includes/options.php:33 admin/pages/performance-google.php:142
|
274 |
+
msgid "Exclude pages from Disable Google Maps filter"
|
275 |
+
msgstr "Excluir páginas del filtro Deshabilitar Google Maps"
|
276 |
+
|
277 |
+
#: admin/includes/options.php:39 admin/pages/performance-google.php:115
|
278 |
+
msgid "Disable Google maps"
|
279 |
+
msgstr "Deshabilitar Google Maps"
|
280 |
+
|
281 |
+
#: admin/includes/options.php:45 admin/pages/performance.php:184
|
282 |
+
msgid "Removing XFN (XHTML Friends Network) Profile Link"
|
283 |
+
msgstr "Eliminando el enlace del perfil XFN (XHTML Friends Network)"
|
284 |
+
|
285 |
+
#: admin/includes/options.php:50 admin/pages/performance.php:236
|
286 |
+
msgid "Font Awesome asynchronous"
|
287 |
+
msgstr "Font Awesome asíncrono"
|
288 |
+
|
289 |
+
#: admin/includes/options.php:55 admin/pages/performance.php:246
|
290 |
+
msgid "Disable Dashicons"
|
291 |
+
msgstr "Deshabilitar Dashicons"
|
292 |
+
|
293 |
+
#: admin/includes/options.php:60 admin/pages/performance.php:256
|
294 |
+
msgid "Disable gravatars"
|
295 |
+
msgstr "Desactivar gravatars"
|
296 |
+
|
297 |
+
#: admin/includes/options.php:65 admin/pages/performance.php:115
|
298 |
+
msgid "Remove REST API Links"
|
299 |
+
msgstr "Eliminar enlaces REST API"
|
300 |
+
|
301 |
+
#: admin/includes/options.php:70 admin/pages/performance.php:136
|
302 |
+
msgid "Disable Emojis"
|
303 |
+
msgstr "Deshabilitar Emojis"
|
304 |
+
|
305 |
+
#: admin/includes/options.php:81 admin/pages/performance.php:175
|
306 |
+
msgid "Remove RSD Link"
|
307 |
+
msgstr "Eliminar ENLACES RSD"
|
308 |
+
|
309 |
+
#: admin/includes/options.php:86 admin/pages/performance.php:196
|
310 |
+
msgid "Remove wlwmanifest Link"
|
311 |
+
msgstr "Eliminar el enlace wlwmanifest"
|
312 |
+
|
313 |
+
#: admin/includes/options.php:91 admin/pages/performance.php:206
|
314 |
+
msgid "Remove Shortlink"
|
315 |
+
msgstr "Eliminar Shortlink"
|
316 |
+
|
317 |
+
#: admin/includes/options.php:96 admin/pages/performance.php:216
|
318 |
+
msgid "Remove links to previous, next post"
|
319 |
+
msgstr "Eliminar enlaces anterior y siguiente en publicaciones"
|
320 |
+
|
321 |
+
#: admin/includes/options.php:101 admin/pages/performance.php:226
|
322 |
+
msgid "Remove .recentcomments styles"
|
323 |
+
msgstr "Eliminar los estilos .recentcomments"
|
324 |
+
|
325 |
+
#: admin/includes/options.php:107 admin/pages/seo.php:79
|
326 |
+
msgid "Automatically set the alt attribute"
|
327 |
+
msgstr "Establecer automáticamente el atributo alt"
|
328 |
+
|
329 |
+
#: admin/includes/options.php:112 admin/pages/seo.php:118
|
330 |
+
msgid "Automatically insert the Last Modified header"
|
331 |
+
msgstr "Insertar automáticamente la ultima modificación del encabezado"
|
332 |
+
|
333 |
+
#: admin/includes/options.php:117 admin/pages/seo.php:149
|
334 |
+
msgid "Return an If-Modified-Since responce"
|
335 |
+
msgstr "Devuelve una respuesta If-Modified-Since"
|
336 |
+
|
337 |
+
#: admin/includes/options.php:122 admin/pages/seo.php:163
|
338 |
+
msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
|
339 |
+
msgstr "Eliminar nombres duplicados en el breadcrumbs WP SEO by Yoast"
|
340 |
+
|
341 |
+
#: admin/includes/options.php:127 admin/pages/seo.php:173
|
342 |
+
#, php-format
|
343 |
+
msgid "Remove the tag %s from XML site map"
|
344 |
+
msgstr "Eliminar la etiqueta %s del mapa del sitio XML"
|
345 |
+
|
346 |
+
#: admin/includes/options.php:132 admin/pages/seo.php:191
|
347 |
+
msgid "Disable JSON-LD sitelinks searchbox"
|
348 |
+
msgstr "Desactivar el cuadro de búsqueda de enlaces de sitio JSON-LD"
|
349 |
+
|
350 |
+
#: admin/includes/options.php:137 admin/pages/seo.php:201
|
351 |
+
msgid "Disable Yoast Structured Data"
|
352 |
+
msgstr "Desactivar datos estructurados de Yoast"
|
353 |
+
|
354 |
+
#: admin/includes/options.php:142 admin/pages/seo.php:226
|
355 |
+
#, php-format
|
356 |
+
msgid "Remove comment from %s section"
|
357 |
+
msgstr "Eliminar comentario de la sección %s"
|
358 |
+
|
359 |
+
#: admin/includes/options.php:147 admin/pages/seo-double-pages.php:81
|
360 |
+
msgid "Remove archives date"
|
361 |
+
msgstr "Eliminar fecha de archivo"
|
362 |
+
|
363 |
+
#: admin/includes/options.php:152 admin/pages/seo-double-pages.php:91
|
364 |
+
msgid "Remove author archives "
|
365 |
+
msgstr "Eliminar archivos de autor"
|
366 |
+
|
367 |
+
#: admin/includes/options.php:157 admin/pages/seo-double-pages.php:101
|
368 |
+
msgid "Remove archives tag"
|
369 |
+
msgstr "Eliminar etiqueta de archivos"
|
370 |
+
|
371 |
+
#: admin/includes/options.php:162 admin/pages/seo-double-pages.php:111
|
372 |
+
msgid "Remove attachment pages"
|
373 |
+
msgstr "Eliminar páginas adjuntas"
|
374 |
+
|
375 |
+
#: admin/includes/options.php:167 admin/pages/seo-double-pages.php:121
|
376 |
+
msgid "Remove post pagination"
|
377 |
+
msgstr "Eliminar paginación en publicaciones"
|
378 |
+
|
379 |
+
#: admin/includes/options.php:172 admin/pages/seo-double-pages.php:131
|
380 |
+
msgid "Remove ?replytocom"
|
381 |
+
msgstr "Eliminar ?replytocom"
|
382 |
+
|
383 |
+
#: admin/includes/options.php:177 admin/pages/defence.php:121
|
384 |
+
msgid "Remove meta generator"
|
385 |
+
msgstr "Eliminar generador meta"
|
386 |
+
|
387 |
+
#: admin/includes/options.php:182 admin/pages/defence.php:61
|
388 |
+
msgid "Hide author login"
|
389 |
+
msgstr "Ocultar inicio de sesión de autor"
|
390 |
+
|
391 |
+
#: admin/includes/options.php:187 admin/pages/defence.php:71
|
392 |
+
msgid "Hide errors when logging into the site"
|
393 |
+
msgstr "Ocultar errores al iniciar sesión en el sitio"
|
394 |
+
|
395 |
+
#: admin/includes/options.php:192 admin/includes/options.php:303
|
396 |
+
#: admin/pages/performance.php:348
|
397 |
+
msgid "Remove Version from Stylesheet"
|
398 |
+
msgstr "Eliminar versión de la hoja de estilo"
|
399 |
+
|
400 |
+
#: admin/includes/options.php:197 admin/includes/options.php:308
|
401 |
+
#: admin/pages/performance.php:337
|
402 |
+
msgid "Remove Version from Script"
|
403 |
+
msgstr "Eliminar versión de script"
|
404 |
+
|
405 |
+
#: admin/includes/options.php:202 admin/pages/widgets.php:62
|
406 |
+
msgid "Remove the \"Pages\" widget"
|
407 |
+
msgstr "Eliminar el widget \"Páginas \""
|
408 |
+
|
409 |
+
#: admin/includes/options.php:207 admin/pages/widgets.php:71
|
410 |
+
msgid "Remove calendar widget"
|
411 |
+
msgstr "Eliminar widget de calendario"
|
412 |
+
|
413 |
+
#: admin/includes/options.php:212 admin/pages/widgets.php:80
|
414 |
+
msgid "Remove the \"Cloud of tags\" widget"
|
415 |
+
msgstr "Eliminar el widget \"Nube de etiquetas \""
|
416 |
+
|
417 |
+
#: admin/includes/options.php:217 admin/pages/widgets.php:89
|
418 |
+
msgid "Remove the \"Archives\" widget"
|
419 |
+
msgstr "Eliminar el widget \"Archives \""
|
420 |
+
|
421 |
+
#: admin/includes/options.php:222 admin/pages/widgets.php:98
|
422 |
+
msgid "Remove the \"Links\" widget"
|
423 |
+
msgstr "Eliminar el widget \"Enlaces \""
|
424 |
+
|
425 |
+
#: admin/includes/options.php:227 admin/pages/widgets.php:107
|
426 |
+
msgid "Remove the \"Meta\" widget"
|
427 |
+
msgstr "Eliminar el widget \"Meta \""
|
428 |
+
|
429 |
+
#: admin/includes/options.php:232 admin/pages/widgets.php:116
|
430 |
+
msgid "Remove the \"Search\" widget"
|
431 |
+
msgstr "Eliminar el widget \"Buscar \""
|
432 |
+
|
433 |
+
#: admin/includes/options.php:237 admin/includes/options.php:257
|
434 |
+
#: admin/pages/widgets.php:125
|
435 |
+
msgid "Remove the \"Text\" widget"
|
436 |
+
msgstr "Eliminar el widget \"Texto \""
|
437 |
+
|
438 |
+
#: admin/includes/options.php:242 admin/pages/widgets.php:134
|
439 |
+
msgid "Remove the \"Categories\" widget"
|
440 |
+
msgstr "Eliminar el widget \"Categorías \""
|
441 |
+
|
442 |
+
#: admin/includes/options.php:247 admin/pages/widgets.php:143
|
443 |
+
msgid "Remove the \"Recent Posts\" widget"
|
444 |
+
msgstr "Eliminar el widget \"Mensajes Recientes \""
|
445 |
+
|
446 |
+
#: admin/includes/options.php:252 admin/pages/widgets.php:152
|
447 |
+
msgid "Remove the \"Recent Comments\" widget"
|
448 |
+
msgstr "Eliminar el widget \"Comentarios recientes \""
|
449 |
+
|
450 |
+
#: admin/includes/options.php:262 admin/pages/widgets.php:161
|
451 |
+
msgid "Remove the \"RSS\" widget"
|
452 |
+
msgstr "Eliminar el widget \"RSS \""
|
453 |
+
|
454 |
+
#: admin/includes/options.php:267 admin/pages/widgets.php:170
|
455 |
+
msgid "Remove the \"Menu\" widget"
|
456 |
+
msgstr "Eliminar el widget \"Menú \""
|
457 |
+
|
458 |
+
#: admin/includes/options.php:272 admin/pages/widgets.php:179
|
459 |
+
msgid "Remove the \"Twenty Eleven Ephemera\" widget"
|
460 |
+
msgstr "Eliminar el widget \"Twenty Eleven Ephemera \""
|
461 |
+
|
462 |
+
#: admin/includes/options.php:275 admin/includes/options.php:338
|
463 |
+
#: admin/pages/performance.php:273
|
464 |
+
msgid "Disable revision"
|
465 |
+
msgstr "Deshabilitar revision"
|
466 |
+
|
467 |
+
#: admin/includes/options.php:276 admin/includes/options.php:343
|
468 |
+
#: admin/pages/performance.php:286
|
469 |
+
msgid "Limit Post Revisions"
|
470 |
+
msgstr "Limitar las revisiones de publicaciones"
|
471 |
+
|
472 |
+
#: admin/includes/options.php:277 admin/pages/seo.php:140
|
473 |
+
msgid "Exclude pages:"
|
474 |
+
msgstr "Páginas excluídas:"
|
475 |
+
|
476 |
+
#: admin/includes/options.php:280 admin/pages/seo.php:89
|
477 |
+
msgid "Create right robots.txt"
|
478 |
+
msgstr "Crear robots.txt perfectos"
|
479 |
+
|
480 |
+
#: admin/includes/options.php:285 admin/pages/seo.php:104
|
481 |
+
msgid "You can edit the robots.txt file in the box below:"
|
482 |
+
msgstr "Puede editar el archivo robots.txt en el siguiente cuadro:"
|
483 |
+
|
484 |
+
#: admin/includes/options.php:288
|
485 |
+
msgid "Quick mode"
|
486 |
+
msgstr "Modo rápido"
|
487 |
+
|
488 |
+
#: admin/includes/options.php:291 admin/pages/performance.php:146
|
489 |
+
msgid "Remove jQuery Migrate"
|
490 |
+
msgstr "Eliminar jQuery Migrate"
|
491 |
+
|
492 |
+
#: admin/includes/options.php:294 admin/pages/performance.php:156
|
493 |
+
msgid "Disable Embeds"
|
494 |
+
msgstr "Desactivar \"embeds\""
|
495 |
+
|
496 |
+
#: admin/includes/options.php:295 admin/pages/performance.php:85
|
497 |
+
msgid "Disable RSS feeds"
|
498 |
+
msgstr "Deshabilitar las fuentes RSS"
|
499 |
+
|
500 |
+
#: admin/includes/options.php:298
|
501 |
+
msgid "Removes links to wordpress.org site from the admin bar"
|
502 |
+
msgstr ""
|
503 |
+
"Elimina los enlaces al sitio wordpress.org de la barra de administración"
|
504 |
+
|
505 |
+
#: admin/includes/options.php:313
|
506 |
+
msgid "Eclude stylesheet/script file names"
|
507 |
+
msgstr "Ecluir nombre de archivos stylesheet/script"
|
508 |
+
|
509 |
+
#: admin/includes/options.php:318
|
510 |
+
msgid "Enable Sanitization of WordPress"
|
511 |
+
msgstr "Habilitar el saneamiento de WordPress"
|
512 |
+
|
513 |
+
#: admin/includes/options.php:323 admin/pages/advanced.php:71
|
514 |
+
msgid "Disable admin top bar"
|
515 |
+
msgstr "Deshabilitar la barra superior del administrador"
|
516 |
+
|
517 |
+
#: admin/includes/options.php:328
|
518 |
+
msgid "Remove admin bar WP logo"
|
519 |
+
msgstr "Eliminar logo WP de la barra de administración"
|
520 |
+
|
521 |
+
#: admin/includes/options.php:333
|
522 |
+
msgid "Replace \"Howdy\" text with \"Welcome\""
|
523 |
+
msgstr "Reemplace el texto \"Howdy\" con \"Bienvenido\""
|
524 |
+
|
525 |
+
#: admin/includes/options.php:348 admin/pages/performance.php:321
|
526 |
+
msgid "Disable autosave"
|
527 |
+
msgstr "Deshabilitar el guardado automático"
|
528 |
+
|
529 |
+
#: admin/includes/options.php:353
|
530 |
+
msgid "Disable Texturization - Smart Quotes"
|
531 |
+
msgstr "Deshabilitar la texturización - Smart Quotes"
|
532 |
+
|
533 |
+
#: admin/includes/options.php:358
|
534 |
+
msgid "Disable capitalization in Wordpress branding"
|
535 |
+
msgstr "Deshabilitar el uso de mayúsculas en la marca de Wordpress"
|
536 |
+
|
537 |
+
#: admin/includes/options.php:363
|
538 |
+
msgid "Disable auto inserted paragraphs (i.e. p tags)"
|
539 |
+
msgstr ""
|
540 |
+
"Desactivar párrafos insertados automáticamente (Ejemplo., las etiquetas p)"
|
541 |
+
|
542 |
+
#: admin/includes/options.php:368 admin/pages/performance.php:388
|
543 |
+
msgid "Disable Heartbeat"
|
544 |
+
msgstr "Deshabilitar Heartbeat"
|
545 |
+
|
546 |
+
#: admin/includes/options.php:373 admin/pages/performance.php:417
|
547 |
+
msgid "Heartbeat frequency"
|
548 |
+
msgstr "Frecuencia Heartbeat"
|
549 |
+
|
550 |
+
#: admin/includes/options.php:378 admin/pages/defence.php:111
|
551 |
+
msgid "Remove html comments"
|
552 |
+
msgstr "Eliminar comentarios html"
|
553 |
+
|
554 |
+
#: admin/includes/options.php:383
|
555 |
+
msgid "Deactivate preinstall components"
|
556 |
+
msgstr "Desactivar componentes preinstalados"
|
557 |
+
|
558 |
+
#: admin/includes/options.php:388
|
559 |
+
msgid "Freemius activated addons"
|
560 |
+
msgstr "Complementos activados por Freemius"
|
561 |
+
|
562 |
+
#: admin/includes/options.php:394 admin/pages/clearfy-settings.php:99
|
563 |
+
msgid "Disable menu in adminbar"
|
564 |
+
msgstr "Deshabilitar el menú en la barra de administración"
|
565 |
+
|
566 |
+
#: admin/includes/sidebar-widgets.php:22 admin/pages/license.php:150
|
567 |
+
msgid "Activation Clearfy Business"
|
568 |
+
msgstr "Activación Clearfy Business"
|
569 |
+
|
570 |
+
#: admin/includes/sidebar-widgets.php:25 admin/pages/license.php:151
|
571 |
+
msgid ""
|
572 |
+
"<b>Clearfy Business</b> is a paid package of components for the popular free "
|
573 |
+
"WordPress plugin named Clearfy. You get access to all paid components at one "
|
574 |
+
"price."
|
575 |
+
msgstr ""
|
576 |
+
"<b>Clearfy Business</b es un paquete de componentes de pago para el popular "
|
577 |
+
"complemento gratuito de WordPress llamado Clearfy. Accesda todos los "
|
578 |
+
"componentes de pago a un solo precio."
|
579 |
+
|
580 |
+
#: admin/includes/sidebar-widgets.php:26 admin/pages/license.php:152
|
581 |
+
msgid ""
|
582 |
+
"Paid license guarantees that you can download and update existing and future "
|
583 |
+
"paid components of the plugin."
|
584 |
+
msgstr ""
|
585 |
+
"La licencia de pago de este plugin, le garantiza descargas y actualizaciones "
|
586 |
+
"existentes y a futuro."
|
587 |
+
|
588 |
+
#: admin/includes/sidebar-widgets.php:29
|
589 |
+
#, php-format
|
590 |
+
msgid "Upgrade to Clearfy Business for $%s"
|
591 |
+
msgstr "Actualice a Clearfy Business por $%s"
|
592 |
+
|
593 |
+
#: admin/includes/sidebar-widgets.php:58
|
594 |
+
msgid "Having Issues?"
|
595 |
+
msgstr "¿Algún Problema?"
|
596 |
+
|
597 |
+
#: admin/includes/sidebar-widgets.php:61
|
598 |
+
msgid ""
|
599 |
+
"We provide free support for this plugin. If you are pushed with a problem, "
|
600 |
+
"just create a new ticket. We will definitely help you!"
|
601 |
+
msgstr ""
|
602 |
+
"Proporcionamos soporte gratuito para este plugin. Si tiene un problema, cree "
|
603 |
+
"un nuevo ticket. ¡Definitivamente te ayudaremos!"
|
604 |
+
|
605 |
+
#: admin/includes/sidebar-widgets.php:65
|
606 |
+
msgid "Get starting free support"
|
607 |
+
msgstr "Iniciar soporte gratuito"
|
608 |
+
|
609 |
+
#: admin/includes/sidebar-widgets.php:69
|
610 |
+
#, php-format
|
611 |
+
msgid ""
|
612 |
+
"If you find a php error or a vulnerability in plugin, you can <a href=\"%s\" "
|
613 |
+
"target=\"_blank\" rel=\"noopener\">create ticket</a> in hot support that we "
|
614 |
+
"responded instantly."
|
615 |
+
msgstr ""
|
616 |
+
"Si encuentra un error de PHP o una vulnerabilidad en el Plugin, puede <a "
|
617 |
+
"href=\"%s\" target=\"_blank\" rel=\"noopener\"> crear un ticket </a> en "
|
618 |
+
"soporte para su inmediata atención."
|
619 |
+
|
620 |
+
#: admin/pages/advanced.php:38
|
621 |
+
msgid "Advanced"
|
622 |
+
msgstr "Avanzado"
|
623 |
+
|
624 |
+
#: admin/pages/advanced.php:39 admin/pages/clearfy-settings.php:48
|
625 |
+
msgid "Useful tweaks"
|
626 |
+
msgstr "Ajustes útiles"
|
627 |
+
|
628 |
+
#: admin/pages/advanced.php:64
|
629 |
+
msgid "Admin bar"
|
630 |
+
msgstr "Barra de administración"
|
631 |
+
|
632 |
+
#: admin/pages/advanced.php:64
|
633 |
+
msgid "In this group of settings, you can manage the adminbar."
|
634 |
+
msgstr ""
|
635 |
+
"En este grupo de configuraciones, puede gestionar la barra de administración."
|
636 |
+
|
637 |
+
#: admin/pages/advanced.php:73
|
638 |
+
msgid "Default enable"
|
639 |
+
msgstr "Habilitar por defecto"
|
640 |
+
|
641 |
+
#: admin/pages/advanced.php:74
|
642 |
+
msgid "For all users"
|
643 |
+
msgstr "Para todos los usuarios"
|
644 |
+
|
645 |
+
#: admin/pages/advanced.php:77
|
646 |
+
msgid "For all users except administrator"
|
647 |
+
msgstr "Para todos los usuarios excepto administrador"
|
648 |
+
|
649 |
+
#: admin/pages/advanced.php:81
|
650 |
+
msgid ""
|
651 |
+
"In some cases, you need to disable the floating top admin panel. You can "
|
652 |
+
"disable this panel."
|
653 |
+
msgstr ""
|
654 |
+
"A veces, debe deshabilitar el panel superior flotante de administración. "
|
655 |
+
"Puede deshabilitar este panel."
|
656 |
+
|
657 |
+
#: admin/pages/advanced.php:81
|
658 |
+
msgid "Disable admin top bar."
|
659 |
+
msgstr "Desactivar la barra superior del administrador."
|
660 |
+
|
661 |
+
#: admin/pages/clearfy-settings.php:47
|
662 |
+
msgid "Clearfy Settings"
|
663 |
+
msgstr "Configuraciones Clearfy"
|
664 |
+
|
665 |
+
#: admin/pages/clearfy-settings.php:72 admin/pages/quick-start.php:105
|
666 |
+
msgid "Settings successfully updated!"
|
667 |
+
msgstr "Configuraciones exitosamente actualizadas!"
|
668 |
+
|
669 |
+
#: admin/pages/clearfy-settings.php:73 admin/pages/quick-start.php:106
|
670 |
+
msgid ""
|
671 |
+
"During the setup, an unknown error occurred, please try again or contact the "
|
672 |
+
"plugin support."
|
673 |
+
msgstr ""
|
674 |
+
"Durante la configuración, se produjo un error desconocido, inténtelo de "
|
675 |
+
"nuevo o póngase en contacto con el soporte del plugin."
|
676 |
+
|
677 |
+
#: admin/pages/clearfy-settings.php:92
|
678 |
+
msgid "Advanced settings"
|
679 |
+
msgstr "Ajustes avanzados"
|
680 |
+
|
681 |
+
#: admin/pages/clearfy-settings.php:92 admin/pages/clearfy-settings.php:117
|
682 |
+
#: admin/pages/clearfy-settings.php:127
|
683 |
+
msgid ""
|
684 |
+
"This group of settings allows you to configure the work of the Clearfy "
|
685 |
+
"plugin."
|
686 |
+
msgstr ""
|
687 |
+
"Estas configuraciones le permitirá administrar el trabajo del complemento "
|
688 |
+
"Clearfy."
|
689 |
+
|
690 |
+
#: admin/pages/clearfy-settings.php:101
|
691 |
+
msgid ""
|
692 |
+
"This setting allows you to disable the additional menu of the Clearfy "
|
693 |
+
"plugin, in the admin bar. This menu is required to work with the Minify and "
|
694 |
+
"Combine and Assets Manager components."
|
695 |
+
msgstr ""
|
696 |
+
"Esta configuración le permite desactivar el menú adicional del complemento "
|
697 |
+
"Clearfy en la barra de administración. Este menú es necesario para trabajar "
|
698 |
+
"con los componentes Minify, Combine y Assets Manager."
|
699 |
+
|
700 |
+
#: admin/pages/clearfy-settings.php:109
|
701 |
+
msgid "Complete Uninstall"
|
702 |
+
msgstr "Desinstalación Completa"
|
703 |
+
|
704 |
+
#: admin/pages/clearfy-settings.php:111
|
705 |
+
msgid ""
|
706 |
+
"When the plugin is deleted from the Plugins menu, also delete all plugin "
|
707 |
+
"settings."
|
708 |
+
msgstr "Al eliminar este plugin, tambien debe eliminar los ajustes del mismo."
|
709 |
+
|
710 |
+
#: admin/pages/clearfy-settings.php:117
|
711 |
+
msgid "Import/Export"
|
712 |
+
msgstr "Importar/Exportar"
|
713 |
+
|
714 |
+
#: admin/pages/clearfy-settings.php:127
|
715 |
+
msgid "Support"
|
716 |
+
msgstr "Soporte"
|
717 |
+
|
718 |
+
#: admin/pages/clearfy-settings.php:151
|
719 |
+
msgid "Import/Export settings"
|
720 |
+
msgstr "Ajustes de importación / exportación"
|
721 |
+
|
722 |
+
#: admin/pages/clearfy-settings.php:154
|
723 |
+
msgid "Import options"
|
724 |
+
msgstr "Importar opciones"
|
725 |
+
|
726 |
+
#: admin/pages/clearfy-settings.php:163
|
727 |
+
msgid ""
|
728 |
+
"If you faced with any issues, please follow the steps below to get quickly "
|
729 |
+
"quality support:"
|
730 |
+
msgstr ""
|
731 |
+
"Si tiene algun problema, siga los pasos a continuación para obtener un "
|
732 |
+
"soporte de calidad rápidamente:"
|
733 |
+
|
734 |
+
#: admin/pages/clearfy-settings.php:166
|
735 |
+
msgid ""
|
736 |
+
"Generate a debug report which will contains inforamtion about your "
|
737 |
+
"configuratin and installed plugins"
|
738 |
+
msgstr ""
|
739 |
+
"Generar informe de depuración que contendrá información sobre su "
|
740 |
+
"configuración y los plugin instalados"
|
741 |
+
|
742 |
+
#: admin/pages/clearfy-settings.php:168
|
743 |
+
msgid "Generate Debug Report"
|
744 |
+
msgstr "Generar informe de depuración"
|
745 |
+
|
746 |
+
#: admin/pages/clearfy-settings.php:172
|
747 |
+
#, php-format
|
748 |
+
msgid ""
|
749 |
+
"Create a new ticket in our <a href=\"%s\" target=\"_blank\">support forum</"
|
750 |
+
"a>, include the debug report into the message body."
|
751 |
+
msgstr ""
|
752 |
+
"Cree un nuevo ticket en nuestro <a href=\"%s\" target=\"_blank\">foro de "
|
753 |
+
"soporte</a> , incluya el informe de errores en el cuerpo del mensaje."
|
754 |
+
|
755 |
+
#: admin/pages/clearfy-settings.php:175
|
756 |
+
msgid "We guarantee to respond you within 7 business day."
|
757 |
+
msgstr "Te responderemos antes de 7 días hábiles"
|
758 |
+
|
759 |
+
#: admin/pages/components.php:44
|
760 |
+
msgid "Components"
|
761 |
+
msgstr "Componentes"
|
762 |
+
|
763 |
+
#: admin/pages/components.php:45
|
764 |
+
msgid "More features for plugin"
|
765 |
+
msgstr "Más características de plugin."
|
766 |
+
|
767 |
+
#: admin/pages/components.php:102
|
768 |
+
msgid "Components have been successfully updated to the latest version."
|
769 |
+
msgstr "Los componentes se han actualizado con éxito a la última versión."
|
770 |
+
|
771 |
+
#: admin/pages/components.php:118
|
772 |
+
msgid ""
|
773 |
+
"An unknown error occurred while updating plugin components. Please contact "
|
774 |
+
"the plugin support team to resolve this issue."
|
775 |
+
msgstr ""
|
776 |
+
"Se produjo un error desconocido al actualizar los componentes del "
|
777 |
+
"complemento. Por favor, póngase en contacto con nuestro equipo de soporte "
|
778 |
+
"para resolver este problema."
|
779 |
+
|
780 |
+
#: admin/pages/components.php:216
|
781 |
+
msgid "Hide my wp"
|
782 |
+
msgstr ""
|
783 |
+
|
784 |
+
#: admin/pages/components.php:216 admin/pages/components.php:224
|
785 |
+
#: admin/pages/components.php:232 admin/pages/components.php:240
|
786 |
+
msgid "[Premium]"
|
787 |
+
msgstr ""
|
788 |
+
|
789 |
+
#: admin/pages/components.php:220
|
790 |
+
msgid ""
|
791 |
+
"You can protect your WP by preventing the hacker from knowing which CMS, "
|
792 |
+
"plugins, themes you use. It disables identification of your CMS."
|
793 |
+
msgstr ""
|
794 |
+
|
795 |
+
#: admin/pages/components.php:224
|
796 |
+
msgid "Assets manager"
|
797 |
+
msgstr "Gestor de Activos"
|
798 |
+
|
799 |
+
#: admin/pages/components.php:228
|
800 |
+
msgid "Extensions for the component Assets Manager"
|
801 |
+
msgstr ""
|
802 |
+
|
803 |
+
#: admin/pages/components.php:232 admin/pages/components.php:293
|
804 |
+
msgid "Updates manager"
|
805 |
+
msgstr "Gestor de actualizaciones"
|
806 |
+
|
807 |
+
#: admin/pages/components.php:236
|
808 |
+
msgid "Extensions for the component Updates Manager"
|
809 |
+
msgstr ""
|
810 |
+
|
811 |
+
#: admin/pages/components.php:240
|
812 |
+
msgid "Seo friendly images"
|
813 |
+
msgstr ""
|
814 |
+
|
815 |
+
#: admin/pages/components.php:244
|
816 |
+
msgid ""
|
817 |
+
"Automatically assign alt and title for images, flexibly customize the "
|
818 |
+
"template."
|
819 |
+
msgstr ""
|
820 |
+
|
821 |
+
#: admin/pages/components.php:251
|
822 |
+
msgid "Robin image optimizer"
|
823 |
+
msgstr "Optimizador de imagenes Robin"
|
824 |
+
|
825 |
+
#: admin/pages/components.php:256
|
826 |
+
msgid ""
|
827 |
+
"Automatic image optimization without any quality loss. No limitations, no "
|
828 |
+
"paid plans. The best Wordpress image optimization plugin allows optimizing "
|
829 |
+
"any amount of images for free!"
|
830 |
+
msgstr ""
|
831 |
+
"Optimización automática de imágenes sin pérdida de calidad. Sin "
|
832 |
+
"limitaciones, sin planes pagados. ¡El mejor plugin de optimización de "
|
833 |
+
"imágenes de Wordpress sin límites y gratis!"
|
834 |
+
|
835 |
+
#: admin/pages/components.php:260 admin/pages/hide-login-page.php:64
|
836 |
+
msgid "Hide login page"
|
837 |
+
msgstr "Ocultar la página de inicio de sesión"
|
838 |
+
|
839 |
+
#: admin/pages/components.php:265
|
840 |
+
msgid ""
|
841 |
+
"Hide Login Page is a very light plugin that lets you easily and safely "
|
842 |
+
"change the url of the login form page to anything you want."
|
843 |
+
msgstr ""
|
844 |
+
"La página de inicio de sesión oculta es un complemento muy ligero que le "
|
845 |
+
"permite cambiar de forma fácil y segura la url de la página del formulario "
|
846 |
+
"de inicio de sesión."
|
847 |
+
|
848 |
+
#: admin/pages/components.php:269
|
849 |
+
msgid "Html minify"
|
850 |
+
msgstr "Minificar HTML"
|
851 |
+
|
852 |
+
#: admin/pages/components.php:273
|
853 |
+
msgid ""
|
854 |
+
"Ever look at the HTML markup of your website and notice how sloppy and "
|
855 |
+
"amateurish it looks? The Minify HTML options cleans up sloppy looking markup "
|
856 |
+
"and minifies, which also speeds up download"
|
857 |
+
msgstr ""
|
858 |
+
"¿Alguna vez has visto el código HTML de tu sitio web? ¿has notado lo "
|
859 |
+
"descuidado y desordenado que se ve? Las opciones Minify HTML mejoran el "
|
860 |
+
"aspecto HTML y lo minimiza, optimizando la descarga"
|
861 |
+
|
862 |
+
#: admin/pages/components.php:277
|
863 |
+
msgid "Minify and combine (JS, CSS)"
|
864 |
+
msgstr "Minificar and combinar (JS, CSS)"
|
865 |
+
|
866 |
+
#: admin/pages/components.php:281
|
867 |
+
msgid ""
|
868 |
+
"Improve your speed score on GTmetrix, Pingdom Tools and Google PageSpeed "
|
869 |
+
"Insights by merging and minifying CSS, JavaScript."
|
870 |
+
msgstr ""
|
871 |
+
"Mejore su puntaje de velocidad en GTmetrix, Pingdom Tools y Google PageSpeed "
|
872 |
+
"Insights combinando y reduciendo CSS, JavaScript."
|
873 |
+
|
874 |
+
#: admin/pages/components.php:285
|
875 |
+
msgid "Google Analytics Cache"
|
876 |
+
msgstr "Cache de Google Analytics"
|
877 |
+
|
878 |
+
#: admin/pages/components.php:289
|
879 |
+
msgid ""
|
880 |
+
"To improve Google Page Speed indicators Analytics caching is needed. "
|
881 |
+
"However, it can also slightly increase your website loading speed, because "
|
882 |
+
"Analytics js files will load locally."
|
883 |
+
msgstr ""
|
884 |
+
"Para mejorar los indicadores de velocidad de la página de Google, es "
|
885 |
+
"necesario el almacenamiento en caché de Analytics. Sin embargo, también "
|
886 |
+
"puede aumentar ligeramente la velocidad de carga de su sitio web, ya que los "
|
887 |
+
"archivos de Analytics js se cargarán localmente."
|
888 |
+
|
889 |
+
#: admin/pages/components.php:297
|
890 |
+
msgid "Disable updates enable auto updates for themes, plugins and WordPress."
|
891 |
+
msgstr ""
|
892 |
+
"Deshabilitar actualizaciones, habilita actualizaciones automáticas para "
|
893 |
+
"temas, plugins y WordPress."
|
894 |
+
|
895 |
+
#: admin/pages/components.php:301
|
896 |
+
msgid "Comments tools"
|
897 |
+
msgstr "Herramientas de comentarios"
|
898 |
+
|
899 |
+
#: admin/pages/components.php:305
|
900 |
+
msgid ""
|
901 |
+
"Bulk disable and remove comments, disable “Website” field, hides external "
|
902 |
+
"links, disable XML-RPC."
|
903 |
+
msgstr ""
|
904 |
+
"Desactive y elimine los comentarios de forma masiva, desactive el campo "
|
905 |
+
"\"Sitio web\", oculte los enlaces externos, desactive XML-RPC."
|
906 |
+
|
907 |
+
#: admin/pages/components.php:309
|
908 |
+
msgid "Widgets tools"
|
909 |
+
msgstr "Herramientas de Widgets"
|
910 |
+
|
911 |
+
#: admin/pages/components.php:313
|
912 |
+
msgid "Disable unused widgets such as tag cloud, links, calendar etc."
|
913 |
+
msgstr ""
|
914 |
+
"Desactive los widgets no utilizados, nube de etiquetas, enlaces, calendario, "
|
915 |
+
"etc."
|
916 |
+
|
917 |
+
#: admin/pages/components.php:317
|
918 |
+
msgid "Asset manager"
|
919 |
+
msgstr "Gestor de Activos"
|
920 |
+
|
921 |
+
#: admin/pages/components.php:321
|
922 |
+
msgid ""
|
923 |
+
"Selectively disable unused scripts and styles on the pages of your website."
|
924 |
+
msgstr ""
|
925 |
+
"Desactive de forma selectiva los scripts y estilos no utilizados en las "
|
926 |
+
"páginas de su web."
|
927 |
+
|
928 |
+
#: admin/pages/components.php:325
|
929 |
+
msgid "Disable admin notices"
|
930 |
+
msgstr "Desactivar avisos de administrador"
|
931 |
+
|
932 |
+
#: admin/pages/components.php:329
|
933 |
+
msgid ""
|
934 |
+
"Disables admin notices bulk or individually. Collects notices into the admin "
|
935 |
+
"bar."
|
936 |
+
msgstr ""
|
937 |
+
"Desactiva los avisos de administración masiva o individualmente. Recoge "
|
938 |
+
"avisos en la barra de administración."
|
939 |
+
|
940 |
+
#: admin/pages/components.php:333
|
941 |
+
msgid "Admin bar manager"
|
942 |
+
msgstr "Gestor de la barra de administración"
|
943 |
+
|
944 |
+
#: admin/pages/components.php:337
|
945 |
+
msgid "Disables admin bar. Allows to change and remove admin bar elements."
|
946 |
+
msgstr ""
|
947 |
+
"Desactivar la barra de administración. Permite cambiar y eliminar elementos "
|
948 |
+
"de la barra de administración."
|
949 |
+
|
950 |
+
#: admin/pages/components.php:341
|
951 |
+
msgid "Yoast SEO optimization"
|
952 |
+
msgstr "Optimización Yoast SEO"
|
953 |
+
|
954 |
+
#: admin/pages/components.php:345
|
955 |
+
msgid "Set of optimization functions for the popular Yoast SEO plugin."
|
956 |
+
msgstr ""
|
957 |
+
"Conjunto de funciones de optimización para el popular plugin Yoast SEO."
|
958 |
+
|
959 |
+
#: admin/pages/components.php:351
|
960 |
+
msgid "Transliteration of Cyrillic alphabet"
|
961 |
+
msgstr "Transliteración del alfabeto Cirílico"
|
962 |
+
|
963 |
+
#: admin/pages/components.php:355
|
964 |
+
msgid ""
|
965 |
+
"Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
|
966 |
+
"the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
|
967 |
+
"languages."
|
968 |
+
msgstr ""
|
969 |
+
"Convierte los enlaces cirílicos de publicaciones, páginas, taxonomías y "
|
970 |
+
"archivos multimedia al alfabeto latino. Soporta idiomas ruso, ucraniano, "
|
971 |
+
"georgiano, búlgaro."
|
972 |
+
|
973 |
+
#: admin/pages/components.php:405
|
974 |
+
msgid "<strong>Plugin Components</strong>."
|
975 |
+
msgstr "<strong>Componentes de Plugin</strong>."
|
976 |
+
|
977 |
+
#: admin/pages/components.php:407
|
978 |
+
msgid ""
|
979 |
+
"These are components of the plugin bundle. When you activate the plugin, all "
|
980 |
+
"the components turned on by default. If you don’t need some function, you "
|
981 |
+
"can easily turn it off on this page."
|
982 |
+
msgstr ""
|
983 |
+
"Estos son componentes del paquete de plugins. Cuando activa el complemento, "
|
984 |
+
"todos los componentes se activan de forma predeterminada. Si no necesita "
|
985 |
+
"alguna función, puede desactivarla fácilmente en esta página."
|
986 |
+
|
987 |
+
#: admin/pages/components.php:457
|
988 |
+
msgid "Premium"
|
989 |
+
msgstr "Premium"
|
990 |
+
|
991 |
+
#: admin/pages/defence.php:35
|
992 |
+
msgid "Defence"
|
993 |
+
msgstr "Defensa"
|
994 |
+
|
995 |
+
#: admin/pages/defence.php:36
|
996 |
+
msgid "Protective hacks, privacy"
|
997 |
+
msgstr "Protección Hacks, privacidad."
|
998 |
+
|
999 |
+
#: admin/pages/defence.php:54
|
1000 |
+
msgid "<strong>Base settings</strong>."
|
1001 |
+
msgstr "<strong>Configuración de base</strong>."
|
1002 |
+
|
1003 |
+
#: admin/pages/defence.php:54
|
1004 |
+
msgid "Basic recommended security settings."
|
1005 |
+
msgstr "Ajustes básicos de seguridad recomendados."
|
1006 |
+
|
1007 |
+
#: admin/pages/defence.php:63
|
1008 |
+
msgid ""
|
1009 |
+
"An attacker can find out the author's login, using a similar request to get "
|
1010 |
+
"your site. mysite.com/?author=1"
|
1011 |
+
msgstr ""
|
1012 |
+
"Un atacante puede averiguar el inicio de sesión del autor, utilizando una "
|
1013 |
+
"solicitud similar para tomar su sitio. mysite.com/?author=1"
|
1014 |
+
|
1015 |
+
#: admin/pages/defence.php:63
|
1016 |
+
msgid "Sets the redirect to exclude the possibility of obtaining a login."
|
1017 |
+
msgstr ""
|
1018 |
+
"Establece el redireccionamiento para excluir la posibilidad de obtener un "
|
1019 |
+
"inicio de sesión."
|
1020 |
+
|
1021 |
+
#: admin/pages/defence.php:73
|
1022 |
+
msgid ""
|
1023 |
+
"WP by default shows whether you entered a wrong login or incorrect password, "
|
1024 |
+
"which allows attackers to understand if there is a certain user on the site, "
|
1025 |
+
"and then start searching through the passwords."
|
1026 |
+
msgstr ""
|
1027 |
+
"Por defecto, WP muestra si ingresó un inicio de sesión incorrecto o una "
|
1028 |
+
"contraseña incorrecta, esto permite a los atacantes saber si hay un "
|
1029 |
+
"determinado usuario en el sitio y luego comenzar a buscar a través de las "
|
1030 |
+
"contraseñas."
|
1031 |
+
|
1032 |
+
#: admin/pages/defence.php:73
|
1033 |
+
msgid ""
|
1034 |
+
"Changes in the text of the error so that attackers could not find the login."
|
1035 |
+
msgstr ""
|
1036 |
+
"Cambios en el texto del error para que los atacantes no ecuentren el inicio "
|
1037 |
+
"de sesión."
|
1038 |
+
|
1039 |
+
#: admin/pages/defence.php:81
|
1040 |
+
msgid "Disable XML-RPC"
|
1041 |
+
msgstr "Desactivar XML-RPC"
|
1042 |
+
|
1043 |
+
#: admin/pages/defence.php:83
|
1044 |
+
msgid ""
|
1045 |
+
"A pingback is basically an automated comment that gets created when another "
|
1046 |
+
"blog links to you. A self-pingback is created when you link to an article "
|
1047 |
+
"within your own blog. Pingbacks are essentially nothing more than spam and "
|
1048 |
+
"simply waste resources."
|
1049 |
+
msgstr ""
|
1050 |
+
"Un pingback es básicamente un comentario automatizado que se crea cuando "
|
1051 |
+
"otro blog te enlaza. Se crea un auto-pingback cuando se vincula a un "
|
1052 |
+
"artículo dentro de su propio blog. Los pingbacks son spam y simplemente "
|
1053 |
+
"desperdician recursos."
|
1054 |
+
|
1055 |
+
#: admin/pages/defence.php:83
|
1056 |
+
msgid "Removes the server responses a reference to the xmlrpc file."
|
1057 |
+
msgstr "Elimina una referencia las respuestas del servidor al archivo xmlrpc."
|
1058 |
+
|
1059 |
+
#: admin/pages/defence.php:104
|
1060 |
+
msgid "<strong>Hide WordPress versions</strong>"
|
1061 |
+
msgstr "<strong>Ocultar versiones de WordPress</strong>"
|
1062 |
+
|
1063 |
+
#: admin/pages/defence.php:104
|
1064 |
+
msgid ""
|
1065 |
+
"WordPress itself and many plugins shows their version at the public areas of "
|
1066 |
+
"your site. An attacker received this information may be aware of the "
|
1067 |
+
"vulnerabilities found in the version of the WordPress core or plugins."
|
1068 |
+
msgstr ""
|
1069 |
+
"WordPress y muchos plugin muestran su versión en las áreas públicas de su "
|
1070 |
+
"sitio. Un atacante que capte esta información puede saber las "
|
1071 |
+
"vulnerabilidades encontradas en la versión del núcleo o en los plugins de "
|
1072 |
+
"WordPress."
|
1073 |
+
|
1074 |
+
#: admin/pages/defence.php:113
|
1075 |
+
msgid ""
|
1076 |
+
"This function will remove all html comments in the source code, except for "
|
1077 |
+
"special and hidden comments. This is necessary to hide the version of "
|
1078 |
+
"installed plugins."
|
1079 |
+
msgstr ""
|
1080 |
+
"Esta función eliminará todos los comentarios html en el código fuente, "
|
1081 |
+
"excepto los comentarios especiales y ocultos. Esto es necesario para ocultar "
|
1082 |
+
"la versión de los plugins instalados."
|
1083 |
+
|
1084 |
+
#: admin/pages/defence.php:113
|
1085 |
+
msgid "Remove html comments in source code."
|
1086 |
+
msgstr "Eliminar los comentarios html en el código fuente."
|
1087 |
+
|
1088 |
+
#: admin/pages/defence.php:121 admin/pages/performance.php:337
|
1089 |
+
#: admin/pages/performance.php:348 admin/pages/seo.php:79
|
1090 |
+
#: admin/pages/seo.php:118 admin/pages/seo.php:132 admin/pages/seo.php:149
|
1091 |
+
#: admin/pages/seo.php:163 admin/pages/seo.php:173 admin/pages/seo.php:226
|
1092 |
+
msgid "Recommended"
|
1093 |
+
msgstr "Recomendado"
|
1094 |
+
|
1095 |
+
#: admin/pages/defence.php:123
|
1096 |
+
msgid ""
|
1097 |
+
"Allows attacker to learn the version of WP installed on the site. This meta "
|
1098 |
+
"tag has no useful function."
|
1099 |
+
msgstr ""
|
1100 |
+
"Permite al atacante conocer la versión de WP instalada en el sitio. Esta "
|
1101 |
+
"etiqueta meta no tiene ninguna función útil."
|
1102 |
+
|
1103 |
+
#: admin/pages/defence.php:123
|
1104 |
+
#, php-format
|
1105 |
+
msgid "Removes the meta tag from the %s section"
|
1106 |
+
msgstr "Elimina la etiqueta meta de la sección %s"
|
1107 |
+
|
1108 |
+
#: admin/pages/defence.php:150
|
1109 |
+
msgid ""
|
1110 |
+
"<b>Use this option carefully!</b><br> Plugins like jetpack may have problems "
|
1111 |
+
"using this option."
|
1112 |
+
msgstr ""
|
1113 |
+
"<b>¡Use esta opción con cuidado!</b><br> Los plugin como jetpack pueden "
|
1114 |
+
"tener problemas al usar esta opción."
|
1115 |
+
|
1116 |
+
#: admin/pages/hide-login-page.php:96
|
1117 |
+
msgid "Install Hide login page component"
|
1118 |
+
msgstr "Instalar el plugin (Hide login page)"
|
1119 |
+
|
1120 |
+
#: admin/pages/hide-login-page.php:98
|
1121 |
+
msgid ""
|
1122 |
+
"To start protect login page, you need to install the additional component "
|
1123 |
+
"Hide login page!"
|
1124 |
+
msgstr ""
|
1125 |
+
"Para comenzar a proteger la página de inicio de sesión, debe instalar el "
|
1126 |
+
"plugin adicional (Hide login page!)"
|
1127 |
+
|
1128 |
+
#: admin/pages/hide-login-page.php:100
|
1129 |
+
msgid ""
|
1130 |
+
"Installing the component will not take you long, just click the install "
|
1131 |
+
"button, then activate."
|
1132 |
+
msgstr ""
|
1133 |
+
"La instalación del plugin no le llevará mucho tiempo, simplemente haga clic "
|
1134 |
+
"en el botón de instalación, luego active."
|
1135 |
+
|
1136 |
+
#: admin/pages/image-optimization.php:64
|
1137 |
+
msgid "Image optimization"
|
1138 |
+
msgstr "Optimización de imágenes"
|
1139 |
+
|
1140 |
+
#: admin/pages/image-optimization.php:65
|
1141 |
+
msgid "Compress bulk of images"
|
1142 |
+
msgstr "Comprimir imágenes a granel"
|
1143 |
+
|
1144 |
+
#: admin/pages/image-optimization.php:98
|
1145 |
+
msgid "Install Robin Image Optimizer component"
|
1146 |
+
msgstr "Instalar componente Robin Image Optimizer"
|
1147 |
+
|
1148 |
+
#: admin/pages/image-optimization.php:100
|
1149 |
+
msgid ""
|
1150 |
+
"To start optimizing images, you need to install the additional component "
|
1151 |
+
"Robin image optimizer!"
|
1152 |
+
msgstr ""
|
1153 |
+
"Para comenzar a optimizar las imágenes, necesita instalar el plugin "
|
1154 |
+
"adicional (Robin image optimizer)."
|
1155 |
+
|
1156 |
+
#: admin/pages/image-optimization.php:102
|
1157 |
+
msgid ""
|
1158 |
+
"Installing the component will not take you long, just click the install "
|
1159 |
+
"button, then\tactivate."
|
1160 |
+
msgstr ""
|
1161 |
+
"La instalación del plugin no le llevará mucho tiempo, simplemente haga clic "
|
1162 |
+
"en el botón de instalación, luego actívelo."
|
1163 |
+
|
1164 |
+
#: admin/pages/license.php:61
|
1165 |
+
msgid "License"
|
1166 |
+
msgstr "Licencia"
|
1167 |
+
|
1168 |
+
#: admin/pages/license.php:62
|
1169 |
+
msgid "Product activation"
|
1170 |
+
msgstr "Activación del producto"
|
1171 |
+
|
1172 |
+
#: admin/pages/license.php:160
|
1173 |
+
#, php-format
|
1174 |
+
msgid "Upgrade to Premium for $%s"
|
1175 |
+
msgstr "Actualizar a Premium por $%s"
|
1176 |
+
|
1177 |
+
#: admin/pages/license.php:164
|
1178 |
+
#, php-format
|
1179 |
+
msgid "Your current license for %1$s:"
|
1180 |
+
msgstr "Su licencia actual por %1$s:"
|
1181 |
+
|
1182 |
+
#: admin/pages/license.php:168
|
1183 |
+
msgid "Delete Key"
|
1184 |
+
msgstr "Eliminar Clave"
|
1185 |
+
|
1186 |
+
#: admin/pages/license.php:170
|
1187 |
+
msgid "Synchronization"
|
1188 |
+
msgstr "Sincronización"
|
1189 |
+
|
1190 |
+
#: admin/pages/license.php:176
|
1191 |
+
#, php-format
|
1192 |
+
msgid "(Automatic renewal, every %s"
|
1193 |
+
msgstr "(Renovación automática, cada %s"
|
1194 |
+
|
1195 |
+
#: admin/pages/license.php:184
|
1196 |
+
msgid ""
|
1197 |
+
"Public License is a GPLv2 compatible license allowing you to change and use "
|
1198 |
+
"this version of the plugin for free. Please keep in mind this license covers "
|
1199 |
+
"only free edition of the plugin. Premium versions are distributed with other "
|
1200 |
+
"type of a license."
|
1201 |
+
msgstr ""
|
1202 |
+
"Licencia Pública compatible con GPLv2 que permite cambiar y utilizar esta "
|
1203 |
+
"versión del complemento de forma gratuita. Tenga en cuenta que esta licencia "
|
1204 |
+
"solo cubre la versión gratuita del plugin. Las versiones premium se "
|
1205 |
+
"distribuyen con otro tipo de licencia."
|
1206 |
+
|
1207 |
+
#: admin/pages/license.php:188
|
1208 |
+
msgid ""
|
1209 |
+
"You use a paid subscription for the plugin updates. In case you don’t want "
|
1210 |
+
"to receive paid updates, please, click <a data-action=\"unsubscribe\" class="
|
1211 |
+
"\"wcl-control-btn\" href=\"#\">cancel subscription</a>"
|
1212 |
+
msgstr ""
|
1213 |
+
"Utilizas una suscripción de pago para las actualizaciones del plugin. En "
|
1214 |
+
"caso de que no desee recibir actualizaciones pagas, haga clic en<a data-"
|
1215 |
+
"action=\"unsubscribe\" class=\"wcl-control-btn\" href=\"#\">cancelar "
|
1216 |
+
"suscripción</ a >"
|
1217 |
+
|
1218 |
+
#: admin/pages/license.php:193
|
1219 |
+
msgid ""
|
1220 |
+
"Your license has expired, please extend the license to get updates and "
|
1221 |
+
"support."
|
1222 |
+
msgstr ""
|
1223 |
+
"Su licencia ha caducado, amplíe la licencia para obtener actualizaciones y "
|
1224 |
+
"soporte."
|
1225 |
+
|
1226 |
+
#: admin/pages/license.php:201
|
1227 |
+
msgid "domain"
|
1228 |
+
msgstr "dominio"
|
1229 |
+
|
1230 |
+
#: admin/pages/license.php:205
|
1231 |
+
msgid "plan"
|
1232 |
+
msgstr "plan"
|
1233 |
+
|
1234 |
+
#: admin/pages/license.php:209
|
1235 |
+
msgid "of"
|
1236 |
+
msgstr "de"
|
1237 |
+
|
1238 |
+
#: admin/pages/license.php:210
|
1239 |
+
msgid "active sites"
|
1240 |
+
msgstr "sitios activos"
|
1241 |
+
|
1242 |
+
#: admin/pages/license.php:215
|
1243 |
+
msgid "version"
|
1244 |
+
msgstr "versión"
|
1245 |
+
|
1246 |
+
#: admin/pages/license.php:216
|
1247 |
+
msgid "up-to-date"
|
1248 |
+
msgstr "actualizado"
|
1249 |
+
|
1250 |
+
#: admin/pages/license.php:221
|
1251 |
+
msgid "EXPIRED!"
|
1252 |
+
msgstr "¡CADUCADO!"
|
1253 |
+
|
1254 |
+
#: admin/pages/license.php:222
|
1255 |
+
msgid "please update the key"
|
1256 |
+
msgstr "por favor actualiza la clave"
|
1257 |
+
|
1258 |
+
#: admin/pages/license.php:231
|
1259 |
+
msgid "day(s)"
|
1260 |
+
msgstr "día(s)"
|
1261 |
+
|
1262 |
+
#: admin/pages/license.php:233
|
1263 |
+
msgid "remained"
|
1264 |
+
msgstr "Se mantuvo"
|
1265 |
+
|
1266 |
+
#: admin/pages/license.php:244
|
1267 |
+
msgid "Have a key to activate the premium version? Paste it here:"
|
1268 |
+
msgstr "¿Tienes una Clave para activar la versión premium? Pégala aquí:"
|
1269 |
+
|
1270 |
+
#: admin/pages/license.php:246
|
1271 |
+
msgid "Have a key to activate the plugin? Paste it here:"
|
1272 |
+
msgstr "¿Tienes una Clave para activar el plugin? Pégala aquí:"
|
1273 |
+
|
1274 |
+
#: admin/pages/license.php:250
|
1275 |
+
msgid "Submit Key"
|
1276 |
+
msgstr "Enviar Clave"
|
1277 |
+
|
1278 |
+
#: admin/pages/license.php:257
|
1279 |
+
#, php-format
|
1280 |
+
msgid ""
|
1281 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
|
1282 |
+
"premium version and get the license key to activate it now!"
|
1283 |
+
msgstr ""
|
1284 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Aprender mas</a>acerca de "
|
1285 |
+
"la versión premium y obtenga la clave de licencia (KEY) para activarla ahora!"
|
1286 |
+
|
1287 |
+
#: admin/pages/license.php:261
|
1288 |
+
#, php-format
|
1289 |
+
msgid ""
|
1290 |
+
"Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener"
|
1291 |
+
"\">this page</a> and login using the e-mail address associated with your "
|
1292 |
+
"purchase."
|
1293 |
+
msgstr ""
|
1294 |
+
"¿No encuentras tu KEY? Ir a <a href=\"%s\" target=\"_blank\" rel=\"noopener"
|
1295 |
+
"\">this page</a> e inicie sesión utilizando la dirección de correo "
|
1296 |
+
"electrónico asociada con su compra."
|
1297 |
+
|
1298 |
+
#: admin/pages/performance-google.php:48
|
1299 |
+
msgid "Google services"
|
1300 |
+
msgstr "Servicios de google"
|
1301 |
+
|
1302 |
+
#: admin/pages/performance-google.php:87
|
1303 |
+
msgid "<strong>Fonts and Maps</strong>."
|
1304 |
+
msgstr "<strong>Fuentes y Mapas</strong>."
|
1305 |
+
|
1306 |
+
#: admin/pages/performance-google.php:87
|
1307 |
+
msgid ""
|
1308 |
+
"Google Fonts and Maps strongly affect your website loading speed. Use "
|
1309 |
+
"settings below to disable or optimize Google fonts and Maps."
|
1310 |
+
msgstr ""
|
1311 |
+
"Google Fonts y Maps afectan fuertemente la velocidad de carga de tu sitio "
|
1312 |
+
"web. Use la configuración a continuación para deshabilitar u optimizar las "
|
1313 |
+
"fuentes y los Mapas de Google."
|
1314 |
+
|
1315 |
+
#: admin/pages/performance-google.php:96
|
1316 |
+
msgid ""
|
1317 |
+
"By default, WordPress loads Google fonts synchronously, that is, your page "
|
1318 |
+
"will not be fully loaded until Google Fonts are loaded. This algorithm slows "
|
1319 |
+
"down the loading of your page and leads to errors when checking the site in "
|
1320 |
+
"Google Page Speed. Using this option, your Google Fonts will be loaded after "
|
1321 |
+
"your page is fully loaded. This method has a negative — you and visitors of "
|
1322 |
+
"your site will see how the font changes while loading a page, from the "
|
1323 |
+
"system to the downloadable one."
|
1324 |
+
msgstr ""
|
1325 |
+
"Por defecto, WordPress carga las fuentes de Google de forma síncrona, es "
|
1326 |
+
"decir, su página no se cargará completamente hasta que se carguen las "
|
1327 |
+
"Fuentes de Google. Este algoritmo ralentiza la carga de su página y genera "
|
1328 |
+
"errores al analizar el sitio con Google Page Speed. Con esta opción, las "
|
1329 |
+
"fuentes de Google se cargarán una vez que su página esté completamente "
|
1330 |
+
"cargada. Este método tiene un aspecto negativo: usted y los visitantes de su "
|
1331 |
+
"sitio verán cómo cambian las fuentes al cargar una página."
|
1332 |
+
|
1333 |
+
#: admin/pages/performance-google.php:106
|
1334 |
+
msgid ""
|
1335 |
+
"This function stops loading of Open Sans and other fonts used by WordPress "
|
1336 |
+
"and bundled themes (Twenty Twelve, Twenty Thirteen, Twenty Fourteen, Twenty "
|
1337 |
+
"Fifteen, Twenty Sixteen, Twenty Seventeen) from Google Fonts.\n"
|
1338 |
+
"Reasons for not using Google Fonts might be privacy and security, local "
|
1339 |
+
"development or production, blocking of Google’s servers, characters not "
|
1340 |
+
"supported by font, performance."
|
1341 |
+
msgstr ""
|
1342 |
+
"Esta función detiene la carga de Open Sans y otras fuentes utilizadas por "
|
1343 |
+
"WordPress y los temas combinados (Twenty Twelve, Twenty Thirteen, Twenty "
|
1344 |
+
"Fourteen, Twenty Fifteen, Twenty Sixteen, Twenty Seventeen) de Google "
|
1345 |
+
"Fonts.\n"
|
1346 |
+
"Las razones para no usar Google Fonts pueden ser la privacidad y la "
|
1347 |
+
"seguridad, el desarrollo o la producción local, el bloqueo de los servidores "
|
1348 |
+
"de Google, los caracteres incompatibles con la fuente, el rendimiento."
|
1349 |
+
|
1350 |
+
#: admin/pages/performance-google.php:117
|
1351 |
+
msgid ""
|
1352 |
+
"This function stops loading of Google Maps used by some themes or plugins.\n"
|
1353 |
+
"Reasons for not using Google Maps might be privacy and security, local "
|
1354 |
+
"development or production, blocking of Google’s servers, performance, not "
|
1355 |
+
"necessary, etc."
|
1356 |
+
msgstr ""
|
1357 |
+
"Esta función detiene la carga de Google Maps que usan algunos temas o "
|
1358 |
+
"plugins.\n"
|
1359 |
+
"Las razones para no usar Google Maps pueden ser la privacidad y la "
|
1360 |
+
"seguridad, el desarrollo o la producción local, el bloqueo de los servidores "
|
1361 |
+
"de Google, el rendimiento, no necesitarlo, etc."
|
1362 |
+
|
1363 |
+
#: admin/pages/performance-google.php:134
|
1364 |
+
msgid ""
|
1365 |
+
"By default, the \"Disable Google Maps\" option removes maps inserted with "
|
1366 |
+
"the SCRIPT tag from the page source code. However, you can also cut out all "
|
1367 |
+
"maps inserted via the iframe by enabling this option."
|
1368 |
+
msgstr ""
|
1369 |
+
"Por defecto, la opción \"Deshabilitar Google Maps \" elimina los mapas "
|
1370 |
+
"insertados con la etiqueta SCRIPT del código fuente de la página. Sin "
|
1371 |
+
"embargo, también puede cortar todos los mapas insertados a través del iframe "
|
1372 |
+
"habilitando esta opción."
|
1373 |
+
|
1374 |
+
#: admin/pages/performance-google.php:143
|
1375 |
+
msgid "Posts or Pages IDs separated by a ,"
|
1376 |
+
msgstr "Publicaciones o ID de páginas separadas por una \",\""
|
1377 |
+
|
1378 |
+
#: admin/pages/performance.php:43
|
1379 |
+
msgid "Performance"
|
1380 |
+
msgstr "Rendimiento"
|
1381 |
+
|
1382 |
+
#: admin/pages/performance.php:44
|
1383 |
+
msgid "Optimization js, css, fonts"
|
1384 |
+
msgstr "Optimización js, css, fuentes"
|
1385 |
+
|
1386 |
+
#: admin/pages/performance.php:63
|
1387 |
+
msgid ""
|
1388 |
+
"Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
|
1389 |
+
"it determines the number of revisions. Delete it so you can change this "
|
1390 |
+
"value through the admin panel."
|
1391 |
+
msgstr ""
|
1392 |
+
"¡Advertencia! En el archivo wp-config.php, se encuentra una constante "
|
1393 |
+
"WP_POST_REVISIONS, que determina el número de revisiones. Elimínelo para que "
|
1394 |
+
"pueda cambiar este valor a través del panel de administración."
|
1395 |
+
|
1396 |
+
#: admin/pages/performance.php:78
|
1397 |
+
msgid "<strong>Clear the unnecessary scripts</strong>"
|
1398 |
+
msgstr "<strong>Limpiar scripts innecesarios</strong>"
|
1399 |
+
|
1400 |
+
#: admin/pages/performance.php:78
|
1401 |
+
msgid ""
|
1402 |
+
"This set of settings will help you remove unnecessary links and code from "
|
1403 |
+
"the head section, as well as reduce your website's pages weight."
|
1404 |
+
msgstr ""
|
1405 |
+
"Este conjunto de configuraciones lo ayudará a eliminar enlaces y códigos "
|
1406 |
+
"innecesarios de la sección de encabezados, así como a reducir el peso de las "
|
1407 |
+
"páginas de su sitio web."
|
1408 |
+
|
1409 |
+
#: admin/pages/performance.php:87
|
1410 |
+
msgid ""
|
1411 |
+
"By default, WordPress generates all types of different RSS feeds for your "
|
1412 |
+
"site. While RSS feeds can be useful if you are running a blog, businesses "
|
1413 |
+
"might not always utilize these. Not every site out there has a blog."
|
1414 |
+
msgstr ""
|
1415 |
+
"Por defecto, WordPress genera todos los tipos de diferentes canales RSS para "
|
1416 |
+
"su sitio. Si bien las fuentes RSS pueden ser útiles si está ejecutando un "
|
1417 |
+
"blog, es posible que las Webs no la usen. No todos los sitios tienen un blog."
|
1418 |
+
|
1419 |
+
#: admin/pages/performance.php:87
|
1420 |
+
#, php-format
|
1421 |
+
msgid ""
|
1422 |
+
"Removes a link to the RSS-feed from the %s section, closes and puts the "
|
1423 |
+
"redirect from all RSS-feeds."
|
1424 |
+
msgstr ""
|
1425 |
+
"Elimina un enlace a la fuente RSS de la sección %s, cierra y coloca la "
|
1426 |
+
"redirección de todas las fuentes RSS."
|
1427 |
+
|
1428 |
+
#: admin/pages/performance.php:102
|
1429 |
+
msgid "Redirect 301"
|
1430 |
+
msgstr "Redirección 301"
|
1431 |
+
|
1432 |
+
#: admin/pages/performance.php:103
|
1433 |
+
msgid "Page 404"
|
1434 |
+
msgstr "Página 404"
|
1435 |
+
|
1436 |
+
#: admin/pages/performance.php:105
|
1437 |
+
msgid "Redirect feed requests"
|
1438 |
+
msgstr "Redirigir las solicitudes de ingreso"
|
1439 |
+
|
1440 |
+
#: admin/pages/performance.php:106
|
1441 |
+
msgid ""
|
1442 |
+
"Forward all requests to page 404 or to the main page through 301 redirects."
|
1443 |
+
msgstr ""
|
1444 |
+
"Reenvíe todas las solicitudes a la página 404 o a la página principal a "
|
1445 |
+
"través de redirecciones 301."
|
1446 |
+
|
1447 |
+
#: admin/pages/performance.php:117
|
1448 |
+
msgid ""
|
1449 |
+
"The WordPress REST API provides API endpoints for WordPress data types that "
|
1450 |
+
"allow developers to interact with sites remotely by sending and receiving "
|
1451 |
+
"JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
|
1452 |
+
"this, and therefore in most cases, it is just unnecessary code."
|
1453 |
+
msgstr ""
|
1454 |
+
"La API REST de WordPress proporciona \"endpoint\" de API para los tipos de "
|
1455 |
+
"datos de WordPress que permiten a los desarrolladores interactuar con sitios "
|
1456 |
+
"de forma remota mediante el envío y la recepción de objetos JSON . Sin "
|
1457 |
+
"embargo, muchos sitios no usan esto, por lo tanto, es simplemente un código "
|
1458 |
+
"innecesario."
|
1459 |
+
|
1460 |
+
#: admin/pages/performance.php:117
|
1461 |
+
msgid ""
|
1462 |
+
"Removes REST API link tag from the front end and the REST API header link "
|
1463 |
+
"from page requests."
|
1464 |
+
msgstr ""
|
1465 |
+
"Elimina la etiqueta de enlace de la API REST de la interfaz y el enlace del "
|
1466 |
+
"encabezado de la API REST de las solicitudes de página."
|
1467 |
+
|
1468 |
+
#: admin/pages/performance.php:138
|
1469 |
+
msgid ""
|
1470 |
+
"Emojis are fun and all, but if you are aren’t using them they actually load "
|
1471 |
+
"a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
|
1472 |
+
"For a lot of businesses, this is not needed and simply adds load time to "
|
1473 |
+
"your site. So we recommend disabling this."
|
1474 |
+
msgstr ""
|
1475 |
+
"Los Emojis son simpáticos, pero si no los usas, en realidad ellos cargan un "
|
1476 |
+
"archivo JavaScript (wp-emoji-release.min.js) en cada página de tu sitio web. "
|
1477 |
+
"Para muchos sitios web, esto es innecesario y solo agrega tiempo de carga a "
|
1478 |
+
"su sitio. Recomendamos desactivar esto."
|
1479 |
+
|
1480 |
+
#: admin/pages/performance.php:138
|
1481 |
+
msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
|
1482 |
+
msgstr ""
|
1483 |
+
"Elimina el archivo JavaScript de WordPress Emojis (wp-emoji-release.min.js)."
|
1484 |
+
|
1485 |
+
#: admin/pages/performance.php:148
|
1486 |
+
msgid ""
|
1487 |
+
"They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
|
1488 |
+
"frontend code and plugins don’t require jquery-migrate.min.js. In most "
|
1489 |
+
"cases, this simply adds unnecessary load to your site. You can see this "
|
1490 |
+
"running if you launch Chrome Devtools console."
|
1491 |
+
msgstr ""
|
1492 |
+
"Se incluyó jQuery migrate en WordPress 3.6. La mayoría de los códigos y "
|
1493 |
+
"complementos de frontend actualizados no requieren jquery-migrate.min.js. "
|
1494 |
+
"Casi siempre, esto agrega una carga innecesaria a su sitio. Puedes ver esto "
|
1495 |
+
"ejecutándose si inicias la consola de Chrome Devtools."
|
1496 |
+
|
1497 |
+
#: admin/pages/performance.php:148
|
1498 |
+
msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
|
1499 |
+
msgstr "Elimina el archivo jQuery Migrate JavaScript (jquery-migrate.min.js)."
|
1500 |
+
|
1501 |
+
#: admin/pages/performance.php:148
|
1502 |
+
msgid "Warning! If there is a broke on your site, disable this option!"
|
1503 |
+
msgstr "¡Advertencia! Si hay una falla en su sitio, deshabilite esta opción!"
|
1504 |
+
|
1505 |
+
#: admin/pages/performance.php:158
|
1506 |
+
msgid ""
|
1507 |
+
"Embeds were released with WordPress 4.4. This is basically the magic that "
|
1508 |
+
"auto converts your YouTube videos, Tweets, and URLs into pretty previews "
|
1509 |
+
"while you are editing. However, this actually loads a JavaScript file (wp-"
|
1510 |
+
"embed.min.js) on every page of your website. If you don’t care about the "
|
1511 |
+
"auto converting preview (which we don’t), you can disable this across your "
|
1512 |
+
"site."
|
1513 |
+
msgstr ""
|
1514 |
+
"Los \"Embeds\" (Insertar) fueron lanzados con WordPress 4.4. Esto es "
|
1515 |
+
"básicamente lo que convierte automáticamente tus videos de YouTube, tweets y "
|
1516 |
+
"URL en vistas previas mientras estás editando. Sin embargo, esto realmente "
|
1517 |
+
"carga un archivo JavaScript (wp-embed.min.js) en cada página de su sitio "
|
1518 |
+
"web. Si no desea vista previa de conversión automática (que a nosotros no), "
|
1519 |
+
"inabilítela."
|
1520 |
+
|
1521 |
+
#: admin/pages/performance.php:158
|
1522 |
+
msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
|
1523 |
+
msgstr "Elimina el archivo JavaScript de WordPress Embed (wp-embed.min.js)"
|
1524 |
+
|
1525 |
+
#: admin/pages/performance.php:177
|
1526 |
+
msgid ""
|
1527 |
+
"The above link is used by blog clients. If you edit your site from your "
|
1528 |
+
"browser then you don’t need this. It is also used by some 3rd party "
|
1529 |
+
"applications that utilize XML-RPC requests. In most cases, this is just "
|
1530 |
+
"unnecessary code."
|
1531 |
+
msgstr ""
|
1532 |
+
"El enlace anterior es utilizado por los clientes del blog. Si edita su sitio "
|
1533 |
+
"desde su navegador, entonces no necesita esto. También es usado por algunas "
|
1534 |
+
"aplicaciones de terceros que utilizan solicitudes XML-RPC. En la mayoría de "
|
1535 |
+
"los casos, este es un código innecesario."
|
1536 |
+
|
1537 |
+
#: admin/pages/performance.php:177
|
1538 |
+
msgid "Remove RSD (Real Simple Discovery) link tag."
|
1539 |
+
msgstr "Eliminar la etiqueta de enlace RSD (Real Simple Discovery)."
|
1540 |
+
|
1541 |
+
#: admin/pages/performance.php:186
|
1542 |
+
msgid ""
|
1543 |
+
"The profile attribute specifies the metadata profile address. Usually, the "
|
1544 |
+
"browser recognizes the value of this attribute and executes some conventions "
|
1545 |
+
"related to the specified profile. Loading the document itself at the "
|
1546 |
+
"specified address does not really happen, moreover, it may not exist at "
|
1547 |
+
"all.\n"
|
1548 |
+
"In particular, the profile is used for the XFN microformat (XHTML Friends "
|
1549 |
+
"Network) - a way of representing relationships between people using links "
|
1550 |
+
"and rel attributes with different values. WordPress also actively uses "
|
1551 |
+
"profile in its templates.\n"
|
1552 |
+
msgstr ""
|
1553 |
+
"El atributo de perfil, especifica la dirección del perfil de metadatos. "
|
1554 |
+
"Normalmente, el navegador reconoce el valor de este atributo y ejecuta "
|
1555 |
+
"algunas reglas relacionadas con el perfil especificado. Cargar el documento "
|
1556 |
+
"en sí mismo en la dirección especificada no garantiza la carga, además, "
|
1557 |
+
"puede que no exista en absoluto.\n"
|
1558 |
+
"En particular, el perfil se usa para el microformato XFN (XHTML Friends "
|
1559 |
+
"Network), es una forma de representar las relaciones entre personas que usan "
|
1560 |
+
"enlaces y atributos de rel con diferentes valores. WordPress también usa "
|
1561 |
+
"activamente el perfil en sus plantillas.\n"
|
1562 |
+
|
1563 |
+
#: admin/pages/performance.php:188
|
1564 |
+
msgid "Remove link tag"
|
1565 |
+
msgstr "Eliminar etiqueta de enlace"
|
1566 |
+
|
1567 |
+
#: admin/pages/performance.php:198
|
1568 |
+
msgid ""
|
1569 |
+
"This link is actually used by Windows Live Writer. If you don’t know use "
|
1570 |
+
"Windows Live Writer, which we are guessing you don’t, this is just "
|
1571 |
+
"unnecessary code."
|
1572 |
+
msgstr ""
|
1573 |
+
"Este enlace es usado por Windows Live Writer. Si no sabe utilizar Windows "
|
1574 |
+
"Live Writer, que suponemos que no sabe, entonces, éste es un código "
|
1575 |
+
"innecesario."
|
1576 |
+
|
1577 |
+
#: admin/pages/performance.php:198
|
1578 |
+
msgid "Remove wlwmanifest (Windows Live Writer) link tag."
|
1579 |
+
msgstr "Quitar la etiqueta de enlace wlwmanifest (Windows Live Writer)."
|
1580 |
+
|
1581 |
+
#: admin/pages/performance.php:208
|
1582 |
+
#, php-format
|
1583 |
+
msgid ""
|
1584 |
+
"By default, the following tag shows up in every WordPress install. %s This "
|
1585 |
+
"is used for a shortlink to your pages and posts. However, if you are already "
|
1586 |
+
"using pretty permalinks, such as domain.com/post, then there is no reason to "
|
1587 |
+
"keep this, it is just unnecessary code."
|
1588 |
+
msgstr ""
|
1589 |
+
"Por defecto, la siguiente etiqueta aparece en cada instalación de WordPress. "
|
1590 |
+
"%s Esto se usa para un enlace corto a sus páginas y publicaciones. Sin "
|
1591 |
+
"embargo, si ya usa enlaces permanentes, como domain.com/post, entonces no "
|
1592 |
+
"aplique esto, simplemente es innecesario."
|
1593 |
+
|
1594 |
+
#: admin/pages/performance.php:208
|
1595 |
+
msgid "Remove Shortlink link tag."
|
1596 |
+
msgstr "Eliminar etiqueta de enlace corto."
|
1597 |
+
|
1598 |
+
#: admin/pages/performance.php:218
|
1599 |
+
msgid ""
|
1600 |
+
"If you use Wordpress as a CMS, then you can delete these links, they can "
|
1601 |
+
"only come in handy for a blog."
|
1602 |
+
msgstr ""
|
1603 |
+
"Si usa Wordpress como CMS, puede eliminar estos enlaces, solo son útiles "
|
1604 |
+
"para un blog."
|
1605 |
+
|
1606 |
+
#: admin/pages/performance.php:218
|
1607 |
+
msgid ""
|
1608 |
+
"Remove the previous and next post links within the wp_head of your wordpress "
|
1609 |
+
"theme."
|
1610 |
+
msgstr ""
|
1611 |
+
"Elimine los enlaces de las publicaciones anteriores y siguientes dentro de "
|
1612 |
+
"wp_head de su tema de wordpress."
|
1613 |
+
|
1614 |
+
#: admin/pages/performance.php:228
|
1615 |
+
msgid ""
|
1616 |
+
"WP by default for the widget \"recent comments\" prescribes in the code "
|
1617 |
+
"styles that are almost impossible to change, because to them apply! "
|
1618 |
+
"important."
|
1619 |
+
msgstr ""
|
1620 |
+
"WP por defecto, hace que el widget \"comentarios recientes \" prescriba en "
|
1621 |
+
"los estilos de código que son casi imposibles de cambiar, ¡porque son "
|
1622 |
+
"recurrentes! muy importante."
|
1623 |
+
|
1624 |
+
#: admin/pages/performance.php:228
|
1625 |
+
msgid "Removes .recentcomments styles from head section."
|
1626 |
+
msgstr "Elimina los estilos .recentcomments de la sección head."
|
1627 |
+
|
1628 |
+
#: admin/pages/performance.php:238
|
1629 |
+
msgid ""
|
1630 |
+
"By default, WordPress loads Font Awesome icons synchronously, that is, your "
|
1631 |
+
"page will not be fully loaded until Font Awesome icons are loaded. This "
|
1632 |
+
"algorithm slows down the loading of your page and leads to errors when "
|
1633 |
+
"checking the site in Google Page Speed. Using this option, your Font Awesome "
|
1634 |
+
"icons will be loaded after your page is fully loaded. This method has a "
|
1635 |
+
"negative — you and visitors of your site will see changes while loading a "
|
1636 |
+
"page, from the placeholders to icons."
|
1637 |
+
msgstr ""
|
1638 |
+
"De forma predeterminada, WordPress carga los iconos de Font Awesome de forma "
|
1639 |
+
"síncrona, es decir, su página no se cargará completamente hasta que se "
|
1640 |
+
"carguen los iconos de Font Awesome. Este algoritmo ralentiza la carga de su "
|
1641 |
+
"página y genera errores al revisar el sitio en Google Page Speed. Con esta "
|
1642 |
+
"opción, sus iconos de Font Awesome se cargarán una vez que su página esté "
|
1643 |
+
"completamente cargada. Este método tiene un aspecto negativo: Se "
|
1644 |
+
"visualizarán cambios al cargar una página, desde marcadores de posición "
|
1645 |
+
"hasta iconos."
|
1646 |
+
|
1647 |
+
#: admin/pages/performance.php:248
|
1648 |
+
msgid ""
|
1649 |
+
"Dashicons is the official icon font of the WordPress admin as of 3.8. Some "
|
1650 |
+
"of you have requested that we add a feature to remove Dashicons. Some themes "
|
1651 |
+
"and developers utilize this (dashicons.min.css) on the front-end of their "
|
1652 |
+
"sites."
|
1653 |
+
msgstr ""
|
1654 |
+
"Dashicons, es la fuente de ícono oficial del administrador de WordPress a "
|
1655 |
+
"partir de 3.8. Nuestros usuarios nos han solicitado que incluir una función "
|
1656 |
+
"para eliminar Dashicons. Algunos temas y desarrolladores utilizan (dashicons."
|
1657 |
+
"min.css) en la parte delantera de sus sitios."
|
1658 |
+
|
1659 |
+
#: admin/pages/performance.php:258
|
1660 |
+
msgid ""
|
1661 |
+
"This function that prevents the user’s gravatar being automatically obtained "
|
1662 |
+
"from gravatar.com based on their registered email. This would be useful for "
|
1663 |
+
"sites where users require an extra layer of privacy, or if you just want to "
|
1664 |
+
"prevent potentially silly or embarrasing avatar accidents.\n"
|
1665 |
+
"\t\t\tIf you’re using Identicons or any other generated default avatar, the "
|
1666 |
+
"user should keep a consistent avatar unless they change their registered "
|
1667 |
+
"email.\n"
|
1668 |
+
"\t\t\t"
|
1669 |
+
msgstr ""
|
1670 |
+
"Esta función evita que el gravatar del usuario se obtenga automáticamente de "
|
1671 |
+
"gravatar.com en función de su correo electrónico registrado. Esto sería útil "
|
1672 |
+
"para los sitios donde los usuarios requieren una capa adicional de "
|
1673 |
+
"privacidad, o si solo desea evitar accidentes de avatar potencialmente "
|
1674 |
+
"embarazosos.\n"
|
1675 |
+
"\t\t\tSi estás usando Identicons o cualquier otro avatar predeterminado "
|
1676 |
+
"generado, el usuario debe mantener un avatar consistente a menos que cambie "
|
1677 |
+
"su correo electrónico registrado.\n"
|
1678 |
+
"\t\t\t"
|
1679 |
+
|
1680 |
+
#: admin/pages/performance.php:266
|
1681 |
+
msgid "Classic editor and Gutenberg"
|
1682 |
+
msgstr ""
|
1683 |
+
|
1684 |
+
#: admin/pages/performance.php:266
|
1685 |
+
msgid "In this group of options, you can manage revisions and post autosave."
|
1686 |
+
msgstr ""
|
1687 |
+
"En este grupo de opciones, puede administrar revisiones y guardar "
|
1688 |
+
"automáticamente."
|
1689 |
+
|
1690 |
+
#: admin/pages/performance.php:288 admin/pages/performance.php:419
|
1691 |
+
msgid "Wordpress default"
|
1692 |
+
msgstr "Wordpress por defecto"
|
1693 |
+
|
1694 |
+
#: admin/pages/performance.php:289 admin/pages/performance.php:290
|
1695 |
+
#: admin/pages/performance.php:291 admin/pages/performance.php:292
|
1696 |
+
#: admin/pages/performance.php:293 admin/pages/performance.php:294
|
1697 |
+
#: admin/pages/performance.php:295 admin/pages/performance.php:296
|
1698 |
+
#: admin/pages/performance.php:297 admin/pages/performance.php:298
|
1699 |
+
msgid "revisions"
|
1700 |
+
msgstr "Revisiones"
|
1701 |
+
|
1702 |
+
#: admin/pages/performance.php:301
|
1703 |
+
msgid ""
|
1704 |
+
"WordPress automatically saves revisions when you are working on posts and "
|
1705 |
+
"pages. These can begin to add up pretty quick. By default, there is no limit "
|
1706 |
+
"in place. We have seen posts with over 1,000 revisions. Multiply this by 50 "
|
1707 |
+
"pages and suddenly you have over 50,000 revisions sitting in your database. "
|
1708 |
+
"The problem with this is that you will most likely never use them and they "
|
1709 |
+
"can start slowing down your database as well as using disk space.\n"
|
1710 |
+
"So we recommend either disabling or limiting your revisions. "
|
1711 |
+
msgstr ""
|
1712 |
+
"WordPress guarda automáticamente las revisiones cuando está trabajando en "
|
1713 |
+
"publicaciones y páginas. Estos pueden aumentar rápidamente. Por defecto, no "
|
1714 |
+
"hay límite para su sitio. Hemos visto publicaciones con más de 1.000 "
|
1715 |
+
"revisiones. Multiplique esto por 50 páginas y, de repente, tiene más de "
|
1716 |
+
"50,000 revisiones en su base de datos. El problema con esto es que lo más "
|
1717 |
+
"probable es que nunca las use haciendo lenta su base de datos, así como el "
|
1718 |
+
"uso en espacio en disco.\n"
|
1719 |
+
"Por lo tanto, recomendamos desactivar o limitar sus revisiones."
|
1720 |
+
|
1721 |
+
#: admin/pages/performance.php:311
|
1722 |
+
msgid "Gutenberg autosave control"
|
1723 |
+
msgstr ""
|
1724 |
+
|
1725 |
+
#: admin/pages/performance.php:313
|
1726 |
+
msgid ""
|
1727 |
+
"By activating this option autosave feature in the Gutenberg editor will be "
|
1728 |
+
"disabled. Alternatively it also provides options in the editor to select a "
|
1729 |
+
"longer autosave interval time than the default 10 seconds."
|
1730 |
+
msgstr ""
|
1731 |
+
|
1732 |
+
#: admin/pages/performance.php:323
|
1733 |
+
msgid ""
|
1734 |
+
"WordPress by default automatically saves a draft every 60 seconds (1 "
|
1735 |
+
"minute). There are reasons why you might want to change this."
|
1736 |
+
msgstr ""
|
1737 |
+
"Por defecto, WordPress guarda automáticamente un borrador cada 60 segundos "
|
1738 |
+
"(1 minuto). Hay razones por las que podrías querer cambiar esto."
|
1739 |
+
|
1740 |
+
#: admin/pages/performance.php:323
|
1741 |
+
msgid "Disables automatic saving of drafts."
|
1742 |
+
msgstr "Desactiva el guardado automático de borradores."
|
1743 |
+
|
1744 |
+
#: admin/pages/performance.php:330
|
1745 |
+
msgid "Remove query strings from static resources"
|
1746 |
+
msgstr "Eliminar cadenas de consulta de recursos estáticos"
|
1747 |
+
|
1748 |
+
#: admin/pages/performance.php:330
|
1749 |
+
msgid ""
|
1750 |
+
"This funcitons will remove query strings from static resources like CSS & JS "
|
1751 |
+
"files inside the HTML <head> element to improve your speed scores in "
|
1752 |
+
"services like Pingdom, GTmetrix, PageSpeed and YSlow. <b style=\"color:"
|
1753 |
+
"#ff5722\">Important:</b> This does not work for authorized users. To avoid "
|
1754 |
+
"problems after plugins update!"
|
1755 |
+
msgstr ""
|
1756 |
+
|
1757 |
+
#: admin/pages/performance.php:339 admin/pages/performance.php:350
|
1758 |
+
msgid ""
|
1759 |
+
"To make it more difficult for others to hack your website you can remove the "
|
1760 |
+
"WordPress version number from your site, your css and js. Without that "
|
1761 |
+
"number it's not possible to see if you run not the current version to "
|
1762 |
+
"exploit bugs from the older versions. <br><br>\n"
|
1763 |
+
"\t\t\t\t\tAdditionally it can improve the loading speed of your site, "
|
1764 |
+
"because without query strings in the URL the css and js files can be cached."
|
1765 |
+
msgstr ""
|
1766 |
+
"Para hacer que sea más difícil el Hackeo de su web, elimine el número de "
|
1767 |
+
"versión de WordPress de su sitio, igual con el css y js. Sin ese número, la "
|
1768 |
+
"versión no será visible a los hacker evitando ataques y explotación de "
|
1769 |
+
"errores de versiones anteriores. <br><br>\n"
|
1770 |
+
"\t \t\t\t\tAdemás, puede mejorar la velocidad de carga de su sitio, ya que "
|
1771 |
+
"sin cadenas de consulta en la URL, los archivos css y js se pueden almacenar "
|
1772 |
+
"en caché."
|
1773 |
+
|
1774 |
+
#: admin/pages/performance.php:340
|
1775 |
+
msgid ""
|
1776 |
+
"Removes wordpress version number from scripts (not logged in user only)."
|
1777 |
+
msgstr ""
|
1778 |
+
"Elimina el número de versión de wordpress de los scripts (solo para usuarios "
|
1779 |
+
"no registrados)."
|
1780 |
+
|
1781 |
+
#: admin/pages/performance.php:351
|
1782 |
+
msgid ""
|
1783 |
+
"Removes the wordpress version number from stylesheets (not logged in user "
|
1784 |
+
"only)."
|
1785 |
+
msgstr ""
|
1786 |
+
"Elimina el número de versión de wordpress de las hojas de estilo (no está "
|
1787 |
+
"registrado solo por el usuario)."
|
1788 |
+
|
1789 |
+
#: admin/pages/performance.php:374
|
1790 |
+
msgid "Exclude stylesheet/script file names"
|
1791 |
+
msgstr "Excluir nombres de hojas de estilo / archivos de script"
|
1792 |
+
|
1793 |
+
#: admin/pages/performance.php:376
|
1794 |
+
msgid ""
|
1795 |
+
"Enter Stylesheet/Script file names to exclude from version removal (each "
|
1796 |
+
"exclude file starts with a new line)"
|
1797 |
+
msgstr ""
|
1798 |
+
"Ingrese los nombres de archivo de hoja de estilo/Script para excluir de la "
|
1799 |
+
"eliminación de la versión (cada archivo de exclusión comienza con una nueva "
|
1800 |
+
"línea)"
|
1801 |
+
|
1802 |
+
#: admin/pages/performance.php:376
|
1803 |
+
msgid "Example"
|
1804 |
+
msgstr "Ejemplo"
|
1805 |
+
|
1806 |
+
#: admin/pages/performance.php:381
|
1807 |
+
msgid "Heartbeat"
|
1808 |
+
msgstr "Heartbeat"
|
1809 |
+
|
1810 |
+
#: admin/pages/performance.php:381
|
1811 |
+
msgid ""
|
1812 |
+
"The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
|
1813 |
+
"from the web-browser. While this is great and all it can also cause high CPU "
|
1814 |
+
"usage and crazy amounts of PHP calls. For example, if you leave your "
|
1815 |
+
"dashboard open it will keep sending POST requests to this file on a regular "
|
1816 |
+
"interval, every 15 seconds. Here is an example below of it happening."
|
1817 |
+
msgstr ""
|
1818 |
+
"La API de WordPress Heartbeat utiliza /wp-admin/admin-ajax.php para ejecutar "
|
1819 |
+
"llamadas AJAX desde el navegador web. Si bien esto es excelente tambien "
|
1820 |
+
"puede causar un alto uso de la CPU y una gran cantidad de llamadas de PHP. "
|
1821 |
+
"Por ejemplo, si deja su panel abierto, seguirá enviando solicitudes POST a "
|
1822 |
+
"este archivo en un intervalo regular, cada 15 segundos. Aquí hay un ejemplo "
|
1823 |
+
"de lo que está pasando."
|
1824 |
+
|
1825 |
+
#: admin/pages/performance.php:390
|
1826 |
+
msgid "Default"
|
1827 |
+
msgstr "Default"
|
1828 |
+
|
1829 |
+
#: admin/pages/performance.php:391
|
1830 |
+
msgid "Everywhere"
|
1831 |
+
msgstr "Donde sea"
|
1832 |
+
|
1833 |
+
#: admin/pages/performance.php:392
|
1834 |
+
msgid "On dashboard page"
|
1835 |
+
msgstr "En el Panel de Control"
|
1836 |
+
|
1837 |
+
#: admin/pages/performance.php:393
|
1838 |
+
msgid "Only allow when editing Posts/Pages"
|
1839 |
+
msgstr "Solo se permite cuando se editan Publicaciones/Páginas."
|
1840 |
+
|
1841 |
+
#: admin/pages/performance.php:420 admin/pages/performance.php:421
|
1842 |
+
#: admin/pages/performance.php:422 admin/pages/performance.php:423
|
1843 |
+
#: admin/pages/performance.php:424 admin/pages/performance.php:425
|
1844 |
+
#: admin/pages/performance.php:426 admin/pages/performance.php:427
|
1845 |
+
#: admin/pages/performance.php:428 admin/pages/performance.php:429
|
1846 |
+
#: admin/pages/performance.php:430 admin/pages/performance.php:431
|
1847 |
+
#: admin/pages/performance.php:432 admin/pages/performance.php:433
|
1848 |
+
#: admin/pages/performance.php:434 admin/pages/performance.php:435
|
1849 |
+
#: admin/pages/performance.php:436
|
1850 |
+
msgid "seconds"
|
1851 |
+
msgstr "segundos"
|
1852 |
+
|
1853 |
+
#: admin/pages/performance.php:439
|
1854 |
+
msgid ""
|
1855 |
+
"Select the heartbeat frequency wordpress. We recommend you 60 seconds, "
|
1856 |
+
"default is 20 seconds."
|
1857 |
+
msgstr ""
|
1858 |
+
"Seleccione la frecuencia heartbeat wordpress. recomendamos 60 segundos, el "
|
1859 |
+
"valor predeterminado es 20 segundos."
|
1860 |
+
|
1861 |
+
#: admin/pages/performance.php:463
|
1862 |
+
msgid ""
|
1863 |
+
"<b>Use this option carefully!</b><br> Plugins like Contact form 7, "
|
1864 |
+
"Anycomments may have problems using this option."
|
1865 |
+
msgstr ""
|
1866 |
+
|
1867 |
+
#: admin/pages/quick-start.php:66
|
1868 |
+
msgid "Clearfy menu"
|
1869 |
+
msgstr "Menú Clearfy"
|
1870 |
+
|
1871 |
+
#: admin/pages/quick-start.php:67
|
1872 |
+
msgid "One-click settings"
|
1873 |
+
msgstr "Configuración de un clic"
|
1874 |
+
|
1875 |
+
#: admin/pages/quick-start.php:76
|
1876 |
+
msgid "Quick start"
|
1877 |
+
msgstr "Inicio rápido"
|
1878 |
+
|
1879 |
+
#: admin/pages/quick-start.php:123
|
1880 |
+
msgid ""
|
1881 |
+
"On this page you can quickly configure the plug-in without going into "
|
1882 |
+
"details."
|
1883 |
+
msgstr ""
|
1884 |
+
"En esta página puede configurar rápidamente el plugin sin entrar en detalles."
|
1885 |
+
|
1886 |
+
#: admin/pages/quick-start.php:131
|
1887 |
+
msgid "One click code clearing"
|
1888 |
+
msgstr "limpieza de código con un click"
|
1889 |
+
|
1890 |
+
#: admin/pages/quick-start.php:132
|
1891 |
+
msgid "One click security"
|
1892 |
+
msgstr "Seguridad con un click"
|
1893 |
+
|
1894 |
+
#: admin/pages/quick-start.php:134
|
1895 |
+
msgid "One click seo optimization"
|
1896 |
+
msgstr "Optimización SEO con un Click"
|
1897 |
+
|
1898 |
+
#: admin/pages/quick-start.php:138
|
1899 |
+
msgid "One click remove default Widgets"
|
1900 |
+
msgstr "Remover los widgets por defecto con un click"
|
1901 |
+
|
1902 |
+
#: admin/pages/quick-start.php:148
|
1903 |
+
msgid "Reset all settings"
|
1904 |
+
msgstr "Restablecer todos los ajustes"
|
1905 |
+
|
1906 |
+
#: admin/pages/quick-start.php:154
|
1907 |
+
msgid "Are you sure you want to enable the this options?"
|
1908 |
+
msgstr "¿Estás seguro de que quieres habilitar estas opciones?"
|
1909 |
+
|
1910 |
+
#: admin/pages/quick-start.php:157 admin/pages/quick-start.php:205
|
1911 |
+
msgid ""
|
1912 |
+
"After confirmation, all the settings of the plug-in will return to the "
|
1913 |
+
"default state. Make backup settings by copying data from the export field."
|
1914 |
+
msgstr ""
|
1915 |
+
"Después de la confirmación, todos los ajustes del plugin volverán al estado "
|
1916 |
+
"predeterminado. Haga ajustes de copia de seguridad copiando datos del campo "
|
1917 |
+
"de exportación."
|
1918 |
+
|
1919 |
+
#: admin/pages/quick-start.php:161
|
1920 |
+
msgid "Confirm"
|
1921 |
+
msgstr "Confirmar"
|
1922 |
+
|
1923 |
+
#: admin/pages/quick-start.php:162
|
1924 |
+
msgid "Cancel"
|
1925 |
+
msgstr "Cancelar"
|
1926 |
+
|
1927 |
+
#: admin/pages/quick-start.php:167
|
1928 |
+
msgid "<strong>Quick start</strong>."
|
1929 |
+
msgstr "<strong>Inicio rápido</strong>."
|
1930 |
+
|
1931 |
+
#: admin/pages/quick-start.php:168
|
1932 |
+
msgid ""
|
1933 |
+
"These are quick optimization options for your website. You can activate the "
|
1934 |
+
"groups of necessary settings in one click. With the fast optimization mode, "
|
1935 |
+
"we are enable the only safe settings that do not break your website. That is "
|
1936 |
+
"why we recommend you to look at each setting of the plugin individually. The "
|
1937 |
+
"settings with grey and red question mark will not be active, until you do it "
|
1938 |
+
"yourself."
|
1939 |
+
msgstr ""
|
1940 |
+
"Estas son opciones de optimización rápida para su sitio web. Active los "
|
1941 |
+
"grupos de ajustes que necesitecon un clic. Con el modo de optimización "
|
1942 |
+
"rápida, habilitamos las únicas configuraciones seguras que no rompen su "
|
1943 |
+
"sitio web. Por eso le recomendamos que mire cada configuración del "
|
1944 |
+
"complemento de forma individual. Los ajustes con el signo de interrogación "
|
1945 |
+
"gris y rojo no estarán activos hasta que lo haga usted mismo."
|
1946 |
+
|
1947 |
+
#: admin/pages/quick-start.php:174
|
1948 |
+
msgid "Select what you need to do"
|
1949 |
+
msgstr "Seleccione que necesita hacer"
|
1950 |
+
|
1951 |
+
#: admin/pages/quick-start.php:176
|
1952 |
+
msgid ""
|
1953 |
+
"After selecting any optimization case, the plugin will automatically enable "
|
1954 |
+
"the necessary settings in safe mode and one click."
|
1955 |
+
msgstr ""
|
1956 |
+
"Después de seleccionar cualquier modo de optimización, el plugin habilitará "
|
1957 |
+
"automáticamente la configuración necesaria en modo seguro y con un clic."
|
1958 |
+
|
1959 |
+
#: admin/pages/quick-start.php:204
|
1960 |
+
msgid "Reset settings"
|
1961 |
+
msgstr "Resetear configuraciones"
|
1962 |
+
|
1963 |
+
#: admin/pages/quick-start.php:217
|
1964 |
+
msgid "Reset"
|
1965 |
+
msgstr "Resetear"
|
1966 |
+
|
1967 |
+
#: admin/pages/quick-start.php:219
|
1968 |
+
msgid "Do It!"
|
1969 |
+
msgstr "Házlo!"
|
1970 |
+
|
1971 |
+
#: admin/pages/seo-double-pages.php:39
|
1972 |
+
msgid "Duplicate pages"
|
1973 |
+
msgstr "Páginas duplicadas"
|
1974 |
+
|
1975 |
+
#: admin/pages/seo-double-pages.php:74
|
1976 |
+
msgid "<strong>Delete duplicate pages.</strong>."
|
1977 |
+
msgstr "<strong>Borrar páginas duplicadas.</strong>."
|
1978 |
+
|
1979 |
+
#: admin/pages/seo-double-pages.php:74
|
1980 |
+
msgid ""
|
1981 |
+
"Search engines perceive these pages as website separate pages, therefore "
|
1982 |
+
"their content ceases to be unique because of duplication. In addition, page "
|
1983 |
+
"reference weight is reduced if it has a duplicate. A small number of "
|
1984 |
+
"duplicated pages will not be a serious problem, but if there are more than "
|
1985 |
+
"50 percents of them - you urgently need to correct the situation."
|
1986 |
+
msgstr ""
|
1987 |
+
"Los motores de búsqueda perciben estas páginas como páginas separadas del "
|
1988 |
+
"sitio web, por lo que su contenido deja de ser único debido a la "
|
1989 |
+
"duplicación. Además, el Ranking de la página se reduce si tiene un "
|
1990 |
+
"duplicado. Un pequeño número de páginas duplicadas no será un problema "
|
1991 |
+
"grave, pero si hay más del 50 por ciento de ellas, debe corregir la "
|
1992 |
+
"situación con urgencia."
|
1993 |
+
|
1994 |
+
#: admin/pages/seo-double-pages.php:83
|
1995 |
+
#, php-format
|
1996 |
+
msgid ""
|
1997 |
+
"Many duplicates in date archives. Imagine, in addition, that your article "
|
1998 |
+
"will be displayed in the main and in the category, you will still receive at "
|
1999 |
+
"least 3 duplicates: in archives by year, month and date, for example %s."
|
2000 |
+
msgstr ""
|
2001 |
+
"Muchos duplicados en fecha de archivos. Imagine, además, que tu artículo se "
|
2002 |
+
"mostrará en la categoría principal y en categorías, recibirás al menos 3 "
|
2003 |
+
"duplicados: en archivos por año, mes y fecha, por ejemplo,%s."
|
2004 |
+
|
2005 |
+
#: admin/pages/seo-double-pages.php:83
|
2006 |
+
msgid "Removes all pages with the date archives and puts a redirect."
|
2007 |
+
msgstr ""
|
2008 |
+
"Elimina todas las páginas con los archivos de fecha y pone una redirección."
|
2009 |
+
|
2010 |
+
#: admin/pages/seo-double-pages.php:93
|
2011 |
+
#, php-format
|
2012 |
+
msgid ""
|
2013 |
+
"If the site is only filled by you - a mandatory item. Allows you to get rid "
|
2014 |
+
"of duplicates on user archives, for example %s."
|
2015 |
+
msgstr ""
|
2016 |
+
"Si el sitio solo está ocupado por usted - un elemento obligatorio. Le "
|
2017 |
+
"permite deshacerse de los duplicados en los archivos de usuario, por ejemplo,"
|
2018 |
+
"%s."
|
2019 |
+
|
2020 |
+
#: admin/pages/seo-double-pages.php:93
|
2021 |
+
msgid "Removes all pages with the author archives and puts a redirect."
|
2022 |
+
msgstr ""
|
2023 |
+
"Elimina todas las páginas con los archivos de autor y pone una redirección."
|
2024 |
+
|
2025 |
+
#: admin/pages/seo-double-pages.php:103
|
2026 |
+
msgid ""
|
2027 |
+
"If you use tags only for the block Similar records, or do not use them at "
|
2028 |
+
"all - it will be more correct to close them to avoid duplicates."
|
2029 |
+
msgstr ""
|
2030 |
+
"Si usa etiquetas solo para el bloque Registros similares, o no los usa en "
|
2031 |
+
"absoluto, ciérrelos para evitar duplicados."
|
2032 |
+
|
2033 |
+
#: admin/pages/seo-double-pages.php:103
|
2034 |
+
msgid "Removes all pages with the tag archives and puts a redirect."
|
2035 |
+
msgstr ""
|
2036 |
+
"Elimina todas las páginas con los archivos de etiquetas y pone una "
|
2037 |
+
"redirección."
|
2038 |
+
|
2039 |
+
#: admin/pages/seo-double-pages.php:113
|
2040 |
+
msgid ""
|
2041 |
+
"Every of the pictures has its own page on the site. Such pages are "
|
2042 |
+
"successfully indexed and create duplicates. The site can have thousands of "
|
2043 |
+
"same-type attachment pages."
|
2044 |
+
msgstr ""
|
2045 |
+
"Cada una de las imágenes tiene su propia página en el sitio. Dichas páginas "
|
2046 |
+
"son indexadas con éxito y crean duplicados. El sitio puede tener miles de "
|
2047 |
+
"páginas adjuntas del mismo tipo."
|
2048 |
+
|
2049 |
+
#: admin/pages/seo-double-pages.php:113
|
2050 |
+
msgid "Removes attachment pages and puts a redirect."
|
2051 |
+
msgstr "Elimina las páginas adjuntas y pone una redirección."
|
2052 |
+
|
2053 |
+
#: admin/pages/seo-double-pages.php:123
|
2054 |
+
#, php-format
|
2055 |
+
msgid ""
|
2056 |
+
"In WordPress, any post can be divided into parts (pages), each part will "
|
2057 |
+
"have its own address. But this functionality is rarely used, but it can "
|
2058 |
+
"create trouble for you. For example, you can add a number to the address of "
|
2059 |
+
"any entry of your blog, %s - the post itself will open, which will be a "
|
2060 |
+
"duplicate. You can substitute any number."
|
2061 |
+
msgstr ""
|
2062 |
+
"En WordPress, cualquier publicación se puede dividir en partes (páginas), "
|
2063 |
+
"cada parte tendrá su propia dirección. Pero esta funcionalidad rara vez se "
|
2064 |
+
"utiliza, esto puede crear problemas para usted. Por ejemplo, puede agregar "
|
2065 |
+
"un número a la dirección de cualquier entrada de su blog, %s - se abrirá la "
|
2066 |
+
"publicación, que será un duplicado. Puede sustituir cualquier número."
|
2067 |
+
|
2068 |
+
#: admin/pages/seo-double-pages.php:123
|
2069 |
+
#, php-format
|
2070 |
+
msgid "Removes the pagination from the post and puts a redirect. Example: %s"
|
2071 |
+
msgstr ""
|
2072 |
+
"Elimina la paginación de la publicación y pone una redirección. Ejemplo: %s"
|
2073 |
+
|
2074 |
+
#: admin/pages/seo-double-pages.php:133
|
2075 |
+
#, php-format
|
2076 |
+
msgid ""
|
2077 |
+
"WordPress adds %s to the link \"Reply\" in the comments, if you use "
|
2078 |
+
"hierarchical comments."
|
2079 |
+
msgstr ""
|
2080 |
+
"WordPress agrega %s al enlace \"Responder \" en los comentarios, si usa "
|
2081 |
+
"comentarios jerárquicos."
|
2082 |
+
|
2083 |
+
#: admin/pages/seo-double-pages.php:133
|
2084 |
+
msgid "?relpytocom remove and and puts a redirect."
|
2085 |
+
msgstr "Eliminar ?replytocom y poner una redirección."
|
2086 |
+
|
2087 |
+
#: admin/pages/seo.php:37
|
2088 |
+
msgid "SEO"
|
2089 |
+
msgstr "SEO"
|
2090 |
+
|
2091 |
+
#: admin/pages/seo.php:38
|
2092 |
+
msgid "Additional small fixes SEO"
|
2093 |
+
msgstr "Pequeñas correcciones adicionales de SEO"
|
2094 |
+
|
2095 |
+
#: admin/pages/seo.php:72
|
2096 |
+
msgid "<strong>Basic SEO optimization settings</strong>."
|
2097 |
+
msgstr "<strong>Configuración básica de optimización SEO</strong>."
|
2098 |
+
|
2099 |
+
#: admin/pages/seo.php:72
|
2100 |
+
msgid "Recommended settings that can complement your SEO plugin."
|
2101 |
+
msgstr "Configuraciones recomendadas que pueden complementar tu plugin SEO."
|
2102 |
+
|
2103 |
+
#: admin/pages/seo.php:81
|
2104 |
+
msgid ""
|
2105 |
+
"The alt attribute is mandatory, so most SEO experts say. If you missed or "
|
2106 |
+
"did not fill it at all, it will be automatically assigned and will be equal "
|
2107 |
+
"to the title of the article."
|
2108 |
+
msgstr ""
|
2109 |
+
"El atributo alt es obligatorio y necesario para el SEO, en caso de no "
|
2110 |
+
"existir, lo asignaremos automáticamente usando el título del artículo."
|
2111 |
+
|
2112 |
+
#: admin/pages/seo.php:81
|
2113 |
+
#, php-format
|
2114 |
+
msgid "Replaces the %s, on attribute with an article name %s"
|
2115 |
+
msgstr "Reemplaza el %s, en atributo con un nombre de artículo %s"
|
2116 |
+
|
2117 |
+
#: admin/pages/seo.php:91
|
2118 |
+
msgid ""
|
2119 |
+
"After installation, WP does not contain a robots.txt file and create it "
|
2120 |
+
"manually. We re-read about 30 different articles, instructions from Yandex "
|
2121 |
+
"and Google to create the perfect robots.txt"
|
2122 |
+
msgstr ""
|
2123 |
+
"Si después de la instalación de WP no existe un archivo robots.txt, créelo "
|
2124 |
+
"manualmente. Yandex y Google poseen unos 30 artículos para crear el archivo "
|
2125 |
+
"robots.txt perfecto."
|
2126 |
+
|
2127 |
+
#: admin/pages/seo.php:91
|
2128 |
+
msgid "Automatically creates the perfect robots.txt file"
|
2129 |
+
msgstr "Crear automáticamente archivo robots.txt perfecto para tu web"
|
2130 |
+
|
2131 |
+
#: admin/pages/seo.php:111
|
2132 |
+
msgid "Server headers and response"
|
2133 |
+
msgstr "Cebeceras de respuesta de servidor"
|
2134 |
+
|
2135 |
+
#: admin/pages/seo.php:111
|
2136 |
+
msgid ""
|
2137 |
+
"WordPress does not know how to give the Last Modified header in the server's "
|
2138 |
+
"responses. You can do this using the settings below."
|
2139 |
+
msgstr ""
|
2140 |
+
"WordPress no sabe cómo darte la última modificación del encabezado en las "
|
2141 |
+
"respuestas del servidor. Puedes hacer esto usando la configuración de abajo."
|
2142 |
+
|
2143 |
+
#: admin/pages/seo.php:132
|
2144 |
+
msgid "Disable Last Modified header on front page"
|
2145 |
+
msgstr ""
|
2146 |
+
"Deshabilitar la última modificación del encabezado de la página frontal"
|
2147 |
+
|
2148 |
+
#: admin/pages/seo.php:142
|
2149 |
+
#, php-format
|
2150 |
+
msgid ""
|
2151 |
+
"You can specify a page mask, for example: %s or %s. All pages that contain "
|
2152 |
+
"the string will be excluded. Each exclude must begin with a new line."
|
2153 |
+
msgstr ""
|
2154 |
+
"Puede especificar una máscara de página, por ejemplo: %s o %s. Se excluirán "
|
2155 |
+
"todas las páginas que contengan la cadena. Cada exclusión debe comenzar con "
|
2156 |
+
"una nueva línea."
|
2157 |
+
|
2158 |
+
#: admin/pages/seo.php:156
|
2159 |
+
msgid "For the Yoast SEO plugin"
|
2160 |
+
msgstr "Para el plugin Yoast SEO"
|
2161 |
+
|
2162 |
+
#: admin/pages/seo.php:156
|
2163 |
+
msgid ""
|
2164 |
+
"These settings will help you eliminate some problems associated with the "
|
2165 |
+
"popular Yoast SEO plugin"
|
2166 |
+
msgstr ""
|
2167 |
+
"Esta configuración te ayudará a eliminar algunos problemas asociados con el "
|
2168 |
+
"popular complemento SEO de Yoast"
|
2169 |
+
|
2170 |
+
#: admin/pages/seo.php:165
|
2171 |
+
msgid ""
|
2172 |
+
"The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
|
2173 |
+
"title of the article. Some SEO-specialists consider this duplication to be "
|
2174 |
+
"superfluous."
|
2175 |
+
msgstr ""
|
2176 |
+
"El último elemento dentro del breadcrumbs en el plugin Yoast SEO duplica el "
|
2177 |
+
"título del artículo. Algunos especialistas en SEO consideran que esta "
|
2178 |
+
"duplicación es inútil."
|
2179 |
+
|
2180 |
+
#: admin/pages/seo.php:165
|
2181 |
+
msgid ""
|
2182 |
+
"Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
|
2183 |
+
"Yoast."
|
2184 |
+
msgstr ""
|
2185 |
+
"Elimina la duplicación del nombre en las rutas de navegación del complemento "
|
2186 |
+
"WP SEO de Yoast."
|
2187 |
+
|
2188 |
+
#: admin/pages/seo.php:175
|
2189 |
+
msgid ""
|
2190 |
+
"Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
|
2191 |
+
"has a specific tag"
|
2192 |
+
msgstr ""
|
2193 |
+
|
2194 |
+
#: admin/pages/seo.php:175
|
2195 |
+
#, php-format
|
2196 |
+
msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
|
2197 |
+
msgstr "Elimine la etiqueta %s del mapa de sitio XML del plugin Yoast SEO."
|
2198 |
+
|
2199 |
+
#: admin/pages/seo.php:175
|
2200 |
+
msgid ""
|
2201 |
+
"Attention! After activation, turn off the site map and enable it back to "
|
2202 |
+
"regenerate it."
|
2203 |
+
msgstr ""
|
2204 |
+
"¡Atención! Después de la activación, desactive el mapa del sitio y "
|
2205 |
+
"habilítelo de nuevo para regenerarlo."
|
2206 |
+
|
2207 |
+
#: admin/pages/seo.php:175
|
2208 |
+
msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
|
2209 |
+
msgstr ""
|
2210 |
+
"Tal vez no funcione en versiones anteriores de Yoast SEO - actualice el "
|
2211 |
+
"plugin Yoast"
|
2212 |
+
|
2213 |
+
#: admin/pages/seo.php:193
|
2214 |
+
msgid ""
|
2215 |
+
"If you’re not familiar with Search Action it’s the mark-up that helps search "
|
2216 |
+
"engines add a shiny Sitelinks Search Box below your search engine results. "
|
2217 |
+
"For the majority of webmasters the extra search box is an absolutely "
|
2218 |
+
"fantastic feature but for many it’s not required or wanted, especially if a "
|
2219 |
+
"site only has a few pages or if the site uses a customised search platform "
|
2220 |
+
"that only searches blog posts and not pages."
|
2221 |
+
msgstr ""
|
2222 |
+
"En caso de no saber que es el (Search Action); Es el margen que ayuda a los "
|
2223 |
+
"motores de búsqueda a agregar un campo de enlaces de sitio en cuestión "
|
2224 |
+
"debajo de los resultados del motor de búsqueda. Para los webmasters, el "
|
2225 |
+
"cuadro de búsqueda adicional es excelente, pero para muchos no aplica si un "
|
2226 |
+
"sitio solo tiene unas pocas páginas o si el sitio utiliza una plataforma de "
|
2227 |
+
"búsqueda personalizada que solo busca publicaciones de blogs y no páginas."
|
2228 |
+
|
2229 |
+
#: admin/pages/seo.php:193
|
2230 |
+
msgid ""
|
2231 |
+
"Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO."
|
2232 |
+
msgstr ""
|
2233 |
+
"Deshabilite el cuadro de búsqueda de enlaces de sitio JSON-LD desde "
|
2234 |
+
"WordPress en el plugin Yoast SEO."
|
2235 |
+
|
2236 |
+
#: admin/pages/seo.php:203
|
2237 |
+
msgid ""
|
2238 |
+
"Prevents output of the script tag of type application/ld+json containing\n"
|
2239 |
+
"schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
|
2240 |
+
"There is currently no UI to do so."
|
2241 |
+
msgstr ""
|
2242 |
+
"Evita la salida de la etiqueta de script de tipo application/ld+json que "
|
2243 |
+
"contiene\n"
|
2244 |
+
"Datos de schema.org de los populares complementos de Yoast SEO y Yoast SEO "
|
2245 |
+
"Premium.\n"
|
2246 |
+
"Actualmente no hay una interfaz de usuario para hacerlo."
|
2247 |
+
|
2248 |
+
#: admin/pages/seo.php:205
|
2249 |
+
msgid "Disable Structured Data in plugin Yoast SEO."
|
2250 |
+
msgstr "Desactivar los datos estructurados del plugin Yoast SEO."
|
2251 |
+
|
2252 |
+
#: admin/pages/seo.php:228
|
2253 |
+
#, php-format
|
2254 |
+
msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
|
2255 |
+
msgstr ""
|
2256 |
+
"El complemento Yoast SEO muestra un comentario del formulario %s en la "
|
2257 |
+
"sección %s"
|
2258 |
+
|
2259 |
+
#: admin/pages/seo.php:228
|
2260 |
+
#, php-format
|
2261 |
+
msgid "Removes the Yoast SEO plugin comment of their section %s"
|
2262 |
+
msgstr "Elimina el comentario del plugin Yoast SEO de su sección %s"
|
2263 |
+
|
2264 |
+
#: admin/pages/widgets.php:35
|
2265 |
+
msgid "Widgets"
|
2266 |
+
msgstr "Widgets"
|
2267 |
+
|
2268 |
+
#: admin/pages/widgets.php:36
|
2269 |
+
msgid "Disable unused widgets"
|
2270 |
+
msgstr "Deshabilitar los widgets no utilizados"
|
2271 |
+
|
2272 |
+
#: admin/pages/widgets.php:55
|
2273 |
+
msgid "<strong>Disable unused widgets</strong>."
|
2274 |
+
msgstr "<strong>Deshabilitar widgets no utilizados</strong>."
|
2275 |
+
|
2276 |
+
#: admin/pages/widgets.php:55
|
2277 |
+
msgid ""
|
2278 |
+
"Some widgets, such as the Calendar or Tag Cloud, create an extra query to "
|
2279 |
+
"the database, even if they are not displayed on the website. Of course, a "
|
2280 |
+
"couple of hits to the database will not do much harm to the whole site. "
|
2281 |
+
"However, if the resource contains a huge amount of content, and the speed of "
|
2282 |
+
"its work above all else, disabling unused functionality is the first step to "
|
2283 |
+
"optimizing and accelerating it."
|
2284 |
+
msgstr ""
|
2285 |
+
"Algunos widgets, como el calendario o la nube de etiquetas, crean una "
|
2286 |
+
"consulta adicional a la base de datos, incluso si no se muestran en el sitio "
|
2287 |
+
"web. Por supuesto, un par de visitas a la base de datos no harán mucho daño "
|
2288 |
+
"a todo el sitio. Sin embargo, si el recurso contiene una gran cantidad de "
|
2289 |
+
"contenido, y la velocidad de su trabajo es proridad, deshabilitar la "
|
2290 |
+
"funcionalidad no utilizada es el primer paso para optimizarla y acelerarla."
|
2291 |
+
|
2292 |
+
#: clearfy.php:84 includes/boot.php:113
|
2293 |
+
msgid "Clearfy"
|
2294 |
+
msgstr "Clearfy"
|
2295 |
+
|
2296 |
+
#: includes/boot.php:76
|
2297 |
+
msgid "Documentation"
|
2298 |
+
msgstr "Documentación"
|
2299 |
+
|
2300 |
+
#: includes/boot.php:82
|
2301 |
+
msgid "Do you like our plugin?"
|
2302 |
+
msgstr "¿Te gusta nuestro plugin?"
|
2303 |
+
|
2304 |
+
#: includes/boot.php:87
|
2305 |
+
msgid "Getting started free support"
|
2306 |
+
msgstr "Aprender a usar el soporte gratuito"
|
2307 |
+
|
2308 |
+
#: includes/boot.php:97
|
2309 |
+
msgid "Upgrade to premium"
|
2310 |
+
msgstr "Actualizar a premium"
|
2311 |
+
|
2312 |
+
#: includes/class.plugin.php:239
|
2313 |
+
msgid "Some components of Clearfy were suspended"
|
2314 |
+
msgstr "Algunos componentes de Clearfy fueron suspendidos"
|
2315 |
+
|
2316 |
+
#: includes/class.plugin.php:241
|
2317 |
+
#, php-format
|
2318 |
+
msgid ""
|
2319 |
+
"Component %s is not compatible with the current version of the plugin "
|
2320 |
+
"Clearfy, you must update the component to the latest version."
|
2321 |
+
msgstr ""
|
2322 |
+
"El componente %s no es compatible con la versión actual del plugin Clearfy, "
|
2323 |
+
"debes actualizar este componente a la última versión."
|
2324 |
+
|
2325 |
+
#: includes/class.plugin.php:244
|
2326 |
+
msgid "Click here to update the components"
|
2327 |
+
msgstr "Clik aquí para actualizar los componentes."
|
2328 |
+
|
2329 |
+
#: includes/classes/class.configurate-performance.php:149
|
2330 |
+
msgid "No interval specified"
|
2331 |
+
msgstr ""
|
2332 |
+
|
2333 |
+
#: includes/classes/class.configurate-performance.php:350
|
2334 |
+
msgid "REST API restricted to authenticated users."
|
2335 |
+
msgstr "REST API restringida a usuarios autenticados."
|
2336 |
+
|
2337 |
+
#: includes/classes/class.configurate-security.php:214
|
2338 |
+
msgid "<strong>ERROR</strong>: Wrong login or password"
|
2339 |
+
msgstr "<strong>ERROR</strong>: nombre de usuario o contraseña incorrectos"
|
2340 |
+
|
2341 |
+
#: includes/classes/class.package.php:206
|
2342 |
+
msgid "Sorry, you are not allowed to install plugins on this site."
|
2343 |
+
msgstr "Disculpe, no está permitido instalar complementos en este sitio."
|
2344 |
+
|
2345 |
+
#: includes/classes/class.package.php:271
|
2346 |
+
msgid ""
|
2347 |
+
"Updates are available for one of the components. Please, update your current "
|
2348 |
+
"package of components to the newest version."
|
2349 |
+
msgstr ""
|
2350 |
+
"Hay actualizaciones disponibles para uno de los componentes. Por favor, "
|
2351 |
+
"actualícelo a la versión más reciente."
|
2352 |
+
|
2353 |
+
#: includes/classes/class.package.php:274
|
2354 |
+
msgid ""
|
2355 |
+
"You’ve changed the component configuration. For the further work, please, "
|
2356 |
+
"update the current package of components!"
|
2357 |
+
msgstr ""
|
2358 |
+
"Has cambiado la configuración del componente. Para opciones adicionales, por "
|
2359 |
+
"favor, actualice el paquete de componentes!"
|
2360 |
+
|
2361 |
+
#: includes/classes/class.package.php:278
|
2362 |
+
msgid "Update now"
|
2363 |
+
msgstr "Actualizar ahora"
|
2364 |
+
|
2365 |
+
#: includes/classes/class.zip-archive.php:15
|
2366 |
+
msgid "The ZipArchive class does not exist in this version of php."
|
2367 |
+
msgstr "La clase ZipArchive no existe en esta versión de php."
|
languages/clearfy-nl_BE.po
CHANGED
@@ -2080,1449 +2080,4 @@ msgstr ""
|
|
2080 |
|
2081 |
#: includes/classes/class.zip-archive.php:15
|
2082 |
msgid "The ZipArchive class does not exist in this version of php."
|
2083 |
-
msgstr "De ZipArchive klasse bestaat niet in deze versie van php."
|
2084 |
-
|
2085 |
-
#~ msgid ""
|
2086 |
-
#~ "We found that you have the \"Clearfy - disable unused features\" plugin "
|
2087 |
-
#~ "installed, this plugin already has disable comments functions, so you can "
|
2088 |
-
#~ "deactivate plugin \"Webcraftic Cyrlitera\"!"
|
2089 |
-
#~ msgstr ""
|
2090 |
-
#~ "We hebben vastgesteld dat de plugin \"Clearfy - niet-gebruikte functies "
|
2091 |
-
#~ "uitschakelen\" is geïnstalleerd. Deze plugin heeft reeds de functie "
|
2092 |
-
#~ "opmerkingen uitschakelen, zodat u de plugin \"Webcraftic Cyrlitera\" kunt "
|
2093 |
-
#~ "deactiveren!"
|
2094 |
-
|
2095 |
-
#~ msgid "http://webcraftic.com"
|
2096 |
-
#~ msgstr "http://webcraftic.com"
|
2097 |
-
|
2098 |
-
#~ msgid "Webcraftic Hide login page"
|
2099 |
-
#~ msgstr "Webcartic Verberg Loginpagina"
|
2100 |
-
|
2101 |
-
#~ msgid "Webcraftic Cyrlitera"
|
2102 |
-
#~ msgstr "Webcraftic Cyrlitera"
|
2103 |
-
|
2104 |
-
#~ msgid "The rollback of new changes was successful!"
|
2105 |
-
#~ msgstr "Het terugdraaien van nieuwe wijzigingen was succesvol!"
|
2106 |
-
|
2107 |
-
#~ msgid "Rollback changes"
|
2108 |
-
#~ msgstr "Wijzigingen terugdraaien"
|
2109 |
-
|
2110 |
-
#~ msgid ""
|
2111 |
-
#~ "Allows you to restore converted URLs by using the \"Convert already created "
|
2112 |
-
#~ "posts and categories\" button. This can be useful in case of incorrect URLs "
|
2113 |
-
#~ "or incorrect transliteration of some characters. You can roll back changes "
|
2114 |
-
#~ "and advance the character sets above to correct the plugin's work. "
|
2115 |
-
#~ msgstr ""
|
2116 |
-
#~ "Hiermee kunt u geconverteerde URL's herstellen met behulp van de knop "
|
2117 |
-
#~ "\"Bestaande berichten en categorieën converteren\". Dit kan handig zijn in "
|
2118 |
-
#~ "het geval van onjuiste URL's of onjuiste transliteratie van sommige tekens. "
|
2119 |
-
#~ "U kunt wijzigingen terugdraaien en de tekensets hierboven verbeteren om het "
|
2120 |
-
#~ "werk van de plugin te corrigeren."
|
2121 |
-
|
2122 |
-
#~ msgid "Url of old posts, pages,terms,tags successfully converted into Latin!"
|
2123 |
-
#~ msgstr ""
|
2124 |
-
#~ "Url van oude berichten, pagina's, voorwaarden, tags omgezet in Latijn!"
|
2125 |
-
|
2126 |
-
#~ msgid "Convert already created posts and categories"
|
2127 |
-
#~ msgstr "Converteer eerder gemaakte berichten en categorieën"
|
2128 |
-
|
2129 |
-
#~ msgid ""
|
2130 |
-
#~ "If at the time of the plugin installation you already had posts, pages, "
|
2131 |
-
#~ "tags and categories, click on this button and the plugin will automatically "
|
2132 |
-
#~ "convert URLs into Latin. Attention! Previously uploaded files will not be "
|
2133 |
-
#~ "converted."
|
2134 |
-
#~ msgstr ""
|
2135 |
-
#~ "Als u tijdens de installatie van de plugin al berichten, pagina's, tags en "
|
2136 |
-
#~ "categorieën had, klik dan op deze knop en de plugin converteert URL's "
|
2137 |
-
#~ "automatisch naar Latijn. Aandacht! Eerder geüploade bestanden worden niet "
|
2138 |
-
#~ "geconverteerd."
|
2139 |
-
|
2140 |
-
#~ msgid ""
|
2141 |
-
#~ "You can supplement current base of transliteration characters. Write pairs "
|
2142 |
-
#~ "of values separated by commas. Example:"
|
2143 |
-
#~ msgstr ""
|
2144 |
-
#~ "U kunt de huidige basis van transliteratie tekens aanvullen. Schrijf paren "
|
2145 |
-
#~ "van waardes gescheiden door komma's. Voorbeeld:"
|
2146 |
-
|
2147 |
-
#~ msgid ""
|
2148 |
-
#~ "If at the time of the plugin installation you had pages with unconverted "
|
2149 |
-
#~ "links, use this option to redirect users from old to new URLs with the "
|
2150 |
-
#~ "Latin alphabet."
|
2151 |
-
#~ msgstr ""
|
2152 |
-
#~ "Als u op het moment van de installatie van de plugin pagina's had met niet-"
|
2153 |
-
#~ "geconverteerde links, gebruikt u deze optie om gebruikers om te leiden van "
|
2154 |
-
#~ "oude naar nieuwe URL's met het Latijnse a
|
2080 |
|
2081 |
#: includes/classes/class.zip-archive.php:15
|
2082 |
msgid "The ZipArchive class does not exist in this version of php."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|