fix
39
.htaccess
@@ -1,3 +1,42 @@
|
||||
# BEGIN WpFastestCache
|
||||
# Modified Time: 19-04-26 17:08:48
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteCond %{HTTPS} on
|
||||
RewriteCond %{HTTP_HOST} ^dostavka-vodi-krim.ru
|
||||
# Start WPFC Exclude
|
||||
# End WPFC Exclude
|
||||
# Start_WPFC_Exclude_Admin_Cookie
|
||||
RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=gp-admin
|
||||
# End_WPFC_Exclude_Admin_Cookie
|
||||
RewriteCond %{HTTP_HOST} ^dostavka-vodi-krim.ru
|
||||
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit|WP_FASTEST_CACHE_CSS_VALIDATOR|Twitterbot|LinkedInBot|WhatsApp|Mediatoolkitbot)
|
||||
RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)
|
||||
RewriteCond %{REQUEST_METHOD} !POST
|
||||
RewriteCond %{REQUEST_URI} !(\/){2,}
|
||||
RewriteCond %{THE_REQUEST} !(\/){2,}
|
||||
RewriteCond %{REQUEST_URI} \/$
|
||||
RewriteCond %{QUERY_STRING} !.+ [OR]
|
||||
RewriteCond %{QUERY_STRING} fbclid=
|
||||
RewriteCond %{HTTP:Cookie} !comment_author_
|
||||
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
|
||||
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/all/$1/index.html -f [or]
|
||||
RewriteCond /home/a0264400/domains/dostavka-vodi-krim.ru/public_html/wp-content/cache/all/$1/index.html -f
|
||||
RewriteRule ^(.*) "/wp-content/cache/all/$1/index.html" [L]
|
||||
</IfModule>
|
||||
<FilesMatch "index\.(html|htm)$">
|
||||
AddDefaultCharset UTF-8
|
||||
<ifModule mod_headers.c>
|
||||
FileETag None
|
||||
Header unset ETag
|
||||
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
|
||||
Header set Pragma "no-cache"
|
||||
Header set Expires "Mon, 29 Oct 1923 20:30:00 GMT"
|
||||
</ifModule>
|
||||
</FilesMatch>
|
||||
# END WpFastestCache
|
||||
|
||||
# BEGIN HTTPS + WWW REDIRECT
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
||||
862
wp-content/cache/all/index.html
vendored
Normal file
@@ -0,0 +1,862 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-RU">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
|
||||
|
||||
<!-- This site is optimized with the Yoast SEO plugin v27.2 - https://yoast.com/product/yoast-seo-wordpress/ -->
|
||||
<title>Доставка воды в Севастополе — заказать воду на дом и в офис</title>
|
||||
<meta name="description" content="Закажите питьевую воду 19 литров с доставкой по Севастополю: дом, офис, кафе. Быстрое подтверждение, удобные интервалы, возврат тары." />
|
||||
<link rel="canonical" href="https://dostavka-vodi-krim.ru/" />
|
||||
<meta property="og:locale" content="ru_RU" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Доставка воды в Севастополе — заказать воду на дом и в офис" />
|
||||
<meta property="og:description" content="Закажите питьевую воду 19 литров с доставкой по Севастополю: дом, офис, кафе. Быстрое подтверждение, удобные интервалы, возврат тары." />
|
||||
<meta property="og:url" content="https://dostavka-vodi-krim.ru/" />
|
||||
<meta property="og:site_name" content="Доставка воды по Крыму" />
|
||||
<meta property="article:modified_time" content="2026-04-05T19:33:02+00:00" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://dostavka-vodi-krim.ru/","url":"https://dostavka-vodi-krim.ru/","name":"Доставка воды в Севастополе — заказать воду на дом и в офис","isPartOf":{"@id":"https://dostavka-vodi-krim.ru/#website"},"about":{"@id":"https://dostavka-vodi-krim.ru/#organization"},"datePublished":"2026-04-01T20:31:22+00:00","dateModified":"2026-04-05T19:33:02+00:00","description":"Закажите питьевую воду 19 литров с доставкой по Севастополю: дом, офис, кафе. Быстрое подтверждение, удобные интервалы, возврат тары.","breadcrumb":{"@id":"https://dostavka-vodi-krim.ru/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https://dostavka-vodi-krim.ru/"]}]},{"@type":"BreadcrumbList","@id":"https://dostavka-vodi-krim.ru/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Главная страница"}]},{"@type":"WebSite","@id":"https://dostavka-vodi-krim.ru/#website","url":"https://dostavka-vodi-krim.ru/","name":"Доставка воды по Крыму","description":"Доставка бутилированной воды в офис и на дом в Севастополе и по Крыму","publisher":{"@id":"https://dostavka-vodi-krim.ru/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://dostavka-vodi-krim.ru/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":"Organization","@id":"https://dostavka-vodi-krim.ru/#organization","name":"Доставка воды по Крыму","url":"https://dostavka-vodi-krim.ru/","logo":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://dostavka-vodi-krim.ru/#/schema/logo/image/","url":"http://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/logo.png","contentUrl":"http://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/logo.png","width":2000,"height":2000,"caption":"Доставка воды по Крыму"},"image":{"@id":"https://dostavka-vodi-krim.ru/#/schema/logo/image/"}}]}</script>
|
||||
<!-- / Yoast SEO plugin. -->
|
||||
|
||||
|
||||
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
|
||||
<link rel="alternate" type="application/rss+xml" title="Доставка воды по Крыму » Лента" href="https://dostavka-vodi-krim.ru/feed/" />
|
||||
<link rel="alternate" type="application/rss+xml" title="Доставка воды по Крыму » Лента комментариев" href="https://dostavka-vodi-krim.ru/comments/feed/" />
|
||||
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://dostavka-vodi-krim.ru/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdostavka-vodi-krim.ru%2F" />
|
||||
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://dostavka-vodi-krim.ru/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdostavka-vodi-krim.ru%2F&format=xml" />
|
||||
<style id='wp-img-auto-sizes-contain-inline-css'>
|
||||
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
|
||||
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
|
||||
</style>
|
||||
<style id='wp-emoji-styles-inline-css'>
|
||||
|
||||
img.wp-smiley, img.emoji {
|
||||
display: inline !important;
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
height: 1em !important;
|
||||
width: 1em !important;
|
||||
margin: 0 0.07em !important;
|
||||
vertical-align: -0.1em !important;
|
||||
background: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
/*# sourceURL=wp-emoji-styles-inline-css */
|
||||
</style>
|
||||
<link rel='stylesheet' id='woocommerce-blocktheme-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/12t7svwq/bgsuq.css' media='all' />
|
||||
<link rel='stylesheet' id='woocommerce-layout-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/fpqkr0nb/bgsuq.css' media='all' />
|
||||
<link rel='stylesheet' id='woocommerce-smallscreen-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/1c8bqbl0/bgsuq.css' media='only screen and (max-width: 768px)' />
|
||||
<link rel='stylesheet' id='woocommerce-general-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/knet2smk/bgsuq.css' media='all' />
|
||||
<style id='woocommerce-inline-inline-css'>
|
||||
.woocommerce form .form-row .required { visibility: visible; }
|
||||
/*# sourceURL=woocommerce-inline-inline-css */
|
||||
</style>
|
||||
<link rel='stylesheet' id='twentytwentyfour-test1-fonts-css' href='https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&display=swap' media='all' />
|
||||
<link rel='stylesheet' id='twentytwentyfour-test1-style-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/dk28zm1/bgsuq.css' media='all' />
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.10.5.3" id="wc-jquery-blockui-js" defer data-wp-strategy="defer"></script>
|
||||
<script id="wc-add-to-cart-js-extra">
|
||||
var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0440\u0437\u0438\u043d\u044b","cart_url":"https://dostavka-vodi-krim.ru/cart/","is_cart":"","cart_redirect_after_add":"no"};
|
||||
//# sourceURL=wc-add-to-cart-js-extra
|
||||
</script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=10.5.3" id="wc-add-to-cart-js" defer data-wp-strategy="defer"></script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.10.5.3" id="wc-js-cookie-js" defer data-wp-strategy="defer"></script>
|
||||
<script id="woocommerce-js-extra">
|
||||
var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c","i18n_password_hide":"\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c"};
|
||||
//# sourceURL=woocommerce-js-extra
|
||||
</script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=10.5.3" id="woocommerce-js" defer data-wp-strategy="defer"></script>
|
||||
<link rel="https://api.w.org/" href="https://dostavka-vodi-krim.ru/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://dostavka-vodi-krim.ru/wp-json/wp/v2/pages/573" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://dostavka-vodi-krim.ru/xmlrpc.php?rsd" />
|
||||
<meta name="generator" content="WordPress 6.9.4" />
|
||||
<meta name="generator" content="WooCommerce 10.5.3" />
|
||||
<link rel='shortlink' href='https://dostavka-vodi-krim.ru/' />
|
||||
<meta name="yandex-verification" content="a1a821485b8cd61e" />
|
||||
<meta name="google-site-verification" content="yLBKEJNyeeSlYRiQDo7XdnbGshajal_zHUtUjnEVBkk" />
|
||||
<script>document.createElement( "picture" );if(!window.HTMLPictureElement && document.addEventListener) {window.addEventListener("DOMContentLoaded", function() {var s = document.createElement("script");s.src = "https://dostavka-vodi-krim.ru/wp-content/plugins/robin-image-optimizer/libs/addons/assets/js/picturefill.min.js";document.body.appendChild(s);});}</script> <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript>
|
||||
<style class='wp-fonts-local'>
|
||||
@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url('https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/fonts/inter/Inter-VariableFont_slnt,wght.woff2') format('woff2');font-stretch:normal;}
|
||||
@font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url('https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_400.woff2') format('woff2');}
|
||||
@font-face{font-family:Cardo;font-style:italic;font-weight:400;font-display:fallback;src:url('https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_italic_400.woff2') format('woff2');}
|
||||
@font-face{font-family:Cardo;font-style:normal;font-weight:700;font-display:fallback;src:url('https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/fonts/cardo/cardo_normal_700.woff2') format('woff2');}
|
||||
</style>
|
||||
<style id="uagb-style-frontend-573">.uag-blocks-common-selector{z-index:var(--z-index-desktop) !important}@media (max-width: 976px){.uag-blocks-common-selector{z-index:var(--z-index-tablet) !important}}@media (max-width: 767px){.uag-blocks-common-selector{z-index:var(--z-index-mobile) !important}}
|
||||
</style><link rel="icon" href="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/cropped-logo-1-32x32.png" sizes="32x32" />
|
||||
<link rel="icon" href="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/cropped-logo-1-192x192.png" sizes="192x192" />
|
||||
<link rel="apple-touch-icon" href="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/cropped-logo-1-180x180.png" />
|
||||
<meta name="msapplication-TileImage" content="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/cropped-logo-1-270x270.png" />
|
||||
</head>
|
||||
<body class="home wp-singular page-template-default page page-id-573 wp-custom-logo wp-embed-responsive wp-theme-twentytwentyfour test1-landing-page theme-twentytwentyfour woocommerce-uses-block-theme woocommerce-block-theme-has-button-styles woocommerce-no-js">
|
||||
<header class="site-header">
|
||||
<div class="container">
|
||||
<div class="header-row">
|
||||
<a class="brand" href="https://dostavka-vodi-krim.ru/" aria-label="Перейти на главную страницу">
|
||||
<span class="brand-mark" aria-hidden="true">
|
||||
<!-- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2C9 6.1 6 9.4 6 13.2C6 16.9 8.69 20 12 20C15.31 20 18 16.9 18 13.2C18 9.4 15 6.1 12 2Z" fill="currentColor"/>
|
||||
</svg> -->
|
||||
<img src="https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/images/logo.png" alt="">
|
||||
</span>
|
||||
<span class="brand-text">
|
||||
<strong>АкваЛиния</strong>
|
||||
<span>доставка воды в Севастополе</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="nav" aria-label="Основная навигация">
|
||||
<a href="https://dostavka-vodi-krim.ru/shop/">Каталог</a>
|
||||
<a class="" href="https://dostavka-vodi-krim.ru/blog/">Блог</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/delivery/">Доставка</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/service/">Для дома и офиса</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/faq/">FAQ</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/contacts/">Контакты</a>
|
||||
</nav>
|
||||
|
||||
<div class="header-actions">
|
||||
<a class="header-phone" href="tel:+79117748923">
|
||||
<span aria-hidden="true">+7 (911) 774-89-23</span>
|
||||
</a>
|
||||
<a class="cart-button" href="https://dostavka-vodi-krim.ru/cart/" aria-label="Перейти в корзину">
|
||||
<span aria-hidden="true">Корзина</span>
|
||||
<span class="cart-count" aria-live="polite" aria-atomic="true">0</span>
|
||||
</a>
|
||||
<button class="mobile-toggle" id="mobileToggle" aria-label="Открыть меню" aria-expanded="false" aria-controls="mobilePanel">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
||||
<path d="M4 7H20" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M4 12H20" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M4 17H20" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mobile-panel" id="mobilePanel">
|
||||
<div class="mobile-card">
|
||||
<nav class="mobile-nav" aria-label="Мобильная навигация">
|
||||
<a href="https://dostavka-vodi-krim.ru/#catalog">Каталог</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/blog/">Блог</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/delivery/">Условия доставки</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/service/">Для дома и офиса</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/faq/">FAQ</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/contacts/">Контакты</a>
|
||||
</nav>
|
||||
<a class="header-phone" href="tel:+79117748923">+7 (911) 774-89-23</a>
|
||||
<a class="cart-button" href="https://dostavka-vodi-krim.ru/cart/" aria-label="Перейти в корзину с мобильного меню">
|
||||
<span>Корзина</span>
|
||||
<span class="cart-count" aria-live="polite" aria-atomic="true">0</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main id="top">
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<div class="hero-grid">
|
||||
<div class="hero-copy reveal">
|
||||
<span class="eyebrow">Чистая вода каждый день</span>
|
||||
<h1 class="hero-title">Питьевая вода с доставкой в <span>Севастополе</span> — привезём в удобное время</h1>
|
||||
<div class="hero-actions">
|
||||
<button class="button" data-open-order aria-label="Открыть форму заказа воды">Заказать воду</button>
|
||||
<a class="ghost-button" href="#catalog" aria-label="Перейти к каталогу воды">Посмотреть каталог</a>
|
||||
</div>
|
||||
|
||||
<div class="hero-stats">
|
||||
<div class="stat-card reveal reveal-delay-1">
|
||||
<strong>от 290 ₽</strong>
|
||||
<span>Бутыль 19 л для дома и офиса</span>
|
||||
</div>
|
||||
<div class="stat-card reveal reveal-delay-2">
|
||||
<strong>2 часа</strong>
|
||||
<span>среднее время доставки по городу в будни</span>
|
||||
</div>
|
||||
<div class="stat-card reveal reveal-delay-3">
|
||||
<strong>7 дней</strong>
|
||||
<span>работаем без выходных для дома и офиса</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="hero-panel reveal reveal-delay-1" aria-label="Информация о доставке">
|
||||
<div class="panel-top">
|
||||
<div>
|
||||
<span class="signal-pill">Сегодня работаем по городу</span>
|
||||
<h2>Сегодня в доставке: центральные и прибрежные районы</h2>
|
||||
</div>
|
||||
<div class="chip">бутыли 19 л</div>
|
||||
</div>
|
||||
|
||||
<div class="hero-notes">
|
||||
<div class="hero-note">
|
||||
<strong>Для дома</strong>
|
||||
<span>Удобные форматы для кухни и семьи, без лишней тяжести и походов в магазин.</span>
|
||||
</div>
|
||||
<div class="hero-note">
|
||||
<strong>Для офиса</strong>
|
||||
<span>Регулярные поставки, документы для бухгалтерии и запас воды без авралов.</span>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="ticker reveal reveal-delay-2" aria-label="Ключевые преимущества сервиса">
|
||||
<div class="ticker-item">
|
||||
<strong>Источник</strong>
|
||||
<span>артезианская вода с многоступенчатым контролем</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Сервис</strong>
|
||||
<span>подъем на этаж и помощь с заменой бутыли</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Оплата</strong>
|
||||
<span>наличные, карта, перевод и безнал для компаний</span>
|
||||
</div>
|
||||
<div class="ticker-item">
|
||||
<strong>Автодоставка</strong>
|
||||
<span>гибкий график без повторных звонков</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="catalog">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Каталог</span>
|
||||
<h2 class="section-title">Выберите формат воды</h2>
|
||||
</div>
|
||||
<p class="section-copy">В каталоге — популярные объемы для дома и офиса: от небольших бутылей до стандартных 19 литров.
|
||||
Можно заказать разово или подключить регулярную доставку, чтобы не следить за остатками.</p>
|
||||
</div>
|
||||
|
||||
<div class="catalog-grid">
|
||||
<article class="catalog-card reveal">
|
||||
<div class="catalog-media"><img width="200" height="300" src="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1-200x300.webp" class="catalog-product-image" alt="" decoding="async" fetchpriority="high" srcset="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1-200x300.webp 200w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1-683x1024.webp 683w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1-768x1152.webp 768w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1-600x900.webp 600w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/04/Набор-15л-1.webp 1024w" sizes="(max-width: 200px) 100vw, 200px" /></div>
|
||||
<h3>Набор 1,5л</h3>
|
||||
<p></p>
|
||||
<div class="tag-row">
|
||||
<span class="chip">Товар</span>
|
||||
<span class="chip">в наличии</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>120 ₽</strong></div>
|
||||
<a
|
||||
class="mini-button add_to_cart_button product_type_simple"
|
||||
href="/?add-to-cart=581"
|
||||
data-product_id="581"
|
||||
data-quantity="1"
|
||||
rel="nofollow"
|
||||
aria-label="Добавить в корзину: Набор 1,5л"
|
||||
>В корзину</a>
|
||||
</article>
|
||||
<article class="catalog-card reveal reveal-delay-1">
|
||||
<div class="catalog-media"><img width="200" height="300" src="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа-200x300.webp" class="catalog-product-image" alt="" decoding="async" srcset="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа-200x300.webp 200w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа-683x1024.webp 683w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа-768x1152.webp 768w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа-600x900.webp 600w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/куллер-помпа.webp 1024w" sizes="(max-width: 200px) 100vw, 200px" /></div>
|
||||
<h3>Кулер + помпа</h3>
|
||||
<p></p>
|
||||
<div class="tag-row">
|
||||
<span class="chip">Товар</span>
|
||||
<span class="chip">в наличии</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>1050 ₽</strong></div>
|
||||
<a
|
||||
class="mini-button add_to_cart_button product_type_simple"
|
||||
href="/?add-to-cart=437"
|
||||
data-product_id="437"
|
||||
data-quantity="1"
|
||||
rel="nofollow"
|
||||
aria-label="Добавить в корзину: Кулер + помпа"
|
||||
>В корзину</a>
|
||||
</article>
|
||||
<article class="catalog-card reveal reveal-delay-2">
|
||||
<div class="catalog-media"><img width="200" height="300" src="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л-200x300.webp" class="catalog-product-image" alt="" decoding="async" srcset="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л-200x300.webp 200w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л-683x1024.webp 683w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л-768x1152.webp 768w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л-600x900.webp 600w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-5л.webp 1024w" sizes="(max-width: 200px) 100vw, 200px" /></div>
|
||||
<h3>Вода 5 литров</h3>
|
||||
<p></p>
|
||||
<div class="tag-row">
|
||||
<span class="chip">Товар</span>
|
||||
<span class="chip">в наличии</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>99 ₽</strong></div>
|
||||
<a
|
||||
class="mini-button add_to_cart_button product_type_simple"
|
||||
href="/?add-to-cart=436"
|
||||
data-product_id="436"
|
||||
data-quantity="1"
|
||||
rel="nofollow"
|
||||
aria-label="Добавить в корзину: Вода 5 литров"
|
||||
>В корзину</a>
|
||||
</article>
|
||||
<article class="catalog-card reveal reveal-delay-3">
|
||||
<div class="catalog-media"><img width="200" height="300" src="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л-200x300.webp" class="catalog-product-image" alt="Аквалиния 19л" decoding="async" srcset="https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л-200x300.webp 200w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л-683x1024.webp 683w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л-768x1152.webp 768w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л-600x900.webp 600w, https://dostavka-vodi-krim.ru/wp-content/uploads/2026/03/Аквалиния-19л.webp 1024w" sizes="(max-width: 200px) 100vw, 200px" /></div>
|
||||
<h3>Вода 19 литров</h3>
|
||||
<p></p>
|
||||
<div class="tag-row">
|
||||
<span class="chip">Товар</span>
|
||||
<span class="chip">в наличии</span>
|
||||
</div>
|
||||
<div class="card-price"><strong>390 ₽</strong></div>
|
||||
<a
|
||||
class="mini-button add_to_cart_button product_type_simple"
|
||||
href="/?add-to-cart=426"
|
||||
data-product_id="426"
|
||||
data-quantity="1"
|
||||
rel="nofollow"
|
||||
aria-label="Добавить в корзину: Вода 19 литров"
|
||||
>В корзину</a>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="bestsellers">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Бестселлеры</span>
|
||||
<h2 class="section-title">Что заказывают чаще всего</h2>
|
||||
</div>
|
||||
<p class="section-copy">Если заказывают впервые, чаще всего начинают с бутыли 19 литров. Для дома, поездок или редкого использования обычно добавляют компактные форматы.</p>
|
||||
</div>
|
||||
|
||||
<div class="featured-grid">
|
||||
<div class="glass-card reveal">
|
||||
<span class="eyebrow">Хит по Севастополю</span>
|
||||
<h3>Вода 19 л — то, что чаще всего берут на постоянку</h3>
|
||||
<p>Хороший вариант на каждый день: для дома, офиса и мест, где вода нужна постоянно. Удобно ставить в кулер и не вспоминать о запасах каждый день.</p>
|
||||
|
||||
<div class="product-table">
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>АкваЛиния Классик</strong>
|
||||
<span>19 л, мягкий вкус, ежедневное потребление</span>
|
||||
</div>
|
||||
<div class="price">290 ₽</div>
|
||||
<a class="mini-button" href="https://dostavka-vodi-krim.ru/shop/">В каталог</a>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>АкваЛиния Премиум</strong>
|
||||
<span>19 л, артезианская вода, усиленный контроль</span>
|
||||
</div>
|
||||
<div class="price">340 ₽</div>
|
||||
<a class="mini-button" href="https://dostavka-vodi-krim.ru/shop/">В каталог</a>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Стартовый комплект</strong>
|
||||
<span>2 бутыли 19 л + помпа для первого заказа</span>
|
||||
</div>
|
||||
<div class="price">690 ₽</div>
|
||||
<a class="mini-button" href="https://dostavka-vodi-krim.ru/shop/">В каталог</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="glass-card reveal reveal-delay-1">
|
||||
<span class="eyebrow">Почему выбирают</span>
|
||||
<h3>Почему этот формат выбирают на постоянной основе</h3>
|
||||
<div class="chip-row chip-row-spaced">
|
||||
<span class="chip">быстрая доставка</span>
|
||||
<span class="chip">чистая бутыль</span>
|
||||
<span class="chip">возврат тары</span>
|
||||
<span class="chip">выгодно для офиса</span>
|
||||
</div>
|
||||
<p>Многие берут воду по графику, чтобы не вспоминать о заказе в последний момент. Это удобно и для семьи, и для офиса, где запас должен быть всегда под рукой.</p>
|
||||
<div class="hero-actions hero-actions-spaced">
|
||||
<button class="button" data-open-order>Заказать воду</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="delivery">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Условия доставки</span>
|
||||
<h2 class="section-title">Доставка воды по районам Севастополя</h2>
|
||||
</div>
|
||||
<p class="section-copy">Работаем по основным районам Севастополя. При оформлении заказа подскажем ближайшее окно и заранее подтвердим удобное время доставки.</p>
|
||||
</div>
|
||||
|
||||
<div class="delivery-grid">
|
||||
<div class="glass-card reveal">
|
||||
<h3>Что важно знать перед заказом</h3>
|
||||
<div class="product-table">
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Зоны доставки</strong>
|
||||
<span>Гагаринский, Ленинский, Нахимовский, Балаклава, Камышовая бухта, Остряки, Стрелецкая</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Время доставки</strong>
|
||||
<span>Ежедневно с 8:00 до 21:00, срочные окна по возможности в день обращения</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Минимальный заказ</strong>
|
||||
<span>От 1 бутыли 19 л или от 500 ₽ для малых форматов</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-row">
|
||||
<div>
|
||||
<strong>Возвратная тара</strong>
|
||||
<span>Пустые бутыли забираем при следующей доставке или при отдельном выезде по согласованию</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="delivery-map reveal reveal-delay-1" aria-label="Информация о маршрутах доставки">
|
||||
<span class="eyebrow eyebrow-inverse">Активные маршруты</span>
|
||||
<h3 class="section-heading-compact section-heading-delivery">Доставляем по всем районам города</h3>
|
||||
<div class="zones">
|
||||
<span class="zone-card">Гагаринский район</span>
|
||||
<span class="zone-card">Ленинский район</span>
|
||||
<span class="zone-card">Нахимовский район</span>
|
||||
<span class="zone-card">Балаклава</span>
|
||||
</div>
|
||||
|
||||
<div class="delivery-highlights">
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Ближайшее окно</strong>
|
||||
<span>Подберём ближайший доступный интервал и заранее согласуем время.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Быстрое подтверждение</strong>
|
||||
<span>Связываемся в течение 15 минут в рабочее время.</span>
|
||||
</article>
|
||||
<article class="delivery-highlight-card">
|
||||
<strong>Сервис на месте</strong>
|
||||
<span>Подъем воды, замена бутыли и вывоз пустой тары по запросу.</span>
|
||||
</article>
|
||||
<button class="button delivery-cta" data-open-order>Оставить заявку на доставку</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="how-order">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Как заказать</span>
|
||||
<h2 class="section-title">Четыре быстрых шага до чистой воды</h2>
|
||||
</div>
|
||||
<p class="section-copy">Все просто: выбираете воду, оставляете заявку, а мы уточняем детали и привозим заказ в согласованное время.</p>
|
||||
</div>
|
||||
|
||||
<div class="steps-grid">
|
||||
<article class="step-card reveal">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Выберите объем воды </h3>
|
||||
<p>Определите нужный объем: вода 19 литров, 5 литров, малые бутылки, минеральная или газированная вода.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-1">
|
||||
<div class="step-number">2</div>
|
||||
<h3>Оставьте заявку на сайте или по телефону</h3>
|
||||
<p>Соберите заказ прямо на сайте и проверьте итоговую сумму до подтверждения.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-2">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Подтвердите удобное время доставки</h3>
|
||||
<p>Оставьте телефон и адрес в Севастополе, а мы уточним время и детали по таре.</p>
|
||||
</article>
|
||||
<article class="step-card reveal reveal-delay-3">
|
||||
<div class="step-number">4</div>
|
||||
<h3>Получите воду с доставкой до двери</h3>
|
||||
<p>Курьер привезет воду, поможет с выгрузкой и при необходимости заберет пустые бутыли.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="business">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Для дома и офиса</span>
|
||||
<h2 class="section-title">Для дома и офиса — без лишних сложностей</h2>
|
||||
</div>
|
||||
<p class="section-copy">У домашних и корпоративных заказов разные задачи, поэтому мы отдельно продумали условия для семьи и для компаний.</p>
|
||||
</div>
|
||||
|
||||
<div class="segments-grid">
|
||||
<article class="segment-card reveal">
|
||||
<span class="eyebrow">Доставка воды на дом</span>
|
||||
<h3>Когда воду удобно заказывать домой</h3>
|
||||
<p>Такой формат выбирают семьи, пожилые клиенты и все, кто не хочет носить тяжелые бутыли из магазина.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Удобные интервалы утром, днем и вечером</li>
|
||||
<li>Подъем на этаж и помощь с установкой</li>
|
||||
<li>Можно заказать и 19 л, и компактные форматы</li>
|
||||
<li>Напоминание о повторном заказе</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 2 бутыли 19 л + вода 5 л для кухни</div>
|
||||
</article>
|
||||
|
||||
<article class="segment-card featured reveal reveal-delay-1">
|
||||
<span class="eyebrow eyebrow-inverse">Доставка воды в офис</span>
|
||||
<h3>Регулярные поставки для команды и клиентов</h3>
|
||||
<p>Офисам, салонам, кафе, фитнес-клубам и студиям нужен предсказуемый сервис. Мы строим график так, чтобы запас воды не заканчивался в рабочие часы.</p>
|
||||
<ul class="segment-list">
|
||||
<li>Безналичная оплата и закрывающие документы</li>
|
||||
<li>Автодоставка воды по графику</li>
|
||||
<li>Приоритетные интервалы на будни</li>
|
||||
<li>Комбинированные заказы для кулеров и гостей</li>
|
||||
</ul>
|
||||
<div class="segment-meta">Часто выбирают: 6-12 бутылей 19 л в неделю + минеральная вода для переговорных</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="promotions">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Акции</span>
|
||||
<h2 class="section-title">Выгоднее с первого заказа и еще удобнее по подписке</h2>
|
||||
</div>
|
||||
<p class="section-copy">Для новых и постоянных клиентов периодически действуют акции. Это удобный способ попробовать сервис или сделать регулярные заказы выгоднее.</p>
|
||||
</div>
|
||||
|
||||
<div class="promo-grid">
|
||||
<article class="promo-card highlight reveal">
|
||||
<h3>Скидка на первый заказ</h3>
|
||||
<p>На первый заказ действует скидка 10%. Это удобно, если хотите сначала попробовать сервис и оценить качество воды.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-1">
|
||||
<h3>Автодоставка воды</h3>
|
||||
<p>Настройте регулярный график: раз в 3 дня, неделю или по вашему потреблению. Мы напомним и приедем вовремя.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-2">
|
||||
<h3>Помпа в подарок</h3>
|
||||
<p>При заказе стартового комплекта для дома дарим механическую помпу, чтобы пользоваться 19-литровой бутылью было проще.</p>
|
||||
</article>
|
||||
<article class="promo-card reveal reveal-delay-3">
|
||||
<h3>Офисный тариф</h3>
|
||||
<p>Для корпоративных клиентов действует персональная цена при регулярном объеме и закрепленном графике поставок.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="faq">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">FAQ</span>
|
||||
<h2 class="section-title">Частые вопросы о доставке воды в Севастополе</h2>
|
||||
</div>
|
||||
<p class="section-copy">Собрали вопросы, которые чаще всего задают перед первым заказом.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-list">
|
||||
<article class="faq-item reveal open">
|
||||
<button class="faq-question" id="faq-question-1" aria-expanded="true" aria-controls="faq-answer-1">
|
||||
<span>Как быстро вы привозите воду по Севастополю?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-1" role="region" aria-labelledby="faq-question-1">Обычно привозим воду в течение дня, а по активным маршрутам — быстрее. Точное время зависит от района и загрузки, поэтому ближайший интервал всегда подтверждаем заранее.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-2" aria-expanded="false" aria-controls="faq-answer-2">
|
||||
<span>Какие способы оплаты доступны?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-2" role="region" aria-labelledby="faq-question-2" hidden>Принимаем наличные, оплату картой при получении, перевод по номеру телефона и безналичный расчет для компаний. Для офисов можем выставить счет.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-3" aria-expanded="false" aria-controls="faq-answer-3">
|
||||
<span>Нужен ли залог за бутыль 19 литров?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-3" role="region" aria-labelledby="faq-question-3" hidden>Если у вас нет своей тары, при первом заказе может взиматься возвратный депозит за бутыль. При возврате тары депозит учитывается в следующих заказах.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-4" aria-expanded="false" aria-controls="faq-answer-4">
|
||||
<span>Как часто лучше заказывать воду домой?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-4" role="region" aria-labelledby="faq-question-4" hidden>Для семьи из 2-4 человек обычно достаточно заказа 2-4 бутылей 19 литров раз в 1-2 недели. Точный график зависит от потребления и наличия кулера.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal">
|
||||
<button class="faq-question" id="faq-question-5" aria-expanded="false" aria-controls="faq-answer-5">
|
||||
<span>Откуда поступает вода и как контролируется качество?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-5" role="region" aria-labelledby="faq-question-5" hidden>Мы используем артезианскую воду из защищенного источника, проводим фильтрацию, санитарную обработку тары и регулярный лабораторный контроль. По запросу предоставляем информацию о сертификатах качества.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-1">
|
||||
<button class="faq-question" id="faq-question-6" aria-expanded="false" aria-controls="faq-answer-6">
|
||||
<span>Можно ли оформить доставку воды в офис?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-6" role="region" aria-labelledby="faq-question-6" hidden>Да, мы регулярно обслуживаем офисы, кафе, фитнес-клубы, студии и медицинские кабинеты. Настраиваем график, безнал и объем под ваш режим работы.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-2">
|
||||
<button class="faq-question" id="faq-question-7" aria-expanded="false" aria-controls="faq-answer-7">
|
||||
<span>Какой минимальный заказ действует для доставки?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-7" role="region" aria-labelledby="faq-question-7" hidden>Для воды 19 литров можно заказать от одной бутыли. Для небольших упаковок минимальная сумма заказа составляет 500 ₽, чтобы доставка оставалась быстрой и выгодной.</div>
|
||||
</article>
|
||||
|
||||
<article class="faq-item reveal reveal-delay-3">
|
||||
<button class="faq-question" id="faq-question-8" aria-expanded="false" aria-controls="faq-answer-8">
|
||||
<span>Что делать с пустыми бутылками после использования?</span>
|
||||
<span aria-hidden="true">+</span>
|
||||
</button>
|
||||
<div class="faq-answer" id="faq-answer-8" role="region" aria-labelledby="faq-question-8" hidden>Сохраните пустые бутыли до следующего визита курьера. Мы заберем их при следующей доставке или согласуем отдельный выезд при крупном заказе.</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="about">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">О компании</span>
|
||||
<h2 class="section-title">Чистый источник, строгий контроль, понятный сервис</h2>
|
||||
</div>
|
||||
<p class="section-copy">Важно не только откуда вода, но и как она проходит обработку, розлив и доставку. Поэтому мы уделяем внимание качеству на каждом этапе.</p>
|
||||
</div>
|
||||
|
||||
<div class="about-grid">
|
||||
<div class="glass-card about-copy reveal">
|
||||
<h3>Следим не только за водой, но и за тем, в каком виде она приезжает к клиенту</h3>
|
||||
<p>Вода поступает из артезианского источника, проходит очистку и контроль перед розливом. Не меньше внимания уделяем бутылям: их состояние и санитарная обработка напрямую влияют на вкус и качество воды.</p>
|
||||
<p class="about-copy-secondary">По запросу можно получить информацию о качестве воды и условиях поставки. Для офисов и коммерческих объектов отдельно настраиваем регулярный график, чтобы запас воды не заканчивался в рабочее время.</p>
|
||||
<div class="chip-row hero-actions-spaced">
|
||||
<span class="chip">артезианская вода</span>
|
||||
<span class="chip">контроль качества</span>
|
||||
<span class="chip">сертификаты</span>
|
||||
<span class="chip">санобработка тары</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="about-visual reveal reveal-delay-1" aria-hidden="true">
|
||||
<div class="droplet"></div>
|
||||
<div class="quality-stack">
|
||||
<div class="quality-card"><strong>Источник</strong><br>Защищенный артезианский горизонт</div>
|
||||
<div class="quality-card"><strong>Проверка</strong><br>Регулярный лабораторный анализ качества</div>
|
||||
<div class="quality-card"><strong>Тара</strong><br>Санитарная обработка и контроль оборота бутылей</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="reviews">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Отзывы</span>
|
||||
<h2 class="section-title">Что говорят клиенты о нашей воде и доставке</h2>
|
||||
</div>
|
||||
<p class="section-copy">Несколько отзывов от клиентов, которые заказывают воду домой, в офис и для коммерческих объектов.</p>
|
||||
</div>
|
||||
|
||||
<div class="reviews-grid">
|
||||
<article class="review-card reveal">
|
||||
<strong>«Привозят точно в обещанный интервал»</strong>
|
||||
<p>Заказываем воду 19 литров домой в Гагаринский район. Курьер всегда заранее звонит, поднимает бутыли и забирает пустые. Удобно, что не нужно снова объяснять адрес.</p>
|
||||
<div class="review-meta">Марина, Севастополь</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-1">
|
||||
<strong>«Для офиса это реально спасение»</strong>
|
||||
<p>У нас небольшая команда, вода уходит быстро. С автодоставкой больше не вспоминаем в последний момент, что кулер пустой. Документы присылают без задержек.</p>
|
||||
<div class="review-meta">Андрей, управляющий офисом</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-2">
|
||||
<strong>«Вкус воды мягкий, без постороннего запаха»</strong>
|
||||
<p>Переходили с другого поставщика и сразу почувствовали разницу. Вода приятная и для питья, и для чайника. Заказываем и 19 литров, и 5 литров домой.</p>
|
||||
<div class="review-meta">Елена, Ленинский район</div>
|
||||
</article>
|
||||
<article class="review-card reveal reveal-delay-3">
|
||||
<strong>«Хорошо работают с коммерческими заказами»</strong>
|
||||
<p>Для нашего фитнес-клуба важна стабильность. Ребята привозят четко по графику, можно комбинировать большие бутыли и маленькие бутылки для стойки продаж.</p>
|
||||
<div class="review-meta">Игорь, фитнес-клуб в Стрелецкой</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" id="contacts">
|
||||
<div class="container">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<span class="eyebrow">Контакты</span>
|
||||
<h2 class="section-title">Свяжитесь с нами и оформите заказ</h2>
|
||||
</div>
|
||||
<p class="section-copy">Позвоните нам или оставьте заявку на сайте — уточним детали и подберём удобное время доставки.</p>
|
||||
</div>
|
||||
|
||||
<div class="contacts-grid">
|
||||
<div class="contact-card reveal">
|
||||
<h3>Контактные данные</h3>
|
||||
<ul class="contact-list">
|
||||
<li><strong>Телефон:</strong> <a href="tel:+79117748923">+7 (911) 774-89-23</a></li>
|
||||
<li><strong>Адрес:</strong> г. Севастополь, ул. Генерала Острякова, 92</li>
|
||||
<li><strong>График:</strong> ежедневно с 8:00 до 21:00</li>
|
||||
<li><strong>E-mail:</strong> sygorenkomisha17@gmail.com</li>
|
||||
</ul>
|
||||
|
||||
<form class="contact-form" id="contactForm">
|
||||
<input class="field" type="text" name="name" placeholder="Ваше имя" aria-label="Ваше имя" required>
|
||||
<input class="field" type="tel" name="phone" placeholder="Телефон" aria-label="Телефон" required>
|
||||
<input class="field" type="text" name="address" placeholder="Адрес доставки в Севастополе" aria-label="Адрес доставки" required>
|
||||
<textarea class="field" name="comment" placeholder="Что нужно доставить: например, 2 бутыли 19 л и 1 упаковка 1.5 л" aria-label="Комментарий к заказу"></textarea>
|
||||
<button class="button" type="submit">Отправить заявку</button>
|
||||
<div class="success-note" id="contactSuccess" role="status" aria-live="polite">Спасибо! Заявка принята. Мы свяжемся с вами для подтверждения заказа.</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="map-placeholder reveal reveal-delay-1" aria-label="Условия обслуживания по городу">
|
||||
<span class="eyebrow eyebrow-inverse">Зона обслуживания</span>
|
||||
<h3 class="section-heading-compact section-heading-map">Принимаем заявки по всему Севастополю</h3>
|
||||
<p class="map-copy">Работаем ежедневно и подбираем удобный интервал доставки для дома, офиса, кафе и небольших коммерческих точек.</p>
|
||||
|
||||
<div class="contact-fast-facts">
|
||||
<article class="contact-fact-card">
|
||||
<strong>Подтверждение заявки</strong>
|
||||
<span>До 15 минут в рабочие часы, без долгого ожидания.</span>
|
||||
</article>
|
||||
<article class="contact-fact-card">
|
||||
<strong>Окна доставки</strong>
|
||||
<span>С 8:00 до 21:00 ежедневно, срочные слоты по возможности.</span>
|
||||
</article>
|
||||
<article class="contact-fact-card">
|
||||
<strong>Дополнительный сервис</strong>
|
||||
<span>Подъем воды и вывоз пустой тары при следующем визите.</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="contact-quick-actions">
|
||||
<a class="contact-quick-link" href="tel:+79117748923">Позвонить: +7 (911) 774-89-23</a>
|
||||
<a class="contact-quick-link" href="mailto:sygorenkomisha17@gmail.com">Написать: sygorenkomisha17@gmail.com</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<div class="modal-backdrop" id="orderModal" aria-hidden="true">
|
||||
<div class="modal-card" role="dialog" aria-modal="true" aria-labelledby="orderModalTitle">
|
||||
<div class="modal-head">
|
||||
<div>
|
||||
<h3 id="orderModalTitle">Оформление заказа</h3>
|
||||
<p class="dialog-copy">Оставьте контакты, и мы свяжемся с вами для подтверждения заказа.</p>
|
||||
</div>
|
||||
<button class="close-button" id="modalCloseButton" aria-label="Закрыть форму заказа">×</button>
|
||||
</div>
|
||||
|
||||
<form class="contact-form" id="orderForm">
|
||||
<input class="field" type="text" name="customerName" placeholder="Ваше имя" aria-label="Ваше имя" required>
|
||||
<input class="field" type="tel" name="customerPhone" placeholder="Телефон" aria-label="Телефон" required>
|
||||
<input class="field" type="text" name="customerAddress" placeholder="Адрес доставки" aria-label="Адрес доставки" required>
|
||||
<select class="field" name="customerType" aria-label="Тип клиента">
|
||||
<option value="Для дома">Для дома</option>
|
||||
<option value="Для офиса">Для офиса</option>
|
||||
</select>
|
||||
<textarea class="field" name="customerOrder" id="orderItemsField" placeholder="Комментарий к заказу" aria-label="Комментарий к заказу"></textarea>
|
||||
<button class="button" type="submit">Подтвердить заказ</button>
|
||||
<div class="success-note" id="orderSuccess" role="status" aria-live="polite">Спасибо! Ваш заказ сохранен. Мы свяжемся с вами в ближайшее время.</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="footer premium-footer classic-footer">
|
||||
<div class="container classic-footer-shell">
|
||||
<div class="classic-footer-main">
|
||||
<div class="classic-footer-col brand-col">
|
||||
<a class="brand" href="https://dostavka-vodi-krim.ru/" aria-label="Перейти на главную страницу">
|
||||
<span class="brand-mark" aria-hidden="true">
|
||||
<!-- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2C9 6.1 6 9.4 6 13.2C6 16.9 8.69 20 12 20C15.31 20 18 16.9 18 13.2C18 9.4 15 6.1 12 2Z" fill="currentColor"/>
|
||||
</svg> -->
|
||||
<img src="https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/images/logo.png" alt="">
|
||||
</span>
|
||||
<span class="brand-text">
|
||||
<strong>АкваЛиния</strong>
|
||||
<span>вода с доставкой для Севастополя</span>
|
||||
</span>
|
||||
</a>
|
||||
<p class="footer-description">Доставка воды в Севастополе для дома, офиса, кафе и фитнес-клубов. Вода 19 литров, питьевая и минеральная вода с удобным заказом на сайте.</p>
|
||||
</div>
|
||||
|
||||
<div class="classic-footer-col">
|
||||
<h3>Навигация</h3>
|
||||
<div class="footer-links">
|
||||
<a href="https://dostavka-vodi-krim.ru/#catalog">Каталог</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/blog/">Блог</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/delivery/">Доставка воды в Севастополе</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/service/">Доставка воды в офис</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/faq/">Частые вопросы</a>
|
||||
<a href="https://dostavka-vodi-krim.ru/contacts/">Контакты</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="classic-footer-col">
|
||||
<h3>Документы</h3>
|
||||
<div class="footer-legal">
|
||||
<a href="#">Политика конфиденциальности</a>
|
||||
<a href="#">Пользовательское соглашение</a>
|
||||
<a href="#">Условия использования</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer-bottom classic-footer-bottom">
|
||||
<span>© 2026 АкваЛиния. Все права защищены.</span>
|
||||
<span>АкваЛиния — питьевая вода с доставкой в Севастополе</span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script type="speculationrules">
|
||||
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwentyfour/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
|
||||
</script>
|
||||
<script>
|
||||
(function () {
|
||||
var c = document.body.className;
|
||||
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
|
||||
document.body.className = c;
|
||||
})();
|
||||
</script>
|
||||
<link rel='stylesheet' id='wc-blocks-style-css' href='//dostavka-vodi-krim.ru/wp-content/cache/wpfc-minified/dtnbx2gx/bgsuq.css' media='all' />
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.5.3" id="sourcebuster-js-js"></script>
|
||||
<script id="wc-order-attribution-js-extra">
|
||||
var wc_order_attribution = {"params":{"lifetime":1.0000000000000001e-5,"session":30,"base64":false,"ajaxurl":"https://dostavka-vodi-krim.ru/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
|
||||
//# sourceURL=wc-order-attribution-js-extra
|
||||
</script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.5.3" id="wc-order-attribution-js"></script>
|
||||
<script id="twentytwentyfour-test1-script-js-extra">
|
||||
var test1LeadForm = {"ajaxUrl":"https://dostavka-vodi-krim.ru/wp-admin/admin-ajax.php","action":"twentytwentyfour_submit_lead","nonce":"b8b6003050"};
|
||||
//# sourceURL=twentytwentyfour-test1-script-js-extra
|
||||
</script>
|
||||
<script src="https://dostavka-vodi-krim.ru/wp-content/themes/twentytwentyfour/assets/js/test1-landing.js?ver=1776606670" id="twentytwentyfour-test1-script-js"></script>
|
||||
<script id="wp-emoji-settings" type="application/json">
|
||||
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://dostavka-vodi-krim.ru/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}}
|
||||
</script>
|
||||
<script type="module">
|
||||
/*! This file is auto-generated */
|
||||
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
|
||||
//# sourceURL=https://dostavka-vodi-krim.ru/wp-includes/js/wp-emoji-loader.min.js
|
||||
</script>
|
||||
</body>
|
||||
</html><!-- WP Fastest Cache file was created in 0.272 seconds, on 19.04.2026 @ 17:12 -->
|
||||
0
wp-content/cache/index.html
vendored
Normal file
1
wp-content/cache/wpfc-minified/12t7svwq/bgsuq.css
vendored
Normal file
1
wp-content/cache/wpfc-minified/1c8bqbl0/bgsuq.css
vendored
Normal file
1341
wp-content/cache/wpfc-minified/dk28zm1/bgsuq.css
vendored
Normal file
2
wp-content/cache/wpfc-minified/dtnbx2gx/bgsuq.css
vendored
Normal file
1
wp-content/cache/wpfc-minified/fpqkr0nb/bgsuq.css
vendored
Normal file
0
wp-content/cache/wpfc-minified/index.html
vendored
Normal file
2
wp-content/cache/wpfc-minified/knet2smk/bgsuq.css
vendored
Normal file
@@ -1154,3 +1154,9 @@
|
||||
19-04-2026 16:14:24 [dostavka-vodi-krim.ru][debug] Updated queue item #669, attributes values: {"server_id":null,"object_id":624,"object_name":null,"item_type":"webp","item_hash":"0a58ef68676c410d52e607705cee3a207e2b4e096ca360f3dfc1a350e6fc1ad2","item_hash_alternative":null,"result_status":"success","processing_level":"normal","is_backed_up":false,"original_size":970,"final_size":806,"original_mime_type":"image\/png","final_mime_type":"image\/webp","extra_data":"{\"class\":\"RIOP_WebP_Extra_Data\",\"thumbnails_count\":7,\"convert_from\":\"attachment\",\"converted_from_size\":\"site_icon-32\",\"source_src\":\"http:\\\/\\\/dostavka-vodi-krim.ru\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/cropped-logo-1-32x32.png\",\"source_path\":\"\\\/home\\\/a0264400\\\/domains\\\/dostavka-vodi-krim.ru\\\/public_html\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/cropped-logo-1-32x32.png\",\"converted_src\":\"http:\\\/\\\/dostavka-vodi-krim.ru\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/cropped-logo-1-32x32.png.webp\",\"converted_path\":\"\\\/home\\\/a0264400\\\/domains\\\/dostavka-vodi-krim.ru\\\/public_html\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/cropped-logo-1-32x32.png.webp\"}","created_at":1776604451}
|
||||
19-04-2026 16:14:24 [dostavka-vodi-krim.ru][info] End bulk optimization process! Scope: media-library. Remain: 0
|
||||
-------------------------------
|
||||
19-04-2026 17:10:54 [dostavka-vodi-krim.ru][info] Start bulk optimization process! Scope: media-library
|
||||
19-04-2026 17:10:54 [dostavka-vodi-krim.ru][info] End bulk optimization process! Scope: media-library. Remain: 0
|
||||
-------------------------------
|
||||
19-04-2026 17:11:54 [dostavka-vodi-krim.ru][info] Start bulk optimization process! Scope: media-library
|
||||
19-04-2026 17:11:54 [dostavka-vodi-krim.ru][info] End bulk optimization process! Scope: media-library. Remain: 0
|
||||
-------------------------------
|
||||
661
wp-content/plugins/wp-fastest-cache/css/buycredit.css
Normal file
276
wp-content/plugins/wp-fastest-cache/css/dialog.css
Normal file
@@ -0,0 +1,276 @@
|
||||
button:focus {outline:0;}
|
||||
.window-content-wrapper{
|
||||
background-image:-webkit-gradient(linear, left top, left bottom, color-stop(50%, rgb(238,238,238)), color-stop(100%, rgb(219,219,219)));
|
||||
background:-webkit-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
|
||||
background:-moz-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
|
||||
background:-o-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
|
||||
background:-ms-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
|
||||
background:linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#dbdbdb',GradientType=0 );
|
||||
text-shadow:0 0 5px #fff;
|
||||
border-bottom:1px solid #ABABAB;
|
||||
border-top:1px solid #EEE6E6;
|
||||
}
|
||||
|
||||
.wiz-inp-cont {
|
||||
background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1);
|
||||
border-radius: 6px;
|
||||
display: block;
|
||||
margin-top: 24px;
|
||||
padding: 12px;
|
||||
position: relative;
|
||||
}
|
||||
.wiz-cont {
|
||||
font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
min-height: 80px;
|
||||
padding: 22px 28px;
|
||||
}
|
||||
.wiz-cont h1 {
|
||||
font-size: 21px;
|
||||
margin: 0 0 12px;
|
||||
}
|
||||
.wiz-cont p {
|
||||
color: #666;
|
||||
margin: 0;
|
||||
}
|
||||
.wiz-input-cont {
|
||||
background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1);
|
||||
border-radius: 6px;
|
||||
margin-top: 24px;
|
||||
padding: 12px;
|
||||
position: relative;
|
||||
}
|
||||
.wiz-input-cont label {
|
||||
font-weight: bold;
|
||||
margin-right: 12px;
|
||||
}
|
||||
.api-key {
|
||||
border: 1px solid #999;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 1px 2px #eee inset, 0 1px 0 #ddd;
|
||||
font-size: 13px;
|
||||
padding: 4px 6px 3px;
|
||||
width: 355px;
|
||||
}
|
||||
.window-buttons-wrapper button {
|
||||
margin: 0 4px;
|
||||
}
|
||||
.wpfc-add-new-csp-button, .wpfc-add-new-timeout-button, .wpfc-add-new-exclude-button, .window-buttons-wrapper button[action="next"], .window-buttons-wrapper button[action="back"], .window-buttons-wrapper button[action="close"] {
|
||||
background-color: gray !important;
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAABaCAIAAAAU4rCTAAACGUlEQVQ4EQXBQbIkRxEFQH+V0V974Bjo/neaBTJhs6Ir4+GeX79+AQDmr7/+UxChmBawGsq0qxGqoabVVolUa7ZNW8IWpnsraAGzWwogMdsl2khTm9lb2dCqSKddVZRUze6CUIXZriJJW2T2lgLA7F4AQs3uAgBm9xIAmN1SoIrZ3ZY0oqRz74XQUMy9t1ASVfN9X5pGoDr3+5UAwLz3AgDmfS8gtGTufQEAc+9VAmjN3lsIJXTuXgIA8zwHAJDfv38DAObvv/9LRWgTnqRJVJtEdXYrTVOtaqZtahWKTtuCtonW7C6AFmZ3SdKWUNNuxQqFzr2l0UWipr0lJbFbZu8WJFqYuwsAmL1LIUqYuxfChorZvQSoYvZuCQ2VmHtX2iY0jczdCwCYe5eSKCqze0u0TRDz/X5Dk7RNtPP9vtIUoZV53y9QQpnv90XSVqQ67/s/AgDzvhdKAPO+L4FUkbn3AgBm96oKEtX8+e8/AQDzj3/9M0BJMed5QgkV6cxMCS2EOeeEhkrSdj6fIUpUMTMfACDz+flJS0rSMj8zElBSnc/PH9FCQnV+fj6gGkHn8/mAEmDOOQCAOedAIFXmnAMAmHNOKJBo55wDAJhzDkqgZJ5zoJCgc55HklbSNsmccwAAc55HtIRGzHMORKpgnnOiLY8UmfNE0yeBqnmeU6IqCSZPHtp4aBLz5EECgkyeJ4CCzHkeAMD/AViclsCJwxhXAAAAAElFTkSuQmCC') !important;
|
||||
background-repeat: repeat-x !important;
|
||||
border: 1px solid #777 !important;
|
||||
color: #000 !important;
|
||||
text-shadow: 0 1px 0 #eee !important;
|
||||
}
|
||||
.window-buttons-wrapper button[action="finish"]{
|
||||
background-repeat:repeat-x !important;
|
||||
background-color:green !important;
|
||||
background-image:url("../images/button-back-green.png") !important;
|
||||
color:#FFF;text-shadow:0 1px 0 rgba(0,0,0,0.4) !important;
|
||||
border:1px solid green !important;
|
||||
font-weight: bold;
|
||||
}
|
||||
.icon-right {
|
||||
margin: -4px -2px 0 3px;
|
||||
position: relative;
|
||||
right: -3px;
|
||||
top: 1px;
|
||||
}
|
||||
.big-button {
|
||||
-moz-border-bottom-colors: none;
|
||||
-moz-border-left-colors: none;
|
||||
-moz-border-right-colors: none;
|
||||
-moz-border-top-colors: none;
|
||||
background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
border-color: -moz-use-text-color transparent;
|
||||
border-image: none;
|
||||
border-style: none solid;
|
||||
border-width: medium 1px;
|
||||
font-size: 11px;
|
||||
margin: 0;
|
||||
outline: medium none !important;
|
||||
overflow: visible;
|
||||
padding: 3px 6px;
|
||||
text-shadow: 0 1px 0 #e5e5e5, 0 0 5px rgba(255, 255, 255, 0.6);
|
||||
width: auto;
|
||||
}
|
||||
.window-buttons:hover,.wpfc-dialog-buttons:hover{
|
||||
border-color:#999;
|
||||
background-position:0 -30px;
|
||||
}
|
||||
.wpfc-dialog-buttons {
|
||||
background: url("/images/button-back.png") repeat-x scroll 0 0 rgba(0, 0, 0, 0);
|
||||
border: 1px solid #aaa;
|
||||
padding: 4px 10px;
|
||||
display: none;
|
||||
}
|
||||
.window-buttons:active,.wpfc-dialog-buttons:active{
|
||||
border-color:#666;
|
||||
background-position:0 -60px;
|
||||
}
|
||||
.close-wiz {
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAmCAYAAAAm56DSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODNEQTU1N0QyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODNEQTU1N0UyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4M0RBNTU3QjI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4M0RBNTU3QzI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg4s3CYAAAMbSURBVHjanJbLb0xxFMfvvVOjDaP1aM0U9aqohhARG41IbBoRKwsJCyspO7Eg8QewsGAhsbAikYiVjQVWXinxqCBdmFapR0v1kWI6HZ3re5LvT47jN5OZnuTTzvzu/X3vuef1mzDw2zKwA2wCa9V6H3gF7oMvshDH8d+LoRGpBYfAVvABDIHv6vpikAYt4Am4BrFpn9gicAKM0IM4KG2ybx3Fz0FwVIslwWmQBeNB5dYA1oAz4qETOwxmqhRytpCxuxLhfyOoN0Ii/Bb0q7WY32W9qNbHJERhGDYm8GEn+GFiNAB6wTeQA03gJWMpMZ3rPKJNyD01+NPMTdpWgjf8PEiBnLq+2twvnqblNac8cZBMdarvWmgvH2atUEpMYrMdLPUU8xbw3rNnKsECTJgLEr9brsqVTYJ3LFxrOfEs77kgT/5kYhioGA569uQjptZao4nRSRPDjGfPmBRtCnSAGpOAAlgA5IE97FeJ7y+GQcfttzS/64ANoNX0Xgs3DxuPkp4EZNEBvU4swewtmUU7SQ12QyyOVPs854Vq7Ct4FnOohZ7R0kpqyogU2FrZWE3HsMTNSbZZEwdmijWWZ+t9BNN20pZ6ugjtBtuYHGfS/E/BbV+tWc/qwDGwi/EbpUfOUpzIUod3wCV4lveJSSbPMhlDFYztZv4/BcERLSbz6QK9+FlFNueR4+KhK42uWQgFvF864kjAVpGqXm+EJPX3pBjNAOzm+oxalyndjrGdkcrfQ1e1PQZ31WklvXoTPOQIkkStUPeLd3VSGu2eYC9Xn3soMKHWVnnmX5u85hxPLKRP95sDw9kBsNmzpzYy7+9MSmMfx3RgPOpkT1orJljlSc9pc5n9p22c46fNIzYZlTjFpWVeq+961r1gHP+btBGDa63exOi8iaFv7g2EPJmPmlfN8EBp4MZ+eveZdZU2cZMJctEdKN2eBKRZ1O73RpbjKO1JgEzaiVCNooOeY78SkzBdhVgxUqfLjRLxK2fi7XUR8s2ziMdeh6dc/vkpAB6BB06o3NiW3tvInpzP3xzD7ME+lkbOju0/AgwAGgf5ial8jHIAAAAASUVORK5CYII=') no-repeat scroll 0 0 transparent;
|
||||
height: 19px;
|
||||
width: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.mm-input-label{
|
||||
font-weight: bold;
|
||||
vertical-align: middle;
|
||||
margin-right: 12px;
|
||||
color: black;
|
||||
}
|
||||
.wiz-inp-readonly-textarea{
|
||||
-moz-appearance: textfield;
|
||||
-moz-border-bottom-colors: none;
|
||||
-moz-border-left-colors: none;
|
||||
-moz-border-right-colors: none;
|
||||
-moz-border-top-colors: none;
|
||||
border-color: #aaaaaa #b0b0b0 #cbcbcb;
|
||||
border-image: none;
|
||||
border-radius: 3px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
font-family: "Lucida Grande",monospace;
|
||||
font-size: inherit !important;
|
||||
line-height: 14px;
|
||||
padding: 4px 6px 3px;
|
||||
resize: none;
|
||||
white-space: pre;
|
||||
background-color: white !important;
|
||||
}
|
||||
.wiz-bg-img {
|
||||
bottom: -40px;
|
||||
clip: rect(0pt, 150px, 118px, 0pt);
|
||||
height: 150px;
|
||||
position: absolute;
|
||||
right: 40px;
|
||||
width: 150px;
|
||||
z-index: -1;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
.buttons-blood, .buttons-orange, .buttons-start{
|
||||
background-repeat: repeat-x;
|
||||
border: 1px solid #333 !important;
|
||||
color: #fff;
|
||||
text-shadow: 0 1px 0 #000 !important;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.buttons-blood {
|
||||
background-image:url("../images/button-back-blood.png") !important;
|
||||
}
|
||||
|
||||
.buttons-orange {
|
||||
background-image:url("../images/button-back-fire.png") !important;
|
||||
}
|
||||
|
||||
.buttons-start {
|
||||
background-image:url("../images/button-back-green.png") !important;
|
||||
}
|
||||
|
||||
.wpfc-green-button {
|
||||
font-weight: bold;
|
||||
padding:6px 18px;
|
||||
color:#fff;
|
||||
font-size:13px;
|
||||
border:1px solid #309E1F;
|
||||
text-shadow:0 -1px #309E1F;
|
||||
cursor:pointer;
|
||||
|
||||
-moz-border-radius: 3px 3px;
|
||||
-webkit-border-radius: 3px 3px;
|
||||
border-radius: 3px 3px;
|
||||
|
||||
-moz-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
|
||||
-webkit-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
|
||||
box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
|
||||
background: #39cc28;
|
||||
background: -moz-linear-gradient(top, #39cc28 0%, #38bf26 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#39cc28), color-stop(100%,#38bf26));
|
||||
background: -webkit-linear-gradient(top, #39cc28 0%,#38bf26 100%);
|
||||
background: -o-linear-gradient(top, #39cc28 0%,#38bf26 100%);
|
||||
background: -ms-linear-gradient(top, #39cc28 0%,#38bf26 100%);
|
||||
background: linear-gradient(top, #39cc28 0%,#38bf26 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#39cc28', endColorstr='#38bf26',GradientType=0 );
|
||||
}
|
||||
|
||||
.wpfc-green-button:hover {
|
||||
background: #40db2b;
|
||||
background: -moz-linear-gradient(top, #40db2b 0%, #3ecc28 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#40db2b), color-stop(100%,#3ecc28));
|
||||
background: -webkit-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
|
||||
background: -o-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
|
||||
background: -ms-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
|
||||
background: linear-gradient(top, #40db2b 0%,#3ecc28 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40db2b', endColorstr='#3ecc28',GradientType=0 );
|
||||
}
|
||||
.wpfc-green-button:active {
|
||||
-moz-box-shadow: 0 1px #71EF61 inset;
|
||||
-webkit-box-shadow: 0 1px #71EF61 inset;
|
||||
box-shadow: 0 1px #71EF61 inset;
|
||||
|
||||
background: #38bf26;
|
||||
background: -moz-linear-gradient(top, #38bf26 0%, #39cc28 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#38bf26), color-stop(100%,#39cc28));
|
||||
background: -webkit-linear-gradient(top, #38bf26 0%,#39cc28 100%);
|
||||
background: -o-linear-gradient(top, #38bf26 0%,#39cc28 100%);
|
||||
background: -ms-linear-gradient(top, #38bf26 0%,#39cc28 100%);
|
||||
background: linear-gradient(top, #38bf26 0%,#39cc28 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#38bf26', endColorstr='#39cc28',GradientType=0 );
|
||||
}
|
||||
|
||||
.wiz-error-msg, .wiz-error-msg a{
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
padding-left: 22px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#cdn-url-loading{
|
||||
background: url("../images/loading-circle.gif") no-repeat;
|
||||
width: 20px;
|
||||
height: 18px;
|
||||
margin-top: 5px;
|
||||
float: right;
|
||||
display: none;
|
||||
}
|
||||
.wpfc-checkbox-list {
|
||||
margin-top: 24px;
|
||||
padding:15px;
|
||||
background:rgba(150,150,150,0.2);
|
||||
|
||||
-moz-border-radius:5px 5px;
|
||||
-webkit-border-radius:5px 5px;
|
||||
border-radius:5px 5px;
|
||||
|
||||
background:rgba(150,150,150,0.2);
|
||||
background: -ms-linear-gradient(top, rgba(150,150,150,0.2) 0%,rgba(150,150,150,0.2) 100%); /* IE10+ */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33969696', endColorstr='#33969696',GradientType=0 ); /* IE6-9 */
|
||||
}
|
||||
|
||||
.wpfc-checkbox-list label{
|
||||
width:110px;
|
||||
display:inline-block;
|
||||
margin-top:3px;
|
||||
color:#333333;
|
||||
}
|
||||
|
||||
.wpfc-checkbox-list label input {
|
||||
margin-right:5px;
|
||||
vertical-align:bottom;
|
||||
}
|
||||
|
||||
.wpfc-bottom-note{
|
||||
margin-top: 20px !important
|
||||
}
|
||||
|
||||
.wpfc-bottom-note a{
|
||||
font-weight: bold;
|
||||
}
|
||||
67
wp-content/plugins/wp-fastest-cache/css/flaticon.css
Normal file
@@ -0,0 +1,67 @@
|
||||
@font-face {
|
||||
font-family: "Flaticon";
|
||||
src: url("fonts/statics/flaticon.eot");
|
||||
src: url("fonts/statics/flaticon.eot#iefix") format("embedded-opentype"),
|
||||
url("fonts/statics/flaticon.woff") format("woff"),
|
||||
url("fonts/statics/flaticon.ttf") format("truetype"),
|
||||
url("fonts/statics/flaticon.svg") format("svg");
|
||||
font-weight: normal !important;
|
||||
font-style: normal !important;
|
||||
}
|
||||
[class^="flaticon-"]:before, [class*=" flaticon-"]:before,
|
||||
[class^="flaticon-"]:after, [class*=" flaticon-"]:after {
|
||||
font-family: Flaticon;
|
||||
font-size: 40px !important;
|
||||
font-style: normal !important;
|
||||
color: #ff8900 !important;
|
||||
}.flaticon-css4:before {
|
||||
content: "\e000";
|
||||
}
|
||||
.flaticon-desktop1:before {
|
||||
content: "\e001";
|
||||
}
|
||||
.flaticon-js:before {
|
||||
content: "\e002";
|
||||
}
|
||||
.flaticon-smart:before {
|
||||
content: "\e003";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: "Flaticon";
|
||||
src: url("fonts/db/flaticon.eot");
|
||||
src: url("fonts/db/Flaticon.eot?#iefix") format("embedded-opentype"),
|
||||
url("fonts/db/Flaticon.woff") format("woff"),
|
||||
url("fonts/db/Flaticon.ttf") format("truetype"),
|
||||
url("fonts/db/Flaticon.svg#Flaticon") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: "Flaticon";
|
||||
src: url("fonts/db/Flaticon.svg#Flaticon") format("svg");
|
||||
}
|
||||
}
|
||||
|
||||
[class^="flaticon-"]:before, [class*=" flaticon-"]:before,
|
||||
[class^="flaticon-"]:after, [class*=" flaticon-"]:after {
|
||||
font-family: Flaticon;
|
||||
line-height: 44px !important;
|
||||
font-style: normal !important;
|
||||
}
|
||||
|
||||
|
||||
.flaticon-check:before { content: "\f100"; color:#5cab40 !important; font-size: 25px !important;}
|
||||
.flaticon-counterclockwise:before { content: "\f101"; font-weight: bold; font-size: 35px !important;}
|
||||
.flaticon-draft:before { content: "\f102"; font-size: 35px !important;}
|
||||
.flaticon-file:before { content: "\f103"; font-weight: bold; font-size: 35px !important;}
|
||||
.flaticon-interface:before { content: "\f104"; font-weight: bold; font-size: 35px !important;}
|
||||
.flaticon-pingback:before { content: "\f105"; font-weight: bold; font-size: 35px !important;}
|
||||
.flaticon-recycling:before { content: "\f106"; font-weight: bold; font-size: 35px !important;}
|
||||
.flaticon-start-settings:before { content: "\f107"; color:#3498db !important; font-size: 30px !important;}
|
||||
.flaticon-technology:before { content: "\f108"; font-weight: bold; font-size: 35px !important;}
|
||||
BIN
wp-content/plugins/wp-fastest-cache/css/fonts/db/Flaticon.eot
Normal file
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<!--
|
||||
2016-12-28: Created.
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
Created by FontForge 20120731 at Wed Dec 28 12:36:45 2016
|
||||
By Apache
|
||||
Created by Apache with FontForge 2.0 (http://fontforge.sf.net)
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="Flaticon" horiz-adv-x="512" >
|
||||
<font-face
|
||||
font-family="Flaticon"
|
||||
font-weight="500"
|
||||
font-stretch="normal"
|
||||
units-per-em="512"
|
||||
panose-1="2 0 6 3 0 0 0 0 0 0"
|
||||
ascent="448"
|
||||
descent="-64"
|
||||
bbox="-0 -64.0207 512 448"
|
||||
underline-thickness="25.6"
|
||||
underline-position="-51.2"
|
||||
unicode-range="U+0020-F108"
|
||||
/>
|
||||
<missing-glyph />
|
||||
<glyph glyph-name="space" unicode=" " horiz-adv-x="200"
|
||||
/>
|
||||
<glyph glyph-name="uniF107" unicode=""
|
||||
d="M128 448l384 -224l-195.2 -108.8v6.39941l-22.3994 6.40039l-19.2002 6.40039v3.19922l19.2002 38.4004l-57.6006 57.5996l-38.3994 -19.1992h-3.2002l-6.40039 19.1992l-6.39941 22.4004h-54.4004v192zM144 112c19.2002 0 32 -12.7998 32 -32s-12.7998 -32 -32 -32
|
||||
c-6.40039 0 -12.7998 3.2002 -16 6.40039c-9.59961 3.19922 -16 16 -16 25.5996s6.40039 19.2002 16 25.5996c3.2002 3.2002 9.59961 6.40039 16 6.40039zM288 64l-35.2002 -9.59961c-3.2002 -9.60059 -6.39941 -19.2002 -12.7998 -28.8008l16 -35.1992l-22.4004 -22.4004
|
||||
l-32 16c-9.59961 -6.40039 -19.1992 -9.59961 -28.7998 -12.7998l-12.7998 -35.2002h-32l-9.59961 35.2002c-9.60059 3.2002 -19.2002 6.39941 -28.8008 12.7998l-35.1992 -16l-22.4004 22.4004l16 32c-6.40039 9.59961 -9.59961 19.1992 -12.7998 28.7998l-35.2002 12.7998
|
||||
v32l35.2002 9.59961c3.2002 9.60059 6.39941 19.2002 12.7998 28.8008l-16 35.1992l22.4004 22.4004l32 -16c9.59961 6.40039 19.1992 9.59961 28.7998 12.7998l12.7998 35.2002h32l12.7998 -35.2002c9.60059 -3.2002 19.2002 -6.39941 28.7998 -12.7998l32 16
|
||||
l22.4004 -22.4004l-16 -32c6.40039 -9.59961 9.59961 -19.1992 12.7998 -28.7998l35.2002 -12.7998v-32zM144 16c35.2002 0 64 28.7998 64 64s-28.7998 64 -64 64s-64 -28.7998 -64 -64s28.7998 -64 64 -64z" />
|
||||
<glyph glyph-name="uniF101" unicode=""
|
||||
d="M289.395 415.319c122.945 0 222.605 -99.9766 222.605 -223.319s-99.6602 -223.319 -222.605 -223.319c-51.7012 0 -99.2793 17.6973 -137.074 47.3604l38.2852 40.9648c27.6592 -20.4141 61.8105 -32.4951 98.7891 -32.4951c92.2139 0 166.955 74.9863 166.955 167.489
|
||||
s-74.7412 167.489 -166.955 167.489c-90.3408 0 -163.873 -71.9961 -166.809 -161.912h77.7695l-100.172 -111.659l-100.184 111.659h66.9248c2.96875 120.756 101.393 217.742 222.47 217.742zM269.606 311.83h38.1387v-111.933l70.666 -70.6719l-26.9561 -26.9561
|
||||
l-81.8486 81.833v127.728z" />
|
||||
<glyph glyph-name="uniF105" unicode=""
|
||||
d="M487.319 448c13.8721 0 24.667 -10.7949 24.6738 -24.667v-208.208c0 -13.8789 -10.7812 -24.6738 -24.667 -24.6738h-206.659c-13.8721 0 -24.667 10.7949 -24.667 24.6738v208.201c0 13.8789 10.7881 24.6738 24.667 24.6738h206.652zM345.437 431.036
|
||||
c-6.16895 0 -9.24609 -4.62598 -9.25293 -9.25195c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293s9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62695 9.25195 -9.25293 9.25195zM319.228 431.036c-6.16895 0 -9.25977 -4.62598 -9.25977 -9.25195
|
||||
c0 -4.62695 4.62598 -9.25293 9.25977 -9.25293c4.62598 0 9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62695 9.25195 -9.25293 9.25195zM291.462 431.036c-4.61914 0 -9.24609 -4.62598 -9.25293 -9.25195c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293
|
||||
c4.62695 0 9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62598 9.25195 -9.25293 9.25195zM484.228 235.173v0l-3.11816 166.557c0 7.70996 -6.14844 15.4209 -15.4141 15.4209h-67.8477c-7.70312 0 -15.4141 -6.16797 -15.4141 -15.4209
|
||||
c0 -7.71094 0 -7.71094 -15.4141 -7.71094h-67.8467c-7.7041 0 -15.415 -6.16113 -15.415 -15.4141v-143.432c0 -7.7041 6.14844 -15.4072 15.415 -15.4072h169.634c7.71094 0 15.4209 6.1543 15.4209 15.4072zM231.326 192.007c13.8857 0 24.6738 -10.8018 26.209 -24.6738
|
||||
v-206.659c0 -13.8857 -10.7949 -24.6738 -24.6738 -24.6738h-208.188c-13.8926 0 -24.6738 10.7881 -24.6738 24.6738v206.659c0 13.8857 10.7812 24.6738 24.6738 24.6738h206.652zM89.457 175.044c-4.63281 0 -9.27344 -4.62695 -9.2666 -9.2666
|
||||
c0 -4.62695 4.64062 -9.25293 9.2666 -9.25293c4.62695 0 9.25293 4.62598 9.25293 9.25293c0 4.63965 -4.62598 9.2666 -9.25293 9.2666zM63.2344 175.044c-4.62695 0 -9.25977 -4.62695 -9.25977 -9.2666c0 -4.62695 4.63281 -9.25293 9.25977 -9.25293
|
||||
c4.62598 0 9.2666 4.62598 9.2666 9.25293c0 4.63965 -4.64062 9.2666 -9.2666 9.2666zM37.0107 175.044c-6.1748 0 -9.23828 -4.62695 -9.25293 -9.2666c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293c4.62695 0 9.25293 4.62598 9.25293 9.25293
|
||||
c0 4.63965 -4.62598 9.2666 -9.25293 9.2666zM228.228 -19.2715v0l-1.54883 166.543c0 7.7041 -6.1543 15.4209 -15.4209 15.4209h-67.8398c-7.71094 0 -15.4219 -6.16797 -15.4219 -15.4209c0 -7.71094 0 -7.71094 -15.4209 -7.71094h-67.8398
|
||||
c-7.71094 0 -15.4209 -6.16113 -15.4209 -15.4141v-143.418c0 -7.71777 6.1543 -15.4209 15.4209 -15.4209h168.085c7.71094 0 15.4072 6.16113 15.4072 15.4209zM97.1611 238.271l-15.4219 15.4219l72.4668 72.4727l-23.1182 23.1455l78.6416 16.9502l-16.9639 -77.1133
|
||||
l-23.125 21.6035zM414.832 145.729l15.4287 -15.415l-72.4873 -72.4795l23.1455 -23.1318l-78.6553 -16.9707l16.9639 77.1201l23.1318 -21.5898z" />
|
||||
<glyph glyph-name="uniF106" unicode=""
|
||||
d="M375.736 334.727l36.9531 21.3281l-20.1885 -60.9219l-20.1719 -60.9062l-62.8438 12.9844l-62.8447 12.9844l36.7197 21.1875l-28.5479 49.4531l-55.7666 -96.5938l-92.375 53.3438l86.5469 149.891h0.0166016h123.143h0.03125zM191.236 263.385l51.25 88.7812
|
||||
l-36.9385 63.9844h-0.015625l-69.7197 -120.767zM372.25 301.852l2.5625 7.70312l-6.89062 -3.9834l-10.6719 18.4834l-53.1562 92.0947h-73.9053l71.6396 -124.095l10.6719 -18.4834l-6.65625 -3.82812l7.95312 -1.6416l44.25 -9.14062zM425.469 245.773l86.5312 -149.905
|
||||
l-0.015625 -0.0166016l-61.5781 -106.672h-118.656v-42.6572l-42.6562 47.9219l-42.6719 47.9375l42.6719 47.9385l42.6562 47.9219v-42.3916h57.0938l-55.75 96.5781zM438.094 10.5234l36.9531 64.001h-143.297h-21.3281v7.67188l-5.40625 -6.06348l-30.0303 -33.75
|
||||
l30.0303 -33.75l5.40625 -6.0625v7.95312h21.3281h106.344zM487.359 95.8516l0.015625 0.0166016l-69.7188 120.75l-55.4219 -32l51.25 -88.7666h73.875zM123.156 96.1484h111.532v-106.655h-173.095l-61.5781 106.656l-0.015625 0.0302734l59.3271 102.75l-36.9531 21.3281
|
||||
l62.8438 12.9844l62.8438 12.9834l20.1885 -60.9053l20.1719 -60.9209l-36.7188 21.2021zM24.6406 96.1797l36.9531 -64l71.6416 124.079l10.6553 18.4844l6.65625 -3.84375l-2.54688 7.70215l-14.2188 42.8916l-44.2344 -9.1416l-7.95312 -1.64062l6.875 -3.96875
|
||||
l-10.6553 -18.4844zM213.344 10.8203v64h-102.5l-36.9375 -63.9844l0.015625 -0.015625h139.422z" />
|
||||
<glyph glyph-name="uniF102" unicode=""
|
||||
d="M256.209 259.38c0 -9.45117 -7.65137 -17.1025 -17.1182 -17.1025h-153.935c-9.45117 0 -17.1182 7.65137 -17.1182 17.1025c0 9.43457 7.66699 17.0859 17.1182 17.0859h153.935c9.4834 0 17.1182 -7.65137 17.1182 -17.0859zM345.898 269.795l85.8633 -77.0078
|
||||
l-182.062 -202.957l-85.832 77.0068zM321.596 187.805l-0.53125 0.466797c-2.04102 1.83203 -4.70898 2.76367 -7.40918 2.61914s-5.27246 -1.36621 -7.05664 -3.3916l-97.71 -108.912c-4.06641 -4.5166 -3.68066 -11.4609 0.835938 -15.5107
|
||||
c2.02539 -1.84863 4.67773 -2.79688 7.41016 -2.63672c2.7002 0.161133 5.25586 1.38281 7.07227 3.42383l98.1758 109.46c3.79297 4.19434 3.42383 10.7041 -0.787109 14.4814zM341.88 226.976l-4.83789 -5.40039c-1.78418 -2.02539 -2.73242 -4.69336 -2.60449 -7.41016
|
||||
c0.161133 -2.71582 1.38281 -5.27246 3.3916 -7.08789l0.5625 -0.499023c2.04199 -1.81543 4.70996 -2.74805 7.41016 -2.60352c2.73242 0.144531 5.27246 1.36621 7.07227 3.3916l11.7012 13.0352l-8.19727 7.3457c-4.21094 3.79297 -10.7051 3.43945 -14.498 -0.771484z
|
||||
M354.176 279.069l21.1045 23.499l85.8311 -77.0068l-21.0879 -23.5zM499.029 267.818l-30.1699 -33.6416l-85.8477 76.9912l30.2178 33.6416c3.96973 4.5 9.64355 7.2002 15.6709 7.52148c6.02832 0.337891 11.9268 -1.75195 16.4111 -5.76953l51.9814 -46.6611
|
||||
c9.33887 -8.37402 10.126 -22.7441 1.73633 -32.082zM482.136 283.023l-51.9648 46.6445l-15.0605 -16.748l51.9648 -46.6611zM153.613 55.3604l85.8154 -77.0068l-101.423 -41.5654c-3.90625 -1.5752 -8.37402 -0.820312 -11.5088 2.00879
|
||||
c-3.15039 2.84473 -4.3877 7.18457 -3.23047 11.2354zM161.457 28.0039l-11.6055 -40.2959l22.6797 -20.3809l38.7686 15.8486zM132.042 57.6592l-10.0137 -34.751h-76.0742c-21.4102 0 -38.7852 17.3594 -38.7852 38.7695v281.958
|
||||
c0 21.4102 17.3594 38.7852 38.7852 38.7852h47.2549v2.79688c0 7.9082 6.41309 14.3047 14.3057 14.3047h11.8945c-0.241211 1.71973 -0.370117 3.77734 -0.370117 5.70605c0 23.5801 19.1758 42.7715 42.7715 42.7715c23.6113 0 42.7705 -19.1914 42.7705 -42.7715
|
||||
c0 -1.92871 -0.160156 -3.98633 -0.369141 -5.68945h12.0391c7.9082 0 14.3047 -6.41309 14.3047 -14.3057v-2.79688h46.1309c21.4092 0 38.7686 -17.375 38.7686 -38.7842v-74.4199l-34.2041 -38.126v96.2471c0 11.2354 -9.08105 20.333 -20.3164 20.333h-30.3945v-19.3047
|
||||
c0 -7.8916 -6.41309 -14.3047 -14.3057 -14.3047h-108.704c-7.9082 0 -14.3047 6.41309 -14.3047 14.3047v19.3047h-30.957c-11.2354 0 -20.333 -9.11426 -20.333 -20.333v-249.361c0 -11.2676 9.11328 -20.3496 20.333 -20.3496h69.7734v0.0166016zM144.708 405.229
|
||||
c0 -1.99316 0.370117 -3.98633 0.980469 -5.70605h32.2275c0.642578 1.71973 0.996094 3.69727 0.996094 5.70605c0 9.43555 -7.66699 17.1182 -17.1016 17.1182c-9.45117 0 -17.1025 -7.68262 -17.1025 -17.1182zM240.28 185.346
|
||||
c-0.385742 -0.015625 -0.788086 -0.0478516 -1.18945 -0.0800781h-153.935c-9.45117 0 -17.1182 7.95605 -17.1182 17.3906c0 9.46777 7.66699 17.3916 17.1182 17.3916h153.95c9.32324 0 16.8779 -7.68262 17.1025 -16.9414zM68.0381 145.966
|
||||
c0 9.45117 7.66699 17.1025 17.1182 17.1182h135.161l-30.6523 -34.1875h-104.509c-9.45117 0 -17.1182 7.61816 -17.1182 17.0693z" />
|
||||
<glyph glyph-name="uniF103" unicode=""
|
||||
d="M469.333 88.6611c0 -40.502 -20.2715 -76.3633 -51.1982 -97.9785v-12.0166c0 -23.5342 -19.1494 -42.666 -42.667 -42.666h-290.134c-23.5176 0 -42.667 19.1318 -42.667 42.667v426.666c0.000976562 23.5352 19.1494 42.667 42.667 42.667h221.867
|
||||
c1.79199 0 3.44824 -0.545898 4.83008 -1.50195l102.315 -68.1973c2.51172 -1.67578 3.90625 -4.52246 3.78809 -7.44629v-184.215c30.9268 -21.6162 51.1982 -57.4766 51.1982 -97.9785zM315.734 423.509v-18.1758c0 -14.1143 11.4863 -25.6006 25.5996 -25.6006h40.0898z
|
||||
M366.935 -12.3096c48.375 8.14746 85.333 50.3105 85.333 100.971h-25.5996v17.0674h24.1699c-8.14648 48.374 -50.3105 85.333 -100.97 85.333v-25.6006h-17.0674v24.1709c-42.5186 -7.16016 -76.2168 -40.6006 -83.7529 -82.9922l40.7803 23.5449l8.5332 -14.7617
|
||||
l-59.1191 -34.1338c-1.34961 -0.785156 -2.7998 -1.16113 -4.25 -1.16113c-2.95215 0 -5.82031 1.53613 -7.40723 4.26758l-34.1328 59.1182l14.7793 8.5332l24.1299 -41.791c10.1943 55.5928 59.001 97.8721 117.505 97.8721c18.3135 0 35.6748 -4.14746 51.2012 -11.5449
|
||||
v166.085h-59.7314c-23.5176 0 -42.667 19.1318 -42.667 42.667v25.5977h-213.335c-14.1133 0 -25.5996 -11.4854 -25.5996 -25.5996v-426.667c0 -14.1143 11.4863 -25.5996 25.5996 -25.5996h290.134c14.1133 0 25.5996 11.4854 25.5996 25.5996v2.07227
|
||||
c-15.5264 -7.39648 -32.8877 -11.5439 -51.2002 -11.5439c-31.915 0 -61.8828 12.4248 -84.4463 34.9697l12.0664 12.0664c19.3203 -19.3193 45.0225 -29.9697 72.3799 -29.9697v25.6006h17.0674v-24.1709zM397.753 151.687l12.3975 -11.7295l-48.4795 -51.2383
|
||||
l28.5703 -29.5312l-12.2656 -11.8652l-28.0449 28.9883l-5.86816 -6.20117l-12.3965 11.7295l6.38672 6.75l-6.37988 6.59375l12.2656 11.8662l5.85352 -6.05078z" />
|
||||
<glyph glyph-name="uniF104" unicode=""
|
||||
d="M358.37 448c84.6719 0 153.562 -68.8896 153.553 -153.562v-119.437c0 -81.8145 -64.3076 -148.887 -145.03 -153.332v-71.1836c0 -5.87793 -3.50586 -11.125 -8.93164 -13.377c-1.80859 -0.742188 -3.69434 -1.10938 -5.5625 -1.10938
|
||||
c-3.75391 0 -7.43945 1.47559 -10.2207 4.24902l-16.0039 16.0127c-42.0332 42.0332 -97.9219 65.1787 -157.367 65.1787h-15.1855c-84.6719 0 -153.562 68.8887 -153.562 153.562v119.437c0 84.6719 68.8896 153.562 153.562 153.562h204.749zM494.869 175.002h0.00878906
|
||||
v119.437c0 75.2617 -61.2373 136.499 -136.499 136.499h-204.749c-75.2627 0 -136.499 -61.2373 -136.499 -136.499v-119.437c0 -75.2627 61.2363 -136.5 136.499 -136.5h15.1855c64.001 0 124.172 -24.9189 169.43 -70.1768l11.5938 -11.5947v73.2402v8.53125v34.125
|
||||
c0 4.70898 3.81348 8.53125 8.53125 8.53125s8.53125 -3.82227 8.53125 -8.53125v-33.6895c71.2871 4.43652 127.968 63.6768 127.968 136.064zM145.09 285.779c-4.70898 0 -8.53125 3.82227 -8.53125 8.53125s3.81348 8.53125 8.53125 8.53125h119.438
|
||||
c4.71777 0 8.53125 -3.82227 8.53125 -8.53125s-3.81348 -8.53125 -8.53125 -8.53125h-119.438zM375.433 234.592c4.71777 0 8.53125 -3.82129 8.53125 -8.53125c0 -4.70898 -3.81348 -8.53125 -8.53125 -8.53125h-230.343c-4.71777 0 -8.53125 3.82227 -8.53125 8.53125
|
||||
c0 4.70996 3.81348 8.53125 8.53125 8.53125h230.343zM375.433 166.343c4.71777 0 8.53125 -3.82227 8.53125 -8.53125c0 -4.70996 -3.81348 -8.53125 -8.53125 -8.53125h-230.343c-4.71777 0 -8.53125 3.82129 -8.53125 8.53125c0 4.70898 3.81348 8.53125 8.53125 8.53125
|
||||
h230.343z" />
|
||||
<glyph glyph-name="uniF108" unicode=""
|
||||
d="M256 437c113.1 0 198.4 -38.5 198.4 -89.5996v-310.801c0 -51.1992 -85.3008 -89.6992 -198.4 -89.6992s-198.4 38.5996 -198.4 89.6992v310.801c0 51.0996 85.3008 89.5996 198.4 89.5996zM429.9 140.2v59.0996c-33.1006 -27.3994 -97.1006 -45.2002 -173.9 -45.2002
|
||||
s-140.7 17.8008 -173.9 45.2002v-59.0996c0 -30.9004 71.4004 -65.2002 173.9 -65.2002s173.9 34.4004 173.9 65.2002zM429.9 243.8v59.1006c-33.1006 -27.4004 -97.1006 -45.2002 -173.9 -45.2002s-140.7 17.7998 -173.9 45.2002v-59.1006
|
||||
c0 -30.8994 71.4004 -65.2002 173.9 -65.2002s173.9 34.4004 173.9 65.2002zM256 412.5c-102.5 0 -173.9 -34.2998 -173.9 -65.2002c0 -30.8994 71.4004 -65.2002 173.9 -65.2002s173.9 34.3008 173.9 65.2002c0 30.9004 -71.4004 65.2002 -173.9 65.2002zM256 -28.5
|
||||
c102.5 0 173.9 34.2998 173.9 65.2002v59.0996c-33.1006 -27.3994 -97.1006 -45.2002 -173.9 -45.2002s-140.7 17.8008 -173.9 45.2002v-59.0996c0 -30.9004 71.4004 -65.2002 173.9 -65.2002z" />
|
||||
<glyph glyph-name="uniF100" unicode=""
|
||||
d="M256 448c141.152 0 256 -114.848 256 -256s-114.848 -256 -256 -256s-256 114.848 -256 256s114.848 256 256 256zM256 0c105.888 0 192 86.1123 192 192s-86.1123 192 -192 192s-192 -86.1123 -192 -192s86.1123 -192 192 -192zM361.216 310.464l45.5684 -44.9277
|
||||
l-159.776 -161.984c-6.01562 -6.11133 -14.6562 -10.0156 -22.7842 -9.53613c-8.47949 0 -16.6074 3.36035 -22.624 9.37598l-96 96l45.248 45.248l73.2168 -73.248z" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
BIN
wp-content/plugins/wp-fastest-cache/css/fonts/db/Flaticon.ttf
Normal file
BIN
wp-content/plugins/wp-fastest-cache/css/fonts/db/Flaticon.woff
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
wp-content/plugins/wp-fastest-cache/css/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
564
wp-content/plugins/wp-fastest-cache/css/style.css
Normal file
@@ -0,0 +1,564 @@
|
||||
/* Set the size and font of the tab widget */
|
||||
.tabGroup {
|
||||
background: none repeat scroll 0 0 #F3F1EB;
|
||||
border: 1px solid #DEDBD1;
|
||||
padding: 10px;
|
||||
width: 750px;
|
||||
height: auto;
|
||||
float: left;
|
||||
box-sizing: unset;
|
||||
}
|
||||
|
||||
.tabGroup div.questionCon{
|
||||
width: 100%;
|
||||
float: left;
|
||||
padding-top: 5px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.tabGroup select, .tabGroup label, .tabGroup div {
|
||||
font-size: 12px;
|
||||
box-sizing: unset;
|
||||
|
||||
}
|
||||
.tabGroup > label{
|
||||
font-weight: normal !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.inputCon label{
|
||||
font-weight: normal !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.questionCon.qsubmit{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tabGroup div.questionCon.disabled{
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.tabGroup div.question{
|
||||
padding-right: 5px;
|
||||
float: left;
|
||||
text-align: right;
|
||||
width: 130px;
|
||||
font-weight: normal !important;
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
.tabGroup div.inputCon{
|
||||
float:left;
|
||||
}
|
||||
|
||||
/* Configure the radio buttons to hide off screen */
|
||||
.tabGroup > input[type="radio"] {
|
||||
position: absolute;
|
||||
left:-100px;
|
||||
top:-100px;
|
||||
}
|
||||
|
||||
/* Configure labels to look like tabs */
|
||||
.tabGroup > input[type="radio"] + label {
|
||||
/* inline-block such that the label can be given dimensions */
|
||||
display: inline-block;
|
||||
|
||||
/* A nice curved border around the tab */
|
||||
border: 1px solid #DEDBD1;
|
||||
border-radius: 5px 5px 0 0;
|
||||
-moz-border-radius: 5px 5px 0 0;
|
||||
-webkit-border-radius: 5px 5px 0 0;
|
||||
|
||||
/* the bottom border is handled by the tab content div */
|
||||
border-bottom: 0;
|
||||
|
||||
/* Padding around tab text */
|
||||
padding: 5px 10px;
|
||||
|
||||
/* Set the background color to default gray (non-selected tab) */
|
||||
background-color:#ddd;
|
||||
color: black;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
/* Focused tabs need to be highlighted as such */
|
||||
.tabGroup > input[type="radio"]:focus + label {
|
||||
border:1px dashed #DEDBD1;
|
||||
}
|
||||
|
||||
/* Checked tabs must be white with the bottom border removed */
|
||||
.tabGroup > input[type="radio"]:checked + label {
|
||||
background-color:white;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid white;
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
/* The tab content must fill the widgets size and have a nice border */
|
||||
.tabGroup > div {
|
||||
display: none;
|
||||
border: 1px solid #DEDBD1;
|
||||
background-color: white;
|
||||
padding: 10px 0px;
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
margin-top: -1px;
|
||||
|
||||
border-radius: 0 5px 5px 5px;
|
||||
-moz-border-radius: 0 5px 5px 5px;
|
||||
-webkit-border-radius: 0 5px 5px 5px;
|
||||
}
|
||||
|
||||
/* This matchs tabs displaying to thier associated radio inputs */
|
||||
#wpfc-options:checked ~ .tab1, #wpfc-deleteCache:checked ~ .tab2, #wpfc-cacheTimeout:checked ~ .tab3, #wpfc-imageOptimisation:checked ~ .tab4, #wpfc-premium:checked ~ .tab5, #wpfc-exclude:checked ~ .tab6 , #wpfc-cdn:checked ~.tab7, #wpfc-db:checked ~.tab8{
|
||||
display: block;
|
||||
}
|
||||
/* for lef panel */
|
||||
#toplevel_page_wpfastestcacheoptions img{
|
||||
margin-top: -7px !important;
|
||||
width: 30px !important;
|
||||
/* padding: 0 !important;
|
||||
margin-left: 5px !important;*/
|
||||
}
|
||||
#toplevel_page_wpfastestcacheoptions div.wp-menu-name{
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
.question:after {
|
||||
content: ":";
|
||||
padding-left: 5px;
|
||||
}
|
||||
.inputCon input[type="checkbox"]{
|
||||
margin-right: 5px;
|
||||
}
|
||||
.get-info {
|
||||
float: left;
|
||||
padding-left: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#rule-help-tip {
|
||||
width: 500px;
|
||||
background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #CCCCCC;
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
box-shadow: 4px 4px 10px #CCCCCC;
|
||||
display: block;
|
||||
padding: 10px 10px 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#rule-help-tip h4 {
|
||||
color: #6397CB;
|
||||
margin-top: 0;
|
||||
font-size: 14px;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
h1.summary-rec {
|
||||
border-bottom: 0 none;
|
||||
color: #777777;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
letter-spacing: normal;
|
||||
margin: 0 0 0.5em;
|
||||
}
|
||||
|
||||
.close-window {
|
||||
background: url("../images/close-wiz-sprite.png") no-repeat scroll 0 -19px rgba(0, 0, 0, 0);
|
||||
height: 19px;
|
||||
width: 22px;
|
||||
float: right;
|
||||
}
|
||||
.omni_admin_sidebar {
|
||||
float: right;
|
||||
font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
|
||||
font-size: 12px;
|
||||
margin-right: 30px;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.omni_admin_sidebar_section {
|
||||
background-color: #F6F6F6;
|
||||
float: right;
|
||||
width: 195px;
|
||||
padding: 0;
|
||||
border: none;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
.wpfc-sticky-notification main { overflow-x: hidden }
|
||||
.wpfc-sticky-notification { font-family: "Open Sans", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen-sans, ubuntu, cantarell, "Helvetica Neue", sans-serif }
|
||||
.wpfc-sticky-notification, .wpfc-sticky-notification a { color: #0A1551 }
|
||||
.wpfc-sticky-notification { font-size: 16px; line-height: 1.4; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale }
|
||||
.wpfc-sticky-notification img { max-width: 100%; vertical-align: bottom }
|
||||
.wpfc-sticky-notification a { text-decoration: none }
|
||||
.wpfc-sticky-notification main { width: 100%; position: relative; transition: all .3s }
|
||||
.wpfc-sticky-notification h5 { margin: 1rem 0 }
|
||||
.wpfc-sticky-notification h5 { font-size: 22px }
|
||||
.wpfc-sticky-notification .sticky-common-banner { transition: all .2s; background-color: #0A1551; box-shadow: 0 3px 10pc rgba(0, 0, 0, .1); border-radius: 0; z-index: 7020; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; align-items: center; overflow: hidden; width: 100% }
|
||||
.wpfc-sticky-notification .sticky-common-banner { background-color:#fff; left: initial; right: 8px; bottom: 16px; }
|
||||
.wpfc-sticky-notification .section-widget-footer.fixed+.sticky-common-banner { bottom: 88px }
|
||||
.wpfc-sticky-notification .sticky-common-banner .header { background-color: #0A1551; display: flex; flex-direction: column; align-items: center; width: 100%; padding: 16px 0 0 }
|
||||
.wpfc-sticky-notification .sticky-common-banner .header-logo { height: 42px; margin: 0 0 8px; }
|
||||
.wpfc-sticky-notification .sticky-common-banner .title { margin: 0 8px 16px; color: #fff; text-align: center; font-weight: 400; font-size: 14px; line-height: 16px }
|
||||
.wpfc-sticky-notification .sticky-common-banner .header-logo { display:block }
|
||||
.wpfc-sticky-notification .sticky-common-banner .visual { margin: 0; width: 100%; height: auto; display: none }
|
||||
.wpfc-sticky-notification .sticky-common-banner .main-cta { transition: all .2s; background-color: #78BB07; font-weight: 500; font-size: 14px; line-height: 16px; text-align: center; color: #FFF; border: none; box-sizing: border-box; padding: 16px 8px; margin: 16px; width: calc(100% - 48px); max-width: 240px }
|
||||
.wpfc-sticky-notification .sticky-common-banner .main-cta:hover { background: #88d408; border-color: #88d408; }
|
||||
.wpfc-sticky-notification .sticky-common-banner .visual { display:block }
|
||||
.wpfc-sticky-notification .sticky-common-banner .main-cta { padding: 16px; margin: 24px; width: calc(100% - 32px); max-width: initial }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#wpfc-beta{
|
||||
padding-right: 5px;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
}
|
||||
|
||||
#deleteCron{
|
||||
float:right;
|
||||
margin-right:5px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#deleteCron:hover{
|
||||
background-color:#FAEBD7;
|
||||
}
|
||||
form.delete-line{
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
form.delete-line .left{
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
form.delete-line .right{
|
||||
width: 80%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
form.delete-line .left .submit{
|
||||
padding-top: 0;
|
||||
float: left;
|
||||
padding-left: 20px;
|
||||
}
|
||||
form.delete-line .left .submit input{
|
||||
height: 65px;
|
||||
width: 130px;
|
||||
white-space: pre-line !important;
|
||||
}
|
||||
td div.revert:before{
|
||||
font-family: "dashicons";
|
||||
content: "\f531";
|
||||
}
|
||||
td div.revert{
|
||||
width:16px;
|
||||
height:16px;
|
||||
vertical-align: middle;
|
||||
margin: auto;
|
||||
position:relative;
|
||||
cursor:pointer;
|
||||
|
||||
-moz-border-radius: 3px 3px;
|
||||
-webkit-border-radius: 3px 3px;
|
||||
border-radius: 3px 3px;
|
||||
border:1px solid #aaa;
|
||||
background:#ddd;
|
||||
padding:3px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
td div.revert:hover{
|
||||
border-color:#000;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
td div.revert:active{
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
#revert-loader{
|
||||
display: none;
|
||||
background: rgba(255, 255, 255, .7) url(../images/loader.gif) no-repeat center;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9998;
|
||||
}
|
||||
.wpfc-loading-statics{
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/loader-statics.gif);
|
||||
background-position: 0 0;
|
||||
}
|
||||
div.wpfc-loading-statics{
|
||||
height: 16px;
|
||||
}
|
||||
p.wpfc-loading-statics{
|
||||
background-position: 44px 6px;
|
||||
height: 27px;
|
||||
}
|
||||
#wpfc-optimized-statics-reduction:not(.wpfc-loading-statics):after{
|
||||
content: " KB";
|
||||
}
|
||||
#wpfc-statics-right ul li{
|
||||
height:35px;
|
||||
padding:0;
|
||||
margin-bottom:15px;
|
||||
width:150px;
|
||||
}
|
||||
#wpfc-statics-right ul:last-child{
|
||||
padding-left: 10px;
|
||||
}
|
||||
#wpfc-statics-right ul:last-child li{
|
||||
width: 220px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
span.deleteicon {
|
||||
position: relative;
|
||||
}
|
||||
span.deleteicon input {
|
||||
padding-right: 16px;
|
||||
}
|
||||
span.deleteicon span {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0px;
|
||||
right: 5px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: url("../images/search_reset.jpg") no-repeat scroll;
|
||||
cursor: pointer;
|
||||
}
|
||||
span.deleteicon span.cleared {
|
||||
background: none;
|
||||
}
|
||||
#wpfc-image-list-filter:-moz-focusring, #wpfc-image-per-page:-moz-focusring {
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #000;
|
||||
}
|
||||
#buy-image-credit{
|
||||
border: 1px solid;
|
||||
color: white;
|
||||
border-radius: 26px;
|
||||
background-color: rgb(61, 207, 60);
|
||||
cursor: pointer;
|
||||
padding: 5px 15px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.wpfc-exclude-rule-line{
|
||||
float: left;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
.wpfc-exclude-rule-line-left{
|
||||
width: 100px;
|
||||
float: left;
|
||||
}
|
||||
.wpfc-exclude-rule-line-middle{
|
||||
/*width: 400px;*/
|
||||
float: left;
|
||||
}
|
||||
.wpfc-exclude-rule-line-add, .wpfc-exclude-rule-line-delete{
|
||||
float: left;
|
||||
padding-top: 7px;
|
||||
cursor: pointer;
|
||||
width: 20px;
|
||||
}
|
||||
.wpfc-exclude-rule-line-delete{
|
||||
display: none;
|
||||
}
|
||||
#integrationDiv {
|
||||
display: block;
|
||||
font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif;
|
||||
font-size: 13px;
|
||||
height: auto;
|
||||
line-height: 18px;
|
||||
max-height: 395px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
}
|
||||
.wpfc-csp-item, .wpfc-timeout-item, .wpfc-exclude-item, .int-item{
|
||||
background: url(data:image/gif;base64,R0lGODlhAQAkANUAAAAAAP/////+//38/fb19vX09fDv8Pr6+/n5+vb29/Hx8u/v8Pv8/Pn6+vLz8vv7+vj49/T08/Pz8vLy8f/+/v38/Pn4+PHw8P7+/v39/fv7+/j4+Pf39/b29vPz8/Hx8fDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAABACQAAAYiwICAgsFkMpUBQ/M4IBqWDYST6BAKhYjHIZkoPp8LaGEIAgA7) repeat-x scroll center bottom transparent !important;
|
||||
border: 1px solid #CCCCCC !important;
|
||||
}
|
||||
.wpfc-csp-item:hover, .wpfc-timeout-item:hover, .wpfc-exclude-item:hover, .int-item:hover{
|
||||
border:1px solid #ccc;
|
||||
background:#f5f5f5 none repeat scroll 0 0 !important;
|
||||
}
|
||||
.int-item, .wpfc-timeout-item, .wpfc-exclude-item, .wpfc-csp-item {
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 7px;
|
||||
overflow: hidden;
|
||||
padding: 12px;
|
||||
float: left;
|
||||
width: 328.5px;
|
||||
}
|
||||
.int-item{
|
||||
padding: 12px 8px 12px 12px !important;
|
||||
}
|
||||
.int-item-left{
|
||||
margin-right: 7px;
|
||||
}
|
||||
.int-item:hover {
|
||||
background: none repeat scroll 0 0 rgba(135, 135, 135, 0.1);
|
||||
}
|
||||
.int-item h2 {
|
||||
font-size: 14px;
|
||||
margin: 0 0 3px;
|
||||
}
|
||||
.int-item p {
|
||||
color: #666;
|
||||
font-size: 11px;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
padding-top: 3px;
|
||||
}
|
||||
.int-item img {
|
||||
float: left;
|
||||
margin-right: 12px;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
}
|
||||
.int-item .meta.isConnected{
|
||||
background-image: url("../images/success.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 24px;
|
||||
background-position: right;
|
||||
height: 24px;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
.int-item .meta.isConnected.pause{
|
||||
background-image: url("../images/pause.svg");
|
||||
}
|
||||
|
||||
.int-item .meta.success{
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAADb0lEQVQ4Ea2VS0iUURTH7+v7dAwnLMhWjURRm4IeOtEmS4VQ6GFNUYFG+UCooDYlBAktCqIXRVEUvaggqVQoNzallGiboKIWvSha5MLSMZ2Z7746Z9JptLEHdQbmu9+95/+7595z7v0oSWOFDUTkFqwKTPQ7Qa7oIkN4kFIzw1r2mhHdrYXt6o/I7p7HTe8fNBA1FkHHdmxoXpHrnzhhCyV2D+PUT+xYD3gHldYmYik5MNAXvXB9ZUtPqlcqlFa1rZgjfFlHBeXLrDbEpgMOqykoKWdEWR1W0aGd54pbnsFQQpGEbutcOcdY3yXhOPNU7KcVpQYyqi0yBVFSPmE0WnlycTOCCcO/iraiyVq5J/4WiNuAAaAO9chBHi9sKBRT8qbucFyxVXsa+/7YDCGSc8q1hFQKkUeJ+yU770UXCxQEApzZPVb9YgPTTGOs7pADg8VK6lbmMIJ6anl9oKAywLL8Q0EmqN+mTfMYGiYHNsxa0zlg1KbzZS0dWulTylNR3EgOnAQPZggSWEfSQMgEeCRTODyC/ZBto02n9syGq0tvfaxuK893MsRexxE+a2ClwEEes8RZlArEtpbqHQaOZZMweHKYSEr5SA9GKs6WNH6oC4cWOBnuKeGKoFY/okIeA+pMFFL4WQNxKHLwq+eVgeMRjBb7OUQoY/FL8Z6va8+Wtr6pvR9aDrPcgOQsVPHRyUUeM5S8QqilFjNIldFPr5Tcfhnvj++HU3NG+DiRnursj3i7L667+6nmQflSSukx7rLpWo4GIgd5jBLZhS+4XAuHG4I6VNu+rvTi6qY+1RfdFx2M74qrWDUexar20DLGxEnhOrMMlFE6Qx6texjaSIm4OpIsyikxnuqF81d5uqTxDgmFOGls1FXhNaWCu4eFw2ablD0cBcbKIGoTG4pkdRtlI7h3aFZDvTl8MnHFlZpwqAz7ajrWz3eFOO644wNRr4GDPJ4zM2cgZ1q2FS4rSpRFggwJYsQH1Vy8IJ9FBaX13BFz8eSMZ1iGkOWGt4+utSbCwzM7wZ1008nMXJJ6meDszMWqgASMt2SYBS8VGYu1D3qf11wuvtcLu0AINrjwtuNtgw4jhqcMCv23QNShHjmoTUCxAdfWcy86tNmTMoxLSRY+DqYxHEc/9Ecd6kfcvmdn5A2e//vmT6L/9Rv1DasAwJ2jW2dLAAAAAElFTkSuQmCC') no-repeat scroll 0 0;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
left: 312px;
|
||||
}
|
||||
.int-item .meta.warning{
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlpJREFUOBGtlb9vE1EMx+333p3aQg8BAhYoUtOOHahEErEASf+ADjCDkGBjYGPsxsjABgNiAgmGDpVYmkIWlDCEASYKrfixAAKhS9JWee+esSNdiAJpSYKnnJ+/n/Pz2Q7CX+zZOTAZdeakUZM5giSPSuUQcIaA3pH3VQRdcb5efe9ffDj/HFwvAnsdG8XcsQl98AoDbiqFEcEfIewh8J5iDcmtRlK/P12qfunmdCtwo1ic2xeEtw1iISEWdkf2/Fb8rBHBEa01bevGdKn0ml0kYR3op4WFuXFjHiDqU5Z2w4nstwWogCh5te3cpROrqwIGeSF8LmYPBwrvDAoUrSQgOtELR3xqCcAYfehaYMKzg2Qo4tREJ3qD0VX5yPixUMgEQVjTSkWe6zisKa5v4n1sbWveGBXkuOCRTxLm/Xste1/uuZKSGDHPgPI5cWAUAR49wgXRHD9IxvytfQL09Rv4RoP1nqGEeRwbg+DiBQgXFwGDcGAo2Ra0lpfBPnwE0GzmuSVpFib3g56fb9+Itrd6b7b3szFtvV1ZAdxqzBoiXId6I5vUaqCnpgDHJ4bKVPTM4Z7FdQNIFdrZydrHT8CVyyPVlDk8TlQx4FVV8Qj4OAaKf+591b4RChSDPPOM87aKFMZaa+7T9oD1le12kPap8PSBzc366cwMGa2KozS/kSydXXqblJ7KmDqX/LhrXassy2EYE53oHcX3ZL+2KcdLL79bT9dl2wwKTreU6IUjSXVS47X1hgf3siO/FvAcdw76pC7nEifxohN9GtrZp6njf2/+lAuj/kf9ArVlQDDNYNOoAAAAAElFTkSuQmCC') no-repeat scroll 0 0;
|
||||
height: 21px;
|
||||
width: 21px;
|
||||
position: relative;
|
||||
top: -8px;
|
||||
left: 312px;
|
||||
}
|
||||
.int-item .app {
|
||||
float: left;
|
||||
/*padding-right: 10px;*/
|
||||
width: 75%;
|
||||
}
|
||||
.int-item .app .more-info {
|
||||
cursor: auto;
|
||||
float: none;
|
||||
height: auto;
|
||||
margin-left: 10px;
|
||||
width: auto;
|
||||
}
|
||||
.int-item .meta {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
max-width: 100px;
|
||||
text-align: right;
|
||||
}
|
||||
.int-item .meta .developer {
|
||||
color: #333333;
|
||||
display: block;
|
||||
}
|
||||
#wpfc-premium-container{
|
||||
overflow: hidden;
|
||||
}
|
||||
.wpfc-premium-step{
|
||||
width: 246px;
|
||||
float: left;
|
||||
margin-left: 3px;
|
||||
}
|
||||
.wpfc-premium-step div{
|
||||
float: left !important;
|
||||
}
|
||||
.wpfc-premium-step-header{
|
||||
width: 100%;
|
||||
background-color: rgb(58, 158, 235);
|
||||
padding-top: 12px;
|
||||
padding-bottom: 11px;
|
||||
text-align: center;
|
||||
}
|
||||
.wpfc-premium-step-header label{
|
||||
font-size: 17pt !important;
|
||||
color: white !important;
|
||||
font-weight: normal !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
.wpfc-premium-step-content{
|
||||
font-size: 16px !important;
|
||||
line-height: 20px !important;
|
||||
padding-top: 25px !important;
|
||||
padding-left: 25px !important;
|
||||
height: 100px;
|
||||
}
|
||||
.wpfc-premium-step-footer p{
|
||||
font-size: 15px !important;
|
||||
}
|
||||
.wpfc-premium-step-footer ul li{
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAYAAACXtf2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExOEMxNEJENkJCQTMxQTY0OSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNDA0MUQ4RTAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNDA0MUQ4RDAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzNDYwOTkyMEYyMDY4MTE4NzFGQ0NDRDhCOTMyRDhEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA0ODAxMTc0MDcyMDY4MTE4QzE0QkQ2QkJBMzFBNjQ5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+U7CKjQAAAX1JREFUeNpiZFj/gYES8D+AH85m3PBREEj1AbEHEO8E4kIWBioBoOEaQGoBEJtDheKB+AcLlQx3AVKrgVgATSqCiQqGRwOpTVgMB4HjlFqQAcRLgJgTi9wXIC6hxIIqIJ6OR74AmACukmtBJRC34pGfDTR8LohBjgVlQNyGR/44EGfCODALhIHYFYj5CBheDMSdeOTvA3EI0PV/kS0wAOKTQLwLShvj0AxyVQ8ew0GRGg40/BmyIMiCSUCsDOWDMstmIFZH0xwHxNMI+C4KaPhpdEGQBWpoYpJAvAWIZaD8UCBeSMDwOKDhm7FJgCyYh0VcBYg3AHENEK8gYHgR0PDFODMisLADZZJj0LggFYDS+kR8CkA++A7ECVCaFJAPxBMJKYIl04tAnEiC4enQxMFArAUgsBKImwmo/woqIYF4FrEuQc/JdUC8DIfat0DsA3UIA7kWwCqKPWhiR4HYBIgPkJoKsFnwB4jDgHg5EL8A4jlA7A3ED8gpFQECDADtslAckBdkiwAAAABJRU5ErkJggg==") no-repeat scroll 0 2px transparent;
|
||||
padding: 3px 30px;
|
||||
font-size: 15px;
|
||||
}
|
||||
.wpfc-premium-step-footer{
|
||||
padding-left: 25px;
|
||||
}
|
||||
.wpfc-premium-step-image{
|
||||
width: 100%;
|
||||
height: 180px;
|
||||
text-align: center;
|
||||
}
|
||||
.wpfc-form-spinner, .wpfc-form-spinner-input-td, .wpfc-form-spinner-number, .wpfc-form-spinner-up, .wpfc-form-spinner-down{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
|
||||
|
||||
.exclude_section_clear {
|
||||
background: none;
|
||||
border-bottom: 1px solid #e6e6e6;
|
||||
clear: both;
|
||||
float: left;
|
||||
marig-left: 1px;
|
||||
margin-bottom: 0px;
|
||||
margin-top: 16px;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
width: 97%;
|
||||
}
|
||||
.error-wpfc{
|
||||
border-color: #D8000C !important;
|
||||
color: #D8000C !important;
|
||||
background: #FFBABA url("") no-repeat 10px !important;
|
||||
}
|
||||
.success-wpfc, .error-wpfc{
|
||||
background-position: 10px center !important;
|
||||
padding-bottom: 5px !important;
|
||||
padding-top: 5px !important;
|
||||
}
|
||||
.success-wpfc{
|
||||
border-color: #4F8A10 !important;
|
||||
color: #4F8A10 !important;
|
||||
background: #DFF2BF url("") no-repeat 10px !important;
|
||||
}
|
||||
.success-wpfc p, .error-wpfc p{
|
||||
padding: 2px 2px 2px 0px !important;
|
||||
}
|
||||
/* input[type=checkbox]:checked:before { color: #e14d43;} */
|
||||
19
wp-content/plugins/wp-fastest-cache/css/toolbar.css
Normal file
BIN
wp-content/plugins/wp-fastest-cache/images/ads/1-de.jpg
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/1.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/2-de.jpg
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/2.jpg
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/3-de.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/3.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/4-de.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/ads/4.jpg
Normal file
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 14 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/bunny-cdn-icon.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/button-back-blood.png
Normal file
|
After Width: | Height: | Size: 585 B |
BIN
wp-content/plugins/wp-fastest-cache/images/button-back-fire.png
Normal file
|
After Width: | Height: | Size: 559 B |
BIN
wp-content/plugins/wp-fastest-cache/images/button-back-green.png
Normal file
|
After Width: | Height: | Size: 587 B |
BIN
wp-content/plugins/wp-fastest-cache/images/cancel.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/check.png
Normal file
|
After Width: | Height: | Size: 836 B |
BIN
wp-content/plugins/wp-fastest-cache/images/close-wiz-sprite.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/cloudflare.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/crown.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/customer-service.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/dollar-gold.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/fast-foward.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/icon-24x24.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/icon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/icon.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
1
wp-content/plugins/wp-fastest-cache/images/icon.svg
Normal file
|
After Width: | Height: | Size: 23 KiB |
1
wp-content/plugins/wp-fastest-cache/images/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
BIN
wp-content/plugins/wp-fastest-cache/images/info.png
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
wp-content/plugins/wp-fastest-cache/images/label-bg.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/left-right.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/loader-statics.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/loader.gif
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/loading-circle.gif
Normal file
|
After Width: | Height: | Size: 659 B |
BIN
wp-content/plugins/wp-fastest-cache/images/no-image.gif
Normal file
|
After Width: | Height: | Size: 501 B |
BIN
wp-content/plugins/wp-fastest-cache/images/othercdn.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/pause.png
Normal file
|
After Width: | Height: | Size: 429 B |
3
wp-content/plugins/wp-fastest-cache/images/pause.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path id="XMLID_148_" d="M 12 0 C 5.373 0 0 5.373 0 12 C 0 18.627 5.373 24 12 24 C 18.627 24 24 18.627 24 12 C 23.999 5.373 18.627 0 12 0 Z M 11 15.639 C 11 16.136 10.597 16.539 10.099 16.539 C 9.602 16.539 9.199 16.136 9.199 15.639 L 9.199 8.837 C 9.199 8.339 9.602 7.937 10.099 7.937 C 10.597 7.937 11 8.339 11 8.837 L 11 15.639 Z M 14.8 15.639 C 14.8 16.136 14.398 16.539 13.9 16.539 C 13.403 16.539 13 16.136 13 15.639 L 13 8.837 C 13 8.339 13.403 7.937 13.9 7.937 C 14.398 7.937 14.8 8.339 14.8 8.837 L 14.8 15.639 Z" style="fill: rgb(242, 132, 0);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 696 B |
BIN
wp-content/plugins/wp-fastest-cache/images/price-mini-banner.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/refund.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/rocket.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/search_reset.jpg
Normal file
|
After Width: | Height: | Size: 896 B |
BIN
wp-content/plugins/wp-fastest-cache/images/stackpath.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/star-rating.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
4
wp-content/plugins/wp-fastest-cache/images/success.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg width="800px" height="800px" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zm2.72 5.22a.75.75 0 111.06 1.06l-4.5 4.5a.75.75 0 01-1.06 0l-2-2a.75.75 0 011.06-1.06l1.47 1.47 3.97-3.97z" clip-rule="evenodd" style="fill: rgb(120, 187, 6);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 370 B |
BIN
wp-content/plugins/wp-fastest-cache/images/tinymce-wpfcnot.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
wp-content/plugins/wp-fastest-cache/images/varnish.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
131
wp-content/plugins/wp-fastest-cache/inc/admin-toolbar.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
class WpFastestCacheAdminToolbar{
|
||||
private $is_multi = false;
|
||||
|
||||
public function __construct($is_multi){
|
||||
$this->is_multi = $is_multi;
|
||||
}
|
||||
|
||||
public function add(){
|
||||
if(is_admin()){
|
||||
add_action('wp_before_admin_bar_render', array($this, "wpfc_tweaked_toolbar_on_admin_panel"));
|
||||
add_action('admin_enqueue_scripts', array($this, 'load_toolbar_js'));
|
||||
add_action('admin_enqueue_scripts', array($this, 'load_toolbar_css'));
|
||||
add_action('wp_print_scripts', array($this, 'print_my_inline_script'));
|
||||
}else{
|
||||
if(is_admin_bar_showing()){
|
||||
add_action('wp_before_admin_bar_render', array($this, "wpfc_tweaked_toolbar_on_frontpage"));
|
||||
add_action('wp_enqueue_scripts', array($this, 'load_toolbar_js'));
|
||||
add_action('wp_enqueue_scripts', array($this, 'load_toolbar_css'));
|
||||
add_action('wp_footer', array($this, 'print_my_inline_script'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function load_toolbar_js(){
|
||||
wp_enqueue_script("wpfc-toolbar", plugins_url("wp-fastest-cache/js/toolbar.js"), array('jquery'), time(), true);
|
||||
}
|
||||
|
||||
public function load_toolbar_css(){
|
||||
wp_enqueue_style("wp-fastest-cache-toolbar", plugins_url("wp-fastest-cache/css/toolbar.css"), array(), time(), "all");
|
||||
}
|
||||
|
||||
public function print_my_inline_script() {
|
||||
$script = "
|
||||
var wpfc_ajaxurl = '" . admin_url('admin-ajax.php') . "';
|
||||
var wpfc_nonce = '" . wp_create_nonce("wpfc") . "';
|
||||
";
|
||||
echo wp_print_inline_script_tag($script);
|
||||
}
|
||||
|
||||
public function wpfc_tweaked_toolbar_on_frontpage() {
|
||||
global $wp_admin_bar;
|
||||
|
||||
$wp_admin_bar->add_node(array(
|
||||
'id' => 'wpfc-toolbar-parent',
|
||||
'title' => 'WP Fastest Cache',
|
||||
'href' => admin_url( 'admin.php?page=wpfastestcacheoptions')
|
||||
));
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-clear-cache-of-this-page',
|
||||
'title' => 'Clear Cache of This Page',
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-delete-cache',
|
||||
'title' => __("Clear All Cache", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-delete-cache-and-minified',
|
||||
'title' => 'Clear Cache and Minified CSS/JS',
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
|
||||
if($this->is_multi){
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-clear-cache-of-allsites',
|
||||
'title' => __("Clear Cache of All Sites", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
public function wpfc_tweaked_toolbar_on_admin_panel() {
|
||||
global $wp_admin_bar;
|
||||
|
||||
$wp_admin_bar->add_node(array(
|
||||
'id' => 'wpfc-toolbar-parent',
|
||||
'title' => 'WP Fastest Cache',
|
||||
'href' => admin_url( 'admin.php?page=wpfastestcacheoptions')
|
||||
));
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-delete-cache',
|
||||
'title' => __("Clear All Cache", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-delete-cache-and-minified',
|
||||
'title' => __("Clear Cache and Minified CSS/JS", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
|
||||
if($this->is_multi){
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-clear-cache-of-allsites',
|
||||
'title' => __("Clear Cache of All Sites", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
}
|
||||
|
||||
if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){
|
||||
$wp_admin_bar->add_menu( array(
|
||||
'id' => 'wpfc-toolbar-parent-settings',
|
||||
'title' => __("Toolbar Settings", "wp-fastest-cache"),
|
||||
'parent'=> 'wpfc-toolbar-parent',
|
||||
'href' => '#',
|
||||
'meta' => array("class" => "wpfc-toolbar-child")
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
2621
wp-content/plugins/wp-fastest-cache/inc/admin.php
Normal file
1445
wp-content/plugins/wp-fastest-cache/inc/cache.php
Normal file
651
wp-content/plugins/wp-fastest-cache/inc/cdn.php
Normal file
@@ -0,0 +1,651 @@
|
||||
<?php
|
||||
class CdnWPFC{
|
||||
public static function cloudflare_generate_header($email, $key){
|
||||
if($email == "wpfc"){
|
||||
$header = array(
|
||||
"Authorization" => "Bearer ".$key,
|
||||
"Content-Type" => "application/json"
|
||||
);
|
||||
}else{
|
||||
$header = array(
|
||||
"X-Auth-Email" => $email,
|
||||
"X-Auth-Key" => $key,
|
||||
"Content-Type" => "application/json"
|
||||
);
|
||||
}
|
||||
|
||||
return $header;
|
||||
}
|
||||
|
||||
public static function cloudflare_clear_cache($email = false, $key = false, $zoneid = false){
|
||||
if(isset($GLOBALS["wpfc_cloudflare_purge_cache_executed"])){
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$key && !$zoneid){
|
||||
if($cdn_values = get_option("WpFastestCacheCDN")){
|
||||
$std_obj = json_decode($cdn_values);
|
||||
|
||||
foreach ($std_obj as $key => $value) {
|
||||
if($value->id == "cloudflare"){
|
||||
$email = $value->cdnurl;
|
||||
$key = $value->originurl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($key){
|
||||
$zone = self::cloudflare_get_zone_id($email, $key, false);
|
||||
|
||||
if($zone["success"]){
|
||||
$zoneid = $zone["zoneid"];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($key && $zoneid){
|
||||
$header = array("method" => "DELETE",
|
||||
'headers' => self::cloudflare_generate_header($email, $key),
|
||||
"body" => '{"purge_everything":true}'
|
||||
);
|
||||
|
||||
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/purge_cache', $header);
|
||||
|
||||
if(!$response || is_wp_error($response)){
|
||||
return array("success" => false, "error_message" => "Unable to disable rocket loader option");
|
||||
}else{
|
||||
$body = json_decode(wp_remote_retrieve_body($response));
|
||||
|
||||
if(!$body->success){
|
||||
CdnWPFC::cloudflare_delete_zone_id_value();
|
||||
}else{
|
||||
$GLOBALS["wpfc_cloudflare_purge_cache_executed"] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function cloudflare_disable_rocket_loader($email = false, $key = false, $zoneid = false){
|
||||
if($key && $zoneid){
|
||||
$header = array("method" => "PATCH",
|
||||
'timeout' => 10,
|
||||
'headers' => self::cloudflare_generate_header($email, $key),
|
||||
'body' => '{"value":"off"}'
|
||||
);
|
||||
|
||||
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/rocket_loader', $header);
|
||||
|
||||
if(!$response || is_wp_error($response)){
|
||||
return array("success" => false, "error_message" => "Unable to disable rocket loader option");
|
||||
}else{
|
||||
$body = json_decode(wp_remote_retrieve_body($response));
|
||||
|
||||
if($body->success){
|
||||
return array("success" => true);
|
||||
}else if(isset($body->errors) && isset($body->errors[0])){
|
||||
return array("success" => false, "error_message" => $body->errors[0]->message);
|
||||
}else{
|
||||
return array("success" => false, "error_message" => "Unknown error: 101");
|
||||
}
|
||||
}
|
||||
|
||||
return array("success" => false, "error_message" => "Unknown error");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function cloudflare_set_browser_caching($email = false, $key = false, $zoneid = false){
|
||||
if($key && $zoneid){
|
||||
$header = array("method" => "PATCH",
|
||||
'timeout' => 10,
|
||||
'headers' => self::cloudflare_generate_header($email, $key),
|
||||
'body' => '{"value":16070400}'
|
||||
);
|
||||
|
||||
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/browser_cache_ttl', $header);
|
||||
|
||||
if(!$response || is_wp_error($response)){
|
||||
return array("success" => false, "error_message" => "Unable to set the browser caching option");
|
||||
}else{
|
||||
$body = json_decode(wp_remote_retrieve_body($response));
|
||||
|
||||
if($body->success){
|
||||
return array("success" => true);
|
||||
}else if(isset($body->errors) && isset($body->errors[0])){
|
||||
return array("success" => false, "error_message" => $body->errors[0]->message);
|
||||
}else{
|
||||
return array("success" => false, "error_message" => "Unknown error: 101");
|
||||
}
|
||||
}
|
||||
|
||||
return array("success" => false, "error_message" => "Unknown error");
|
||||
}
|
||||
}
|
||||
|
||||
public static function cloudflare_disable_minify($email = false, $key = false, $zoneid = false){
|
||||
// Deprecated
|
||||
// https://developers.cloudflare.com/speed/optimization/content/auto-minify/
|
||||
|
||||
return array("success" => true);
|
||||
|
||||
if($key && $zoneid){
|
||||
$header = array("method" => "PATCH",
|
||||
'timeout' => 10,
|
||||
'headers' => self::cloudflare_generate_header($email, $key),
|
||||
'body' => '{"value":{"css":"off","html":"off","js":"off"}}'
|
||||
);
|
||||
|
||||
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/minify', $header);
|
||||
|
||||
if(!$response || is_wp_error($response)){
|
||||
return array("success" => false, "error_message" => "Unable to disable minify options");
|
||||
}else{
|
||||
$body = json_decode(wp_remote_retrieve_body($response));
|
||||
|
||||
if($body->success){
|
||||
return array("success" => true);
|
||||
}else if(isset($body->errors) && isset($body->errors[0])){
|
||||
return array("success" => false, "error_message" => $body->errors[0]->message);
|
||||
}else{
|
||||
return array("success" => false, "error_message" => "Unknown error: 101");
|
||||
}
|
||||
}
|
||||
|
||||
return array("success" => false, "error_message" => "Unknown error");
|
||||
}else{
|
||||
wp_die("bad request");
|
||||
}
|
||||
}
|
||||
|
||||
public static function cloudflare_get_zone_id($email = false, $key = false){
|
||||
$cache_zone_id = CdnWPFC::cloudflare_get_zone_id_value();
|
||||
|
||||
if($cache_zone_id){
|
||||
return $cache_zone_id;
|
||||
}
|
||||
|
||||
if(substr_count($_SERVER["HTTP_HOST"], ".") == 1){
|
||||
$hostname = preg_replace("/^(https?\:\/\/)/", "", $_SERVER["HTTP_HOST"]);
|
||||
}else{
|
||||
$hostname = preg_replace("/^(https?\:\/\/)?(www\d*\.)?/", "", $_SERVER["HTTP_HOST"]);
|
||||
}
|
||||
|
||||
if(extension_loaded('intl') && function_exists("idn_to_utf8")){
|
||||
$hostname = idn_to_utf8($hostname);
|
||||
}
|
||||
|
||||
$header = array(
|
||||
"method" => "GET",
|
||||
'headers' => self::cloudflare_generate_header($email, $key)
|
||||
);
|
||||
|
||||
$all_zones = [];
|
||||
|
||||
// Request page 1 and page 2
|
||||
for ($page = 1; $page <= 2; $page++) {
|
||||
$response = wp_remote_request("https://api.cloudflare.com/client/v4/zones/?page=$page&per_page=1000", $header);
|
||||
|
||||
if (!$response || is_wp_error($response)) {
|
||||
return array("success" => false, "error_message" => $response->get_error_message());
|
||||
}
|
||||
|
||||
$zone = json_decode(wp_remote_retrieve_body($response));
|
||||
|
||||
if (isset($zone->errors) && isset($zone->errors[0])) {
|
||||
$error_message = $zone->errors[0]->message;
|
||||
if (isset($zone->errors[0]->error_chain[0])) {
|
||||
$error_message = $zone->errors[0]->error_chain[0]->message;
|
||||
}
|
||||
return array("success" => false, "error_message" => $error_message);
|
||||
}
|
||||
|
||||
if (isset($zone->result)) {
|
||||
$all_zones = array_merge($all_zones, $zone->result);
|
||||
}
|
||||
}
|
||||
|
||||
// Search for the matching zone
|
||||
foreach ($all_zones as $zone_value) {
|
||||
if (preg_match("/" . preg_quote($zone_value->name, '/') . "/", $hostname)) {
|
||||
$res = array(
|
||||
"success" => true,
|
||||
"zoneid" => $zone_value->id,
|
||||
"plan" => $zone_value->plan->legacy_id
|
||||
);
|
||||
|
||||
CdnWPFC::cloudflare_save_zone_id_value($res);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
return array("success" => false, "error_message" => "No zone name " . $hostname);
|
||||
}
|
||||
|
||||
|
||||
public static function cloudflare_get_zone_id_value(){
|
||||
if($data = get_option("WpFastestCacheCDN")){
|
||||
$arr = json_decode($data);
|
||||
|
||||
if(is_array($arr)){
|
||||
foreach ($arr as $cdn_key => $cdn_value) {
|
||||
if($cdn_value->id == "cloudflare" && isset($cdn_value->zone_id)){
|
||||
return unserialize($cdn_value->zone_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function cloudflare_delete_zone_id_value(){
|
||||
if($data = get_option("WpFastestCacheCDN")){
|
||||
$arr = json_decode($data);
|
||||
|
||||
if(is_array($arr)){
|
||||
foreach ($arr as $cdn_key => $cdn_value) {
|
||||
if($cdn_value->id == "cloudflare"){
|
||||
if(isset($cdn_value->zone_id)){
|
||||
unset($cdn_value->zone_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($arr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function cloudflare_save_zone_id_value($value){
|
||||
if($data = get_option("WpFastestCacheCDN")){
|
||||
$arr = json_decode($data);
|
||||
|
||||
if(is_array($arr)){
|
||||
foreach ($arr as $cdn_key => &$cdn_value) {
|
||||
if($cdn_value->id == "cloudflare"){
|
||||
$value["time"] = time();
|
||||
$cdn_value->zone_id = serialize($value);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($arr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function cloudflare_remove_webp(){
|
||||
$path = ABSPATH.".htaccess";
|
||||
|
||||
if(file_exists($path)){
|
||||
if(is_writable($path)){
|
||||
$htaccess = file_get_contents($path);
|
||||
$htaccess = preg_replace("/#\s?BEGIN\s?WEBPWpFastestCache.*?#\s?END\s?WEBPWpFastestCache/s", "", $htaccess);
|
||||
|
||||
file_put_contents($path, $htaccess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function cloudflare_change_settings(){
|
||||
//admin OR author OR editor
|
||||
if(current_user_can('manage_options') || current_user_can('delete_published_posts') || current_user_can('edit_published_posts')){
|
||||
if(isset($_GET["url"]) && isset($_GET["origin_url"])){
|
||||
$email = sanitize_text_field($_GET["url"]);
|
||||
$key = sanitize_text_field($_GET["origin_url"]);
|
||||
}
|
||||
|
||||
$zone = CdnWPFC::cloudflare_get_zone_id($email, $key);
|
||||
|
||||
if($zone["success"]){
|
||||
|
||||
$minify = CdnWPFC::cloudflare_disable_minify($email, $key, $zone["zoneid"]);
|
||||
$rocket_loader = CdnWPFC::cloudflare_disable_rocket_loader($email, $key, $zone["zoneid"]);
|
||||
$purge_cache = CdnWPFC::cloudflare_clear_cache($email, $key, $zone["zoneid"]);
|
||||
$browser_caching = CdnWPFC::cloudflare_set_browser_caching($email, $key, $zone["zoneid"]);
|
||||
|
||||
if($zone["plan"] == "free"){
|
||||
CdnWPFC::cloudflare_remove_webp();;
|
||||
}
|
||||
|
||||
|
||||
if($minify["success"]){
|
||||
if($rocket_loader["success"]){
|
||||
if($browser_caching["success"]){
|
||||
$res = array("success" => true);
|
||||
}else{
|
||||
$res = array("success" => false, "error_message" => $browser_caching["error_message"]);
|
||||
}
|
||||
}else{
|
||||
$res = array("success" => false, "error_message" => $rocket_loader["error_message"]);
|
||||
}
|
||||
}else{
|
||||
$res = array("success" => false, "error_message" => $minify["error_message"]);
|
||||
}
|
||||
}else{
|
||||
$res = $zone;
|
||||
}
|
||||
|
||||
wp_send_json($res);
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function check_url(){
|
||||
if(current_user_can('manage_options')){
|
||||
if(isset($_GET["type"]) && $_GET["type"] == "cloudflare"){
|
||||
CdnWPFC::cloudflare_change_settings();
|
||||
}
|
||||
|
||||
if(preg_match("/wp\.com/", $_GET["url"]) || $_GET["url"] == "random"){
|
||||
wp_send_json(array("success" => true));
|
||||
}
|
||||
|
||||
if(
|
||||
// IPv6
|
||||
preg_match("/\:\:/", $_GET["url"]) ||
|
||||
// decimal
|
||||
(preg_match("/\d{10}/", $_GET["url"]) && !preg_match("/\./", $_GET["url"])) ||
|
||||
// hex
|
||||
(preg_match("/0x[0-9a-fA-F]{1,8}/", $_GET["url"]) && !preg_match("/\./", $_GET["url"])) ||
|
||||
preg_match("/0x[0-9a-fA-F]{1,2}\.0x[0-9a-fA-F]{1,2}\.0x[0-9a-fA-F]{1,2}\.0x[0-9a-fA-F]{1,2}/", $_GET["url"]) ||
|
||||
// octal
|
||||
preg_match("/(https?\:\/\/)?[0-9]{4,5}\.[0-9]{1,5}\.[0-9]{1,5}\.[0-9]{1,5}/", $_GET["url"]) ||
|
||||
// localhost
|
||||
preg_match("/(\/\/)?localhost/i", $_GET["url"]) ||
|
||||
preg_match("/(https?\:\/\/)?(127|10|172|169|100|198|192)\.\d{1,3}\.\d{1,3}\.\d{1,3}/", $_GET["url"])
|
||||
){
|
||||
$res = array("success" => false, "error_message" => "Localhost is not allowed");
|
||||
wp_send_json($res);
|
||||
}
|
||||
|
||||
$host = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|
||||
$_GET["url"] = esc_url_raw($_GET["url"]);
|
||||
|
||||
if(!preg_match("/^http/", $_GET["url"])){
|
||||
$_GET["url"] = "http://".$_GET["url"];
|
||||
}
|
||||
|
||||
if(preg_match("/^https/i", site_url()) && preg_match("/^https/i", home_url())){
|
||||
$_GET["url"] = preg_replace("/http\:\/\//i", "https://", $_GET["url"]);
|
||||
}
|
||||
|
||||
$response = wp_safe_remote_get($_GET["url"], array('timeout' => 20, 'redirection' => 0, 'user-agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"));
|
||||
|
||||
$header = wp_remote_retrieve_headers($response);
|
||||
|
||||
if ( !$response || is_wp_error( $response ) ) {
|
||||
$res = array("success" => false, "error_message" => esc_html($response->get_error_message()) );
|
||||
|
||||
if($response->get_error_code() == "http_request_failed"){
|
||||
if(esc_html($response->get_error_message()) == "Failure when receiving data from the peer"){
|
||||
$res = array("success" => true);
|
||||
}else if(preg_match("/cURL\serror\s60/i", esc_html($response->get_error_message()) )){
|
||||
//cURL error 60: SSL: no alternative certificate subject name matches target host name
|
||||
$res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/' target='_blank'>Please Read: https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/</a>");
|
||||
}else if(preg_match("/cURL\serror\s6/i", esc_html($response->get_error_message()) )){
|
||||
//cURL error 6: Couldn't resolve host
|
||||
if(preg_match("/".preg_quote($host, "/")."/i", $_GET["url"])){
|
||||
$res = array("success" => true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$response_code = wp_remote_retrieve_response_code( $response );
|
||||
if($response_code == 200){
|
||||
$res = array("success" => true);
|
||||
}else{
|
||||
if (is_object($response) && method_exists($response, "get_error_message")) {
|
||||
$res = array("success" => false, "error_message" => esc_html($response->get_error_message()) );
|
||||
}else{
|
||||
$res = array("success" => false, "error_message" => esc_html(wp_remote_retrieve_response_message($response)) );
|
||||
}
|
||||
|
||||
if(isset($header["server"]) && preg_match("/squid/i", $header["server"])){
|
||||
$res = array("success" => true);
|
||||
}
|
||||
|
||||
if(($response_code == 400) && (preg_match("/speedsize\.com/i", $_GET["url"]))){
|
||||
$res = array("success" => true);
|
||||
}
|
||||
|
||||
if(($response_code == 401) && (preg_match("/res\.cloudinary\.com/i", $_GET["url"]))){
|
||||
$res = array("success" => true);
|
||||
}
|
||||
|
||||
if(($response_code == 403) && (preg_match("/stackpathdns\.com/i", $_GET["url"]))){
|
||||
$res = array("success" => true);
|
||||
}
|
||||
|
||||
if(($response_code == 403) && (preg_match("/cloudfront\.net/i", $_GET["url"]))){
|
||||
$res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/blog/how-to-fix-403-access-denied-errors-during-cdn-integration/#wpft-amazon-cloudfront' target='_blank'>Please Read: Amazon CloudFront 403 Error</a>");
|
||||
}
|
||||
|
||||
if(($response_code == 403) && (preg_match("/b\-cdn\.net/i", $_GET["url"]))){
|
||||
$res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/blog/how-to-fix-403-access-denied-errors-during-cdn-integration/#wpft-bunny-cdn' target='_blank'>Please Read: BunnyCDN 403 Error</a>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wp_send_json($res);
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function cdn_options(){
|
||||
if(current_user_can('manage_options')){
|
||||
$cdn_values = get_option("WpFastestCacheCDN");
|
||||
if($cdn_values){
|
||||
echo $cdn_values;
|
||||
}else{
|
||||
echo json_encode(array("success" => false));
|
||||
}
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function start_cdn_integration(){
|
||||
if(current_user_can('manage_options')){
|
||||
$cdn_values = get_option("WpFastestCacheCDN");
|
||||
|
||||
if($cdn_values){
|
||||
$std_obj = json_decode($cdn_values);
|
||||
$cdn_values_arr = array();
|
||||
|
||||
if(is_array($std_obj)){
|
||||
$cdn_values_arr = $std_obj;
|
||||
}else{
|
||||
array_push($cdn_values_arr, $std_obj);
|
||||
}
|
||||
|
||||
foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
|
||||
if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
|
||||
$cdn_value->id = "other";
|
||||
}
|
||||
|
||||
if($cdn_value->id == $_POST["id"]){
|
||||
unset($cdn_value->status);
|
||||
}
|
||||
}
|
||||
|
||||
$cdn_values_arr = array_values($cdn_values_arr);
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($cdn_values_arr));
|
||||
}
|
||||
|
||||
echo json_encode(array("success" => true));
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function pause_cdn_integration(){
|
||||
if(current_user_can('manage_options')){
|
||||
$cdn_values = get_option("WpFastestCacheCDN");
|
||||
|
||||
if($cdn_values){
|
||||
$std_obj = json_decode($cdn_values);
|
||||
$cdn_values_arr = array();
|
||||
|
||||
if(is_array($std_obj)){
|
||||
$cdn_values_arr = $std_obj;
|
||||
}else{
|
||||
array_push($cdn_values_arr, $std_obj);
|
||||
}
|
||||
|
||||
foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
|
||||
if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
|
||||
$cdn_value->id = "other";
|
||||
}
|
||||
|
||||
if($cdn_value->id == $_POST["id"]){
|
||||
$cdn_value->status = "pause";
|
||||
}
|
||||
}
|
||||
|
||||
$cdn_values_arr = array_values($cdn_values_arr);
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($cdn_values_arr));
|
||||
}
|
||||
|
||||
echo json_encode(array("success" => true));
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function remove_cdn_integration(){
|
||||
if(current_user_can('manage_options')){
|
||||
$cdn_values = get_option("WpFastestCacheCDN");
|
||||
|
||||
if($cdn_values){
|
||||
$std_obj = json_decode($cdn_values);
|
||||
$cdn_values_arr = array();
|
||||
|
||||
if(is_array($std_obj)){
|
||||
$cdn_values_arr = $std_obj;
|
||||
}else{
|
||||
array_push($cdn_values_arr, $std_obj);
|
||||
}
|
||||
|
||||
foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
|
||||
if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
|
||||
$cdn_value->id = "other";
|
||||
}
|
||||
|
||||
if($cdn_value->id == $_POST["id"]){
|
||||
unset($cdn_values_arr[$cdn_key]);
|
||||
}
|
||||
}
|
||||
|
||||
$cdn_values_arr = array_values($cdn_values_arr);
|
||||
}
|
||||
|
||||
if(count($cdn_values_arr) > 0){
|
||||
update_option("WpFastestCacheCDN", json_encode($cdn_values_arr));
|
||||
}else{
|
||||
delete_option("WpFastestCacheCDN");
|
||||
}
|
||||
|
||||
echo json_encode(array("success" => true));
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function cdn_template(){
|
||||
if(current_user_can('manage_options')){
|
||||
if($_POST["id"] == "maxcdn"){
|
||||
$path = WPFC_MAIN_PATH."templates/cdn/maxcdn.php";
|
||||
}else if($_POST["id"] == "other"){
|
||||
$path = WPFC_MAIN_PATH."templates/cdn/other.php";
|
||||
}else if($_POST["id"] == "cloudflare"){
|
||||
$path = WPFC_MAIN_PATH."templates/cdn/cloudflare.php";
|
||||
}else{
|
||||
die("Wrong cdn");
|
||||
}
|
||||
|
||||
|
||||
ob_start();
|
||||
include_once($path);
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$res = array("success" => false, "content" => "");
|
||||
|
||||
if($data = @file_get_contents($path)){
|
||||
$res["success"] = true;
|
||||
$res["content"] = $content;
|
||||
}
|
||||
|
||||
echo json_encode($res);
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
public static function save_cdn_integration(){
|
||||
if(current_user_can('manage_options') && wp_verify_nonce($_POST["nonce"], "cdn-nonce")){
|
||||
$values = array();
|
||||
|
||||
if(isset($_POST) && isset($values)){
|
||||
foreach ($_POST["values"] as $val_key => $val_value) {
|
||||
$values[$val_key] = sanitize_text_field($val_value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($data = get_option("WpFastestCacheCDN")){
|
||||
$cdn_exist = false;
|
||||
$arr = json_decode($data);
|
||||
|
||||
if(is_array($arr)){
|
||||
foreach ($arr as $cdn_key => &$cdn_value) {
|
||||
if($cdn_value->id == $values["id"]){
|
||||
$cdn_value = $values;
|
||||
$cdn_exist = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$cdn_exist){
|
||||
array_push($arr, $values);
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($arr));
|
||||
}else{
|
||||
$tmp_arr = array();
|
||||
|
||||
if($arr->id == $values["id"]){
|
||||
array_push($tmp_arr, $values);
|
||||
}else{
|
||||
array_push($tmp_arr, $arr);
|
||||
array_push($tmp_arr, $values);
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheCDN", json_encode($tmp_arr));
|
||||
}
|
||||
}else{
|
||||
$arr = array();
|
||||
array_push($arr, $values);
|
||||
|
||||
add_option("WpFastestCacheCDN", json_encode($arr), null, "yes");
|
||||
}
|
||||
echo json_encode(array("success" => true));
|
||||
exit;
|
||||
}else{
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
class ClearingSpecificPagesWPFC{
|
||||
|
||||
public static function remove(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-save-csp-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
$_POST["order"] = sanitize_text_field($_POST["order"]);
|
||||
|
||||
$urls = get_option("WpFastestCacheCSP");
|
||||
|
||||
if(!empty($urls)){
|
||||
foreach ($urls as $key => $value) {
|
||||
if($value->order == ($_POST["order"])){
|
||||
unset($urls[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($urls)){
|
||||
delete_option("WpFastestCacheCSP");
|
||||
}else{
|
||||
update_option("WpFastestCacheCSP", $urls, 1, "no");
|
||||
}
|
||||
|
||||
wp_send_json_success();
|
||||
}
|
||||
|
||||
public static function check_url(){
|
||||
$home_url = parse_url(get_option("home"), PHP_URL_HOST);
|
||||
$specific_url = parse_url($_POST["url"], PHP_URL_HOST);
|
||||
|
||||
if($home_url == $specific_url){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function check_wild_card(){
|
||||
if(preg_match("/[^\/]\(\.\*\)/", $_POST["url"])){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(substr_count($_POST["url"], "(.*)") > 1){
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function save(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-save-csp-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
if(!self::check_url()){
|
||||
wp_send_json_error("The URL must start with ".parse_url(get_option("home"), PHP_URL_SCHEME)."//".parse_url(get_option("home"), PHP_URL_HOST));
|
||||
}
|
||||
|
||||
if(!self::check_wild_card()){
|
||||
wp_send_json_error("Wrong Wild Card Usage");
|
||||
}
|
||||
|
||||
if(preg_match("/\.{2,}/", $_POST["url"])){
|
||||
wp_send_json_error("May be Directory Traversal Attack");
|
||||
}
|
||||
|
||||
$_POST["url"] = sanitize_url($_POST["url"]);
|
||||
$_POST["order"] = sanitize_text_field($_POST["order"]);
|
||||
|
||||
$urls = get_option("WpFastestCacheCSP");
|
||||
$url = (object)array("url" => $_POST["url"], "order" => $_POST["order"]);
|
||||
|
||||
if(!is_array($urls)){
|
||||
$urls = array();
|
||||
|
||||
array_push($urls, $url);
|
||||
|
||||
add_option("WpFastestCacheCSP", $urls, 1, "no");
|
||||
}else{
|
||||
$is_update = false;
|
||||
|
||||
foreach ($urls as $key => &$value) {
|
||||
if($value->order == ($_POST["order"])){
|
||||
$is_update = true;
|
||||
$value->url = $_POST["url"];
|
||||
}
|
||||
}
|
||||
|
||||
if(!$is_update){
|
||||
array_push($urls, $url);
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheCSP", $urls, 1, "no");
|
||||
}
|
||||
|
||||
wp_send_json_success();
|
||||
}
|
||||
|
||||
public static function get_list(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-save-csp-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
$urls = get_option("WpFastestCacheCSP");
|
||||
|
||||
if(!is_array($urls)){
|
||||
$urls = array();
|
||||
}
|
||||
|
||||
wp_send_json_success($urls);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
86
wp-content/plugins/wp-fastest-cache/inc/cli.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* WP-CLI commands for WP Fastest Cache.
|
||||
*/
|
||||
|
||||
if(!defined('ABSPATH')){
|
||||
exit;
|
||||
}
|
||||
|
||||
// This is a WP-CLI command, so bail if it's not available.
|
||||
if(!defined('WP_CLI')){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
class wpfcCLI extends \WP_CLI_Command
|
||||
{
|
||||
/**
|
||||
* Clears the cache.
|
||||
*
|
||||
* ## EXAMPLES
|
||||
* wp fastest-cache clear all
|
||||
* wp fastest-cache clear all and minified
|
||||
*
|
||||
*
|
||||
* @subcommand clear
|
||||
*
|
||||
* @param array $args Args.
|
||||
* @param array $args_assoc Associative args.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function wrong_usage(){
|
||||
$message = array("*************************************************************************",
|
||||
"* Wrong usage! *",
|
||||
"* Please read: https://www.wpfastestcache.com/features/wp-cli-commands/ *",
|
||||
"*************************************************************************");
|
||||
WP_CLI::error_multi_line($message);
|
||||
}
|
||||
|
||||
public function clear($args, $args_assoc){
|
||||
if(isset($GLOBALS['wp_fastest_cache'])){
|
||||
if(method_exists($GLOBALS['wp_fastest_cache'], 'deleteCache')){
|
||||
if(isset($args_assoc["post_id"])){
|
||||
$post_ids = explode(',' , $args_assoc['post_id'] );
|
||||
|
||||
foreach($post_ids as $post_id){
|
||||
|
||||
WP_CLI::line("Clearing the cache of the post with ID number ".$post_id);
|
||||
$GLOBALS['wp_fastest_cache']->singleDeleteCache(false, $post_id);
|
||||
WP_CLI::success("The cache has been cleared!");
|
||||
}
|
||||
|
||||
}else if(isset($args[0])){
|
||||
if($args[0] == "all"){
|
||||
if(isset($args[1]) && isset($args[2])){
|
||||
if($args[1] == "and" && $args[2] == "minified"){
|
||||
WP_CLI::line("Clearing the ALL cache...");
|
||||
$GLOBALS['wp_fastest_cache']->deleteCache(true);
|
||||
WP_CLI::success("The cache has been cleared!");
|
||||
}else{
|
||||
self::wrong_usage();
|
||||
}
|
||||
}else{
|
||||
WP_CLI::line("Clearing the ALL cache...");
|
||||
$GLOBALS['wp_fastest_cache']->deleteCache();
|
||||
WP_CLI::success("The cache has been cleared!");
|
||||
}
|
||||
}else{
|
||||
self::wrong_usage();
|
||||
}
|
||||
}else{
|
||||
self::wrong_usage();
|
||||
}
|
||||
}else{
|
||||
WP_CLI::error("deleteCache() does not exist!");
|
||||
}
|
||||
}else{
|
||||
WP_CLI::error("GLOBALS['wp_fastest_cache'] has not been defined!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WP_CLI::add_command( 'fastest-cache', 'wpfcCLI' );
|
||||
|
||||
?>
|
||||
33
wp-content/plugins/wp-fastest-cache/inc/column.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
class WpFastestCacheColumn{
|
||||
public function __construct(){}
|
||||
|
||||
public function add(){
|
||||
add_filter('post_row_actions', array($this, 'add_clear_cache_link'), 10, 2);
|
||||
add_filter('page_row_actions', array($this, 'add_clear_cache_link'), 10, 2);
|
||||
|
||||
|
||||
add_action('admin_enqueue_scripts', array($this, 'load_js'));
|
||||
add_action('wp_ajax_wpfc_clear_cache_column', array($this, "clear_cache_column"));
|
||||
}
|
||||
|
||||
public function add_clear_cache_link($actions, $post){
|
||||
$actions['clear_cache_link'] = '<a data-id="'.$post->ID.'" data-nonce="'.wp_create_nonce('clear-cache_'.$post->ID).'" id="wpfc-clear-cache-link-'.$post->ID.'" style="cursor:pointer;">' . __('Clear Cache') . '</a>';
|
||||
return $actions;
|
||||
}
|
||||
|
||||
public function clear_cache_column(){
|
||||
if(wp_verify_nonce($_GET["nonce"], 'clear-cache_'.$_GET["id"])){
|
||||
$GLOBALS["wp_fastest_cache"]->singleDeleteCache(false, esc_sql($_GET["id"]));
|
||||
|
||||
die(json_encode(array("success" => true)));
|
||||
}else{
|
||||
die(json_encode(array("success" => false)));
|
||||
}
|
||||
}
|
||||
|
||||
public function load_js(){
|
||||
wp_enqueue_script("wpfc-column", plugins_url("wp-fastest-cache/js/column.js"), array(), time(), true);
|
||||
}
|
||||
}
|
||||
?>
|
||||
767
wp-content/plugins/wp-fastest-cache/inc/css-utilities.php
Normal file
@@ -0,0 +1,767 @@
|
||||
<?php
|
||||
class CssUtilities{
|
||||
private $html = "";
|
||||
private $tags = array();
|
||||
private $except = "";
|
||||
private $wpfc;
|
||||
private $url = "";
|
||||
private $url_for_fix = "";
|
||||
|
||||
public function __construct($wpfc, $html){
|
||||
|
||||
$this->wpfc = $wpfc;
|
||||
$this->html = $html;
|
||||
$this->set_except_tags();
|
||||
$this->set_tags();
|
||||
$this->tags_reorder();
|
||||
}
|
||||
|
||||
public function check_exclude($css_url = false){
|
||||
if($css_url){
|
||||
// to exclude the css source of elementor which is /elementor/css/post-[number].css to avoid increasing the size of minified sources
|
||||
if(preg_match("/\/elementor\/css\/post-\d+\.css/i", $css_url)){
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach((array)$this->wpfc->exclude_rules as $key => $value){
|
||||
|
||||
if(isset($value->prefix) && $value->prefix && $value->type == "css"){
|
||||
if($value->prefix == "contain"){
|
||||
$preg_match_rule = preg_quote($value->content, "/");
|
||||
}
|
||||
|
||||
if(preg_match("/".$preg_match_rule."/i", $css_url)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function combineCss(){
|
||||
$all = array();
|
||||
$group = array();
|
||||
|
||||
foreach ($this->tags as $key => $value) {
|
||||
if(preg_match("/<link/i", $value["text"])){
|
||||
|
||||
if($this->except){
|
||||
if(strpos($this->except, $value["text"]) !== false){
|
||||
array_push($all, $group);
|
||||
$group = array();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$this->checkInternal($value["text"])){
|
||||
array_push($all, $group);
|
||||
$group = array();
|
||||
continue;
|
||||
}
|
||||
|
||||
if($this->check_exclude($value["text"])){
|
||||
array_push($all, $group);
|
||||
$group = array();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(count($group) > 0){
|
||||
if($group[0]["media"] == $value["media"]){
|
||||
array_push($group, $value);
|
||||
}else{
|
||||
array_push($all, $group);
|
||||
$group = array();
|
||||
array_push($group, $value);
|
||||
}
|
||||
}else{
|
||||
array_push($group, $value);
|
||||
}
|
||||
|
||||
if($value === end($this->tags)){
|
||||
array_push($all, $group);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(preg_match("/<style/i", $value["text"])){
|
||||
if(count($group) > 0){
|
||||
array_push($all, $group);
|
||||
$group = array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($all) > 0){
|
||||
$all = array_reverse($all);
|
||||
|
||||
foreach ($all as $group_key => $group_value) {
|
||||
if(count($group_value) > 0){
|
||||
|
||||
$combined_css = "";
|
||||
$combined_name = $this->wpfc->create_name($group_value);
|
||||
$combined_link = "";
|
||||
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/".$combined_name;
|
||||
$cssLink = $this->convert_path_to_link($cachFilePath);
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
$combined_link = '<link rel="stylesheet" type="text/css" href="'.$cssLink."/".$cssFiles[0].'" media="'.$group_value[0]["media"].'"/>';
|
||||
|
||||
if($css_content = $this->wpfc->read_file($cssLink."/".$cssFiles[0])){
|
||||
|
||||
$css_content = $this->apply_filter($css_content);
|
||||
|
||||
$combined_link = $this->to_inline($combined_link, $css_content);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$combined_css = $this->create_content(array_reverse($group_value));
|
||||
$combined_css = $this->fix_charset($combined_css);
|
||||
|
||||
if($combined_css){
|
||||
|
||||
if($this->wpfc->cdn){
|
||||
$combined_css = preg_replace_callback("/(url)\(([^\)]+)\)/i", array($this->wpfc, 'cdn_replace_urls'), $combined_css);
|
||||
}
|
||||
|
||||
|
||||
$this->wpfc->createFolder($cachFilePath, $combined_css, "css");
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
$combined_link = '<link rel="stylesheet" type="text/css" href="'.$cssLink."/".$cssFiles[0].'" media="'.$group_value[0]["media"].'"/>';
|
||||
|
||||
$combined_css = $this->apply_filter($combined_css);
|
||||
|
||||
$combined_link = $this->to_inline($combined_link, $combined_css);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($combined_link){
|
||||
foreach (array_reverse($group_value) as $tag_key => $tag_value) {
|
||||
$text = substr($this->html, $tag_value["start"], ($tag_value["end"]-$tag_value["start"] + 1));
|
||||
|
||||
if($tag_key > 0){
|
||||
$this->html = substr_replace($this->html, "<!-- ".$text." -->", $tag_value["start"], ($tag_value["end"] - $tag_value["start"] + 1));
|
||||
}else{
|
||||
$this->html = substr_replace($this->html, "<!-- ".$text." -->"."\n".$combined_link, $tag_value["start"], ($tag_value["end"] - $tag_value["start"] + 1));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
public function create_content($group_value){
|
||||
$combined_css = "";
|
||||
foreach ($group_value as $tag_key => $tag_value) {
|
||||
$minifiedCss = $this->minify($tag_value["href"]);
|
||||
|
||||
if($minifiedCss){
|
||||
$combined_css = $minifiedCss["cssContent"].$combined_css;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return $combined_css;
|
||||
}
|
||||
|
||||
public function minifyCss(){
|
||||
$data = $this->html;
|
||||
|
||||
if(count($this->tags) > 0){
|
||||
foreach (array_reverse($this->tags) as $key => $value) {
|
||||
$text = substr($data, $value["start"], ($value["end"]-$value["start"] + 1));
|
||||
|
||||
if(preg_match("/<link/i", $text)){
|
||||
if($href = $this->checkInternal($text)){
|
||||
if($this->check_exclude($href)){
|
||||
continue;
|
||||
}
|
||||
|
||||
$minifiedCss = $this->minify($href);
|
||||
|
||||
if($minifiedCss){
|
||||
$prefixLink = str_replace(array("http:", "https:"), "", $minifiedCss["url"]);
|
||||
$text = preg_replace("/href\=[\"\'][^\"\']+[\"\']/", "href='".$prefixLink."'", $text);
|
||||
|
||||
|
||||
$minifiedCss["cssContent"] = $this->apply_filter($minifiedCss["cssContent"]);
|
||||
|
||||
|
||||
$text = $this->to_inline($text, $minifiedCss["cssContent"]);
|
||||
|
||||
$this->html = substr_replace($this->html, $text, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
public function to_inline($link, $css_content){
|
||||
if(!isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheRenderBlocking)){
|
||||
return $link;
|
||||
}
|
||||
|
||||
if(!preg_match("/\smedia\=[\'\"]all[\'\"]/i", $link)){
|
||||
return $link;
|
||||
}
|
||||
|
||||
if(isset($css_content["11000"])){
|
||||
return $link;
|
||||
}
|
||||
|
||||
$link = "<style>".$css_content."</style>";
|
||||
|
||||
return $link;
|
||||
}
|
||||
|
||||
public function tags_reorder(){
|
||||
$sorter = array();
|
||||
$ret = array();
|
||||
|
||||
foreach ($this->tags as $ii => $va) {
|
||||
$sorter[$ii] = $va['start'];
|
||||
}
|
||||
|
||||
asort($sorter);
|
||||
|
||||
foreach ($sorter as $ii => $va) {
|
||||
$ret[$ii] = $this->tags[$ii];
|
||||
}
|
||||
|
||||
$this->tags = $ret;
|
||||
}
|
||||
|
||||
public function set_except_tags(){
|
||||
$comment_tags = $this->find_tags("<!--", "-->");
|
||||
|
||||
foreach ($comment_tags as $key => $value) {
|
||||
$this->except = $value["text"].$this->except;
|
||||
}
|
||||
|
||||
// to execute if html contains <noscript> tag
|
||||
if(preg_match("/<noscript/i", $this->html)){
|
||||
$noscript_tags = $this->find_tags("<noscript", "</noscript>");
|
||||
|
||||
foreach ($noscript_tags as $key => $value) {
|
||||
$this->except = $value["text"].$this->except;
|
||||
|
||||
if(isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheLazyLoad)){
|
||||
// to set noscript for lazy load
|
||||
// <noscript><img src="http://google.com/image.jpg"></noscript>
|
||||
$GLOBALS["wp_fastest_cache"]->noscript = $value["text"].$GLOBALS["wp_fastest_cache"]->noscript;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// $("head").append( "<link rel='stylesheet' id='ms-fonts' href='//fonts.googleapis.com/css?family=Exo+2:regular' type='text/css' media='all' />" );
|
||||
$script_tags = $this->find_tags("<script", "</script>");
|
||||
|
||||
foreach ($script_tags as $key => $value) {
|
||||
$link_tags = $this->find_tags("<link", ">", $value["text"]);
|
||||
|
||||
if(count($link_tags) > 0){
|
||||
$this->except = $value["text"].$this->except;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function set_tags(){
|
||||
$style_tags = $this->find_tags("<style", "</style>");
|
||||
$this->tags = array_merge($this->tags, $style_tags);
|
||||
|
||||
$link_tags = $this->find_tags("<link", ">");
|
||||
|
||||
foreach ($link_tags as $key => $value) {
|
||||
//<link rel='stylesheet' id='avada-dynamic-css-css' href='/wp-content/uploads/avada-styles/avada-9.css?timestamp=1485306359&ver=4.7.2' type='text/css' media='all' />
|
||||
if(preg_match("/avada-dynamic-css-css/", $value["text"])){
|
||||
continue;
|
||||
}
|
||||
|
||||
preg_match("/media\=[\'\"]([^\'\"]+)[\'\"]/", $value["text"], $media);
|
||||
preg_match("/href\=[\'\"]([^\'\"]+)[\'\"]/", $value["text"], $href);
|
||||
|
||||
$media[1] = (isset($media[1]) && $media[1]) ? trim($media[1]) : "";
|
||||
$value["media"] = (isset($media[1]) && $media[1]) ? $media[1] : "all";
|
||||
|
||||
if(isset($href[1])){
|
||||
$href[1] = trim($href[1]);
|
||||
$value["href"] = (isset($href[1]) && $href[1]) ? $href[1] : "";
|
||||
|
||||
if(preg_match("/href\s*\=/i", $value["text"])){
|
||||
if(preg_match("/rel\s*\=\s*[\'\"]\s*stylesheet\s*[\'\"]/i", $value["text"])){
|
||||
array_push($this->tags, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function find_tags($start_string, $end_string, $source = false){
|
||||
if($source){
|
||||
$data = $source;
|
||||
}else{
|
||||
$data = $this->html;
|
||||
}
|
||||
|
||||
$list = array();
|
||||
$start_index = false;
|
||||
$end_index = false;
|
||||
|
||||
for($i = 0; $i < strlen( $data ); $i++) {
|
||||
if(substr($data, $i, strlen($start_string)) == $start_string){
|
||||
$start_index = $i;
|
||||
}
|
||||
|
||||
if($start_index && $i > $start_index){
|
||||
if(substr($data, $i, strlen($end_string)) == $end_string){
|
||||
$end_index = $i + strlen($end_string)-1;
|
||||
$text = substr($data, $start_index, ($end_index-$start_index + 1));
|
||||
|
||||
|
||||
array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text));
|
||||
|
||||
|
||||
$start_index = false;
|
||||
$end_index = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function minify($url){
|
||||
$this->url = $url;
|
||||
$md5 = $this->wpfc->create_name($url);
|
||||
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/".$md5;
|
||||
$cssLink = $this->convert_path_to_link($cachFilePath);
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
if($cssContent = $this->file_get_contents_curl($cssLink."/".$cssFiles[0])){
|
||||
|
||||
|
||||
$cssContent = $this->apply_filter($cssContent);
|
||||
|
||||
|
||||
return array("cachFilePath" => $cachFilePath, "cssContent" => $cssContent, "url" => $cssLink."/".$cssFiles[0], "realUrl" => $url);
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($cssContent = $this->file_get_contents_curl($url, "?v=".time())){
|
||||
|
||||
$original_content_length = strlen($cssContent);
|
||||
|
||||
if(isset($this->wpfc->options->wpFastestCacheMinifyCss) && $this->wpfc->options->wpFastestCacheMinifyCss){
|
||||
$cssContent = $this->_process($cssContent);
|
||||
}
|
||||
|
||||
$cssContent = $this->fixPathsInCssContent($cssContent, $url);
|
||||
|
||||
$cssContent = $this->apply_filter($cssContent);
|
||||
|
||||
if(isset($this->wpfc->options->wpFastestCacheMinifyCssPowerFul) && $this->wpfc->options->wpFastestCacheMinifyCssPowerFul){
|
||||
if(class_exists("WpFastestCachePowerfulHtml")){
|
||||
$powerful_html = new WpFastestCachePowerfulHtml();
|
||||
$cssContent = $powerful_html->minify_css($cssContent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$cssContent = str_replace("\xEF\xBB\xBF", '', $cssContent);
|
||||
|
||||
// If the content is empty, the file is not created. This breaks "combine css" feature
|
||||
if(strlen($cssContent) == 0 && $original_content_length > 0){
|
||||
return array("cssContent" => "", "url" => $url);
|
||||
}
|
||||
|
||||
if(!is_dir($cachFilePath)){
|
||||
if($this->wpfc->cdn){
|
||||
$cssContent = preg_replace_callback("/(url)\(([^\)]+)\)/i", array($this->wpfc, 'cdn_replace_urls'), $cssContent);
|
||||
}
|
||||
|
||||
$this->wpfc->createFolder($cachFilePath, $cssContent, "css");
|
||||
}
|
||||
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
return array("cachFilePath" => $cachFilePath, "cssContent" => $cssContent, "url" => $cssLink."/".$cssFiles[0], "realUrl" => $url);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function fixPathsInCssContent($css, $url){
|
||||
$this->url_for_fix = $url;
|
||||
|
||||
$css = preg_replace("/@import\s+[\"\']([^\;\"\'\)]+)[\"\'];/", "@import url($1);", $css);
|
||||
$css = preg_replace_callback("/url\(([^\)\n]*)\)/", array($this, 'newImgPath'), $css);
|
||||
$css = preg_replace_callback('/@import\s+url\(([^\)]+)\);/i', array($this, 'fix_import_rules'), $css);
|
||||
$css = $this->fix_charset($css);
|
||||
|
||||
return $css;
|
||||
}
|
||||
|
||||
public function svg_to_file($source){
|
||||
return $source;
|
||||
|
||||
if(preg_match("/base64\,/", $source)){
|
||||
$is_base64 = true;
|
||||
}else{
|
||||
$is_base64 = false;
|
||||
}
|
||||
|
||||
if(preg_match("/\,(%3Csvg|<svg)/", $source) || $is_base64){
|
||||
$source = preg_replace("/\"|\'/", "", $source);
|
||||
$source = preg_replace("/data[^\,]+\,/", "", $source);
|
||||
|
||||
if($is_base64){
|
||||
$source = base64_decode($source);
|
||||
}else{
|
||||
$source = rawurldecode($source);
|
||||
}
|
||||
|
||||
|
||||
$md5 = $this->wpfc->create_name($source);
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/svg-".$md5;
|
||||
|
||||
$this->wpfc->createFolder($cachFilePath, $source, "svg");
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
$source = $this->convert_path_to_link($cachFilePath."/".$cssFiles[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $source;
|
||||
}
|
||||
|
||||
public function woff_to_file($source){
|
||||
return $source;
|
||||
|
||||
// url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAA")
|
||||
if(preg_match("/base64\,/", $source)){
|
||||
$is_base64 = true;
|
||||
}else{
|
||||
$is_base64 = false;
|
||||
}
|
||||
|
||||
if($is_base64){
|
||||
// not to use preg_match() for the speed
|
||||
$source = strstr($source, 'base64,');
|
||||
$source = str_replace("base64,", "", $source);
|
||||
$source = trim($source);
|
||||
$source = str_replace(array("'", '"'), "", $source);
|
||||
|
||||
$md5 = $this->wpfc->create_name($source);
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/woff-".$md5;
|
||||
|
||||
$this->wpfc->createFolder($cachFilePath, $source, "woff");
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($cssFiles = @scandir($cachFilePath, 1)){
|
||||
$link = $this->convert_path_to_link($cachFilePath."/".$cssFiles[0]);
|
||||
|
||||
return $link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $source;
|
||||
}
|
||||
|
||||
|
||||
public function newImgPath($matches){
|
||||
$matches[1] = trim($matches[1]);
|
||||
|
||||
|
||||
if(preg_match("/data\:font\/opentype/i", $matches[1])){
|
||||
|
||||
}else if(preg_match("/^%23/", $matches[1])){
|
||||
// %23 => #
|
||||
// data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='url(%23d)'
|
||||
|
||||
$matches[1] = $matches[1];
|
||||
}else if(preg_match("/data\:application\/(x-)?font-woff/i", $matches[1])){
|
||||
// data:application/font-woff
|
||||
// data:application/x-font-woff
|
||||
|
||||
$matches[1] = $this->woff_to_file($matches[1]);
|
||||
}else if(preg_match("/data\:image\/svg\+xml/i", $matches[1])){
|
||||
$matches[1] = $this->svg_to_file($matches[1]);
|
||||
}else{
|
||||
$matches[1] = str_replace(array("\"","'"), "", $matches[1]);
|
||||
$matches[1] = trim($matches[1]);
|
||||
|
||||
if(!$matches[1]){
|
||||
$matches[1] = "";
|
||||
}else if(preg_match("/^\#/", $matches[1])){
|
||||
$matches[1] = $matches[1];
|
||||
}else if(preg_match("/^(\/\/|http|\/\/fonts|data:image|data:application)/", $matches[1])){
|
||||
if(preg_match("/fonts\.googleapis\.com/", $matches[1])){ // for safari browser
|
||||
$matches[1] = '"'.$matches[1].'"';
|
||||
}else{
|
||||
$matches[1] = $matches[1];
|
||||
}
|
||||
}else if(preg_match("/^\//", $matches[1])){
|
||||
$homeUrl = str_replace(array("http:", "https:"), "", home_url());
|
||||
$matches[1] = $homeUrl.$matches[1];
|
||||
}else if(preg_match("/^\.\/.+/i", $matches[1])){
|
||||
//$matches[1] = str_replace("./", get_template_directory_uri()."/", $matches[1]);
|
||||
$matches[1] = str_replace("./", dirname($this->url_for_fix)."/", $matches[1]);
|
||||
}else if(preg_match("/^(?P<up>(\.\.\/)+)(?P<name>.+)/", $matches[1], $out)){
|
||||
$count = strlen($out["up"])/3;
|
||||
$url = dirname($this->url);
|
||||
for($i = 1; $i <= $count; $i++){
|
||||
$url = substr($url, 0, strrpos($url, "/"));
|
||||
}
|
||||
$url = str_replace(array("http:", "https:"), "", $url);
|
||||
$matches[1] = $url."/".$out["name"];
|
||||
}else{
|
||||
$url = str_replace(array("http:", "https:"), "", dirname($this->url));
|
||||
$matches[1] = $url."/".$matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
return "url(".$matches[1].")";
|
||||
}
|
||||
|
||||
public function apply_filter($content){
|
||||
return apply_filters('wpfc_css_content', $content, null, null);
|
||||
}
|
||||
|
||||
public function fix_charset($css){
|
||||
preg_match_all('/@charset[^\;]+\;/i', $css, $charsets);
|
||||
if(count($charsets[0]) > 0){
|
||||
$css = preg_replace('/@charset[^\;]+\;/i', "", $css);
|
||||
foreach($charsets[0] as $charset){
|
||||
$css = $charset."\n".$css;
|
||||
}
|
||||
}
|
||||
return $css;
|
||||
}
|
||||
|
||||
public function fix_import_rules($matches){
|
||||
if($this->is_internal_css($matches[1])){
|
||||
if($cssContent = $this->file_get_contents_curl($matches[1], "?v=".time())){
|
||||
$tmp_url = $this->url;
|
||||
$this->url = $matches[1];
|
||||
$cssContent = $this->fixPathsInCssContent($cssContent, $matches[1]);
|
||||
$this->url = $tmp_url;
|
||||
|
||||
// to minify again because of the @import css sources
|
||||
if(isset($this->wpfc->options->wpFastestCacheMinifyCss) && $this->wpfc->options->wpFastestCacheMinifyCss){
|
||||
$cssContent = $this->_process($cssContent);
|
||||
}
|
||||
|
||||
return $cssContent;
|
||||
}
|
||||
}
|
||||
|
||||
return $matches[0];
|
||||
}
|
||||
|
||||
protected $_inHack = false;
|
||||
|
||||
protected function _process($css){
|
||||
$css = preg_replace("/^\s+/m", "", ((string) $css));
|
||||
$css = str_replace("\r", "", $css);
|
||||
|
||||
$css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@'
|
||||
,array($this, '_commentCB'), $css);
|
||||
|
||||
//to remove empty chars from url()
|
||||
$css = preg_replace("/url\((\s+)([^\)]+)(\s+)\)/", "url($2)", $css);
|
||||
|
||||
return trim($css);
|
||||
}
|
||||
|
||||
protected function _commentCB($m){
|
||||
$hasSurroundingWs = (trim($m[0]) !== $m[1]);
|
||||
$m = $m[1];
|
||||
// $m is the comment content w/o the surrounding tokens,
|
||||
// but the return value will replace the entire comment.
|
||||
if ($m === 'keep') {
|
||||
return '/**/';
|
||||
}
|
||||
if ($m === '" "') {
|
||||
// component of http://tantek.com/CSS/Examples/midpass.html
|
||||
return '/*" "*/';
|
||||
}
|
||||
if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {
|
||||
// component of http://tantek.com/CSS/Examples/midpass.html
|
||||
return '/*";}}/* */';
|
||||
}
|
||||
if ($this->_inHack) {
|
||||
// inversion: feeding only to one browser
|
||||
if (preg_match('@
|
||||
^/ # comment started like /*/
|
||||
\\s*
|
||||
(\\S[\\s\\S]+?) # has at least some non-ws content
|
||||
\\s*
|
||||
/\\* # ends like /*/ or /**/
|
||||
@x', $m, $n)) {
|
||||
// end hack mode after this comment, but preserve the hack and comment content
|
||||
$this->_inHack = false;
|
||||
return "/*/{$n[1]}/**/";
|
||||
}
|
||||
}
|
||||
if (substr($m, -1) === '\\') { // comment ends like \*/
|
||||
// begin hack mode and preserve hack
|
||||
$this->_inHack = true;
|
||||
return '/*\\*/';
|
||||
}
|
||||
if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */
|
||||
// begin hack mode and preserve hack
|
||||
$this->_inHack = true;
|
||||
return '/*/*/';
|
||||
}
|
||||
if ($this->_inHack) {
|
||||
// a regular comment ends hack mode but should be preserved
|
||||
$this->_inHack = false;
|
||||
return '/**/';
|
||||
}
|
||||
// Issue 107: if there's any surrounding whitespace, it may be important, so
|
||||
// replace the comment with a single space
|
||||
return $hasSurroundingWs // remove all other comments
|
||||
? ' '
|
||||
: '';
|
||||
}
|
||||
|
||||
public function checkInternal($link){
|
||||
$httpHost = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|
||||
|
||||
if(preg_match("/href=[\"\'](.*?)[\"\']/", $link, $href)){
|
||||
|
||||
if(preg_match("/^\/[^\/]/", $href[1])){
|
||||
return $href[1];
|
||||
}
|
||||
|
||||
if(@strpos($href[1], $httpHost)){
|
||||
return $href[1];
|
||||
}
|
||||
|
||||
// if(preg_match("/fonts\.googleapis\.com/i", $href[1])){
|
||||
// //http://fonts.googleapis.com/css?family=Raleway%3A400%2C600
|
||||
// if(preg_match("/Raleway/i", $href[1])){
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// return $href[1];
|
||||
// }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function is_internal_css($url){
|
||||
$http_host = trim($_SERVER["HTTP_HOST"], "www.");
|
||||
|
||||
$url = trim($url);
|
||||
$url = trim($url, "'");
|
||||
$url = trim($url, '"');
|
||||
|
||||
$url = str_replace(array("http://", "https://"), "", $url);
|
||||
|
||||
$url = trim($url, '//');
|
||||
$url = trim($url, 'www.');
|
||||
|
||||
if($url){
|
||||
if(preg_match("/".$http_host."/i", $url)){
|
||||
return true;
|
||||
}
|
||||
|
||||
// if(preg_match("/fonts\.googleapis\.com/i", $url)){
|
||||
// //http://fonts.googleapis.com/css?family=Raleway%3A400%2C600
|
||||
// if(preg_match("/Raleway/i", $url)){
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// return true;
|
||||
// }
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function convert_path_to_link($path){
|
||||
preg_match("/\/cache\/.+/", $path, $out);
|
||||
$prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL);
|
||||
|
||||
return $prefixLink.$out[0];
|
||||
}
|
||||
|
||||
public function file_get_contents_curl($url, $version = ""){
|
||||
if($data = $this->wpfc->read_file($url)){
|
||||
return $data;
|
||||
}
|
||||
|
||||
$url = str_replace('&', '&', $url);
|
||||
|
||||
if(preg_match("/\.php\?/i", $url)){
|
||||
$version = "";
|
||||
}
|
||||
|
||||
if(preg_match("/(fonts\.googleapis\.com|iire-social-icons)/i", $url)){
|
||||
$version = "";
|
||||
$url = str_replace(array("'",'"'), "", $url);
|
||||
}
|
||||
|
||||
$url = $url.$version;
|
||||
|
||||
if(preg_match("/^\/[^\/]/", $url)){
|
||||
$url = get_option("home").$url;
|
||||
}
|
||||
|
||||
if(preg_match("/http\:\/\//i", home_url())){
|
||||
$url = preg_replace("/^\/\//", "http://", $url);
|
||||
}else if(preg_match("/https\:\/\//i", home_url())){
|
||||
$url = preg_replace("/^\/\//", "https://", $url);
|
||||
}
|
||||
|
||||
//$response = wp_remote_get($url, array('timeout' => 10, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"))));
|
||||
$response = wp_remote_get($url, array('timeout' => 10, 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'));
|
||||
|
||||
if ( !$response || is_wp_error( $response ) ) {
|
||||
return false;
|
||||
}else{
|
||||
if(wp_remote_retrieve_response_code($response) == 200){
|
||||
$data = wp_remote_retrieve_body( $response );
|
||||
|
||||
if(preg_match("/\<\!DOCTYPE/i", $data) || preg_match("/<\/\s*html\s*>/i", $data)){
|
||||
return false;
|
||||
}else if(!$data){
|
||||
return "/* empty */";
|
||||
}else{
|
||||
return $data;
|
||||
}
|
||||
}else if(wp_remote_retrieve_response_code($response) == 404){
|
||||
if(preg_match("/\.css/", $url)){
|
||||
return "/*404*/";
|
||||
}else{
|
||||
return "<!-- 404 -->";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
1
wp-content/plugins/wp-fastest-cache/inc/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
341
wp-content/plugins/wp-fastest-cache/inc/js-utilities.php
Normal file
@@ -0,0 +1,341 @@
|
||||
<?php
|
||||
class JsUtilities{
|
||||
private $wpfc;
|
||||
private $html = "";
|
||||
private $jsLinks = array();
|
||||
private $jsLinksExcept = "";
|
||||
private $url = "";
|
||||
private $minify;
|
||||
|
||||
public function __construct($wpfc, $html, $minify = false){
|
||||
|
||||
//$this->html = preg_replace("/\s+/", " ", ((string) $html));
|
||||
$this->minify = $minify;
|
||||
$this->wpfc = $wpfc;
|
||||
$this->html = $html;
|
||||
|
||||
$this->setJsLinksExcept();
|
||||
$this->setJsLinks();
|
||||
}
|
||||
|
||||
public function check_exclude($js_url = false){
|
||||
if($js_url){
|
||||
foreach((array)$this->wpfc->exclude_rules as $key => $value){
|
||||
|
||||
if(isset($value->prefix) && $value->prefix && $value->type == "js"){
|
||||
if($value->prefix == "contain"){
|
||||
$preg_match_rule = preg_quote($value->content, "/");
|
||||
}
|
||||
|
||||
if(preg_match("/".$preg_match_rule."/i", $js_url)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function combine_js(){
|
||||
if(count($this->jsLinks) > 0){
|
||||
$prev_content = "";
|
||||
foreach($this->jsLinks as $key => $value){
|
||||
$script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
|
||||
if(!preg_match("/<script[^>]+json[^>]+>.+/", $script_tag) && !preg_match("/<script[^>]+text\/template[^>]+>.+/", $script_tag)){
|
||||
if($href = $this->checkInternal($script_tag)){
|
||||
if(strpos($this->jsLinksExcept, $href) === false){
|
||||
if($key == 0 && $this->check_exclude($href)){
|
||||
continue;
|
||||
}
|
||||
|
||||
if($key > 0 && $this->check_exclude($href)){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
continue;
|
||||
}
|
||||
|
||||
if(preg_match("/data-no-minify/i", $script_tag) || preg_match("/type\s*=\s*[\"\']\s*module\s*[\"\']/i", $script_tag)){
|
||||
if($key > 0 && $prev_content){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
continue;
|
||||
}else{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$minifiedJs = $this->minify($href);
|
||||
|
||||
if($minifiedJs){
|
||||
if(!is_dir($minifiedJs["cachFilePath"])){
|
||||
$this->wpfc->createFolder($minifiedJs["cachFilePath"], $minifiedJs["jsContent"], "js");
|
||||
}
|
||||
|
||||
if($jsFiles = @scandir($minifiedJs["cachFilePath"], 1)){
|
||||
|
||||
$jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]);
|
||||
|
||||
if($jsContent = $this->file_get_contents_curl($minifiedJs["url"]."/".$jsFiles[0]."?v=".time())){
|
||||
|
||||
if($key > 0 && preg_match("/^[\"\']use strict[\"\']/i", $jsContent)){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
}else{
|
||||
$prev_content = $jsContent."\n".$prev_content;
|
||||
|
||||
$script_tag = "<!-- ".$script_tag." -->";
|
||||
|
||||
if(($key + 1) == count($this->jsLinks)){
|
||||
$this->mergeJs($prev_content, $value, true);
|
||||
$prev_content = "";
|
||||
}else{
|
||||
$this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($key > 0 && $prev_content){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($key > 0 && $prev_content){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($key > 0 && $prev_content){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($key > 0 && $prev_content){
|
||||
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
||||
$prev_content = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->html;
|
||||
}
|
||||
|
||||
|
||||
public function setJsLinks(){
|
||||
$data = $this->html;
|
||||
$script_list = array();
|
||||
$script_start_index = false;
|
||||
|
||||
for($i = 0; $i < strlen( $data ); $i++) {
|
||||
if(isset($data[$i-6])){
|
||||
if(substr($data, $i-6, 7) == "<script"){
|
||||
$script_start_index = $i-6;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data[$i-8])){
|
||||
if($script_start_index){
|
||||
if(substr($data, $i-8, 9) == "</script>"){
|
||||
array_push($script_list, array("start" => $script_start_index, "end" => $i));
|
||||
$script_start_index = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(count($script_list) > 0){
|
||||
$this->jsLinks = array_reverse($script_list);
|
||||
}
|
||||
|
||||
// to update jsLinksExcept
|
||||
foreach($this->jsLinks as $key => $value){
|
||||
$script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
|
||||
if(preg_match("/wp-spamshield\/js\/jscripts\.php/i", $script_tag)){
|
||||
$this->jsLinksExcept = $this->jsLinksExcept.$script_tag;
|
||||
}
|
||||
|
||||
//amazonjs/components/js/jquery-tmpl/jquery.tmpl.min.js?ver=1.0.0pre
|
||||
if(preg_match("/jquery-tmpl\/jquery\.tmpl\.min\.js/i", $script_tag)){
|
||||
$this->jsLinksExcept = $this->jsLinksExcept.$script_tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function setJsLinksExcept(){
|
||||
$comment_tags = $this->find_tags("<!--", "-->");
|
||||
$document_write = $this->find_tags("document.write(", ")");
|
||||
|
||||
foreach ($comment_tags as $key => $value) {
|
||||
if(preg_match("/<script/i", $value["text"]) && preg_match("/<\/script/i", $value["text"])){
|
||||
$this->jsLinksExcept = $value["text"].$this->jsLinksExcept;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($document_write as $key => $value) {
|
||||
$this->jsLinksExcept = $value["text"].$this->jsLinksExcept;
|
||||
}
|
||||
}
|
||||
|
||||
public function minify($url){
|
||||
$this->url = $url;
|
||||
|
||||
$md5 = $this->wpfc->create_name($url);
|
||||
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/".$md5;
|
||||
$jsLink = $this->convert_path_to_link($cachFilePath);
|
||||
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
return array("cachFilePath" => $cachFilePath, "jsContent" => "", "url" => $jsLink);
|
||||
}else{
|
||||
if($js = $this->file_get_contents_curl($url)){
|
||||
|
||||
if($this->minify){
|
||||
if(class_exists("WpFastestCachePowerfulHtml")){
|
||||
$powerful_html = new WpFastestCachePowerfulHtml();
|
||||
$js = $powerful_html->minify_js($js);
|
||||
}else{
|
||||
$js = "\n// source --> ".$url." \n".$js;
|
||||
}
|
||||
}else{
|
||||
$js = "\n// source --> ".$url." \n".$js;
|
||||
}
|
||||
|
||||
return array("cachFilePath" => $cachFilePath, "jsContent" => $js, "url" => $jsLink);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function checkInternal($link){
|
||||
$httpHost = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|
||||
|
||||
if(preg_match("/^<script[^\>]+\>/i", $link, $script)){
|
||||
if(preg_match("/src=[\"\'](.*?)[\"\']/", $script[0], $src)){
|
||||
if(preg_match("/alexa\.com\/site\_stats/i", $src[1])){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(preg_match("/^\/[^\/]/", $src[1])){
|
||||
return $src[1];
|
||||
}
|
||||
|
||||
if(preg_match("/".preg_quote($httpHost, "/")."/i", $src[1])){
|
||||
//<script src="https://server1.opentracker.net/?site=www.site.com"></script>
|
||||
if(preg_match("/[\?\=].*".preg_quote($httpHost, "/")."/i", $src[1])){
|
||||
return false;
|
||||
}
|
||||
|
||||
return $src[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function mergeJs($js_content, $value, $last = false){
|
||||
$name = md5($js_content);
|
||||
|
||||
$name = base_convert(crc32($name), 20, 36);
|
||||
|
||||
$cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/".$name;
|
||||
$jsLink = $this->convert_path_to_link($cachFilePath);
|
||||
|
||||
if(!is_dir($cachFilePath)){
|
||||
$this->wpfc->createFolder($cachFilePath, $js_content, "js");
|
||||
}
|
||||
|
||||
if(is_dir($cachFilePath)){
|
||||
if($jsFiles = @scandir($cachFilePath, 1)){
|
||||
|
||||
$newLink = "<script src='".$jsLink."/".$jsFiles[0]."' type=\"text/javascript\"></script>";
|
||||
|
||||
$script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
|
||||
if($last){
|
||||
$script_tag = $newLink."\n<!-- ".$script_tag." -->\n";
|
||||
}else{
|
||||
$script_tag = $newLink."\n".$script_tag;
|
||||
}
|
||||
|
||||
$this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function convert_path_to_link($path){
|
||||
preg_match("/\/cache\/.+/", $path, $out);
|
||||
$prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL);
|
||||
|
||||
return $prefixLink.$out[0];
|
||||
}
|
||||
|
||||
public function file_get_contents_curl($url) {
|
||||
if($data = $this->wpfc->read_file($url)){
|
||||
return $data;
|
||||
}
|
||||
|
||||
if(!preg_match("/\.php$/", $url)){
|
||||
$url = $url."?v=".time();
|
||||
}
|
||||
|
||||
if(preg_match("/^\/[^\/]/", $url)){
|
||||
$url = home_url().$url;
|
||||
}
|
||||
|
||||
$url = preg_replace("/^\/\//", "http://", $url);
|
||||
|
||||
$response = wp_remote_get($url, array('timeout' => 10 ) );
|
||||
|
||||
if ( !$response || is_wp_error( $response ) ) {
|
||||
return false;
|
||||
}else{
|
||||
if(wp_remote_retrieve_response_code($response) == 200){
|
||||
$data = wp_remote_retrieve_body( $response );
|
||||
|
||||
if(preg_match("/<\/\s*html\s*>\s*$/i", $data)){
|
||||
return false;
|
||||
}else{
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function find_tags($start_string, $end_string){
|
||||
$data = $this->html;
|
||||
|
||||
$list = array();
|
||||
$start_index = false;
|
||||
$end_index = false;
|
||||
|
||||
for($i = 0; $i < strlen( $data ); $i++) {
|
||||
if(substr($data, $i, strlen($start_string)) == $start_string){
|
||||
$start_index = $i;
|
||||
}
|
||||
|
||||
if($start_index && $i > $start_index){
|
||||
if(substr($data, $i, strlen($end_string)) == $end_string){
|
||||
$end_index = $i + strlen($end_string)-1;
|
||||
$text = substr($data, $start_index, ($end_index-$start_index + 1));
|
||||
|
||||
|
||||
array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text));
|
||||
|
||||
|
||||
$start_index = false;
|
||||
$end_index = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
}
|
||||
?>
|
||||
892
wp-content/plugins/wp-fastest-cache/inc/preload.php
Normal file
@@ -0,0 +1,892 @@
|
||||
<?php
|
||||
class PreloadWPFC{
|
||||
private static $exclude_rules = false;
|
||||
|
||||
public static function wpml_get_permalink($post_id, $permalink){
|
||||
$my_post_language_details = apply_filters( 'wpml_post_language_details', NULL, $post_id) ;
|
||||
|
||||
if(is_array($my_post_language_details) && isset($my_post_language_details["language_code"])){
|
||||
$wpml_permalink = apply_filters( 'wpml_permalink', $permalink , $my_post_language_details["language_code"] );
|
||||
|
||||
return $wpml_permalink;
|
||||
}
|
||||
|
||||
return $permalink;
|
||||
}
|
||||
|
||||
public static function set_preload($slug){
|
||||
$preload_arr = array();
|
||||
|
||||
if(!empty($_POST) && isset($_POST["wpFastestCachePreload"])){
|
||||
if(!current_user_can('manage_options')){
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
|
||||
if(isset($_POST["wpFastestCachePreload_sitemap"]) && $_POST["wpFastestCachePreload_sitemap"]){
|
||||
$sitemap_url = explode(",", $_POST["wpFastestCachePreload_sitemap"]);
|
||||
$sitemap_arr = array();
|
||||
|
||||
foreach ($sitemap_url as $s_key => $s_value) {
|
||||
$s_value = esc_url($s_value);
|
||||
|
||||
array_push($sitemap_arr, array("url" => $s_value, "pointer" => 0));
|
||||
}
|
||||
|
||||
$preload_arr["sitemaps"] = $sitemap_arr;
|
||||
}else{
|
||||
foreach ($_POST as $key => $value) {
|
||||
$key = esc_attr($key);
|
||||
$value = esc_attr($value);
|
||||
|
||||
preg_match("/wpFastestCachePreload_(.+)/", $key, $type);
|
||||
|
||||
if(!empty($type)){
|
||||
if($type[1] == "restart" || $type[1] == "sitemap"){
|
||||
//to need to remove "restart" value
|
||||
}else if($type[1] == "number"){
|
||||
$preload_arr[$type[1]] = $value;
|
||||
}else{
|
||||
$preload_arr[$type[1]] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($data = get_option("WpFastestCachePreLoad")){
|
||||
$preload_std = json_decode($data);
|
||||
|
||||
if(empty($preload_arr)){
|
||||
// clear cache process
|
||||
|
||||
if(isset($preload_std->sitemaps) && !empty($preload_std->sitemaps)){
|
||||
foreach ($preload_std->sitemaps as $s_key => $s_value) {
|
||||
$s_value->pointer = 0;
|
||||
}
|
||||
}else{
|
||||
foreach ($preload_std as $key => &$value) {
|
||||
if($key != "number"){
|
||||
$value = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
// save settings process
|
||||
|
||||
if(isset($preload_arr["sitemaps"])){
|
||||
if(isset($preload_std->sitemaps) && !empty($preload_std->sitemaps)){
|
||||
for ($i=0; $i < count($preload_arr["sitemaps"]) ; $i++) {
|
||||
for ($j=0; $j < count($preload_std->sitemaps); $j++) {
|
||||
if($preload_arr["sitemaps"][$i]["url"] == $preload_std->sitemaps[$j]->url){
|
||||
|
||||
if(isset($preload_std->sitemaps[$j]->pointer)){
|
||||
$preload_arr["sitemaps"][$i]["pointer"] = $preload_std->sitemaps[$j]->pointer;
|
||||
}
|
||||
|
||||
if(isset($preload_std->sitemaps[$j]->total)){
|
||||
$preload_arr["sitemaps"][$i]["total"] = $preload_std->sitemaps[$j]->total;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$preload_std = $preload_arr;
|
||||
}else{
|
||||
foreach ($preload_arr as $key => &$value) {
|
||||
if(!empty($preload_std->$key)){
|
||||
if($key != "number"){
|
||||
$value = $preload_std->$key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$preload_std = $preload_arr;
|
||||
}
|
||||
}else{
|
||||
foreach ($preload_arr as $key => &$value) {
|
||||
if(!empty($preload_std->$key)){
|
||||
if($key != "number"){
|
||||
$value = $preload_std->$key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$preload_std = $preload_arr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($preload_std));
|
||||
|
||||
if(!wp_next_scheduled($slug."_Preload")){
|
||||
wp_schedule_event(time() + 5, 'everyfiveminute', $slug."_Preload");
|
||||
}
|
||||
}else{
|
||||
if(!empty($preload_arr)){
|
||||
add_option("WpFastestCachePreLoad", json_encode($preload_arr), null, "yes");
|
||||
|
||||
if(!wp_next_scheduled($slug."_Preload")){
|
||||
wp_schedule_event(time() + 5, 'everyfiveminute', $slug."_Preload");
|
||||
}
|
||||
}else{
|
||||
//toDO
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static function statistic($pre_load = false){
|
||||
$total = new stdClass();
|
||||
|
||||
|
||||
if(isset($pre_load->homepage)){
|
||||
$total->homepage = 1;
|
||||
}
|
||||
|
||||
if(isset($pre_load->customposttypes)){
|
||||
global $wpdb;
|
||||
$post_types = get_post_types(array('public' => true), "names", "and");
|
||||
$where_query = "";
|
||||
|
||||
foreach ($post_types as $post_type_key => $post_type_value) {
|
||||
if(!in_array($post_type_key, array("post", "page", "attachment"))){
|
||||
$where_query = $where_query.$wpdb->prefix."posts.post_type = '".$post_type_value."' OR ";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($where_query){
|
||||
$where_query = preg_replace("/(\s*OR\s*)$/", "", $where_query);
|
||||
|
||||
$recent_custom_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS COUNT(".$wpdb->prefix."posts.ID) as total FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$where_query.") AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID", ARRAY_A);
|
||||
$total->customposttypes = $recent_custom_posts[0]["total"];
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($pre_load->post)){
|
||||
$count_posts = wp_count_posts("post", array('post_status' => 'publish', 'suppress_filters' => true));
|
||||
|
||||
$total->post = $count_posts->publish;
|
||||
}
|
||||
|
||||
if(isset($pre_load->attachment)){
|
||||
$total_attachments = wp_count_attachments();
|
||||
|
||||
$total->attachment = array_sum((array)$total_attachments) - $total_attachments->trash;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if(isset($pre_load->page)){
|
||||
$count_pages = wp_count_posts("page", array('post_status' => 'publish', 'suppress_filters' => true));
|
||||
|
||||
$total->page = $count_pages->publish;
|
||||
}
|
||||
|
||||
if(isset($pre_load->category)){
|
||||
$total->category = wp_count_terms("category", array('hide_empty' => false));
|
||||
}
|
||||
|
||||
if(isset($pre_load->tag)){
|
||||
$total->tag = wp_count_terms("post_tag", array('hide_empty' => false));
|
||||
}
|
||||
|
||||
if(isset($pre_load->customTaxonomies)){
|
||||
$taxo = get_taxonomies(array('public' => true, '_builtin' => false), "names", "and");
|
||||
|
||||
if(count($taxo) > 0){
|
||||
$total->customTaxonomies = wp_count_terms($taxo, array('hide_empty' => false));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach ($total as $key => $value) {
|
||||
$pre_load->$key = $pre_load->$key == -1 ? $value : $pre_load->$key;
|
||||
echo esc_html($key).": ".esc_html($pre_load->$key)."/".esc_html($value)."<br>";
|
||||
}
|
||||
}
|
||||
|
||||
public static function create_preload_cache_default($pre_load, $options){
|
||||
|
||||
if(defined("WPFC_PRELOAD_NUMBER") && WPFC_PRELOAD_NUMBER){
|
||||
$number = WPFC_PRELOAD_NUMBER;
|
||||
}else{
|
||||
$number = $pre_load->number;
|
||||
}
|
||||
|
||||
//START:ORDER
|
||||
if(isset($pre_load->order) && $pre_load->order){
|
||||
$order_arr = explode(",", $pre_load->order);
|
||||
}else{
|
||||
if(isset($options->wpFastestCachePreload_order) && $options->wpFastestCachePreload_order){
|
||||
$order_arr = explode(",", $options->wpFastestCachePreload_order);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($order_arr) && is_array($order_arr)){
|
||||
foreach ($order_arr as $o_key => $o_value){
|
||||
if($o_value == "order" || $o_value == "number"){
|
||||
unset($order_arr[$o_key]);
|
||||
}
|
||||
|
||||
if(!isset($pre_load->$o_value)){
|
||||
unset($order_arr[$o_key]);
|
||||
}
|
||||
|
||||
}
|
||||
$order_arr = array_values($order_arr);
|
||||
}
|
||||
|
||||
$current_order = isset($order_arr[0]) ? $order_arr[0] : "go";
|
||||
//START:END
|
||||
|
||||
|
||||
|
||||
$urls_limit = isset($options->wpFastestCachePreload_number) ? $options->wpFastestCachePreload_number : 4; // must be even
|
||||
$urls = array();
|
||||
|
||||
if(isset($options->wpFastestCacheMobileTheme) && $options->wpFastestCacheMobileTheme){
|
||||
$mobile_theme = true;
|
||||
$number = round($number/2);
|
||||
}else{
|
||||
$mobile_theme = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// HOME
|
||||
if(isset($current_order) && ($current_order == "homepage" || $current_order == "go")){
|
||||
if(isset($pre_load->homepage) && $pre_load->homepage > -1){
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => get_option("home"), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => get_option("home"), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->homepage = -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// CUSTOM POSTS
|
||||
if(isset($current_order) && ($current_order == "customposttypes" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->customposttypes) && $pre_load->customposttypes > -1){
|
||||
global $wpdb;
|
||||
$post_types = get_post_types(array('public' => true), "names", "and");
|
||||
$where_query = "";
|
||||
|
||||
foreach ($post_types as $post_type_key => $post_type_value) {
|
||||
if(!in_array($post_type_key, array("post", "page", "attachment"))){
|
||||
$where_query = $where_query.$wpdb->prefix."posts.post_type = '".$post_type_value."' OR ";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($where_query){
|
||||
$where_query = preg_replace("/(\s*OR\s*)$/", "", $where_query);
|
||||
|
||||
$recent_custom_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$where_query.") AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->customposttypes.", ".$number, ARRAY_A);
|
||||
|
||||
if(count($recent_custom_posts) > 0){
|
||||
foreach ($recent_custom_posts as $key => $post) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->customposttypes = $pre_load->customposttypes + 1;
|
||||
}
|
||||
}else{
|
||||
$pre_load->customposttypes = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// POST
|
||||
if(isset($current_order) && ($current_order == "post" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->post) && $pre_load->post > -1){
|
||||
// $recent_posts = wp_get_recent_posts(array(
|
||||
// 'numberposts' => $number,
|
||||
// 'offset' => $pre_load->post,
|
||||
// 'orderby' => 'ID',
|
||||
// 'order' => 'DESC',
|
||||
// 'post_type' => 'post',
|
||||
// 'post_status' => 'publish',
|
||||
// 'suppress_filters' => true
|
||||
// ), ARRAY_A);
|
||||
global $wpdb;
|
||||
$recent_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'post') AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->post.", ".$number, ARRAY_A);
|
||||
|
||||
|
||||
if(count($recent_posts) > 0){
|
||||
foreach ($recent_posts as $key => $post) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->post = $pre_load->post + 1;
|
||||
}
|
||||
}else{
|
||||
$pre_load->post = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ATTACHMENT
|
||||
if(isset($current_order) && ($current_order == "attachment" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->attachment) && $pre_load->attachment > -1){
|
||||
global $wpdb;
|
||||
$recent_attachments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'attachment') ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->attachment.", ".$number, ARRAY_A);
|
||||
|
||||
if(count($recent_attachments) > 0){
|
||||
foreach ($recent_attachments as $key => $attachment) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => get_permalink($attachment["ID"]), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => get_permalink($attachment["ID"]), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->attachment = $pre_load->attachment + 1;
|
||||
}
|
||||
}else{
|
||||
$pre_load->attachment = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PAGE
|
||||
if(isset($current_order) && ($current_order == "page" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->page) && $pre_load->page > -1){
|
||||
|
||||
global $wpdb;
|
||||
$pages = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'page') AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->page.", ".$number, ARRAY_A);
|
||||
|
||||
|
||||
if(count($pages) > 0){
|
||||
foreach ($pages as $key => $page) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => get_page_link($page["ID"]), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => get_page_link($page["ID"]), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->page = $pre_load->page + 1;
|
||||
}
|
||||
}else{
|
||||
$pre_load->page = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CATEGORY
|
||||
if(isset($current_order) && ($current_order == "category" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->category) && $pre_load->category > -1){
|
||||
$categories = get_terms(array(
|
||||
'taxonomy' => array('category'),
|
||||
'orderby' => 'id',
|
||||
'order' => 'ASC',
|
||||
'hide_empty' => false,
|
||||
'number' => $number,
|
||||
'fields' => 'all',
|
||||
'pad_counts' => false,
|
||||
'offset' => $pre_load->category
|
||||
));
|
||||
|
||||
if(count($categories) > 0){
|
||||
foreach ($categories as $key => $category) {
|
||||
$term_link = get_term_link($category->slug, $category->taxonomy);
|
||||
|
||||
if(isset($term_link->errors)){
|
||||
continue;
|
||||
}
|
||||
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => $term_link, "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => $term_link, "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->category = $pre_load->category + 1;
|
||||
}
|
||||
|
||||
}else{
|
||||
$pre_load->category = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TAG
|
||||
if(isset($current_order) && ($current_order == "tag" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->tag) && $pre_load->tag > -1){
|
||||
$tags = get_terms(array(
|
||||
'taxonomy' => array('post_tag'),
|
||||
'orderby' => 'id',
|
||||
'order' => 'ASC',
|
||||
'hide_empty' => false,
|
||||
'number' => $number,
|
||||
'fields' => 'all',
|
||||
'pad_counts' => false,
|
||||
'offset' => $pre_load->tag
|
||||
));
|
||||
|
||||
if(count($tags) > 0){
|
||||
foreach ($tags as $key => $tag) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => get_term_link($tag->slug, $tag->taxonomy), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => get_term_link($tag->slug, $tag->taxonomy), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->tag = $pre_load->tag + 1;
|
||||
|
||||
}
|
||||
}else{
|
||||
$pre_load->tag = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Custom Taxonomies
|
||||
if(isset($current_order) && ($current_order == "customTaxonomies" || $current_order == "go")){
|
||||
if($number > 0 && isset($pre_load->customTaxonomies) && $pre_load->customTaxonomies > -1){
|
||||
$taxo = get_taxonomies(array('public' => true, '_builtin' => false), "names", "and");
|
||||
|
||||
if(count($taxo) > 0){
|
||||
$custom_taxos = get_terms(array(
|
||||
'taxonomy' => array_values($taxo),
|
||||
'orderby' => 'id',
|
||||
'order' => 'ASC',
|
||||
'hide_empty' => false,
|
||||
'number' => $number,
|
||||
'fields' => 'all',
|
||||
'pad_counts' => false,
|
||||
'offset' => $pre_load->customTaxonomies
|
||||
));
|
||||
|
||||
if(count($custom_taxos) > 0){
|
||||
foreach ($custom_taxos as $key => $custom_tax) {
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => get_term_link($custom_tax->slug, $custom_tax->taxonomy), "user-agent" => "mobile"));
|
||||
$number--;
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => get_term_link($custom_tax->slug, $custom_tax->taxonomy), "user-agent" => "desktop"));
|
||||
$number--;
|
||||
|
||||
$pre_load->customTaxonomies = $pre_load->customTaxonomies + 1;
|
||||
|
||||
}
|
||||
}else{
|
||||
$pre_load->customTaxonomies = -1;
|
||||
}
|
||||
}else{
|
||||
$pre_load->customTaxonomies = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(isset($pre_load->$current_order) && $pre_load->$current_order == -1){
|
||||
array_shift($order_arr);
|
||||
|
||||
if(isset($order_arr[0])){
|
||||
$pre_load->order = implode(",", $order_arr);
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
self::create_preload_cache($options);
|
||||
}else{
|
||||
unset($pre_load->order);
|
||||
}
|
||||
}
|
||||
|
||||
if(count($urls) > 0){
|
||||
foreach ($urls as $key => $arr) {
|
||||
$user_agent = "";
|
||||
|
||||
if($arr["user-agent"] == "desktop"){
|
||||
$user_agent = "WP Fastest Cache Preload Bot";
|
||||
}else if($arr["user-agent"] == "mobile"){
|
||||
$user_agent = "WP Fastest Cache Preload iPhone Mobile Bot";
|
||||
}
|
||||
|
||||
|
||||
if(self::is_excluded($arr["url"])){
|
||||
$status = "<strong style=\"color:blue;\">Excluded</strong>";
|
||||
}else{
|
||||
if($GLOBALS["wp_fastest_cache"]->wpfc_remote_get($arr["url"], $user_agent)){
|
||||
$status = "<strong style=\"color:lightgreen;\">OK</strong>";
|
||||
}else{
|
||||
$status = "<strong style=\"color:red;\">ERROR</strong>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
echo $status." ".esc_html($arr["url"])." (".esc_html($arr["user-agent"]).")<br>";
|
||||
}
|
||||
echo "<br>";
|
||||
echo count($urls)." page have been cached";
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
echo "<br><br>";
|
||||
|
||||
self::statistic($pre_load);
|
||||
|
||||
}else{
|
||||
if(isset($options->wpFastestCachePreload_restart)){
|
||||
foreach ($pre_load as $pre_load_key => &$pre_load_value) {
|
||||
//if($pre_load_key != "number" && $pre_load_key != "order"){
|
||||
if($pre_load_key != "number"){
|
||||
$pre_load_value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
echo "Preload Restarted";
|
||||
|
||||
if($varnish_datas = get_option("WpFastestCacheVarnish")){
|
||||
include_once('varnish.php');
|
||||
VarnishWPFC::purge_cache($varnish_datas);
|
||||
}
|
||||
|
||||
include_once('cdn.php');
|
||||
CdnWPFC::cloudflare_clear_cache();
|
||||
}else{
|
||||
echo "Completed";
|
||||
|
||||
wp_clear_scheduled_hook("wp_fastest_cache_Preload");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function prepare_sitemap($url, $sitemap_cache_path){
|
||||
if(!empty($url)){
|
||||
$content = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($url, "xxxx", true);
|
||||
|
||||
$content = strtolower($content);
|
||||
|
||||
$content = preg_replace("/<\?\s*xml[^\>]*>/i", "", $content);
|
||||
|
||||
// to remove comments
|
||||
$content = preg_replace("/\<\!\-\-((?:(?!-->).)+)\-\-\>/", "", $content);
|
||||
|
||||
$content = preg_replace("/<((?:(?!url|loc).)+)>((?:(?!http).)+)<((?:(?!url|loc).)+)>/i", "", $content);
|
||||
|
||||
// to remove <image:image></image:image> tag
|
||||
$content = preg_replace("/<\s*image\s*:\s*image\s*>((?:(?!\<\s*\/\s*image\s*:\s*image\s*>).)+)<\s*\/\s*image\s*\:\s*image\s*>/s", "", $content);
|
||||
|
||||
if(preg_match("/<\s*sitemapindex[^\>]+>/", $content)){
|
||||
$content = preg_replace("/<\/?sitemapindex[^\>]*>/i", "", $content);
|
||||
|
||||
$content = preg_replace("/\s/i", "", $content);
|
||||
$content = preg_replace("/<\/sitemap>/i", "</sitemap>\n", $content);
|
||||
|
||||
}else{
|
||||
$content = preg_replace("/<\/?urlset[^\>]*>/i", "", $content);
|
||||
|
||||
|
||||
$content = preg_replace("/\s/i", "", $content);
|
||||
$content = preg_replace("/<\/url>/i", "</url>\n", $content);
|
||||
|
||||
}
|
||||
|
||||
if(!is_dir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/"))){
|
||||
@mkdir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/"), 0755, true);
|
||||
}
|
||||
|
||||
if(!is_dir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap"))){
|
||||
@mkdir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap"), 0755, true);
|
||||
}
|
||||
|
||||
file_put_contents($sitemap_cache_path, $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function extract_sitemap_index($content, $sitemaps){
|
||||
if($content){
|
||||
preg_match_all("/<sitemap><loc>([^\>\<]+)<\/loc><\/sitemap>/", $content, $out);
|
||||
|
||||
if(isset($out[1]) && isset($out[1][0])){
|
||||
foreach ($out[1] as $key => $value) {
|
||||
$sm_obj = (object) array("url" => $value, "pointer" => 0, "total" => 0);
|
||||
|
||||
if(!in_array($value, array_column($sitemaps, 'url'))){
|
||||
array_push($sitemaps, $sm_obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $sitemaps;
|
||||
}
|
||||
|
||||
public static function create_preload_cache_sitemap($pre_load, $options){
|
||||
if(!isset($pre_load->sitemaps[0])){
|
||||
die("No sitemap detected!");
|
||||
}
|
||||
|
||||
if(defined("WPFC_PRELOAD_NUMBER") && WPFC_PRELOAD_NUMBER){
|
||||
$number = WPFC_PRELOAD_NUMBER;
|
||||
}else{
|
||||
$number = $options->wpFastestCachePreload_number;
|
||||
}
|
||||
|
||||
$urls = array();
|
||||
|
||||
if(isset($options->wpFastestCacheMobileTheme) && $options->wpFastestCacheMobileTheme){
|
||||
$mobile_theme = true;
|
||||
$number = round($number/2);
|
||||
}else{
|
||||
$mobile_theme = false;
|
||||
}
|
||||
|
||||
|
||||
foreach ($pre_load->sitemaps as $s_key => &$s_value) {
|
||||
$sitemap_cache_path = $GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap/".base64_encode($s_value->url).".xml");
|
||||
|
||||
if(!file_exists($sitemap_cache_path) || !isset($s_value->total)){
|
||||
$content = self::prepare_sitemap($s_value->url, $sitemap_cache_path);
|
||||
|
||||
$s_value->total = substr_count($content, '<url>');
|
||||
|
||||
if($s_value->total == 0){
|
||||
$pre_load->sitemaps = self::extract_sitemap_index($content, $pre_load->sitemaps);
|
||||
unset($pre_load->sitemaps[$s_key]);
|
||||
|
||||
$pre_load->sitemaps = array_values($pre_load->sitemaps);
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
die($s_value->url." was extracted");
|
||||
}
|
||||
}
|
||||
|
||||
$s_value->pointer = $s_value->pointer > 0 ? $s_value->pointer : 1;
|
||||
|
||||
if($s_value->pointer < $s_value->total){
|
||||
|
||||
$file = fopen($sitemap_cache_path, "r");
|
||||
|
||||
for ($i = 1; $i < $s_value->pointer; $i++) {
|
||||
fgets($file);
|
||||
}
|
||||
|
||||
for ($j=0; $j < $number; $j++) {
|
||||
|
||||
$specific_line = fgets($file);
|
||||
|
||||
$specific_line = strip_tags($specific_line);
|
||||
$specific_line = trim($specific_line);
|
||||
|
||||
if($specific_line){
|
||||
if($mobile_theme){
|
||||
array_push($urls, array("url" => $specific_line, "user-agent" => "mobile"));
|
||||
}
|
||||
|
||||
array_push($urls, array("url" => $specific_line, "user-agent" => "desktop"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fclose($file);
|
||||
|
||||
$s_value->pointer = $s_value->pointer + $number;
|
||||
$s_value->pointer = $s_value->pointer > $s_value->total ? $s_value->total : $s_value->pointer;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(count($urls) > 0){
|
||||
foreach ($urls as $key => $arr) {
|
||||
$user_agent = "";
|
||||
|
||||
if($arr["user-agent"] == "desktop"){
|
||||
$user_agent = "WP Fastest Cache Preload Bot";
|
||||
}else if($arr["user-agent"] == "mobile"){
|
||||
$user_agent = "WP Fastest Cache Preload iPhone Mobile Bot";
|
||||
}
|
||||
|
||||
|
||||
if(self::is_excluded($arr["url"])){
|
||||
$status = "<strong style=\"color:blue;\">Excluded</strong>";
|
||||
}else{
|
||||
if($GLOBALS["wp_fastest_cache"]->wpfc_remote_get($arr["url"], $user_agent)){
|
||||
$status = "<strong style=\"color:lightgreen;\">OK</strong>";
|
||||
}else{
|
||||
$status = "<strong style=\"color:red;\">ERROR</strong>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
echo $status." ".esc_html($arr["url"])." (".esc_html($arr["user-agent"]).")<br>";
|
||||
}
|
||||
|
||||
|
||||
echo "\n\n<br><br>";
|
||||
|
||||
|
||||
foreach ($pre_load->sitemaps as $sres_key => $sres_value) {
|
||||
|
||||
if(isset($sres_value->total)){
|
||||
$cached_page_number = $sres_value->pointer;
|
||||
|
||||
if($sres_value->pointer == $sres_value->total){
|
||||
$cached_page_number = $sres_value->pointer;
|
||||
}else{
|
||||
$cached_page_number--;
|
||||
|
||||
$cached_page_number = max($cached_page_number, 0);
|
||||
}
|
||||
|
||||
echo esc_html($sres_value->url).": ".esc_html($cached_page_number)."/".esc_html($sres_value->total)."<br>\n";
|
||||
}else{
|
||||
echo esc_html($sres_value->url).": -<br>\n";
|
||||
}
|
||||
}
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
}else{
|
||||
if(isset($options->wpFastestCachePreload_restart)){
|
||||
|
||||
foreach ($pre_load->sitemaps as $r_key => &$r_value) {
|
||||
$r_value->pointer = 0;
|
||||
}
|
||||
|
||||
update_option("WpFastestCachePreLoad", json_encode($pre_load));
|
||||
|
||||
echo "Preload Restarted";
|
||||
|
||||
// clearing the sitemap cache in order to get the latest sitemap updates
|
||||
$GLOBALS["wp_fastest_cache"]->rm_folder_recursively($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap"));
|
||||
|
||||
if($varnish_datas = get_option("WpFastestCacheVarnish")){
|
||||
include_once('varnish.php');
|
||||
VarnishWPFC::purge_cache($varnish_datas);
|
||||
}
|
||||
|
||||
include_once('cdn.php');
|
||||
CdnWPFC::cloudflare_clear_cache();
|
||||
}else{
|
||||
echo "Completed";
|
||||
|
||||
wp_clear_scheduled_hook("wp_fastest_cache_Preload");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static function create_preload_cache($options){
|
||||
|
||||
if(!isset($options->wpFastestCacheStatus)){
|
||||
die("Cache System must be enabled");
|
||||
}
|
||||
|
||||
if($data = get_option("WpFastestCachePreLoad")){
|
||||
|
||||
$pre_load = json_decode($data);
|
||||
|
||||
if(isset($pre_load->sitemaps)){
|
||||
self::create_preload_cache_sitemap($pre_load, $options);
|
||||
}else{
|
||||
self::create_preload_cache_default($pre_load, $options);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(isset($_GET) && isset($_GET["type"]) && $_GET["type"] == "preload"){
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
public static function is_excluded($url){
|
||||
if(!is_string($url)){
|
||||
return false;
|
||||
}
|
||||
|
||||
$request_url = parse_url($url, PHP_URL_PATH);
|
||||
|
||||
if($request_url){
|
||||
$request_url = urldecode(trim($request_url, "/"));
|
||||
}
|
||||
|
||||
if(!$request_url){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(self::$exclude_rules === false){
|
||||
if($json_data = get_option("WpFastestCacheExclude")){
|
||||
self::$exclude_rules = json_decode($json_data);
|
||||
}else{
|
||||
self::$exclude_rules = array();
|
||||
}
|
||||
}
|
||||
|
||||
foreach((array)self::$exclude_rules as $key => $value){
|
||||
if($value->prefix == "exact"){
|
||||
if(strtolower($value->content) == strtolower($request_url)){
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
if($value->prefix == "startwith"){
|
||||
$preg_match_rule = "^".preg_quote($value->content, "/");
|
||||
}else if($value->prefix == "contain"){
|
||||
$preg_match_rule = preg_quote($value->content, "/");
|
||||
}
|
||||
|
||||
if(isset($preg_match_rule)){
|
||||
if(preg_match("/".$preg_match_rule."/i", $request_url)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
347
wp-content/plugins/wp-fastest-cache/inc/single-preload.php
Normal file
@@ -0,0 +1,347 @@
|
||||
<?php
|
||||
class SinglePreloadWPFC{
|
||||
public static $id = 0;
|
||||
public static $urls = array();
|
||||
|
||||
public static function init($id = false){
|
||||
if($id){
|
||||
self::set_id($id);
|
||||
}else if(isset($_GET["post"]) && $_GET["post"]){
|
||||
self::set_id($_GET["post"]);
|
||||
}
|
||||
|
||||
SinglePreloadWPFC::set_urls();
|
||||
SinglePreloadWPFC::set_urls_with_terms();
|
||||
}
|
||||
|
||||
public static function add_meta_box(){
|
||||
add_meta_box(
|
||||
'auto_cache_custom_meta_box', // this is HTML id
|
||||
'Auto Cache Settings',
|
||||
array("SinglePreloadWPFC", "auto_cache_custom_box_html"), // the callback function
|
||||
array('page', 'post', 'product'),
|
||||
'side',
|
||||
'high'
|
||||
);
|
||||
}
|
||||
|
||||
public static function auto_cache_custom_box_html(){
|
||||
$yes_selected = "";
|
||||
$no_selected = "";
|
||||
|
||||
if($data = get_option("WpFastestCache_autocache")){
|
||||
if($data == "yes"){
|
||||
$yes_selected = "selected";
|
||||
}else if($data == "no"){
|
||||
$no_selected = "selected";
|
||||
}
|
||||
}else{
|
||||
$no_selected = "selected";
|
||||
}
|
||||
|
||||
?>
|
||||
<p>
|
||||
<label>Enable:</label>
|
||||
<select data-type='auto-cache-enable'>
|
||||
<option <?php echo $yes_selected; ?> value="yes">Yes</option>
|
||||
<option <?php echo $no_selected; ?> value="no">No</option>
|
||||
</select>
|
||||
<span class="spinner" style="float: none;display: inline-block;margin:0;"></span>
|
||||
</p>
|
||||
|
||||
<p id="wpfc-single-preload-process" style="display: none;">
|
||||
<label>Status: <span id="wpfc-single-preload-status-runnig">Running</span><span id="wpfc-single-preload-status-completed" style="display: none; color: #33CD32; font-weight: bold;">Completed</span></label><br>
|
||||
<label>Total: <span id="wpfc-single-preload-total-number"><?php echo count(self::$urls); ?></span></label><br>
|
||||
<label>Cached: <span id="wpfc-single-preload-cached-number">0</span></label><br>
|
||||
<label>Errors: <span id="wpfc-single-preload-error-number">0</span></label>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p class="post-attributes-help-text">The cache will be created automatically after the contents are saved. <a href="https://www.wpfastestcache.com/features/automatic-cache/" target="_blank">More Info</a></p>
|
||||
|
||||
<script type="text/javascript">
|
||||
var Wpfc_Single_Preload_save_settings = function(){
|
||||
var enable_form = jQuery("#auto_cache_custom_meta_box select[data-type='auto-cache-enable']");
|
||||
|
||||
if(enable_form.length == 1){
|
||||
enable_form.change(function(){
|
||||
enable_form.attr("disabled", true);
|
||||
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "visible"});
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
url: ajaxurl,
|
||||
data: {"action": "wpfc_preload_single_save_settings", "is_enable": jQuery(this).val(), "nonce" : wpfc_nonce},
|
||||
dataType: "json",
|
||||
cache: false,
|
||||
success: function(data){
|
||||
enable_form.attr("disabled", false);
|
||||
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"});
|
||||
|
||||
console.log(data);
|
||||
},
|
||||
error: function(error){
|
||||
enable_form.attr("disabled", false);
|
||||
jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"});
|
||||
|
||||
console.log(error.statusText);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Wpfc_Single_Preload_save_settings();
|
||||
|
||||
</script>
|
||||
|
||||
<?php
|
||||
// Add the HTML for the post meta
|
||||
}
|
||||
|
||||
public static function save_settings(){
|
||||
if(current_user_can('manage_options')){
|
||||
$res = array("success" => true);
|
||||
|
||||
if(get_option("WpFastestCache_autocache")){
|
||||
update_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"]));
|
||||
}else{
|
||||
add_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"]), null, "yes");
|
||||
}
|
||||
|
||||
wp_send_json($res);
|
||||
}
|
||||
|
||||
wp_die("Must be admin");
|
||||
}
|
||||
|
||||
public static function set_id($id) {
|
||||
$id = (int)$id;
|
||||
|
||||
if(get_post_status($id) === "publish"){
|
||||
self::$id = $id;
|
||||
}
|
||||
}
|
||||
|
||||
public static function create_cache_for_all_urls(){
|
||||
if(preg_match("/include\s*\(\s*[\'\"]\/themes\//i", wp_debug_backtrace_summary())){
|
||||
return array("success" => false, "error_message" => "You cannot call this function in any theme file");
|
||||
}
|
||||
|
||||
if(empty(self::$urls)){
|
||||
return false;
|
||||
}
|
||||
|
||||
$res_arr = array();
|
||||
|
||||
foreach (self::$urls as $url) {
|
||||
$res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($url["url"], $url["user-agent"]);
|
||||
|
||||
array_push($res_arr, array("url" => $url["url"], "success" => $res));
|
||||
}
|
||||
|
||||
return $res_arr;
|
||||
}
|
||||
|
||||
public static function create_cache(){
|
||||
$res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($_GET["url"], $_GET["user_agent"]);
|
||||
|
||||
if($res){
|
||||
die("true");
|
||||
}
|
||||
}
|
||||
|
||||
public static function is_mobile_active(){
|
||||
if(isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobile) && isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobileTheme)){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static function set_term_urls($term_taxonomy_id){
|
||||
$term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
|
||||
|
||||
if($term && !is_wp_error($term)){
|
||||
$url = get_term_link($term->term_id, $term->taxonomy);
|
||||
|
||||
array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload Bot"));
|
||||
|
||||
if(self::is_mobile_active()){
|
||||
array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot"));
|
||||
}
|
||||
|
||||
if($term->parent > 0){
|
||||
$parent = get_term_by("id", $term->parent, $term->taxonomy);
|
||||
|
||||
static::set_term_urls($parent->term_taxonomy_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function set_urls_with_terms(){
|
||||
global $wpdb;
|
||||
$terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".static::$id, ARRAY_A);
|
||||
|
||||
foreach ($terms as $term_key => $term_val){
|
||||
static::set_term_urls($term_val["term_taxonomy_id"]);
|
||||
}
|
||||
}
|
||||
|
||||
public static function set_urls(){
|
||||
if(static::$id){
|
||||
$permalink = get_permalink(static::$id);
|
||||
|
||||
array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload Bot"));
|
||||
|
||||
if(self::is_mobile_active()){
|
||||
array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function put_inline_js(){
|
||||
if($data = get_option("WpFastestCache_autocache")){
|
||||
if($data == "no"){
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var WpfcSinglePreload = {
|
||||
error_message: "",
|
||||
init: function(){
|
||||
jQuery("#wpfc-single-preload-process").show("slow")
|
||||
},
|
||||
change_status: function(){
|
||||
var error_number = jQuery("#wpfc-single-preload-error-number").text();
|
||||
var cached_number = jQuery("#wpfc-single-preload-cached-number").text();
|
||||
var total_number = jQuery("#wpfc-single-preload-total-number").text();
|
||||
|
||||
error_number = parseInt(error_number);
|
||||
cached_number = parseInt(cached_number);
|
||||
total_number = parseInt(total_number);
|
||||
|
||||
if(total_number == (cached_number + error_number)){
|
||||
jQuery("#wpfc-single-preload-status-completed").show();
|
||||
jQuery("#wpfc-single-preload-status-runnig").hide();
|
||||
}
|
||||
},
|
||||
increase_error: function(){
|
||||
var number = jQuery("#wpfc-single-preload-error-number").text();
|
||||
number = parseInt(number) + 1;
|
||||
|
||||
jQuery("#wpfc-single-preload-error-number").text(number);
|
||||
|
||||
WpfcSinglePreload.change_status();
|
||||
},
|
||||
increase_cached: function(){
|
||||
var number = jQuery("#wpfc-single-preload-cached-number").text();
|
||||
number = parseInt(number) + 1;
|
||||
|
||||
jQuery("#wpfc-single-preload-cached-number").text(number);
|
||||
|
||||
WpfcSinglePreload.change_status();
|
||||
},
|
||||
running_animation: function(){
|
||||
let label = jQuery("#wpfc-single-preload-status-runnig");
|
||||
let text = label.text();
|
||||
let dot = 0;
|
||||
|
||||
label.text(text + ".");
|
||||
|
||||
self.interval = setInterval(function(){
|
||||
text = label.text();
|
||||
dot = text.match(/\./g);
|
||||
|
||||
if(dot){
|
||||
if(dot.length < 3){
|
||||
label.text(text + ".");
|
||||
}else{
|
||||
label.text(text.replace(/\.+$/, ""));
|
||||
}
|
||||
}else{
|
||||
label.text(text + ".");
|
||||
}
|
||||
}, 300);
|
||||
},
|
||||
create_cache: function(list){
|
||||
var action = function(url, user_agent, list){
|
||||
var self = this;
|
||||
jQuery("#wpfc-single-preload").show();
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: ajaxurl,
|
||||
data: {"action": "wpfc_preload_single", "url": url, "user_agent": user_agent, "nonce" : wpfc_nonce},
|
||||
dataType: "html",
|
||||
timeout: 10000,
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(data == "true"){
|
||||
WpfcSinglePreload.increase_cached();
|
||||
}else{
|
||||
self.error_message = data;
|
||||
WpfcSinglePreload.increase_error();
|
||||
}
|
||||
|
||||
if(typeof list == "object"){
|
||||
WpfcSinglePreload.create_cache(list);
|
||||
}
|
||||
},
|
||||
error: function(error){
|
||||
self.error_message = error.statusText;
|
||||
WpfcSinglePreload.increase_error();
|
||||
|
||||
if(typeof list == "object"){
|
||||
WpfcSinglePreload.create_cache(list);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
let number_to_used = 3;
|
||||
let sliced = list.slice(0, number_to_used);
|
||||
|
||||
list.splice(0, number_to_used);
|
||||
|
||||
jQuery.each(sliced, function( index, value ) {
|
||||
console.log( value["url"] );
|
||||
|
||||
if(index == (number_to_used-1)){
|
||||
setTimeout(function(){
|
||||
action(value["url"], value["user-agent"], list);
|
||||
}, 500);
|
||||
}else{
|
||||
setTimeout(function(){
|
||||
action(value["url"], value["user-agent"], false);
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
jQuery(document).ready(function(){
|
||||
if(!jQuery("#auto_cache_custom_meta_box").is(":visible")){
|
||||
return;
|
||||
}
|
||||
|
||||
if(jQuery("#message").find("a").attr("href")){
|
||||
WpfcSinglePreload.init();
|
||||
WpfcSinglePreload.running_animation();
|
||||
WpfcSinglePreload.create_cache(<?php echo json_encode(self::$urls); ?>);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
178
wp-content/plugins/wp-fastest-cache/inc/varnish.php
Normal file
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
class VarnishWPFC{
|
||||
|
||||
public static function purge_cache($data = false) {
|
||||
if(isset($GLOBALS["wpfc_varnish_purge_cache_executed"])){
|
||||
return;
|
||||
}else{
|
||||
$GLOBALS["wpfc_varnish_purge_cache_executed"] = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(gettype($data) == "array"){
|
||||
// Clearing page cache action sends the data as Array
|
||||
if(isset($data["status"]) && $data["status"] == "pause"){
|
||||
return array("success" => true);
|
||||
}
|
||||
|
||||
$server = $data["server"];
|
||||
}else{
|
||||
// Ajax request and save() function send the data as string
|
||||
$server = $data;
|
||||
}
|
||||
|
||||
$home = get_option('home');
|
||||
$host = preg_replace("/(https?\:\/\/)(.+)/", "$2", $home);
|
||||
$host = preg_replace("/\/.*/", "", $host);
|
||||
|
||||
$schema = preg_replace("/(https?\:\/\/).+/", "$1", $home);
|
||||
$schema = strtolower($schema);
|
||||
|
||||
$ssl_verification = $schema == 'https://' ? true : false;
|
||||
|
||||
$request_url = $schema.$server."/.*";
|
||||
|
||||
$request_args = array(
|
||||
'method' => "PURGE",
|
||||
'headers' => array(
|
||||
'Host' => $host,
|
||||
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
|
||||
),
|
||||
'sslverify' => $ssl_verification,
|
||||
);
|
||||
|
||||
|
||||
$response = wp_remote_request($request_url, $request_args );
|
||||
|
||||
|
||||
if(is_wp_error( $response ) || $response['response']['code'] != '200'){
|
||||
|
||||
if($schema === 'https://'){
|
||||
$request_url = str_replace("https://", "http://", $request_url);
|
||||
}else{
|
||||
$request_url = str_replace("http://", "https://", $request_url);
|
||||
}
|
||||
|
||||
|
||||
$response = wp_remote_request($request_url, $request_args );
|
||||
|
||||
|
||||
if(is_wp_error( $response ) || $response['response']['code'] != '200'){
|
||||
|
||||
if($response->get_error_messages()){
|
||||
return array("success" => "", "message" => $response->get_error_message());
|
||||
|
||||
}
|
||||
|
||||
if($response['response']['code'] == "501"){
|
||||
$text = '"Purge" method is not allowed';
|
||||
|
||||
if(isset($response['headers']['allow'])){
|
||||
$text = $text.". The allowed methods are ".$response['headers']['allow'];
|
||||
$text = $text.". Please contact your hosting provider";
|
||||
}
|
||||
|
||||
return array("success" => "", "message" => $text);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return array("success" => true);
|
||||
}
|
||||
|
||||
public static function save(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-varnish-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
$_POST["server"] = sanitize_text_field($_POST["server"]);
|
||||
|
||||
$purce_res = self::purge_cache($_POST["server"]);
|
||||
|
||||
if(!$purce_res["success"]){
|
||||
wp_send_json($purce_res);
|
||||
}
|
||||
|
||||
$datas = get_option("WpFastestCacheVarnish");
|
||||
|
||||
if(!is_array($datas)){
|
||||
$datas = array();
|
||||
$datas["server"] = $_POST["server"];
|
||||
|
||||
add_option("WpFastestCacheVarnish", $datas, 1, "yes");
|
||||
}else{
|
||||
$datas["server"] = $_POST["server"];
|
||||
|
||||
update_option("WpFastestCacheVarnish", $datas, 1, "yes");
|
||||
}
|
||||
|
||||
wp_send_json_success();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static function status(){
|
||||
$datas = get_option("WpFastestCacheVarnish");
|
||||
|
||||
if(is_array($datas)){
|
||||
if(isset($datas["status"]) && $datas["status"] == "pause"){
|
||||
echo "isConnected pause";
|
||||
}else{
|
||||
echo "isConnected";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function start(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-varnish-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
$datas = get_option("WpFastestCacheVarnish");
|
||||
|
||||
if(is_array($datas)){
|
||||
unset($datas["status"]);
|
||||
|
||||
$purce_res = self::purge_cache($datas);
|
||||
|
||||
if(!$purce_res["success"]){
|
||||
wp_send_json($purce_res);
|
||||
}
|
||||
|
||||
update_option("WpFastestCacheVarnish", $datas, 1, "yes");
|
||||
}
|
||||
|
||||
wp_send_json_success();
|
||||
}
|
||||
|
||||
public static function pause(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-varnish-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
$datas = get_option("WpFastestCacheVarnish");
|
||||
|
||||
if(is_array($datas)){
|
||||
$datas["status"] = "pause";
|
||||
update_option("WpFastestCacheVarnish", $datas, 1, "yes");
|
||||
}
|
||||
|
||||
wp_send_json_success();
|
||||
}
|
||||
|
||||
public static function remove(){
|
||||
if(!wp_verify_nonce($_POST["security"], 'wpfc-varnish-ajax-nonce')){
|
||||
die( 'Security check' );
|
||||
}
|
||||
|
||||
delete_option("WpFastestCacheVarnish");
|
||||
|
||||
wp_send_json_success();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
63
wp-content/plugins/wp-fastest-cache/inc/wp-polls.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
class WpPollsForWpFc{
|
||||
public function __construct(){
|
||||
|
||||
}
|
||||
|
||||
public function hook(){
|
||||
add_action( 'wp_ajax_nopriv_wpfc_wppolls_ajax_request', array($this, "wpfc_wppolls_ajax_request"));
|
||||
add_action( 'wp_ajax_wpfc_wppolls_ajax_request', array($this, "wpfc_wppolls_ajax_request"));
|
||||
add_action( 'wp_footer', array($this, "wpfc_wp_polls") );
|
||||
|
||||
}
|
||||
|
||||
public function wpfc_wp_polls() { ?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function(){
|
||||
var wpfcWpfcAjaxCall = function(polls){
|
||||
if(polls.length > 0){
|
||||
poll_id = polls.last().attr('id').match(/\d+/)[0];
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
url: pollsL10n.ajax_url,
|
||||
dataType : "json",
|
||||
data : {"action": "wpfc_wppolls_ajax_request", "poll_id": poll_id, "nonce" : "<?php echo wp_create_nonce('wpfcpoll'); ?>"},
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(data === true){
|
||||
poll_result(poll_id);
|
||||
}else if(data === false){
|
||||
poll_booth(poll_id);
|
||||
}
|
||||
polls.length = polls.length - 1;
|
||||
|
||||
setTimeout(function(){
|
||||
wpfcWpfcAjaxCall(polls);
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var polls = jQuery('div[id^=\"polls-\"][id$=\"-loading\"]');
|
||||
wpfcWpfcAjaxCall(polls);
|
||||
});
|
||||
</script><?php
|
||||
}
|
||||
|
||||
public function wpfc_wppolls_ajax_request(){
|
||||
if(wp_verify_nonce(esc_attr($_POST["nonce"]), 'wpfcpoll')){
|
||||
$result = check_voted(esc_attr($_POST["poll_id"]));
|
||||
|
||||
if($result){
|
||||
die("true");
|
||||
}else{
|
||||
die("false");
|
||||
}
|
||||
}else{
|
||||
die("Expired: wpfcpoll");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
1
wp-content/plugins/wp-fastest-cache/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
59
wp-content/plugins/wp-fastest-cache/js/button.js
Normal file
@@ -0,0 +1,59 @@
|
||||
(function() {
|
||||
tinymce.create('tinymce.plugins.Wpfc', {
|
||||
wpfcNotHTML : '',
|
||||
url: '',
|
||||
init : function(ed, url) {
|
||||
var self = this;
|
||||
self.setUrl(url);
|
||||
self.setWpfcNotHTML();
|
||||
|
||||
ed.addButton('wpfc', {
|
||||
title : 'Block caching for this page',
|
||||
cmd : 'wpfc',
|
||||
image : self.url + "/icon.png"
|
||||
});
|
||||
|
||||
ed.addCommand('wpfc', function() {
|
||||
ed.execCommand('mceInsertContent', 0, self.wpfcNotHTML);
|
||||
});
|
||||
|
||||
self._handleWpfcNOT(ed, url);
|
||||
},
|
||||
setUrl: function(url){
|
||||
this.url = url.replace("../js","../images");
|
||||
},
|
||||
setWpfcNotHTML: function(){
|
||||
this.wpfcNotHTML = '<img src="' + this.url + "/tinymce-wpfcnot.jpg" + '" class="mce-wp-wpfcnot" style="margin-right:95%;" />';
|
||||
},
|
||||
_handleWpfcNOT : function(ed, url) {
|
||||
var self = this;
|
||||
ed.onPostRender.add(function() {
|
||||
if (ed.theme.onResolveName) {
|
||||
ed.theme.onResolveName.add(function(th, o) {
|
||||
if (o.node.nodeName == 'IMG') {
|
||||
if ( ed.dom.hasClass(o.node, 'mce-wp-wpfcnot') ){
|
||||
o.name = 'wpfcnot';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
ed.onBeforeSetContent.add(function(ed, o) {
|
||||
if ( o.content ) {
|
||||
o.content = o.content.replace(/<\!--\s*\[wpfcNOT\]\s*-->/, self.wpfcNotHTML);
|
||||
}
|
||||
});
|
||||
ed.onPostProcess.add(function(ed, o) {
|
||||
if (o.get){
|
||||
o.content = o.content.replace(/<img[^>]+>/g, function(im) {
|
||||
if (im.indexOf('class="mce-wp-wpfcnot') !== -1) {
|
||||
im = '<!--[wpfcNOT]-->';
|
||||
}
|
||||
return im;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
tinymce.PluginManager.add( 'wpfc', tinymce.plugins.Wpfc );
|
||||
})();
|
||||
435
wp-content/plugins/wp-fastest-cache/js/cdn/cdn.js
Normal file
@@ -0,0 +1,435 @@
|
||||
var WpfcCDN = {
|
||||
values: {"name" : "", "cdnurl" : "", "originurl" : "", "file_types" : "", "keywords" : "", "excludekeywords" : ""},
|
||||
id : "",
|
||||
nonce: "",
|
||||
template_url : "",
|
||||
content : "",
|
||||
interval : false,
|
||||
init: function(obj){
|
||||
this.set_params(obj);
|
||||
this.open_wizard();
|
||||
},
|
||||
check_conditions: function(action, current_page_number){
|
||||
var self = this;
|
||||
|
||||
if(action == "next"){
|
||||
if(current_page_number == 2){
|
||||
self.check_url_exist();
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
},
|
||||
set_params: function(obj){
|
||||
this.id = obj.id;
|
||||
this.nonce = obj.nonce;
|
||||
this.template_url = obj.template_main_url + "/" + this.id + ".php";
|
||||
|
||||
if(obj.values){
|
||||
this.values = obj.values;
|
||||
}
|
||||
},
|
||||
open_wizard: function(){
|
||||
var self = this;
|
||||
if(jQuery("#wpfc-modal-" + self.id).length == 0){
|
||||
self.load_template(function(){
|
||||
self.fill_integration_fields();
|
||||
self.set_buttons_action();
|
||||
self.click_event_add_new_keyword_button();
|
||||
self.add_new_keyword_keypress();
|
||||
|
||||
if(self.id == "other" || self.id == "cloudflare"){
|
||||
self.show_page("next");
|
||||
self.hide_button("back");
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
},
|
||||
insert_keywords: function(modal, classname, keywords){
|
||||
var self = this;
|
||||
|
||||
if(keywords){
|
||||
jQuery.each(keywords.split(","), function( index, value ) {
|
||||
jQuery('<li class="' + classname + '"><a class="keyword-label">' + value + '</a></li>').insertBefore(modal.find(".wpfc-add-new-keyword").closest("." + classname)).click(function(){
|
||||
jQuery(this).remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
fill_integration_fields: function(){
|
||||
var self = this;
|
||||
var modal;
|
||||
|
||||
jQuery(self.values).each(function(i, e){
|
||||
modal = jQuery("#wpfc-wizard-" + e.id);
|
||||
|
||||
modal.find("input#cdn-url").val(e.cdnurl);
|
||||
modal.find("select#cdn-url").val(e.cdnurl);
|
||||
modal.find("#origin-url").val(e.originurl);
|
||||
|
||||
self.insert_keywords(modal, "keyword-item", e.keywords);
|
||||
self.insert_keywords(modal, "keyword-item-exclude", e.excludekeywords);
|
||||
|
||||
if(e.file_types){
|
||||
modal.find(".wpfc-checkbox-list input[type='checkbox']").attr("checked", false);
|
||||
|
||||
jQuery.each(e.file_types.split(","), function( index, value ) {
|
||||
modal.find("#file-type-" + value).attr("checked", true);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
add_new_keyword_keypress: function(){
|
||||
jQuery(".wpfc-textbox-con .fixed-search input").keypress(function(e){
|
||||
if(e.keyCode == 13){
|
||||
var keyword = jQuery(e.target).val();
|
||||
var keyword_type_class = jQuery(e.target).closest("li[class*='keyword-item']").attr("class");
|
||||
|
||||
jQuery(".wpfc-textbox-con").hide();
|
||||
jQuery(e.target).val("");
|
||||
jQuery('<li class="' + keyword_type_class + '"><a class="keyword-label">' + keyword + '</a></li>').insertBefore(jQuery(e.target).closest("." + keyword_type_class)).click(function(){
|
||||
jQuery(this).remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
click_event_add_new_keyword_button: function(){
|
||||
jQuery(".wpfc-add-new-keyword").click(function(){
|
||||
jQuery(this).next(".wpfc-textbox-con").show();
|
||||
jQuery(this).next(".wpfc-textbox-con").find(".fixed-search input").focus();
|
||||
});
|
||||
},
|
||||
set_buttons_action: function(){
|
||||
var self = this;
|
||||
var action = "";
|
||||
var current_page, next_page, current_page_number;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
|
||||
self.buttons();
|
||||
|
||||
modal.find("button.wpfc-dialog-buttons").click(function(e){
|
||||
action = modal.find(e.currentTarget).attr("action");
|
||||
current_page_number = modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page");
|
||||
|
||||
if(action == "next"){
|
||||
if(self.check_conditions("next", current_page_number)){
|
||||
self.show_page("next");
|
||||
}
|
||||
}else if(action == "back"){
|
||||
self.show_page("back");
|
||||
}else if(action == "finish"){
|
||||
self.save_integration();
|
||||
}else if(action == "close"){
|
||||
Wpfc_Dialog.remove();
|
||||
}else if(action == "remove"){
|
||||
self.remove_integration();
|
||||
}else if(action == "pause"){
|
||||
self.pause_integration();
|
||||
}else if(action == "start"){
|
||||
self.start_integration();
|
||||
}
|
||||
});
|
||||
},
|
||||
start_integration: function(){
|
||||
var self = this;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
|
||||
self.disable_button("start");
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_start_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
||||
success: function(res){
|
||||
self.show_button("pause");
|
||||
self.enable_button("pause");
|
||||
self.hide_button("start");
|
||||
|
||||
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("pause");
|
||||
|
||||
},
|
||||
error: function(e) {
|
||||
self.enable_button("start");
|
||||
alert("unknown error");
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
pause_integration: function(){
|
||||
var self = this;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
|
||||
self.disable_button("pause");
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_pause_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
||||
success: function(res){
|
||||
self.show_button("start");
|
||||
self.enable_button("start");
|
||||
self.hide_button("pause");
|
||||
|
||||
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("pause");
|
||||
|
||||
},
|
||||
error: function(e) {
|
||||
self.enable_button("pause");
|
||||
alert("unknown error");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
remove_integration: function(){
|
||||
var self = this;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
|
||||
self.disable_button("remove");
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_remove_cdn_integration", "id" : self.id, "nonce" : self.nonce},
|
||||
success: function(res){
|
||||
self.values = jQuery.grep(self.values, function (e, i) {
|
||||
if(e.id == self.id){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
|
||||
self.enable_button("remove");
|
||||
jQuery("div.tab7 div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("isConnected");
|
||||
Wpfc_Dialog.remove();
|
||||
console.log(res);
|
||||
},
|
||||
error: function(e) {
|
||||
self.enable_button("remove");
|
||||
alert("unknown error");
|
||||
}
|
||||
});
|
||||
},
|
||||
save_integration: function(){
|
||||
var self = this;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
|
||||
self.buttons();
|
||||
self.values = {};
|
||||
self.values.id = self.id;
|
||||
|
||||
self.disable_button("finish");
|
||||
|
||||
if(modal.find("input#cdn-url").length == 1){
|
||||
self.values.cdnurl = modal.find("input#cdn-url").val();
|
||||
}else if(modal.find("select#cdn-url").length == 1){
|
||||
self.values.cdnurl = modal.find("select#cdn-url").val();
|
||||
}
|
||||
|
||||
|
||||
self.values.originurl = modal.find("input#origin-url").val();
|
||||
self.values.file_types = modal.find(".wpfc-checkbox-list input[type='checkbox']:checked").map(function(){return this.value;}).get().join(",");
|
||||
self.values.keywords = modal.find(".keyword-item-list li.keyword-item a.keyword-label").map(function(){return this.text;}).get().join(",");
|
||||
self.values.excludekeywords = modal.find(".keyword-item-list li.keyword-item-exclude a.keyword-label").map(function(){return this.text;}).get().join(",");
|
||||
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_save_cdn_integration", "nonce" : self.nonce, "values" : self.values, "file_types" : self.values.file_types, "keywords" : self.values.keywords, "excludekeywords" : self.values.excludekeywords},
|
||||
success: function(res){
|
||||
jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("isConnected");
|
||||
|
||||
self.enable_button("finish");
|
||||
|
||||
self.show_page("next");
|
||||
console.log(res);
|
||||
},
|
||||
error: function(e) {
|
||||
self.enable_button("finish");
|
||||
alert("unknown error");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
},
|
||||
enable_button: function(button_type){
|
||||
clearInterval(this.interval);
|
||||
|
||||
let self = this;
|
||||
let modal = jQuery("#wpfc-modal-" + self.id);
|
||||
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
||||
|
||||
button.attr("disabled", false);
|
||||
button.text(button.text().replace(/\.+$/, ""));
|
||||
},
|
||||
disable_button: function(button_type){
|
||||
let self = this;
|
||||
let modal = jQuery("#wpfc-modal-" + self.id);
|
||||
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
||||
let text = button.text();
|
||||
let dot = 0;
|
||||
|
||||
button.attr("disabled", true);
|
||||
|
||||
button.text(text + ".");
|
||||
|
||||
self.interval = setInterval(function(){
|
||||
text = button.text();
|
||||
dot = text.match(/\./g);
|
||||
|
||||
console.log(dot);
|
||||
console.log(button);
|
||||
|
||||
if(dot){
|
||||
if(dot.length < 3){
|
||||
button.text(text + ".");
|
||||
}else{
|
||||
button.text(text.replace(/\.+$/, ""));
|
||||
}
|
||||
}else{
|
||||
button.text(text + ".");
|
||||
}
|
||||
}, 300);
|
||||
},
|
||||
check_url_exist: function(){
|
||||
var self = this;
|
||||
var modal = jQuery("#wpfc-modal-" + self.id);
|
||||
var cdn_url = modal.find("#cdn-url").val();
|
||||
var origin_url = modal.find("#origin-url").val();
|
||||
|
||||
if(!cdn_url || !origin_url){
|
||||
if(!cdn_url){
|
||||
modal.find("#cdn-url").css("background-color", "red");
|
||||
}else{
|
||||
modal.find("#cdn-url").css("background-color", "white");
|
||||
}
|
||||
|
||||
if(!origin_url){
|
||||
modal.find("#origin-url").css("background-color", "red");
|
||||
}else{
|
||||
modal.find("#origin-url").css("background-color", "white");
|
||||
}
|
||||
|
||||
return;
|
||||
}else{
|
||||
modal.find("#cdn-url").css("background-color", "white");
|
||||
modal.find("#origin-url").css("background-color", "white");
|
||||
}
|
||||
|
||||
modal.find("#cdn-url-loading").show();
|
||||
modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html("");
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_check_url", "url" : cdn_url, "origin_url" : origin_url, "type" : WpfcCDN.id, "nonce" : self.nonce},
|
||||
success: function(res){
|
||||
modal.find("#cdn-url-loading").hide();
|
||||
if(res.success){
|
||||
self.show_page("next");
|
||||
modal.find("#cdn-url").css("background-color", "white");
|
||||
modal.find("#origin-url").css("background-color", "white");
|
||||
}else{
|
||||
if(WpfcCDN.id == "cloudflare"){
|
||||
modal.find("label.wiz-error-msg").html(res.error_message);
|
||||
}else{
|
||||
modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html(res.error_message);
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(e) {
|
||||
modal.find("#cdn-url-loading").hide();
|
||||
alert("unknown error");
|
||||
}
|
||||
});
|
||||
},
|
||||
show_page: function(type){
|
||||
var current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
|
||||
current_page.hide();
|
||||
|
||||
if(type == "next"){
|
||||
current_page.next().show();
|
||||
}else if(type == "back"){
|
||||
current_page.prev().show();
|
||||
}
|
||||
this.buttons();
|
||||
},
|
||||
buttons: function(){
|
||||
var self = this;
|
||||
var current_page, next_pages;
|
||||
|
||||
current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
|
||||
next_pages = current_page.nextAll(".wiz-cont");
|
||||
|
||||
jQuery(".wpfc-dialog-buttons[action]").hide();
|
||||
|
||||
jQuery(self.values).each(function(i, e){
|
||||
if(e.id == self.id){
|
||||
self.show_button("remove");
|
||||
|
||||
if(typeof e.status != "undefined" && e.status == "pause"){
|
||||
self.show_button("start");
|
||||
}else{
|
||||
self.show_button("pause");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(next_pages.length){
|
||||
if(next_pages.length > 1){
|
||||
self.show_button("next");
|
||||
}else if(next_pages.length == 1){
|
||||
self.show_button("finish");
|
||||
}
|
||||
|
||||
if(jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page") > 1){
|
||||
if(current_page.attr("wpfc-cdn-page") == 2){
|
||||
if(self.id == "maxcdn"){
|
||||
self.show_button("back");
|
||||
}
|
||||
}else{
|
||||
self.show_button("back");
|
||||
}
|
||||
}
|
||||
}else{
|
||||
self.show_button("close");
|
||||
}
|
||||
|
||||
},
|
||||
show_button: function(type){
|
||||
jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").show();
|
||||
},
|
||||
hide_button: function(type){
|
||||
jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").hide();
|
||||
},
|
||||
load_template: function(callbak){
|
||||
var self = this;
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
dataType: "json",
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_cdn_template", "id": self.id},
|
||||
success: function(res){
|
||||
jQuery("body").append(res.content);
|
||||
Wpfc_Dialog.dialog("wpfc-modal-" + self.id);
|
||||
callbak();
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
},
|
||||
error: function(e) {
|
||||
alert("CDN Template Error");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
1
wp-content/plugins/wp-fastest-cache/js/cdn/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
43
wp-content/plugins/wp-fastest-cache/js/column.js
Normal file
@@ -0,0 +1,43 @@
|
||||
if(window.attachEvent) {
|
||||
window.attachEvent('onload', wpfc_column_button_action);
|
||||
} else {
|
||||
if(window.onload) {
|
||||
var curronload_1 = window.onload;
|
||||
var newonload_1 = function(evt) {
|
||||
curronload_1(evt);
|
||||
wpfc_column_button_action(evt);
|
||||
};
|
||||
window.onload = newonload_1;
|
||||
} else {
|
||||
window.onload = wpfc_column_button_action;
|
||||
}
|
||||
}
|
||||
function wpfc_column_button_action(){
|
||||
jQuery(document).ready(function(){
|
||||
jQuery("a[id^='wpfc-clear-cache-link']").click(function(e){
|
||||
var post_id = jQuery(e.target).attr("data-id");
|
||||
var nonce = jQuery(e.target).attr("data-nonce");
|
||||
|
||||
jQuery("#wpfc-clear-cache-link-" + post_id).css('cursor', 'wait');
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: ajaxurl,
|
||||
data : {"action": "wpfc_clear_cache_column", "id" : post_id, "nonce" : nonce},
|
||||
dataType : "json",
|
||||
cache: false,
|
||||
success: function(data){
|
||||
jQuery("#wpfc-clear-cache-link-" + post_id).css('cursor', 'pointer');
|
||||
|
||||
if(typeof data.success != "undefined" && data.success == true){
|
||||
//
|
||||
}else{
|
||||
alert("Clear Cache Error");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
}
|
||||
141
wp-content/plugins/wp-fastest-cache/js/db.js
Normal file
@@ -0,0 +1,141 @@
|
||||
var WpfcDB = {
|
||||
init: function(){
|
||||
var self = this;
|
||||
|
||||
jQuery("#wpfc-db").change(function(e){
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
self.update();
|
||||
});
|
||||
|
||||
if(jQuery(".tab8").is(":visible")){
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
self.update();
|
||||
}
|
||||
|
||||
jQuery(function(){
|
||||
self.update();
|
||||
});
|
||||
|
||||
self.click_event_for_warnings();
|
||||
self.click_event_for_auto_cleanup();
|
||||
},
|
||||
click_event_for_auto_cleanup: function(){
|
||||
jQuery("#wpfc-auto-cleanup-option").change(function(){
|
||||
let status = jQuery(this).val();
|
||||
let nonce = jQuery("#wpfc-auto-cleanup-nonce").val();
|
||||
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'POST',
|
||||
url: ajaxurl,
|
||||
dataType : "json",
|
||||
data : {"action": "wpfc_db_set_auto_cleanup", "status" : status, "nonce" : nonce},
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(typeof data.status != "undefined"){
|
||||
jQuery("#wpfc-auto-cleanup-option").val(data.status);
|
||||
}else{
|
||||
jQuery("#wpfc-auto-cleanup-option").val("off");
|
||||
}
|
||||
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
|
||||
console.log(data);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
},
|
||||
click_event_for_warnings: function(){
|
||||
var self = this;
|
||||
|
||||
jQuery("div.tab8 div[wpfc-db-name]").click(function(e){
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: ajaxurl,
|
||||
dataType : "json",
|
||||
data : {"action": "wpfc_db_fix", "type": jQuery(this).attr("wpfc-db-name"), "nonce" : wpfc_nonce},
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(data.success){
|
||||
self.update();
|
||||
}else{
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
|
||||
if(data.showupdatewarning){
|
||||
Wpfc_New_Dialog.dialog("wpfc-modal-updatenow", {close: function(){
|
||||
Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
|
||||
if(jQuery(this).attr("checked")){
|
||||
var id = jQuery(this).attr("action-id");
|
||||
jQuery("div.tab1 div[template-id='wpfc-modal-updatenow'] div.window-content input#" + id).attr("checked", true);
|
||||
}
|
||||
});
|
||||
|
||||
Wpfc_New_Dialog.clone.remove();
|
||||
}});
|
||||
}else{
|
||||
if(typeof data.message != "undefined" && data.message){
|
||||
alert(data.message);
|
||||
}else{
|
||||
alert("DB Error");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
update: function(){
|
||||
var self = this;
|
||||
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: ajaxurl,
|
||||
dataType : "json",
|
||||
data : {"action": "wpfc_db_statics", "nonce" : wpfc_nonce},
|
||||
cache: false,
|
||||
success: function(data){
|
||||
jQuery.each(data, function(key, value){
|
||||
jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").css({'color': (value > 0) ? "red" : "#6BC359"});
|
||||
jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").text("(" + value + ")");
|
||||
jQuery(".tab8 div[wpfc-db-name='" + key + "'] div.meta").attr('class', (value > 0) ? "meta warning" : "meta success");
|
||||
});
|
||||
|
||||
if(data.all_warnings > 0){
|
||||
jQuery("label[for='wpfc-db']").text("DB (" + data.all_warnings + ")");
|
||||
}else{
|
||||
jQuery("label[for='wpfc-db']").text("DB");
|
||||
}
|
||||
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// if(window.attachEvent) {
|
||||
// window.attachEvent('onload', WpfcDB_init);
|
||||
// } else {
|
||||
// if(window.onload) {
|
||||
// var curronload = window.onload;
|
||||
// var newonload = function(evt) {
|
||||
// curronload(evt);
|
||||
// WpfcDB_init(evt);
|
||||
// };
|
||||
// window.onload = newonload;
|
||||
// } else {
|
||||
// window.onload = WpfcDB_init;
|
||||
// }
|
||||
// }
|
||||
|
||||
if(window.attachEvent){
|
||||
window.attachEvent('onload', WpfcDB_init);
|
||||
}else if(window.addEventListener){
|
||||
window.addEventListener('load', WpfcDB_init, false);
|
||||
}
|
||||
|
||||
function WpfcDB_init(){WpfcDB.init();}
|
||||
48
wp-content/plugins/wp-fastest-cache/js/dialog.js
Normal file
@@ -0,0 +1,48 @@
|
||||
var Wpfc_Dialog = {
|
||||
id : "",
|
||||
buttons: [],
|
||||
dialog: function(id, buttons){
|
||||
var self = this;
|
||||
self.id = id;
|
||||
self.buttons = buttons;
|
||||
|
||||
jQuery("#" + id).show();
|
||||
|
||||
jQuery("#" + id).draggable({
|
||||
stop: function(){
|
||||
jQuery(this).height("auto");
|
||||
}
|
||||
});
|
||||
|
||||
jQuery("#" + id).position({my: "center", at: "center", of: window});
|
||||
|
||||
jQuery(".close-wiz").click(function(e){
|
||||
jQuery(e.target).closest("div[id^='wpfc-modal-']").remove();
|
||||
});
|
||||
|
||||
self.show_buttons();
|
||||
},
|
||||
remove: function(clone_modal_id){
|
||||
if(typeof clone_modal_id != "undefined"){
|
||||
jQuery("#" + clone_modal_id).remove();
|
||||
}else{
|
||||
var self = this;
|
||||
jQuery("#" + self.id).remove();
|
||||
}
|
||||
},
|
||||
show_buttons: function(){
|
||||
var self = this;
|
||||
if(typeof self.buttons != "undefined"){
|
||||
jQuery.each(self.buttons, function( index, value ) {
|
||||
jQuery("#" + self.id + " button[action='" + index + "']").show();
|
||||
jQuery("#" + self.id + " button[action='" + index + "']").click(function(e){
|
||||
if(index == "close"){
|
||||
jQuery(e.target).closest("div[id^='wpfc-modal-']").remove();
|
||||
}else{
|
||||
value();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
249
wp-content/plugins/wp-fastest-cache/js/dialog_new.js
Normal file
@@ -0,0 +1,249 @@
|
||||
var Wpfc_New_Dialog = {
|
||||
template_id: "",
|
||||
id : "",
|
||||
buttons: [],
|
||||
clone: "",
|
||||
current_page_number: 1,
|
||||
total_page_number: 0,
|
||||
interval : {},
|
||||
enable_button: function(button_type){
|
||||
clearInterval(this.interval[this.id]);
|
||||
|
||||
let self = this;
|
||||
let modal = jQuery("#" + self.id);
|
||||
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
||||
|
||||
button.attr("disabled", false);
|
||||
button.text(button.text().replace(/\.+$/, ""));
|
||||
},
|
||||
disable_button: function(button_type){
|
||||
let self = this;
|
||||
let modal = jQuery("#" + self.id);
|
||||
let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']");
|
||||
let text = button.text();
|
||||
let dot = 0;
|
||||
|
||||
button.attr("disabled", true);
|
||||
|
||||
button.text(text + ".");
|
||||
|
||||
self.interval[self.id] = setInterval(function(){
|
||||
if(jQuery("#" + self.id).length === 0){
|
||||
clearInterval(self.interval);
|
||||
}
|
||||
|
||||
text = button.text();
|
||||
dot = text.match(/\./g);
|
||||
|
||||
console.log(self.interval);
|
||||
|
||||
if(dot){
|
||||
if(dot.length < 3){
|
||||
button.text(text + ".");
|
||||
}else{
|
||||
button.text(text.replace(/\.+$/, ""));
|
||||
}
|
||||
}else{
|
||||
button.text(text + ".");
|
||||
}
|
||||
}, 300);
|
||||
},
|
||||
dialog: function(id, buttons, callback){
|
||||
var self = this;
|
||||
self.clone = jQuery("div[template-id='" + id + "']").clone();
|
||||
|
||||
self.total_page_number = self.clone.find("div[wpfc-page]").length;
|
||||
self.total_page_number = self.total_page_number > 0 ? self.total_page_number : self.clone.find("div[wpfc-cdn-page]").length;
|
||||
|
||||
|
||||
self.template_id = id;
|
||||
self.id = id + "-" + new Date().getTime();
|
||||
self.buttons = buttons;
|
||||
|
||||
self.clone.attr("id", self.id);
|
||||
self.clone.removeAttr("template-id");
|
||||
|
||||
jQuery("body").append(self.clone);
|
||||
|
||||
self.clone.show();
|
||||
|
||||
self.clone.draggable({
|
||||
stop: function(){
|
||||
jQuery(this).height("auto");
|
||||
}
|
||||
});
|
||||
self.clone.position({my: "center", at: "center", of: window});
|
||||
self.clone.find(".close-wiz").click(function(){
|
||||
self.remove(this);
|
||||
});
|
||||
|
||||
self.update_ids_for_label();
|
||||
|
||||
self.show_buttons();
|
||||
|
||||
if(typeof callback != "undefined"){
|
||||
if(typeof callback == "function"){
|
||||
callback(self);
|
||||
}
|
||||
}
|
||||
|
||||
self.click_event_add_new_keyword_button();
|
||||
self.add_new_keyword_keypress();
|
||||
},
|
||||
remove: function(button){
|
||||
jQuery(button).closest("div[id^='wpfc-modal-']").remove();
|
||||
},
|
||||
show_buttons: function(){
|
||||
var self = this;
|
||||
|
||||
if(typeof self.buttons != "undefined"){
|
||||
jQuery.each(self.buttons, function( index, value ) {
|
||||
self.clone.find("button[action='" + index + "']").click(function(){
|
||||
if(value == "default"){
|
||||
if(index == "next"){
|
||||
self.default_next_action();
|
||||
}
|
||||
|
||||
if(index == "back"){
|
||||
self.default_back_action();
|
||||
}
|
||||
|
||||
if(index == "close"){
|
||||
self.default_close_action();
|
||||
}
|
||||
}else{
|
||||
value(this);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
default_next_action: function(){
|
||||
this.current_page_number = this.current_page_number + 1;
|
||||
|
||||
this.show_page(this.current_page_number);
|
||||
|
||||
this.show_button("back");
|
||||
|
||||
if(this.total_page_number == this.current_page_number){
|
||||
this.hide_button("next");
|
||||
this.show_button("finish");
|
||||
}
|
||||
},
|
||||
default_back_action: function(){
|
||||
this.current_page_number = this.current_page_number - 1;
|
||||
|
||||
this.show_page(this.current_page_number);
|
||||
|
||||
this.show_button("next");
|
||||
this.hide_button("finish");
|
||||
|
||||
if(this.current_page_number == 1){
|
||||
this.hide_button("back");
|
||||
}
|
||||
},
|
||||
default_close_action: function(){
|
||||
Wpfc_New_Dialog.clone.remove();
|
||||
},
|
||||
show_button: function(index){
|
||||
this.clone.find("button[action='" + index + "']").show();
|
||||
},
|
||||
hide_button: function(index){
|
||||
this.clone.find("button[action='" + index + "']").hide();
|
||||
},
|
||||
show_page: function(number){
|
||||
this.clone.find("div[wpfc-page], div[wpfc-cdn-page]").hide();
|
||||
this.clone.find("div[wpfc-page='" + number + "'], div[wpfc-cdn-page='" + number + "']").show();
|
||||
this.current_page_number = number;
|
||||
},
|
||||
update_ids_for_label: function(){
|
||||
var self = this;
|
||||
var input;
|
||||
var id = "";
|
||||
|
||||
self.clone.find("div.window-content div.wiz-input-cont").each(function(){
|
||||
input = jQuery(this).find("label.mc-input-label input");
|
||||
|
||||
if(input.length){
|
||||
id = input.attr("id") + self.id;
|
||||
|
||||
jQuery(this).find("label.mc-input-label input").attr("id", id);
|
||||
jQuery(this).find("label").last().attr("for", id);
|
||||
}
|
||||
});
|
||||
},
|
||||
set_values_from_tmp_to_real: function(){
|
||||
var self = this;
|
||||
|
||||
Wpfc_New_Dialog.clone.find("div.window-content input, div.window-content select").each(function(){
|
||||
if(jQuery(this).prop("tagName") == "SELECT"){
|
||||
jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content select[name='" + jQuery(this).attr("name") + "']").val(jQuery(this).val());
|
||||
}else if(jQuery(this).prop("tagName") == "INPUT"){
|
||||
if(jQuery(this).attr("type") == "checkbox"){
|
||||
if(jQuery(this).is(':checked')){
|
||||
jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", true);
|
||||
}else{
|
||||
jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", false);
|
||||
}
|
||||
}else{
|
||||
//toDo
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
add_new_keyword_keypress: function() {
|
||||
const $clone = Wpfc_New_Dialog.clone;
|
||||
const $input = $clone.find(".wpfc-textbox-con .fixed-search input");
|
||||
const $textboxCon = $clone.find(".wpfc-textbox-con");
|
||||
|
||||
const insertKeywordItem = function(){
|
||||
let keyword = $input.val().replace(/[\s,]/g, "");
|
||||
|
||||
$textboxCon.hide();
|
||||
$input.val("");
|
||||
|
||||
if (keyword.length > 0) {
|
||||
const $newKeywordItem = jQuery('<li class="keyword-item"><a class="keyword-label">' + keyword + '</a></li>').click(function() {
|
||||
jQuery(this).remove();
|
||||
});
|
||||
$newKeywordItem.insertBefore($clone.find(".wpfc-add-new-keyword").closest(".keyword-item"));
|
||||
}
|
||||
};
|
||||
|
||||
$input.keydown(function(e) {
|
||||
if (e.keyCode === 8) {
|
||||
let keyword = $input.val().replace(/[\s,]/g, "");
|
||||
|
||||
if (keyword.length === 0) {
|
||||
$textboxCon.hide();
|
||||
}
|
||||
} else if (e.keyCode === 13) {
|
||||
insertKeywordItem();
|
||||
}
|
||||
});
|
||||
|
||||
$input.bind("blur", function() {
|
||||
insertKeywordItem();
|
||||
});
|
||||
|
||||
|
||||
|
||||
},
|
||||
click_event_add_new_keyword_button: function(){
|
||||
Wpfc_New_Dialog.clone.find(".wpfc-add-new-keyword").click(function(){
|
||||
Wpfc_New_Dialog.clone.find(".wpfc-textbox-con").show();
|
||||
Wpfc_New_Dialog.clone.find(".wpfc-textbox-con .fixed-search input").focus();
|
||||
});
|
||||
},
|
||||
insert_keywords: function(id, keywords){
|
||||
if(keywords){
|
||||
jQuery.each(keywords.split(","), function( index, value ) {
|
||||
jQuery('<li class="keyword-item"><a class="keyword-label">' + value + '</a></li>').insertBefore(jQuery("div[id^='" + id + "']").find(".wpfc-add-new-keyword").closest(".keyword-item")).click(function(){
|
||||
jQuery(this).remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
};
|
||||
1
wp-content/plugins/wp-fastest-cache/js/index.html
Normal file
@@ -0,0 +1 @@
|
||||
Silence is golden.
|
||||
37
wp-content/plugins/wp-fastest-cache/js/language.js
Normal file
@@ -0,0 +1,37 @@
|
||||
window.wpfc = {};
|
||||
window.wpfc.translate = function(word){
|
||||
return (typeof window.wpfc.dictionary != "undefined" && typeof window.wpfc.dictionary[word] != "undefined" && window.wpfc.dictionary[word]) ? window.wpfc.dictionary[word] : word;
|
||||
};
|
||||
jQuery.fn.extend({
|
||||
wpfclang: function(){
|
||||
var dictionary = window.wpfc.dictionary || {};
|
||||
var el = jQuery(this);
|
||||
var text = el.attr("type") == "submit" ? el.val().trim() : el.text().trim();
|
||||
var converted = typeof dictionary[text] == "undefined" ? text : dictionary[text];
|
||||
|
||||
if(typeof converted != "undefined" && converted){
|
||||
if(el.attr("type") == "submit"){
|
||||
el.val(converted);
|
||||
}else{
|
||||
el.html(converted);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
var Wpfclang = {
|
||||
language : "",
|
||||
init: function(language){
|
||||
this.language = language;
|
||||
this.translate();
|
||||
},
|
||||
translate: function(){
|
||||
if(typeof window.wpfc != "undefined" && typeof window.wpfc.dictionary != "undefined"){
|
||||
var self = this;
|
||||
jQuery('#wpfc-read-tutorial span, #wpfc-plugin-setup-warning h3, #just-h1, #get-now-h1, #new-features-h1, div.wpfc-premium-step-footer ul li a, div.wpfc-premium-step-footer p, div.wpfc-premium-step-content, #wpbody-content label, div.question, .questionCon input[type="submit"], #message p, .wrap h2, #nextVerAct, select option, th, #rule-help-tip h4, #rule-help-tip label, .omni_admin_sidebar h3, #message p, #wpfc-image-static-panel span, #wpfc-statics-right div, #wpfc-image-static-panel p, #container-show-hide-image-list span, #wpfc-image-list th').each(function(){
|
||||
if(jQuery(this).children().length === 0){
|
||||
jQuery(this).wpfclang();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
65
wp-content/plugins/wp-fastest-cache/js/schedule.js
Normal file
@@ -0,0 +1,65 @@
|
||||
var WpfcSchedule = {
|
||||
id: "#wpfc-server-time",
|
||||
serverTime : "", //milliseconds
|
||||
dropdowns: "#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute, #wpFastestCacheTimeOut",
|
||||
init: function(){
|
||||
if(jQuery("form[id='wpfc-schedule-panel']").length){
|
||||
this.setServerTime();
|
||||
this.clock();
|
||||
this.setDropdownEvent();
|
||||
this.setDeleteCronEvent();
|
||||
jQuery("#wpfc-schedule-panel input[type='submit']").bind("click", this, this.submitButtonEvent);
|
||||
}
|
||||
},
|
||||
setDeleteCronEvent: function(){
|
||||
jQuery("#deleteCron").click(function(){
|
||||
jQuery("#wpFastestCacheTimeOut").val("");
|
||||
jQuery("form#wpfc-schedule-panel").submit();
|
||||
});
|
||||
},
|
||||
setDropdownEvent: function(){
|
||||
jQuery(this.dropdowns).change(function(e){
|
||||
var e = jQuery(e.currentTarget);
|
||||
|
||||
if(e.attr("value")){
|
||||
e.css("background-color", "");
|
||||
}
|
||||
|
||||
/* if(e.attr("id") == "wpFastestCacheTimeOut"){
|
||||
if(e.val() == "hourly"){
|
||||
jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', true);
|
||||
}else{
|
||||
jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', false);
|
||||
}
|
||||
}*/
|
||||
});
|
||||
},
|
||||
setServerTime: function(){
|
||||
this.serverTime = new Date(jQuery(this.id).text()).getTime();
|
||||
},
|
||||
clock: function(){
|
||||
var self = this;
|
||||
var newDate;
|
||||
|
||||
setInterval(function(){
|
||||
newDate = new Date(self.serverTime);
|
||||
jQuery(self.id).text(newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate() + " " + newDate.getHours() + ":" + newDate.getMinutes() + ":" + newDate.getSeconds());
|
||||
self.serverTime = self.serverTime + 1000;
|
||||
}, 1000);
|
||||
},
|
||||
submitButtonEvent: function(self){
|
||||
var error_count = 0;
|
||||
|
||||
jQuery(self.data.dropdowns).each(function(i, e){
|
||||
if(jQuery(e).attr("value")){
|
||||
jQuery(e).css("background-color", "");
|
||||
}else{
|
||||
error_count++;
|
||||
jQuery(e).css("background-color", "red");
|
||||
}
|
||||
});
|
||||
|
||||
return error_count > 0 ? false : true;
|
||||
}
|
||||
};
|
||||
WpfcSchedule.init();
|
||||
122
wp-content/plugins/wp-fastest-cache/js/toolbar.js
Normal file
@@ -0,0 +1,122 @@
|
||||
var WPFC_TOOLBAR = {
|
||||
ajax_url: false,
|
||||
init: function(){
|
||||
var self = this;
|
||||
|
||||
if(typeof ajaxurl != "undefined" || typeof wpfc_ajaxurl != "undefined"){
|
||||
self.ajax_url = (typeof ajaxurl != "undefined") ? ajaxurl : wpfc_ajaxurl;
|
||||
}else{
|
||||
alert("AjaxURL has NOT been defined");
|
||||
}
|
||||
|
||||
jQuery("body").append('<div id="revert-loader-toolbar"></div>');
|
||||
|
||||
jQuery("#wp-admin-bar-wpfc-toolbar-parent-default li").click(function(e){
|
||||
var id = (typeof e.target.id != "undefined" && e.target.id) ? e.target.id : jQuery(e.target).parent("li").attr("id");
|
||||
var action = "";
|
||||
|
||||
if(id == "wp-admin-bar-wpfc-toolbar-parent-settings"){
|
||||
if(jQuery("div[id^='wpfc-modal-toolbarsettings-']").length === 0){
|
||||
self.open_settings();
|
||||
}
|
||||
}else{
|
||||
if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache"){
|
||||
action = "wpfc_delete_cache";
|
||||
}else if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache-and-minified"){
|
||||
action = "wpfc_delete_cache_and_minified";
|
||||
}else if(id == "wp-admin-bar-wpfc-toolbar-parent-clear-cache-of-this-page"){
|
||||
action = "wpfc_delete_current_page_cache";
|
||||
}else if(id == "wp-admin-bar-wpfc-toolbar-parent-clear-cache-of-allsites"){
|
||||
action = "wpfc_clear_cache_of_allsites";
|
||||
}
|
||||
|
||||
WPFC_TOOLBAR.send({"action": action, "path" : window.location.pathname});
|
||||
}
|
||||
});
|
||||
},
|
||||
open_settings: function(){
|
||||
var self = this;
|
||||
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: self.ajax_url,
|
||||
data : {"action": "wpfc_toolbar_get_settings", "path" : window.location.pathname},
|
||||
dataType : "json",
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(data.success){
|
||||
var data_json = {"action": "wpfc_toolbar_save_settings", "path" : window.location.pathname, "roles" : {}};
|
||||
|
||||
Wpfc_New_Dialog.dialog("wpfc-modal-toolbarsettings", {
|
||||
close: function(){
|
||||
Wpfc_New_Dialog.clone.remove();
|
||||
},
|
||||
finish: function(){
|
||||
jQuery("#" + Wpfc_New_Dialog.id).find("input[type='checkbox']:checked").each(function(i, e){
|
||||
data_json.roles[jQuery(e).attr("name")] = 1;
|
||||
});
|
||||
|
||||
WPFC_TOOLBAR.send(data_json);
|
||||
|
||||
Wpfc_New_Dialog.clone.remove();
|
||||
}}, function(dialog){
|
||||
jQuery("#" + Wpfc_New_Dialog.id).find("input[type='checkbox']").each(function(i, e){
|
||||
if(typeof data.roles[jQuery(e).attr("name")] != "undefined"){
|
||||
jQuery(e).attr('checked', true);
|
||||
}
|
||||
});
|
||||
|
||||
Wpfc_New_Dialog.show_button("close");
|
||||
Wpfc_New_Dialog.show_button("finish");
|
||||
|
||||
setTimeout(function(){
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
}, 500);
|
||||
});
|
||||
}else{
|
||||
alert("Toolbar Settings Error!")
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
send: function(data_json){
|
||||
var self = this;
|
||||
|
||||
if(typeof wpfc_nonce != "undefined" && wpfc_nonce){
|
||||
data_json.nonce = wpfc_nonce;
|
||||
}
|
||||
|
||||
jQuery("#revert-loader-toolbar").show();
|
||||
jQuery.ajax({
|
||||
type: 'GET',
|
||||
url: self.ajax_url,
|
||||
data : data_json,
|
||||
dataType : "json",
|
||||
cache: false,
|
||||
success: function(data){
|
||||
if(data[1] == "error"){
|
||||
if(typeof data[2] != "undefined" && data[2] == "alert"){
|
||||
alert(data[0]);
|
||||
}else{
|
||||
Wpfc_New_Dialog.dialog("wpfc-modal-permission", {close: "default"});
|
||||
Wpfc_New_Dialog.show_button("close");
|
||||
}
|
||||
}
|
||||
|
||||
if(typeof WpFcCacheStatics != "undefined"){
|
||||
WpFcCacheStatics.update();
|
||||
}else{
|
||||
jQuery("#revert-loader-toolbar").hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('load', function(){
|
||||
jQuery(document).ready(function(){
|
||||
WPFC_TOOLBAR.init();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,628 @@
|
||||
# Translation of Plugins - WP Fastest Cache - Development (trunk) in Czech
|
||||
# This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-02-25 22:35:47+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2);\n"
|
||||
"X-Generator: GlotPress/4.0.1\n"
|
||||
"Language: cs_CZ\n"
|
||||
"Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n"
|
||||
|
||||
#: templates/toolbar_settings.php:34
|
||||
msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below."
|
||||
msgstr ""
|
||||
|
||||
#: templates/toolbar_settings.php:33
|
||||
msgid "User Roles"
|
||||
msgstr ""
|
||||
|
||||
#: templates/preload.php:374 templates/preload.php:457
|
||||
#: templates/preload.php:474
|
||||
msgid "At least one sitemap must be added"
|
||||
msgstr ""
|
||||
|
||||
#: templates/preload.php:187
|
||||
msgid "You can customize the advanced settings through this section."
|
||||
msgstr ""
|
||||
|
||||
#: templates/preload.php:186
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Pokročilá nastavení"
|
||||
|
||||
#: templates/preload.php:151
|
||||
msgid "You can specify sitemaps to be used for preloading."
|
||||
msgstr "Můžete určit mapy webu, které se mají použít pro předběžné načítání."
|
||||
|
||||
#: templates/preload.php:150
|
||||
msgid "Sitemaps"
|
||||
msgstr "Mapy webu"
|
||||
|
||||
#: templates/preload.php:87
|
||||
msgid "You can specify the contents to be used for preloading and you can sort them as well."
|
||||
msgstr ""
|
||||
|
||||
#: templates/preload.php:86
|
||||
msgid "Content Types"
|
||||
msgstr "Typy obsahu"
|
||||
|
||||
#: templates/preload.php:73
|
||||
msgid "You can specify the method you want the preload feature to use through this section."
|
||||
msgstr ""
|
||||
|
||||
#: templates/preload.php:72
|
||||
msgid "Choose a Method"
|
||||
msgstr "Vyberte metodu"
|
||||
|
||||
#: templates/preload.php:56
|
||||
msgid "Preload Settings"
|
||||
msgstr ""
|
||||
|
||||
#: inc/admin.php:1458 inc/admin.php:1465
|
||||
msgid "Some js sources will not be loaded until scrolling or moving the mouse"
|
||||
msgstr ""
|
||||
|
||||
#: inc/admin.php:1457 inc/admin.php:1464
|
||||
msgid "Delay Js"
|
||||
msgstr "Zpoždění Js"
|
||||
|
||||
#: inc/admin.php:1074
|
||||
msgid "WP Fastest Cache Options"
|
||||
msgstr "Nastavení WP Fastest Cache"
|
||||
|
||||
#: inc/admin.php:1954 templates/exclude.php:114
|
||||
msgid "has Yandex Click ID Parameters"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
#: wpFastestCache.php
|
||||
msgid "https://www.wpfastestcache.com/"
|
||||
msgstr "https://www.wpfastestcache.com/"
|
||||
|
||||
#: inc/admin.php:1749
|
||||
msgid "Clearing Specific Pages"
|
||||
msgstr "Vymazat konkrétní stránky"
|
||||
|
||||
#: templates/toolbar_settings.php:71
|
||||
msgid "Save"
|
||||
msgstr "Uložit"
|
||||
|
||||
#: templates/toolbar_settings.php:68
|
||||
msgid "Cancel"
|
||||
msgstr "Storno"
|
||||
|
||||
#: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20
|
||||
msgid "Toolbar Settings"
|
||||
msgstr "Nastavení panelu nástrojů"
|
||||
|
||||
#: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114
|
||||
msgid "Clear Cache of All Sites"
|
||||
msgstr "Vymazat cache paměť všech webů."
|
||||
|
||||
#: wpFastestCache.php:439
|
||||
msgid "<a href=\"%s\">Settings</a>"
|
||||
msgstr "<a href=\"%s\">Nastavení</a>"
|
||||
|
||||
#: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15
|
||||
msgid "Clear Cache"
|
||||
msgstr "Vymazat cache paměť"
|
||||
|
||||
#: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383
|
||||
msgid "Eliminate render-blocking JavaScript resources"
|
||||
msgstr "Odstranit zdroje JavaScriptu blokující vykreslení"
|
||||
|
||||
#: inc/admin.php:470 inc/admin.php:473
|
||||
msgid "Options have been saved"
|
||||
msgstr "Nastavení byla uložena."
|
||||
|
||||
#: inc/admin.php:1955 templates/exclude.php:115
|
||||
msgid "has Woocommerce Items in Cart"
|
||||
msgstr "má položky Woocommerce v košíku"
|
||||
|
||||
#: inc/admin.php:1953 templates/exclude.php:113
|
||||
msgid "has Google Analytics Parameters"
|
||||
msgstr "obsahuje parametry Google Analytics"
|
||||
|
||||
#: inc/admin.php:1943 templates/exclude.php:100
|
||||
msgid "Archives"
|
||||
msgstr "Archivy"
|
||||
|
||||
#: templates/timeout.php:189
|
||||
msgid "Server Time"
|
||||
msgstr "Čas serveru"
|
||||
|
||||
#: templates/timeout.php:169
|
||||
msgid "delete the files"
|
||||
msgstr "odstranit soubory"
|
||||
|
||||
#: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106
|
||||
#: templates/timeout.php:99
|
||||
msgid "Contains"
|
||||
msgstr "Obsahuje"
|
||||
|
||||
#: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107
|
||||
#: templates/timeout.php:98
|
||||
msgid "Is Equal To"
|
||||
msgstr "Je rovný"
|
||||
|
||||
#: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105
|
||||
#: templates/timeout.php:97
|
||||
msgid "Starts With"
|
||||
msgstr "Začíná na"
|
||||
|
||||
#: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95
|
||||
#: templates/timeout.php:96
|
||||
msgid "Home Page"
|
||||
msgstr "Úvodní stránka"
|
||||
|
||||
#: inc/admin.php:1643 templates/timeout.php:95
|
||||
msgid "All"
|
||||
msgstr "Vše"
|
||||
|
||||
#: templates/exclude.php:66
|
||||
msgid "Exclude Page Wizard"
|
||||
msgstr "Vyloučit průvodce stránkou"
|
||||
|
||||
#: templates/timeout.php:124
|
||||
msgid "Then"
|
||||
msgstr "Pak"
|
||||
|
||||
#: templates/exclude.php:89 templates/timeout.php:91
|
||||
msgid "If REQUEST_URI"
|
||||
msgstr "Pokud REQUEST_URI"
|
||||
|
||||
#: templates/timeout.php:68
|
||||
msgid "Cache Timeout Wizard"
|
||||
msgstr "Průvodce vypršením časového limitu cache paměti"
|
||||
|
||||
#: templates/lazy_load.php:9
|
||||
msgid "Lazy Load Settings"
|
||||
msgstr "Nastavení pomalého načítání (\"lazy load\")"
|
||||
|
||||
#: templates/nginx_gzip.php:9
|
||||
msgid "Enable Gzip"
|
||||
msgstr "Povolit Gzip"
|
||||
|
||||
#: templates/update_now.php:9
|
||||
msgid "Please Update"
|
||||
msgstr "Prosím aktualizujte"
|
||||
|
||||
#: templates/update_success.php:9
|
||||
msgid "Success"
|
||||
msgstr "Hotovo"
|
||||
|
||||
#: templates/disable_wp_cron.php:20
|
||||
msgid "Warning"
|
||||
msgstr "Varování"
|
||||
|
||||
#: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993
|
||||
#: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050
|
||||
msgid "Add New Rule"
|
||||
msgstr "Přidat nové pravidlo"
|
||||
|
||||
#: inc/admin-toolbar.php:105 inc/admin.php:1615
|
||||
msgid "Clear Cache and Minified CSS/JS"
|
||||
msgstr "Smazat cache paměť a minifikovat CSS/JS"
|
||||
|
||||
#: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419
|
||||
msgid "Only available in Premium version"
|
||||
msgstr "Dostupné pouze v Premium verzi"
|
||||
|
||||
#: templates/timeout.php:141
|
||||
msgid "Choose One"
|
||||
msgstr "Vyber jeden"
|
||||
|
||||
#: inc/admin.php:1620
|
||||
msgid "All cache files will be removed as well"
|
||||
msgstr "Všechny soubory cache paměti budou také odstraněny"
|
||||
|
||||
#: inc/admin.php:1619
|
||||
msgid "If you modify any css file, you have to delete minified css files"
|
||||
msgstr "Pokud upravíte jakýkoli CSS soubor, musíte odstranit minifikované CSS soubory"
|
||||
|
||||
#: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622
|
||||
msgid "Target folder"
|
||||
msgstr "Cílová složka"
|
||||
|
||||
#: inc/admin.php:1606
|
||||
msgid "You can delete all cache files"
|
||||
msgstr "Můžete smazat všechny soubory cache paměti"
|
||||
|
||||
#: inc/admin.php:1090
|
||||
msgid "Exclude"
|
||||
msgstr "Vyloučit"
|
||||
|
||||
#: inc/admin.php:1084
|
||||
msgid "Image Optimization"
|
||||
msgstr "Optimalizace obrázku"
|
||||
|
||||
#: inc/admin.php:1082
|
||||
msgid "Settings"
|
||||
msgstr "Nastavení"
|
||||
|
||||
#: inc/admin.php:2192
|
||||
msgid "Database Cleanup"
|
||||
msgstr "Vyčištění databáze"
|
||||
|
||||
#: inc/admin.php:2083
|
||||
msgid "CDN Settings"
|
||||
msgstr "CDN nastavení "
|
||||
|
||||
#: inc/admin.php:2046
|
||||
msgid "Exclude JS"
|
||||
msgstr "Vyloučit JS"
|
||||
|
||||
#: inc/admin.php:2026
|
||||
msgid "Exclude CSS"
|
||||
msgstr "Vyloučit CSS"
|
||||
|
||||
#: inc/admin.php:2008
|
||||
msgid "Exclude Cookies"
|
||||
msgstr "Vyloučit cookies"
|
||||
|
||||
#: inc/admin.php:1989
|
||||
msgid "Exclude User-Agents"
|
||||
msgstr "Vyloučit uživatelské agenty"
|
||||
|
||||
#: inc/admin.php:1972
|
||||
msgid "Exclude Pages"
|
||||
msgstr "Vyloučit stránky"
|
||||
|
||||
#: inc/admin.php:1806
|
||||
msgid "Optimize Image Tool"
|
||||
msgstr "Nástroj pro optimalizaci obrázků"
|
||||
|
||||
#: inc/admin.php:1636
|
||||
msgid "Timeout Rules"
|
||||
msgstr "Pravidla časového limitu"
|
||||
|
||||
#: inc/admin.php:1554
|
||||
msgid "Cache Statistics"
|
||||
msgstr "Statistiky cache paměti"
|
||||
|
||||
#: templates/updatepost.php:53
|
||||
msgid "Clear Cache of Post / Page"
|
||||
msgstr "Vymazat cache paměť příspěvku / stránky"
|
||||
|
||||
#: templates/updatepost.php:29
|
||||
msgid "What do you want to happen after update a post or a page?"
|
||||
msgstr "Co se má stát po aktualizaci příspěvku nebo stránky?"
|
||||
|
||||
#: templates/newpost.php:58
|
||||
msgid "Clear Cache of Pagination"
|
||||
msgstr "Vymazat cache paměť stránkování"
|
||||
|
||||
#: templates/newpost.php:57 templates/updatepost.php:55
|
||||
msgid "Clear Cache of Post Tags"
|
||||
msgstr "Vymazat cache paměť tagů příspěvků"
|
||||
|
||||
#: templates/newpost.php:56 templates/updatepost.php:54
|
||||
msgid "Clear Cache of Post Categories"
|
||||
msgstr "Vymazat cache paměť kategorie příspěvků"
|
||||
|
||||
#: templates/newpost.php:55 templates/updatepost.php:56
|
||||
msgid "Clear Cache of Home page"
|
||||
msgstr "Vymazat cache paměť domovské stránky"
|
||||
|
||||
#: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602
|
||||
#: templates/newpost.php:51 templates/updatepost.php:49
|
||||
msgid "Clear All Cache"
|
||||
msgstr "Vymazat všechny cache paměti"
|
||||
|
||||
#: templates/newpost.php:29
|
||||
msgid "What do you want to happen after publishing the new post?"
|
||||
msgstr "Co se má stát po zveřejnění nového příspěvku?"
|
||||
|
||||
#: templates/newpost.php:68 templates/updatepost.php:64
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: templates/preload.php:215
|
||||
msgid "Restart After Completed"
|
||||
msgstr "Po dokončení restartujte počítač"
|
||||
|
||||
#: templates/preload.php:210
|
||||
msgid "pages per minute"
|
||||
msgstr "stránek za minutu"
|
||||
|
||||
#: templates/preload.php:132
|
||||
msgid "Custom Taxonomies"
|
||||
msgstr "Vlastní taxonomie"
|
||||
|
||||
#: templates/preload.php:127
|
||||
msgid "Custom Post Types"
|
||||
msgstr "Vlastní typy příspěvku"
|
||||
|
||||
#: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122
|
||||
msgid "Attachments"
|
||||
msgstr "Přílohy"
|
||||
|
||||
#: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118
|
||||
msgid "Tags"
|
||||
msgstr "Tagy"
|
||||
|
||||
#: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114
|
||||
msgid "Pages"
|
||||
msgstr "Stránky"
|
||||
|
||||
#: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110
|
||||
msgid "Categories"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106
|
||||
msgid "Posts"
|
||||
msgstr "Příspěvky"
|
||||
|
||||
#: templates/preload.php:102
|
||||
msgid "Homepage"
|
||||
msgstr "Domovská stránka"
|
||||
|
||||
#: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337
|
||||
msgid "Reduce HTTP requests through combined js files"
|
||||
msgstr "Snížit požadavky HTTP prostřednictvím kombinovaných JS souborů"
|
||||
|
||||
#: inc/admin.php:1425 inc/admin.php:1447
|
||||
msgid "Load images and iframes when they enter the browsers viewport"
|
||||
msgstr "Načíst obrázky a prvky iframe při vstupu do výřezu prohlížeče"
|
||||
|
||||
#: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409
|
||||
msgid "Load Google Fonts asynchronously"
|
||||
msgstr "Načíst Google fonty asynchronně"
|
||||
|
||||
#: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408
|
||||
msgid "Google Fonts"
|
||||
msgstr "Google Fonty"
|
||||
|
||||
#: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382
|
||||
msgid "Render Blocking Js"
|
||||
msgstr "JS blokující vykreslování"
|
||||
|
||||
#: inc/admin.php:1361
|
||||
msgid "You can remove the emoji inline css and wp-emoji-release.min.js"
|
||||
msgstr "Můžete odstranit inline CSS pro emodži a wp-emoji-release.min.js"
|
||||
|
||||
#: inc/admin.php:1360
|
||||
msgid "Disable Emojis"
|
||||
msgstr "Zakázat Emodži"
|
||||
|
||||
#: inc/admin.php:1355
|
||||
msgid "Reduce page load times for repeat visitors"
|
||||
msgstr "Snižte dobu načítání stránky pro opakované návštěvníky"
|
||||
|
||||
#: inc/admin.php:1354
|
||||
msgid "Browser Caching"
|
||||
msgstr "Cache paměť prohlížeče"
|
||||
|
||||
#: inc/admin.php:1343
|
||||
msgid "Reduce the size of files sent from your server"
|
||||
msgstr "Zmenšit velikost souborů odeslaných ze serveru"
|
||||
|
||||
#: inc/admin.php:1342
|
||||
msgid "Gzip"
|
||||
msgstr "Gzip"
|
||||
|
||||
#: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336
|
||||
msgid "Combine Js Plus"
|
||||
msgstr "Kombinovat JS Plus"
|
||||
|
||||
#: inc/admin.php:1316
|
||||
msgid "Combine Js"
|
||||
msgstr "Kombinovat JS"
|
||||
|
||||
#: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311
|
||||
msgid "You can decrease the size of js files"
|
||||
msgstr "Můžete zmenšit velikost JS souborů"
|
||||
|
||||
#: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310
|
||||
msgid "Minify Js"
|
||||
msgstr "Minifikace JS"
|
||||
|
||||
#: inc/admin.php:1292
|
||||
msgid "Reduce HTTP requests through combined css files"
|
||||
msgstr "Snížit požadavky HTTP prostřednictvím kombinovaných CSS souborů "
|
||||
|
||||
#: inc/admin.php:1291
|
||||
msgid "Combine Css"
|
||||
msgstr "Kombinovat CSS"
|
||||
|
||||
#: inc/admin.php:1280 inc/admin.php:1285
|
||||
msgid "More powerful minify css"
|
||||
msgstr "Výkonnější minifikace CSS"
|
||||
|
||||
#: inc/admin.php:1279 inc/admin.php:1284
|
||||
msgid "Minify Css Plus"
|
||||
msgstr "Minifikace CSS Plus"
|
||||
|
||||
#: inc/admin.php:1271
|
||||
msgid "You can decrease the size of css files"
|
||||
msgstr "Můžete zmenšit velikost souborů CSS"
|
||||
|
||||
#: inc/admin.php:1270
|
||||
msgid "Minify Css"
|
||||
msgstr "Minifikace CSS"
|
||||
|
||||
#: inc/admin.php:1258 inc/admin.php:1263
|
||||
msgid "More powerful minify html"
|
||||
msgstr "Výkonnější minifikace HTML"
|
||||
|
||||
#: inc/admin.php:1257 inc/admin.php:1262
|
||||
msgid "Minify HTML Plus"
|
||||
msgstr "Minifikace HTML Plus"
|
||||
|
||||
#: inc/admin.php:1251
|
||||
msgid "You can decrease the size of page"
|
||||
msgstr "Můžete zmenšit velikost stránky"
|
||||
|
||||
#: inc/admin.php:1250
|
||||
msgid "Minify HTML"
|
||||
msgstr "Minifikace HTML"
|
||||
|
||||
#: inc/admin.php:1242
|
||||
msgid "Clear cache files when a post or page is updated"
|
||||
msgstr "Vymazat soubory cache paměti při aktualizaci příspěvku nebo stránky"
|
||||
|
||||
#: inc/admin.php:1241 templates/updatepost.php:18
|
||||
msgid "Update Post"
|
||||
msgstr "Aktualizace příspěvku"
|
||||
|
||||
#: inc/admin.php:1235
|
||||
msgid "Clear cache files when a post or page is published"
|
||||
msgstr "Vymazat soubory cache paměti při publikování příspěvku nebo stránky"
|
||||
|
||||
#: inc/admin.php:1234 templates/newpost.php:18
|
||||
msgid "New Post"
|
||||
msgstr "Nový příspěvek"
|
||||
|
||||
#: inc/admin.php:1202 inc/admin.php:1228
|
||||
msgid "Create cache for mobile theme"
|
||||
msgstr "Vytvořit cache paměť pro mobilní šablonu"
|
||||
|
||||
#: inc/admin.php:1201 inc/admin.php:1227
|
||||
msgid "Mobile Theme"
|
||||
msgstr "Mobilní šablona"
|
||||
|
||||
#: inc/admin.php:1196
|
||||
msgid "Don't show the cached version for desktop to mobile devices"
|
||||
msgstr "Nezobrazovat verzi cache paměti na stolních počítačích nebo na mobilních zařízeních"
|
||||
|
||||
#: inc/admin.php:1195
|
||||
msgid "Mobile"
|
||||
msgstr "Mobilní"
|
||||
|
||||
#: inc/admin.php:1191
|
||||
msgid "Don't show the cached version for logged-in users"
|
||||
msgstr "Nezobrazovat verzi cache paměti přihlášeným uživatelům"
|
||||
|
||||
#: inc/admin.php:1190
|
||||
msgid "Logged-in Users"
|
||||
msgstr "Přihlášení uživatelé"
|
||||
|
||||
#: inc/admin.php:1158
|
||||
msgid "Create the cache of all the site automatically"
|
||||
msgstr "Vytvořit cache paměť všech webů automaticky"
|
||||
|
||||
#: inc/admin.php:1157
|
||||
msgid "Preload"
|
||||
msgstr "Předběžně načíst"
|
||||
|
||||
#: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149
|
||||
msgid "Reduce the number of SQL queries"
|
||||
msgstr "Snížit počet dotazů SQL"
|
||||
|
||||
#: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148
|
||||
msgid "Widget Cache"
|
||||
msgstr "Cache paměť widgetu"
|
||||
|
||||
#: inc/admin.php:1119
|
||||
msgid "Enable"
|
||||
msgstr "Povolit"
|
||||
|
||||
#: inc/admin.php:1118
|
||||
msgid "Cache System"
|
||||
msgstr "Systém cache paměti"
|
||||
|
||||
#: wpFastestCache.php:2321
|
||||
msgid "Once Every 15 Days"
|
||||
msgstr "Jednou za 15 dní"
|
||||
|
||||
#: wpFastestCache.php:2309
|
||||
msgid "Once Every 7 Days"
|
||||
msgstr "Jednou za 7 dní"
|
||||
|
||||
#: wpFastestCache.php:2303
|
||||
msgid "Once Every 3 Days"
|
||||
msgstr "Jednou za 3 dny"
|
||||
|
||||
#: wpFastestCache.php:2291
|
||||
msgid "Once Every 10 Hours"
|
||||
msgstr "Jednou za 10 hodin"
|
||||
|
||||
#: wpFastestCache.php:2285
|
||||
msgid "Once Every 9 Hours"
|
||||
msgstr "Jednou za 9 hodin"
|
||||
|
||||
#: wpFastestCache.php:2279
|
||||
msgid "Once Every 8 Hours"
|
||||
msgstr "Jednou za 8 hodin"
|
||||
|
||||
#: wpFastestCache.php:2273
|
||||
msgid "Once Every 7 Hours"
|
||||
msgstr "Jednou za 7 hodin"
|
||||
|
||||
#: wpFastestCache.php:2261
|
||||
msgid "Once Every 5 Hours"
|
||||
msgstr "Jednou za 5 hodin"
|
||||
|
||||
#: wpFastestCache.php:2255
|
||||
msgid "Once Every 4 Hours"
|
||||
msgstr "Jednou za 4 hodiny"
|
||||
|
||||
#: wpFastestCache.php:2249
|
||||
msgid "Once Every 3 Hours"
|
||||
msgstr "Jednou za 3 hodiny"
|
||||
|
||||
#: wpFastestCache.php:2243
|
||||
msgid "Once Every 2 Hours"
|
||||
msgstr "Jednou za 2 hodiny"
|
||||
|
||||
#: wpFastestCache.php:2315
|
||||
msgid "Once Every 10 Days"
|
||||
msgstr "Jednou za 10 dní"
|
||||
|
||||
#. Author of the plugin
|
||||
#: wpFastestCache.php
|
||||
msgid "Emre Vona"
|
||||
msgstr "Emre Vona"
|
||||
|
||||
#. Description of the plugin
|
||||
#: wpFastestCache.php
|
||||
msgid "The simplest and fastest WP Cache system"
|
||||
msgstr "Nejjednodušší a nejrychlejší WP Cache systém"
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#: wpFastestCache.php
|
||||
msgid "http://wordpress.org/plugins/wp-fastest-cache/"
|
||||
msgstr "http://cs.wordpress.org/plugins/wp-fastest-cache/"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: wpFastestCache.php
|
||||
msgid "WP Fastest Cache"
|
||||
msgstr "WP Fastest Cache"
|
||||
|
||||
#: wpFastestCache.php:2333
|
||||
msgid "Once a Year"
|
||||
msgstr "Jednou za rok"
|
||||
|
||||
#: wpFastestCache.php:2327
|
||||
msgid "Once a Month"
|
||||
msgstr "Jednou za měsíc"
|
||||
|
||||
#: wpFastestCache.php:2297
|
||||
msgid "Once a Day"
|
||||
msgstr "Jednou za den"
|
||||
|
||||
#: wpFastestCache.php:2267
|
||||
msgid "Once Every 6 Hours"
|
||||
msgstr "Jednou za 6 hodin"
|
||||
|
||||
#: wpFastestCache.php:2237
|
||||
msgid "Once an Hour"
|
||||
msgstr "Jednou za hodinu"
|
||||
|
||||
#: wpFastestCache.php:2231
|
||||
msgid "Twice an Hour"
|
||||
msgstr "Dvakrát za hodinu"
|
||||
|
||||
#: wpFastestCache.php:2225
|
||||
msgid "Once Every 15 Minutes"
|
||||
msgstr "Jednou za 15 minut"
|
||||
|
||||
#: wpFastestCache.php:2219
|
||||
msgid "Once Every 5 Minutes"
|
||||
msgstr "Jednou za 5 minut"
|
||||
|
||||
#: wpFastestCache.php:2213
|
||||
msgid "Once Every 1 Minute"
|
||||
msgstr "Jednou za minutu"
|
||||