Asset CleanUp: Page Speed Booster - Version 1.2.9.1

Version Description

  • "Combined Loaded CSS" feature (concatenates all the remaining loaded stylesheets within the HEAD section of the page and saves them into one file) to reduce HTTP requests even further
  • Improved "Getting Started" area
  • Made "Settings" as the default page where you (the administrator user) is redirected when activating the plugin for the first time
Download this release

Release Info

Developer gabelivan
Plugin Icon 128x128 Asset CleanUp: Page Speed Booster
Version 1.2.9.1
Comparing to
See all releases

Code changes from version 1.2.9 to 1.2.9.1

README.md DELETED
@@ -1,4 +0,0 @@
1
- # wp-asset-clean-up
2
- Performance WordPress Plugin: Make your Website Load FASTER by preventing specific scripts (.JS) and styles (.CSS) from loading on pages/posts and home page
3
-
4
- Read more here: https://wordpress.org/plugins/wp-asset-clean-up/
 
 
 
 
assets/script.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(a){function b(){var b={};"direct"===wpacu_object.dom_get_type?(b[wpacu_object.plugin_name+"_load"]=1,b[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:b,cache:!1,complete:function(b,c){if("error"===b.statusText){var d=wpacu_object.ajax_direct_fetch_error;d=d.replace(/\{wpacu_output\}/,b.responseText),d=d.replace(/\{wpacu_status_code_error\}/,b.status),a("#wpacu_meta_box_content").html(d)}}}).done(function(b){var c=b.substring(b.lastIndexOf(wpacu_object.start_del)+wpacu_object.start_del.length,b.lastIndexOf(wpacu_object.end_del)),d={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list:c,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()};if("btoa"in window)try{b=b.replace(/[\u0250-\ue007]/g,""),b=b.replace(/[^\x00-\x7F]/g,""),d.contents=window.btoa(b)}catch(a){d.contents=""}a.post(wpacu_object.ajax_url,d,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()}))}a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)});var e={load:function(){e.getExternalFileSize();var b;a(".input-unload-on-this-page").on("click change",function(){a(this).prop("checked")?a(this).closest("tr").addClass("wpacu_not_load"):a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_global_unload").click(function(){b=a(this).attr("data-handle"),a(this).prop("checked")?a(this).parent("label").addClass("wpacu_global_checked"):a(this).parent("label").removeClass("wpacu_global_checked")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_bulk_unload_active"):a(this).parent("label").removeClass("wpacu_bulk_unload_active")}),a(".wpacu_load_it_option").click(function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")})},getExternalFileSize:function(){a(".wpacu-external-file-size").each(function(){var b=a(this);a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:a(this).attr("data-src")},function(a){b.html(a)})})}};if(a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").fadeIn():a("#wpacu-settings-assets-retrieval-mode").fadeOut()}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a(".wpacu_remove_rule").click(function(){var b=a(this).parents(".wpacu_global_rule_row");a(this).prop("checked")?b.addClass("selected"):b.removeClass("selected")}),a("#wpacu_wrap_assets").length>0&&e.load(),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click","body.branch-5 .edit-post-header__settings button.is-primary",function(){var c=function(){0===a(".edit-post-header__settings .is-saving").length&&(b(),clearInterval(d))},d=setInterval(c,900)})});
1
+ jQuery(document).ready(function(a){function b(){var b={};"direct"===wpacu_object.dom_get_type?(b[wpacu_object.plugin_name+"_load"]=1,b[wpacu_object.plugin_name+"_time_r"]=(new Date).getTime(),a.ajax({method:"GET",url:wpacu_object.page_url,data:b,cache:!1,complete:function(b,c){if("error"===b.statusText){var d=wpacu_object.ajax_direct_fetch_error;d=d.replace(/\{wpacu_output\}/,b.responseText),d=d.replace(/\{wpacu_status_code_error\}/,b.status),a("#wpacu_meta_box_content").html(d)}}}).done(function(b){var c=b.substring(b.lastIndexOf(wpacu_object.start_del)+wpacu_object.start_del.length,b.lastIndexOf(wpacu_object.end_del)),d={action:wpacu_object.plugin_name+"_get_loaded_assets",wpacu_list:c,post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()};if("btoa"in window)try{b=b.replace(/[\u0250-\ue007]/g,""),b=b.replace(/[^\x00-\x7F]/g,""),d.contents=window.btoa(b)}catch(a){d.contents=""}a.post(wpacu_object.ajax_url,d,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()})})):"wp_remote_post"===wpacu_object.dom_get_type&&(b={action:wpacu_object.plugin_name+"_get_loaded_assets",post_id:wpacu_object.post_id,page_url:wpacu_object.page_url,tag_id:wpacu_object.tag_id,time_r:(new Date).getTime()},a.post(wpacu_object.ajax_url,b,function(b){if(!b)return!1;a("#wpacu_meta_box_content").html(b),a("#wpacu_home_page_form").length>0&&a("#submit").show(),e.load()}))}a("#wpacu-mark-license-valid-button").click(function(){return confirm(wpacu_object.mark_license_valid_confirm)});var c,d;a("#wpacu-reset-drop-down").on("change keyup keydown mouseup mousedown click",function(){""===a(this).val()?(a("#wpacu-warning-read").removeClass("wpacu-visible"),a("#wpacu-reset-submit-btn").attr("disabled","disabled")):("reset_everything"===a(this).val()?a("#wpacu-license-data-remove-area").addClass("wpacu-visible"):a("#wpacu-license-data-remove-area").removeClass("wpacu-visible"),a("#wpacu-warning-read").addClass("wpacu-visible"),a("#wpacu-reset-submit-btn").removeAttr("disabled")),a(".wpacu-tools-area .wpacu-warning").hide(),c=a(this).find("option:selected"),a("#"+c.attr("data-id")).show()}),a("#wpacu-reset-submit-btn").on("click",function(){if("reset_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_settings_confirm_msg:"reset_everything"===a("#wpacu-reset-drop-down").val()&&(d=wpacu_object.reset_everything_confirm_msg),!confirm(d))return!1;a("#wpacu-action-confirmed").val("yes"),setTimeout(function(){"yes"===a("#wpacu-action-confirmed").val()&&a("#wpacu-tools-form").submit()},1e3)});var e={load:function(){e.getExternalFileSize();var b;a(".input-unload-on-this-page").on("click change",function(){a(this).prop("checked")?a(this).closest("tr").addClass("wpacu_not_load"):a(this).closest("tr").removeClass("wpacu_not_load")}),a(".wpacu_global_unload").click(function(){b=a(this).attr("data-handle"),a(this).prop("checked")?a(this).parent("label").addClass("wpacu_global_checked"):a(this).parent("label").removeClass("wpacu_global_checked")}),a(".wpacu_keep_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").next().removeClass("remove_rule")}),a(".wpacu_remove_bulk_rule").click(function(){a(this).prop("checked")&&a(this).parents("li").addClass("remove_rule")}),a(".wpacu_bulk_unload").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_bulk_unload_active"):a(this).parent("label").removeClass("wpacu_bulk_unload_active")}),a(".wpacu_load_it_option").click(function(){var b=a(this).attr("data-handle");if(a(this).prop("checked")){a(this).parent("label").addClass("wpacu_global_unload_exception");var c="";a(this).hasClass("wpacu_style")?c="style":a(this).hasClass("wpacu_script")&&(c="script"),a("#"+c+"_"+b).prop("checked",!1).trigger("change")}else a(this).parent("label").removeClass("wpacu_global_unload_exception")})},getExternalFileSize:function(){a(".wpacu-external-file-size").each(function(){var b=a(this);a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:a(this).attr("data-src")},function(a){b.html(a)})})}};if(a(".wpacu-dom-get-type-selection").change(function(){a(this).is(":checked")&&(a(".wpacu-dom-get-type-info").hide(),a("#"+a(this).attr("data-target")).fadeIn("fast"))}),a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a("#wpacu_taxonomy_select").change(function(){a("#wpacu_taxonomy_form").submit()}),a("#wpacu_dashboard").click(function(){a(this).prop("checked")?a("#wpacu-settings-assets-retrieval-mode").fadeIn("fast"):a("#wpacu-settings-assets-retrieval-mode").fadeOut("fast")}),a("#wpacu_disable_jquery_migrate").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.jquery_migration_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a("#wpacu_disable_comment_reply").on("click",function(){return!a(this).is(":checked")||(!(!a(this).is(":checked")||!confirm(wpacu_object.comment_reply_disable_confirm_msg))||(a(this).prop("checked",!1),!1))}),a(".wpacu_remove_rule").click(function(){var b=a(this).parents(".wpacu_global_rule_row");a(this).prop("checked")?b.addClass("selected"):b.removeClass("selected")}),a("#wpacu_wrap_assets").length>0&&e.load(),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click","body.branch-5 .edit-post-header__settings button.is-primary",function(){var c=function(){0===a(".edit-post-header__settings .is-saving").length&&(b(),clearInterval(d))},d=setInterval(c,900)})});
assets/style.min.css CHANGED
@@ -1 +1 @@
1
- .wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{max-width:340px;width:100%}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;margin:0 auto;padding:0;max-width:1200px;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.license-status{position:absolute;font-size:12px;left:0;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.license-status.active{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:'';-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1200px;margin:20px auto 30px 0;width:100%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:'';width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning{color:#c00}#wpacu_meta_box_content div.wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content div.wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00}#wpacu_wrap_assets small{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets p{margin:10px 0!important;line-height:22px!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child,.wpacu_verified{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}.wpacu_asset_row td{padding:10px!important;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning{color:red!important}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_bulk_unload_active{color:#d54e21}tr.wpacu_global_rule_row.selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 20px 0 0;list-style:none;display:inline-block}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%;border:1px solid #e5e5e5!important}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7', GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1', GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.go-pro-button,.go-pro-link-no-style,.wordpress-core-file{display:inline-block;text-decoration:none}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=submit].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=button].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50}.go-pro-link-no-style .tooltip:after,.wordpress-core-file .tooltip:after{content:"";border-width:10px;border-style:solid;top:100%}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .tooltip{font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;color:inherit}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .tooltip{visibility:visible}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .toplevel_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{content:'';display:table}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active,a.wpacu-assets-collapsible:hover{background-color:#f1f3f8}.wpacu-assets-collapsible-wrap{border:1px solid #e7e7e7}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li{float:left;margin-right:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content>div{padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;height:14px;width:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read span.dashicons-warning{color:#c00}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}
1
+ .wpacu_update_btn,label.wpacu_add_global{cursor:pointer!important}#wpacu-pages-info-area{width:98%}#wpacu-logo-area{margin:15px 0;padding:0 10px}#wpacu-logo-area img{max-width:340px;width:100%}.wpacu-tabs{position:relative;overflow:hidden;margin:0 auto 20px;width:100%;font-weight:300;font-size:20px}.wpacu-tabs nav{text-align:center}.wpacu-tabs nav ul{position:relative;display:-ms-flexbox;display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:flex;margin:0 auto;padding:0;max-width:1200px;list-style:none;-ms-box-orient:horizontal;-ms-box-pack:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;justify-content:center}.wpacu-tabs nav ul li{position:relative;z-index:1;display:block;margin:0;text-align:center;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}.wpacu-tabs nav ul li span.license-status{position:absolute;font-size:12px;left:0;right:50%;bottom:12px;-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.wpacu-tabs nav ul li span.license-status.active{color:green}.wpacu-tabs nav a{position:relative;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:2.5}.wpacu-tabs nav a span{vertical-align:middle;font-size:14px}.wpacu-tabs nav li.wpacu-tab-current a{color:#74777b}.wpacu-tabs nav a:focus{outline:0}.wpacu-tabs .dashicons{font-size:20px}.no-js .wpacu-content-wrap section{display:block;padding-bottom:2em;border-bottom:1px solid rgba(255,255,255,.6)}.no-flexbox nav ul{display:block}.no-flexbox nav ul li{min-width:15%;display:inline-block}@media screen and (max-width:58em){.wpacu-tabs nav a.icon span{display:none}.wpacu-tabs nav a:before{margin-right:0}}.wpacu-tabs-style-underline nav{background:#fff}.wpacu-tabs-style-underline nav a{color:#74777b;font-size:18px;text-transform:uppercase;text-decoration:none;padding:.25em 0 .5em;border-left:1px solid #e7ecea;-webkit-transition:color .2s;transition:color .2s}.wpacu-tabs-style-underline nav li:last-child a{border-right:1px solid #e7ecea}.wpacu-tabs-style-underline nav li a::after{position:absolute;bottom:0;left:0;width:100%;height:6px;background:#2CC185;content:'';-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translate3d(0,150%,0);transform:translate3d(0,150%,0)}.wpacu-tabs-style-underline nav li.wpacu-tab-current a::after{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.wpacu-tabs-style-underline nav a span{font-weight:700}.wpacu-tabs-style-topline{max-width:1200px;margin:20px auto 30px 0;width:100%;font-weight:300;text-decoration:none}.wpacu-tabs-style-topline nav li{border:1px solid rgba(40,44,42,.1)}.wpacu-tabs-style-topline nav li:not(:last-child){border-right:none}.wpacu-tabs-style-topline nav li.wpacu-tab-current{border-top-color:#0085ba;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 10px;background:rgba(40,44,42,.05);color:#74777b;line-height:1;-webkit-transition:color .2s;transition:color .2s;text-decoration:none}.wpacu-tabs-style-topline nav a:focus,.wpacu-tabs-style-topline nav a:hover{color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #0085ba;color:#0085ba}.wpacu-tabs-style-topline nav li.wpacu-tab-current a span:not(.dashicons){font-weight:600}.wpacu-tabs-style-topline nav a span{text-transform:uppercase;font-weight:400}.wpacu-tab-nav-wrapper{border-bottom:none!important}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active{background:#fff;position:relative}.wpacu-tab-nav-wrapper .nav-tab.nav-tab-active:after{content:'';width:100%;bottom:-2px;left:0;position:absolute;border-bottom:2px solid #fff}.wpacu-script-attributes-area{margin:20px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings{padding:5px 7px!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings.wpacu-first{margin:0 28px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings label{margin:0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li{margin:0 16px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area.wpacu-lite ul.wpacu-script-attributes-settings li:last-child{margin:0 2px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings{background:#fff!important;border:1px solid #eee!important;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:5px 10px!important;list-style:none;display:inline-block;margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings input[type=radio]{padding:0;margin:0 5px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings.wpacu-first{margin:0 34px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li{float:left;margin:0 17px 0 0}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:first-child{margin:0 10px 0 0!important}.wpacu-script-attributes-area .wpacu-script-attributes-settings li:last-child{margin:0}.wpacu-script-attributes-area .wpacu-script-attributes-settings:hover{background:#f2faf2}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content .dashicons.dashicons-warning{color:#c00}#wpacu_meta_box_content div.wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content div.wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_wrap_assets img,#wpacu_wrap_assets small,.wpacu_asset_row td label{display:inline-block!important}#wpacu_meta_box_content ul.wpacu_asset_options label{font-weight:400;margin-right:5px;margin-top:5px;margin-bottom:5px}.wpacu-updated-frontend{font-weight:400;background-color:#fff;border-left:4px solid #46b450;border-top:1px solid #46b450;border-right:1px solid #46b450;border-bottom:1px solid #46b450;padding:9px 14px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-updated-frontend span.dashicons-yes{color:#46b450;font-size:26px}#wpacu_wrap_assets{color:#000!important;text-align:left!important;clear:both!important;width:90%!important;padding:20px!important;margin:30px 0 0 15px!important;border:1px solid #cdcdcd;z-index:10000!important;position:relative!important;background-color:#fff!important}#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00;padding:5px 10px}#wpacu_wrap_assets small{margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets p{line-height:22px!important;margin:10px 0!important;text-align:left!important;font-weight:400!important}#wpacu_wrap_assets p:first-child,.wpacu_verified{margin:0 0 10px!important}#wpacu_wrap_assets h1{margin:0 0 20px!important;font-size:160%!important;text-align:left!important}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}.wpacu_asset_row td{padding:10px!important;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row td:first-child{border-top:1px solid #cdcdcd}.wpacu_asset_row td p{padding:0!important;margin-bottom:10px!important;word-wrap:break-word!important;-ms-word-break:break-all;word-break:break-word}.wpacu_asset_row td label{margin:0!important;cursor:pointer!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row td.wpacu_check{width:50px!important}.asset-table-extra-info td{padding:5px!important}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px!important}.wpacu_asset_row .dashicons-warning{color:red!important}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_bulk_unload_active{color:#d54e21}tr.wpacu_global_rule_row.selected{background:#e7e7e7}.nav-tab-wrapper{border-bottom:1px solid #ccc;width:95%}ul.wpacu_asset_options{margin:0 10px 0 0;padding:0}ul.wpacu_asset_options li{margin:0 20px 0 0;list-style:none;display:inline-block}ul.wpacu_asset_options li.remove_rule label{font-weight:700}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wpacu_list_table,.wpacu_list_table div,.wpacu_list_table li,.wpacu_list_table p{font-weight:400}.wpacu_widefat{width:99%;border:1px solid #e5e5e5!important}.wpacu_striped>tbody>:nth-child(even),ul.wpacu_striped>:nth-child(even){background-color:#fff!important}.wpacu_striped>tbody>:nth-child(odd),ul.wpacu_striped>:nth-child(odd){background-color:#f9f9f9!important}.wpacu_update_btn{-moz-box-shadow:inset 0 1px 0 0 #54a3f7!important;-webkit-box-shadow:inset 0 1px 0 0 #54a3f7!important;box-shadow:inset 0 1px 0 0 #54a3f7!important;background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#007dc1),color-stop(1,#0061a7))!important;background:-moz-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-webkit-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-o-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:-ms-linear-gradient(top,#007dc1 5%,#0061a7 100%)!important;background:linear-gradient(to bottom,#007dc1 5%,#0061a7 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7', GradientType=0)!important;background-color:#007dc1!important;-moz-border-radius:3px!important;-webkit-border-radius:3px!important;border-radius:3px!important;border:1px solid #124d77!important;display:inline-block!important;color:#fff!important;font-size:15px!important;padding:10px 24px!important;text-decoration:none!important;text-shadow:0 1px 0 #154682!important;height:auto!important;line-height:normal!important}.wpacu-btns .btn:focus,.wpacu-btns .btn:hover,.wpacu-btns a{text-decoration:none}.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1', GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}.wpacu-btns .btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;-webkit-border-radius:.25rem;-moz-border-radius:.25rem;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wpacu-btns .btn.focus,.wpacu-btns .btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.wpacu-btns .btn.disabled,.wpacu-btns .btn:disabled{cursor:not-allowed;opacity:.65}.wpacu-btns .btn.active,.wpacu-btns .btn:active{background-image:none}.wpacu-btns a.btn.disabled,.wpacu-btns fieldset[disabled] a.btn{pointer-events:none}.wpacu-btns .btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.wpacu-btns .btn-primary.focus,.wpacu-btns .btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-primary.disabled,.wpacu-btns .btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-primary.active,.wpacu-btns .btn-primary:active,.wpacu-btns .show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.wpacu-btns .btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.wpacu-btns .btn-secondary.focus,.wpacu-btns .btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-secondary.disabled,.wpacu-btns .btn-secondary:disabled{background-color:#fff;border-color:#ccc}.wpacu-btns .btn-secondary.active,.wpacu-btns .btn-secondary:active,.wpacu-btns .show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.wpacu-btns .btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.wpacu-btns .btn-info.focus,.wpacu-btns .btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-info.disabled,.wpacu-btns .btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-info.active,.wpacu-btns .btn-info:active,.wpacu-btns .show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.wpacu-btns .btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.wpacu-btns .btn-success.focus,.wpacu-btns .btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-success.disabled,.wpacu-btns .btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-success.active,.wpacu-btns .btn-success:active,.wpacu-btns .show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.wpacu-btns .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.wpacu-btns .btn-warning.focus,.wpacu-btns .btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-warning.disabled,.wpacu-btns .btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-warning.active,.wpacu-btns .btn-warning:active,.wpacu-btns .show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.wpacu-btns .btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.wpacu-btns .btn-danger.focus,.wpacu-btns .btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-danger.disabled,.wpacu-btns .btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-danger.active,.wpacu-btns .btn-danger:active,.wpacu-btns .show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.wpacu-btns .btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.wpacu-btns .btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-primary.focus,.wpacu-btns .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.wpacu-btns .btn-outline-primary.disabled,.wpacu-btns .btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.wpacu-btns .btn-outline-primary.active,.wpacu-btns .btn-outline-primary:active,.wpacu-btns .show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.wpacu-btns .btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.wpacu-btns .btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-secondary.focus,.wpacu-btns .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.wpacu-btns .btn-outline-secondary.disabled,.wpacu-btns .btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.wpacu-btns .btn-outline-secondary.active,.wpacu-btns .btn-outline-secondary:active,.wpacu-btns .show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.wpacu-btns .btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.wpacu-btns .btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-info.focus,.wpacu-btns .btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.wpacu-btns .btn-outline-info.disabled,.wpacu-btns .btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.wpacu-btns .btn-outline-info.active,.wpacu-btns .btn-outline-info:active,.wpacu-btns .show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.wpacu-btns .btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.wpacu-btns .btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-success.focus,.wpacu-btns .btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.wpacu-btns .btn-outline-success.disabled,.wpacu-btns .btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.wpacu-btns .btn-outline-success.active,.wpacu-btns .btn-outline-success:active,.wpacu-btns .show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.wpacu-btns .btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-warning.focus,.wpacu-btns .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.wpacu-btns .btn-outline-warning.disabled,.wpacu-btns .btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.wpacu-btns .btn-outline-warning.active,.wpacu-btns .btn-outline-warning:active,.wpacu-btns .show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.wpacu-btns .btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.wpacu-btns .btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-outline-danger.focus,.wpacu-btns .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.wpacu-btns .btn-outline-danger.disabled,.wpacu-btns .btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.wpacu-btns .btn-outline-danger.active,.wpacu-btns .btn-outline-danger:active,.wpacu-btns .show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.wpacu-btns .btn-link{font-weight:400;color:#0275d8;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.wpacu-btns .btn-link,.wpacu-btns .btn-link.active,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:disabled{background-color:transparent}.wpacu-btns .btn-link,.wpacu-btns .btn-link:active,.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{border-color:transparent}.wpacu-btns .btn-link:focus,.wpacu-btns .btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.wpacu-btns .btn-link:disabled{color:#636c72}.wpacu-btns .btn-link:disabled:focus,.wpacu-btns .btn-link:disabled:hover{text-decoration:none}.wpacu-btns .btn-group-lg>.btn,.wpacu-btns .btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;-webkit-border-radius:.3rem;-moz-border-radius:.3rem;border-radius:.3rem}.wpacu-btns .btn-group-sm>.btn,.wpacu-btns .btn-sm{padding:.25rem .5rem;font-size:.875rem;-webkit-border-radius:.2rem;-moz-border-radius:.2rem;border-radius:.2rem}.wpacu-btns .btn-block{display:block;width:100%}.go-pro-button,.go-pro-link-no-style,.wordpress-core-file{display:inline-block;text-decoration:none}.wpacu-btns .btn-block+.btn-block{margin-top:.5rem}.wpacu-btns input[type=submit].btn-block,.wpacu-btns input[type=reset].btn-block,.wpacu-btns input[type=button].btn-block{width:100%}.wpacu-btns .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.go-pro-button{background-color:#4CAF50;border:2px solid #4CAF50;color:#fff;padding:12px 18px;text-align:center;font-size:16px;margin:4px 2px;cursor:pointer;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-transition-duration:.4s;transition-duration:.4s}.go-pro-button:hover{background-color:#fff;color:#000;border:2px solid #4CAF50;text-decoration:none}.go-pro-link-no-style .wpacu-tooltip:after,.wordpress-core-file .wpacu-tooltip:after{content:"";border-width:10px;border-style:solid;top:100%}body.wp-admin .wpacu_asset_row .go-pro-link-no-style .wpacu-tooltip{padding:8px 2px}body.wp-admin .go-pro-link-no-style .wpacu-tooltip{font-weight:400;font-size:12px;line-height:16px;padding:8px 11px}.go-pro-link-no-style{position:relative;color:inherit}.go-pro-link-no-style:not(.nav-tab){font-style:italic}.go-pro-link-no-style.no-transition .wpacu-tooltip{-webkit-transition:0s all ease;transition:0s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:130px;background-color:#27ae60;color:#fff;text-align:center;padding:8px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-65px;-webkit-transition:.2s all ease;transition:.2s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#27ae60 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#c00;color:#fff;text-align:center;padding:6px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;bottom:100%;bottom:calc(100% + 15px);left:50%;margin-left:-86px;-webkit-transition:.5s all ease;transition:.5s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{position:absolute;left:50%;left:calc(50% - 10px);border-color:#c00 transparent transparent}.wordpress-core-file:hover .wpacu-tooltip{visibility:visible}.ajax-direct-call-error-area{background:#fff;padding:10px;border:1px solid #c00;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ajax-direct-call-error-area td{padding:6px}.ajax-direct-call-error-area .note{margin-top:0;padding-top:0}.ajax-direct-call-error-area .error-code{color:#c00;font-weight:700}.ajax-wp-remote-post-call-error-area{background:#fff;padding:20px}.ajax-wp-remote-post-call-error-area .table-data{background:0 0;border:1px solid #c66;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.ajax-wp-remote-post-call-error-area .table-data td{padding:10px}.wrap-upgrade-info{background:#fff;padding:0 15px;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-notice{margin:20px 20px 0 0!important}.wpacu-notice p{font-weight:600!important;font-style:italic}.wpacu-notice .dashicons{font-weight:inherit!important;color:#46b450!important;margin-right:4px;vertical-align:text-bottom;font-size:27px}.wpacu-notice-info{padding:12px 12px 12px 16px;background:#fff;border-left:4px solid #0085ba}.wpacu-notice-info p{margin-top:8px}.wpacu-notice-info p:first-child{margin-top:0}.wpacu-notice-info p:last-child{margin-bottom:0}.wpacu-warning{font-size:15px;padding:10px;background:#fffcec;border:1px solid #fdd5c9;margin:0 0 5px;width:100%}.pro-page-unlock-notice{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;padding:10px;background:#f2faf2;border:1px solid #c0e8c0;width:auto;display:block}.wpacu-license-area .notice,.wpacu-settings-area .notice{margin-left:0;padding:10px!important;width:97%;box-sizing:border-box;font-weight:600;font-style:italic}.wpacu-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons{color:green}#wpacu-dom-get-type-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child{margin-right:0}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch{width:auto;height:auto}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input{display:block}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox],.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch input[type=checkbox]{margin:0 0 3px}.wpacu-wrap.wpacu-switch-standard .asset-cleanup-pro_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider,.wpacu-wrap.wpacu-switch-standard .asset-cleanup_page_wpassetcleanup_settings .wpacu_switch .wpacu_slider{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input{display:none}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch:not(.wpacu_switch_standard) .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider{background-color:#52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #52af00}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch.wpacu_locked_for_pro{opacity:.3}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle{margin-top:2px;line-height:1.2}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_subtitle em{font-weight:200}.asset-cleanup-pro_page_wpassetcleanup_settings .setting_title p.wpacu_read_more,.asset-cleanup_page_wpassetcleanup_settings .setting_title p.wpacu_read_more{margin-top:-10px;font-style:italic;font-size:12px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices{list-style:none;margin:0}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li{float:left;margin-right:30px}.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup-pro_page_wpassetcleanup_settings .input_style_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_inline_code_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .assets_list_layout_areas_status_choices li:last-child,.asset-cleanup_page_wpassetcleanup_settings .input_style_choices li:last-child{margin-right:0}.wpacu-form-table th{vertical-align:top;text-align:left;padding:5px 20px 20px 0;width:200px;line-height:1.3;font-weight:600}.wpacu-form-table th label{color:#23282d;font-weight:600;font-size:14px;text-shadow:none;vertical-align:middle;cursor:pointer}.wpacu-form-table td{padding-bottom:25px}.wpacu-form-table td:last-child p:last-child{margin:0}.wrap_bulk_unload_options{width:auto;display:inline-flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wrap_bulk_unload_options .wpacu_asset_options_wrap{flex-grow:1;margin:5px 10px 14px 0!important;padding:8px 10px 2px!important}.wrap_bulk_unload_options .wpacu_asset_options_wrap .wpacu_slider_text{position:relative!important;vertical-align:top;left:inherit!important;top:inherit!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch{position:relative;display:inline-block;width:52px;height:29px;margin-right:5px!important}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input{display:none}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider:before{position:absolute;content:'';height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.2s;transition:.2s}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider{background-color:#C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:focus+.wpacu_slider{box-shadow:0 0 1px #C00}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch input:checked+.wpacu_slider:before{-webkit-transform:translateX(22px);-ms-transform:translateX(22px);transform:translateX(22px)}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.wpacu_asset_row td{width:100%}.wpacu_asset_row td p:last-child{margin-bottom:0!important}.wpacu_asset_row td .wpacu_asset_options_wrap{padding:8px 10px;margin:15px 0;background:#fff;border:1px solid #eee;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu_asset_row td .wpacu_asset_options_wrap p:first-child{margin-top:0;margin-bottom:8px!important}.wpacu_asset_row p.wpacu_handle{margin-top:0}.wpacu_asset_row li.wpacu_unload_this_page{display:block!important;position:relative}.wpacu-clearfix:after,.wpacu-clearfix:before{content:'';display:table}.wpacu-contract-expand-area{width:100%;margin:20px 0 0}.wpacu-contract-expand-area .col-left{float:left}.wpacu-contract-expand-area .col-left h4{margin-bottom:0}.wpacu-contract-expand-area .col-right{float:right}.wpacu-clearfix:after{clear:both}.wpacu-wp-button{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}body.wp-admin .wpacu-wp-button{font-size:13px;line-height:26px;height:28px}.wpacu-wp-button.wpacu-wp-button-secondary{display:inline-block;text-decoration:none;height:auto;margin:0 5px 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.wpacu-assets-collapsible-wrap{border:1px solid #e7e7e7}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li{float:left;margin-right:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all .distinguish-asset-list li:last-child{margin-right:0}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}a.wpacu-assets-collapsible{color:#000;font-size:20px;text-decoration:none;display:block;position:relative;background-color:#f1f3f8;cursor:pointer;padding:15px 15px 15px 36px;width:auto;border:none;text-align:left;outline:0}a.wpacu-assets-collapsible>span.dashicons{font-size:25px;line-height:normal;position:absolute;top:15px;top:calc(50% - 21px);left:22px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-collapsible:hover{background-color:#f1f3f8;text-decoration:none}a.wpacu-assets-collapsible:after{position:absolute;font-size:22px;font-family:Dashicons;right:14px;top:16px}a.wpacu-assets-collapsible:not(.wpacu-assets-collapsible-active):after{content:"\f132"}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active{background-color:#f1f3f8}a.wpacu-assets-collapsible.wpacu-assets-collapsible-active:after{content:"\f460"}.wpacu-assets-collapsible-content{padding:0 16px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-collapsible-content>div{padding:16px 0 0}.wpacu-assets-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-collapsible-content.wpacu-open{max-height:100%}a.wpacu-assets-inline-code-collapsible{font-size:14px;text-decoration:none;display:inline-block;position:relative;cursor:pointer;width:auto;outline:0;background:#f1f3f8;border:1px solid #cdcdcd;padding:4px 21px 4px 8px;margin:0 0 0 6px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}a.wpacu-assets-inline-code-collapsible:hover{border:1px solid #5c5c5c}a.wpacu-assets-inline-code-collapsible:after{position:absolute;font-size:15px;font-family:Dashicons;right:-3px;top:-1px;height:14px;width:14px;-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}a.wpacu-assets-inline-code-collapsible:not(.wpacu-assets-inline-code-collapsible-active):after{content:"\f132"}a.wpacu-assets-inline-code-collapsible.wpacu-assets-inline-code-collapsible-active:after{content:"\f460"}.wpacu-assets-inline-code-collapsible-content{font-size:80%;padding:0 8px;max-height:0;overflow:hidden;background-color:#fbfbfb8c}.wpacu-assets-inline-code-collapsible-content>div{padding:7px 8px 0}.wpacu-assets-inline-code-collapsible-content>div>p{line-height:normal!important}.wpacu-assets-inline-code-collapsible-content>div>p:first-child{margin-top:0}.wpacu-assets-inline-code-collapsible-content.wpacu-open{max-height:100%}.wpacu_table_wrap{margin:20px 0 0}.wpacu_table_wrap>table{border:1px solid #cdcdcd}.wpacu_table_wrap .table{width:100%;max-width:100%;margin-bottom:1rem;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu_table_wrap .table td,.wpacu_table_wrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.wpacu_table_wrap .table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.wpacu_table_wrap .table tbody+tbody{border-top:2px solid #eceeef}.wpacu_table_wrap .table .table{background-color:#fff}.wpacu_table_wrap .table-sm td,.wpacu_table_wrap .table-sm th{padding:.3rem}.wpacu_table_wrap .table-bordered,.wpacu_table_wrap .table-bordered td,.wpacu_table_wrap .table-bordered th{border:1px solid #eceeef}.wpacu_table_wrap .table-bordered thead td,.wpacu_table_wrap .table-bordered thead th{border-bottom-width:2px}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(even){background-color:#f9f9f9}.wpacu_table_wrap .table-striped tbody tr:nth-of-type(odd){background-color:#fff}.wpacu_table_wrap .table-active,.wpacu_table_wrap .table-active>td,.wpacu_table_wrap .table-active>th,.wpacu_table_wrap .table-hover .table-active:hover,.wpacu_table_wrap .table-hover .table-active:hover>td,.wpacu_table_wrap .table-hover .table-active:hover>th,.wpacu_table_wrap .table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.wpacu_table_wrap .table-success,.wpacu_table_wrap .table-success>td,.wpacu_table_wrap .table-success>th{background-color:#dff0d8}.wpacu_table_wrap .table-hover .table-success:hover,.wpacu_table_wrap .table-hover .table-success:hover>td,.wpacu_table_wrap .table-hover .table-success:hover>th{background-color:#d0e9c6}.wpacu_table_wrap .table-info,.wpacu_table_wrap .table-info>td,.wpacu_table_wrap .table-info>th{background-color:#d9edf7}.wpacu_table_wrap .table-hover .table-info:hover,.wpacu_table_wrap .table-hover .table-info:hover>td,.wpacu_table_wrap .table-hover .table-info:hover>th{background-color:#c4e3f3}.wpacu_table_wrap .table-warning,.wpacu_table_wrap .table-warning>td,.wpacu_table_wrap .table-warning>th{background-color:#fcf8e3}.wpacu_table_wrap .table-hover .table-warning:hover,.wpacu_table_wrap .table-hover .table-warning:hover>td,.wpacu_table_wrap .table-hover .table-warning:hover>th{background-color:#faf2cc}.wpacu_table_wrap .table-danger,.wpacu_table_wrap .table-danger>td,.wpacu_table_wrap .table-danger>th{background-color:#f2dede}.wpacu_table_wrap .table-hover .table-danger:hover,.wpacu_table_wrap .table-hover .table-danger:hover>td,.wpacu_table_wrap .table-hover .table-danger:hover>th{background-color:#ebcccc}.wpacu_table_wrap .thead-inverse th{color:#fff;background-color:#292b2c}.wpacu_table_wrap .thead-default th{color:#464a4c;background-color:#eceeef}.wpacu_table_wrap .table-inverse{color:#fff;background-color:#292b2c}.wpacu_table_wrap .table-inverse td,.wpacu_table_wrap .table-inverse th,.wpacu_table_wrap .table-inverse thead th{border-color:#fff}.wpacu_table_wrap .table-inverse.table-bordered,.wpacu_table_wrap .table-responsive.table-bordered{border:0}.wpacu_table_wrap .table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}ul.hire-reasons{margin-bottom:20px}ul.hire-reasons li{font-size:14px;line-height:22px;margin-bottom:12px}ul.hire-reasons li .dashicons{font-size:23px;line-height:23px}ul.hire-reasons li .dashicons.dashicons-yes{color:green}ol.getting-started li{font-size:14px;line-height:22px;margin-bottom:8px}.wpacu-get-help-wrap p{font-size:14px}.wpacu-get-help-wrap .help-content-wrap{margin:20px 0 25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-moz-flex;display:-webkit-flex;display:flex;width:100%}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.wpacu-get-help-wrap .help-content-wrap .help-content{padding:15px;background:#fff;border:1px solid #E0E0E0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;box-shadow:2px 3px 8px 0 #231f2038;flex:1 1 50%;margin-bottom:10px}.wpacu-get-help-wrap .help-content-wrap .help-content .content-title{margin:5px 0 15px}.wpacu-get-help-wrap .help-content-wrap .help-content .cols-wrap{width:100%;margin:0 auto;display:table}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area{margin:5px 0 0;position:relative}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-left{float:left;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.col-right{float:right;width:48%}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area.activate-plugin img{max-width:280px}.wpacu-get-help-wrap .help-content-wrap .help-content .wpacu-image-area img{width:99%;margin:8px 0;border:1px solid #cdcdcd;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{order:2}@media only screen and (min-width:768px){.wpacu-get-help-wrap .help-content-wrap .help-content{margin-right:24px}.wpacu-get-help-wrap .help-content-wrap .help-content.upgrade-help{margin-right:0}}.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{order:1}@media only screen and (max-width:767px){.wpacu-get-help-wrap .help-content-wrap .help-content.tech-help{margin-bottom:30px}}.wpacu-get-help-wrap .help-content-wrap .help-content ul{list-style:none;padding-left:0}.wpacu-get-help-wrap .help-content-wrap .help-content ul li{font-size:14px;line-height:22px;margin-bottom:15px}.wpacu-get-help-wrap .help-content-wrap .help-content p:last-child,.wpacu-get-help-wrap .help-content-wrap .help-content ul li:last-child{margin-bottom:0}#wpacu-license-data-remove-area{display:none;margin:10px 0 25px}#wpacu-license-data-remove-area.wpacu-visible{display:block}span#wpacu-license-data-removed-msg{display:block;padding-left:26px}#wpacu-warning-read{display:none;margin:10px 0}#wpacu-warning-read span.dashicons-warning{color:#c00}#wpacu-warning-read.wpacu-visible{display:block}#wpacu-reset-submit-area{margin:10px 0;clear:both}#wpacu-reset-submit-btn{margin:10px 0 0}.wpacu-tools-area{margin:10px 20px 0 2px}.wpacu-tools-area .wpacu-tools-container{background:#fff;padding:15px;border:1px solid #cdcdcd;width:96%}.wpacu-tools-area .wpacu-tools-container form>div:first-child{margin:0 0 10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning{display:none;box-sizing:border-box;margin-top:10px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p{margin:0 0 10px;line-height:22px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning p:only-child{margin:0}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning ul{font-size:13px;list-style-type:disc;padding-left:30px}.wpacu-tools-area .wpacu-tools-container form .wpacu-warning.wpacu-visible{display:block}.wpacu-about-wrap .wpacu-about-text img{width:auto;height:150px;position:absolute;top:20px;right:-20px}@media only screen and (max-width:767px){.wpacu-about-wrap h1{margin:20px}.wpacu-about-wrap .wpacu-about-text img{display:none}.wpacu-about-wrap .wpacu-about-text{margin:20px}}.wpacu-about-wrap .about-wrap-content .area-title{font-size:19px;line-height:19px;margin-bottom:0}.wpacu-about-wrap hr{margin:10px 0}
classes/AdminBar.php CHANGED
@@ -30,24 +30,103 @@ class AdminBar
30
  */
31
  public function topBarInfo($wp_admin_bar)
32
  {
 
 
33
  if (Main::instance()->settings['test_mode']) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  $wp_admin_bar->add_menu(array(
35
- 'id' => 'wpacu-test-mode',
36
- 'title' => WPACU_PLUGIN_TITLE.': <span class="dashicons dashicons-admin-tools"></span> <strong>TEST MODE</strong> is <strong>ENABLED SITE-WIDE</strong>',
37
- 'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings')
 
38
  ));
 
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  $wp_admin_bar->add_menu(array(
41
- 'parent' => 'wpacu-test-mode',
42
- 'id' => 'wpacu-test-mode-info',
43
- 'title' => 'With "Test Mode" active, any settings will be applied only for your view.',
44
  ));
45
 
46
  $wp_admin_bar->add_menu(array(
47
- 'parent' => 'wpacu-test-mode',
48
- 'id' => 'wpacu-test-mode-info-2',
49
- 'title' => 'The visitors will view the website as if the plugin is disabled. <a target="_blank" style="display:inline-block; text-decoration: underline; padding-left: 5px;" href="https://assetcleanup.com/docs/">Read more</a>',
50
  ));
51
  }
 
52
  }
53
  }
30
  */
31
  public function topBarInfo($wp_admin_bar)
32
  {
33
+ $topTitle = WPACU_PLUGIN_TITLE;
34
+
35
  if (Main::instance()->settings['test_mode']) {
36
+ $topTitle .= '&nbsp; <span class="dashicons dashicons-admin-tools"></span> <strong>TEST MODE</strong> is <strong>ON</strong>';
37
+ }
38
+
39
+ $goBackToCurrentUrl = '&_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) );
40
+
41
+ $wp_admin_bar->add_menu(array(
42
+ 'id' => 'assetcleanup-parent',
43
+ 'title' => $topTitle,
44
+ 'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings')
45
+ ));
46
+
47
+ $wp_admin_bar->add_menu(array(
48
+ 'parent' => 'assetcleanup-parent',
49
+ 'id' => 'assetcleanup-settings',
50
+ 'title' => 'Settings',
51
+ 'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings')
52
+ ));
53
+
54
+ if (Main::instance()->settings['combine_loaded_css']) {
55
+ $wp_admin_bar->add_menu( array(
56
+ 'parent' => 'assetcleanup-parent',
57
+ 'id' => 'assetcleanup-clear-all-css-cache',
58
+ 'title' => 'Clear Combined CSS Cache',
59
+ 'href' => wp_nonce_url( admin_url( 'admin-post.php?action=assetcleanup_clear_assets_cache' . $goBackToCurrentUrl ),
60
+ 'purge_css_cache' )
61
+ ) );
62
+ }
63
+
64
+ // Only trigger in the front-end view
65
+ if (! is_admin()) {
66
+ if ( ! Misc::isHomePage() ) {
67
+ // Not on the home page
68
+ $homepageManageAssetsHref = Main::instance()->settings['frontend_show']
69
+ ? get_site_url().'#wpacu_wrap_assets'
70
+ : admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_home_page' );
71
+
72
+ $wp_admin_bar->add_menu(array(
73
+ 'parent' => 'assetcleanup-parent',
74
+ 'id' => 'assetcleanup-homepage',
75
+ 'title' => 'Manage Homepage Assets',
76
+ 'href' => $homepageManageAssetsHref
77
+ ));
78
+ } else {
79
+ // On the home page
80
+ // Front-end view is disabled! Go to Dashboard link
81
+ if ( ! Main::instance()->settings['frontend_show'] ) {
82
+ $wp_admin_bar->add_menu( array(
83
+ 'parent' => 'assetcleanup-parent',
84
+ 'id' => 'assetcleanup-homepage',
85
+ 'title' => 'Manage Page Assets',
86
+ 'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_home_page' )
87
+ ) );
88
+ }
89
+ }
90
+ }
91
+
92
+ if (! is_admin() && Main::instance()->settings['frontend_show']) {
93
  $wp_admin_bar->add_menu(array(
94
+ 'parent' => 'assetcleanup-parent',
95
+ 'id' => 'assetcleanup-jump-to-assets-list',
96
+ 'title' => 'Manage Page Assets',
97
+ 'href' => '#wpacu_wrap_assets'
98
  ));
99
+ }
100
 
101
+ $wp_admin_bar->add_menu(array(
102
+ 'parent' => 'assetcleanup-parent',
103
+ 'id' => 'assetcleanup-bulk-unloaded',
104
+ 'title' => 'Bulk Unloaded',
105
+ 'href' => admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_bulk_unloads')
106
+ ));
107
+
108
+ $wp_admin_bar->add_menu(array(
109
+ 'parent' => 'assetcleanup-parent',
110
+ 'id' => 'assetcleanup-support-forum',
111
+ 'title' => 'Support Forum',
112
+ 'href' => 'https://wordpress.org/support/plugin/wp-asset-clean-up',
113
+ 'meta' => array('target' => '_blank')
114
+ ));
115
+
116
+ /*
117
+ if (Main::instance()->settings['test_mode']) {
118
  $wp_admin_bar->add_menu(array(
119
+ 'parent' => 'assetcleanup-parent',
120
+ 'id' => 'assetcleanup-test-mode-info',
121
+ 'title' => 'With "Test Mode" on, anything will be applied only for your view.',
122
  ));
123
 
124
  $wp_admin_bar->add_menu(array(
125
+ 'parent' => 'assetcleanup-parent',
126
+ 'id' => 'assetcleanup-test-mode-info-2',
127
+ 'title' => 'The visitors will see the pages as if the plugin is disabled. <a target="_blank" style="display:inline-block; text-decoration: underline; padding-left: 5px;" href="https://assetcleanup.com/docs/">More</a>',
128
  ));
129
  }
130
+ */
131
  }
132
  }
classes/Main.php CHANGED
@@ -401,7 +401,7 @@ class Main
401
 
402
  $allScripts = $wp_scripts;
403
 
404
- if (isset($allScripts->registered) && ! empty($allScripts->registered)) {
405
  $i = $this->lastScriptPos;
406
 
407
  foreach ($allScripts->registered as $handle => $value) {
@@ -526,7 +526,7 @@ class Main
526
 
527
  $allStyles = $wp_styles;
528
 
529
- if (! empty($allStyles) && isset($allStyles->registered)) {
530
  $i = $this->lastStylePos;
531
 
532
  foreach ($allStyles->registered as $handle => $value) {
@@ -1504,7 +1504,12 @@ class Main
1504
  */
1505
  public function doDisableEmojis()
1506
  {
1507
- if ($this->preventUnloadAssets()) {
 
 
 
 
 
1508
  return;
1509
  }
1510
 
401
 
402
  $allScripts = $wp_scripts;
403
 
404
+ if ($allScripts !== null && ! empty($allScripts->registered)) {
405
  $i = $this->lastScriptPos;
406
 
407
  foreach ($allScripts->registered as $handle => $value) {
526
 
527
  $allStyles = $wp_styles;
528
 
529
+ if ($allStyles !== null && isset($allStyles->registered)) {
530
  $i = $this->lastStylePos;
531
 
532
  foreach ($allStyles->registered as $handle => $value) {
1504
  */
1505
  public function doDisableEmojis()
1506
  {
1507
+ /*
1508
+ DO NOT disable Emojis if the following apply:
1509
+ - Test Mode Enabled & Admin Logged in
1510
+ - The user is within the admin panel (Dashboard)
1511
+ */
1512
+ if ($this->preventUnloadAssets() || is_admin()) {
1513
  return;
1514
  }
1515
 
classes/Menu.php CHANGED
@@ -60,7 +60,6 @@ class Menu
60
  array(new Settings, 'settingsPage')
61
  );
62
 
63
-
64
  add_submenu_page(
65
  self::$slug,
66
  __('Home Page', WPACU_PLUGIN_TEXT_DOMAIN),
60
  array(new Settings, 'settingsPage')
61
  );
62
 
 
63
  add_submenu_page(
64
  self::$slug,
65
  __('Home Page', WPACU_PLUGIN_TEXT_DOMAIN),
classes/OptimizeCss.php ADDED
@@ -0,0 +1,615 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class OptimizeCss
6
+ * @package WpAssetCleanUp
7
+ */
8
+ class OptimizeCss
9
+ {
10
+ /**
11
+ * @var string
12
+ */
13
+ public static $relPathCssCacheDir = '/cache/asset-cleanup/css/'; // keep trailing slash at the end
14
+
15
+ /**
16
+ * @var
17
+ */
18
+ public $transientCssName;
19
+
20
+ /**
21
+ * @var string
22
+ */
23
+ public static $transientCssNamePrefix = 'wpacu_css_';
24
+
25
+ /**
26
+ * @var float|int
27
+ */
28
+ public static $transientExpiresIn = 60 * 60 * 12; // 8 hours in seconds
29
+
30
+ /**
31
+ * OptimizeCss constructor.
32
+ */
33
+ public function __construct()
34
+ {
35
+ add_action('switch_theme', array($this, 'clearAllCacheTransients'));
36
+ add_action('after_switch_theme', array($this, 'clearAllCacheTransients'));
37
+
38
+ // Is WP Rocket's page cache cleared? Clear Asset CleanUp's CSS cache files too
39
+ add_action('before_rocket_clean_domain', array($this, 'clearAllCacheTransients'));
40
+
41
+ // Is the CSS cache transient deleted? Remove the cached CSS file too
42
+ // The action below is triggered prior to transient deletion and ONLY in the front-end view (not within the Dashboard)
43
+ add_action('plugins_loaded', array($this, 'afterPluginsLoaded'));
44
+
45
+ add_action('admin_post_assetcleanup_clear_assets_cache', array($this, 'clearAllCacheTransients'));
46
+ }
47
+
48
+ /**
49
+ *
50
+ */
51
+ public function afterPluginsLoaded()
52
+ {
53
+ if (! is_admin() && (strpos($_SERVER['REQUEST_URI'], '?') === false)) {
54
+ $toMdFive = $_SERVER['REQUEST_URI'];
55
+
56
+ if (is_user_logged_in()) {
57
+ global $current_user;
58
+
59
+ if (isset($current_user->ID) && $current_user->ID > 0) {
60
+ $toMdFive .= '_'.$current_user->ID;
61
+ }
62
+ }
63
+
64
+ $this->transientCssName = self::$transientCssNamePrefix . md5( $toMdFive );
65
+
66
+ // @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
67
+ //add_action( 'delete_transient_' . $this->transientCssName, array( $this, 'clearTransientCssCacheFile' ) );
68
+ }
69
+ }
70
+
71
+ /**
72
+ *
73
+ */
74
+ public function init()
75
+ {
76
+ add_action('wp_loaded', function() {
77
+ if (! $this->doCssCombine()) {
78
+ return;
79
+ }
80
+
81
+ ob_start(function ($htmlSource) {
82
+ $useDom = function_exists('libxml_use_internal_errors') && function_exists('libxml_clear_errors') && class_exists('DOMDocument');
83
+
84
+ if (! $useDom) {
85
+ return $htmlSource;
86
+ }
87
+
88
+ $cssCachedFileExists = false;
89
+
90
+ // Speed up processing by getting the already existing final CSS file URI
91
+ // This will avoid parsing the HTML DOM and determine the combined URI paths for all the CSS files
92
+ $localFinalCssFileData = $this->getCssCachedTransient();
93
+
94
+ // $uriToFinalCssFile will always be relative ONLY within WP_CONTENT_DIR . self::$relPathCssCacheDir
95
+ // which is usually "wp-content/cache/asset-cleanup/css/"
96
+
97
+ if (! empty($localFinalCssFileData) && isset($localFinalCssFileData['local_final_css_file']) && file_exists($localFinalCssFileData['local_final_css_file'])) {
98
+ /*
99
+ * URIs to the LINK tags are already cached; No need to parse the DOM
100
+ */
101
+ $uriToFinalCssFile = $localFinalCssFileData['uri_final_css_file'];
102
+ $linkHrefs = $localFinalCssFileData['link_hrefs'];
103
+ $cssCachedFileExists = true;
104
+ } else {
105
+ /*
106
+ * NO CACHING TRANSIENT; Parse the DOM
107
+ */
108
+ // Nothing in the database records or the retrieved cached file does not exist?
109
+ $this->deleteCssCachedTransient();
110
+
111
+ // Fetch the DOM, and then set a new transient
112
+ $document = new \DOMDocument();
113
+ $document->loadHTML($htmlSource);
114
+
115
+ $documentHead = $document->getElementsByTagName('head')->item(0);
116
+
117
+ libxml_use_internal_errors( true );
118
+
119
+ $combinedUriPaths = $hrefUriPreloads = $localAssetsPaths = $linkHrefs = array();
120
+
121
+ foreach ($documentHead->getElementsByTagName('link') as $tagObject) {
122
+ if (! $tagObject->hasAttributes()) {
123
+ continue;
124
+ }
125
+
126
+ $getHref = $checkCssPreload = $href = false;
127
+
128
+ foreach ($tagObject->attributes as $attrObj) {
129
+ // Only rel="stylesheet" (with no rel="preload" associated with it) gets prepared for combining as links with rel="preload" (if any) are never combined into a standard render-blocking CSS file
130
+ // rel="preload" is there for a reason to make sure the CSS code is made available earlier prior to the one from rel="stylesheet" which is render-blocking
131
+ if ($attrObj->nodeName === 'rel' && $attrObj->nodeValue === 'stylesheet') {
132
+ $getHref = true;
133
+ }
134
+
135
+ if ($getHref && $attrObj->nodeName === 'href') {
136
+ // Make sure that tag value is checked and it's matched against the value from the HTML source code
137
+ //$htmlSource .= $attrObj->nodeValue."\n";
138
+ $href = (string)$attrObj->nodeValue;
139
+
140
+ $localAssetPath = self::getLocalAssetPath($href);
141
+
142
+ if ($localAssetPath) {
143
+ $combinedUriPaths[] = self::getHrefRelPath($href);
144
+ $localAssetsPaths[$href] = $localAssetPath;
145
+ $linkHrefs[] = $href;
146
+ }
147
+ }
148
+
149
+ // Check if there is any rel="preload" connected to the rel="stylesheet"
150
+ // and make sure the file is not added to the final CSS combined file
151
+ if ($attrObj->nodeName === 'rel' && $attrObj->nodeValue === 'preload') {
152
+ $checkCssPreload = true;
153
+ }
154
+
155
+ if ($checkCssPreload && $attrObj->nodeName === 'href') {
156
+ $hrefUriPreloads[] = self::getHrefRelPath($attrObj->nodeValue);
157
+ }
158
+ }
159
+ }
160
+
161
+ // Any rel="preload" found? Remove the stylesheet from the combination
162
+ if (! empty($hrefUriPreloads)) {
163
+ foreach ($hrefUriPreloads as $hrefUriPreload) {
164
+ if (in_array($hrefUriPreload, $combinedUriPaths)) {
165
+ $linkHrefUriKey = array_search($hrefUriPreload, $combinedUriPaths);
166
+ unset($combinedUriPaths[$linkHrefUriKey]);
167
+
168
+ foreach (array_keys($localAssetsPaths) as $localAssetPathKey) {
169
+ if (substr($localAssetPathKey, -strlen($hrefUriPreload)) === $hrefUriPreload) {
170
+ unset($localAssetsPaths[$localAssetPathKey]);
171
+ }
172
+ }
173
+
174
+ foreach ($linkHrefs as $linkHrefKey => $linkHref) {
175
+ if (substr($linkHref, -strlen($hrefUriPreload)) === $hrefUriPreload) {
176
+ unset($linkHrefs[$linkHrefKey]);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ // No Link Tags? Just return output
184
+ if (empty($linkHrefs)) {
185
+ return $htmlSource;
186
+ }
187
+
188
+ $maybeDoCssCombine = $this->maybeDoCssCombine( sha1( implode('', $combinedUriPaths) ), $localAssetsPaths );
189
+
190
+ // Local path to combined CSS file
191
+ $localFinalCssFile = $maybeDoCssCombine['local_final_css_file'];
192
+
193
+ // URI (e.g. /wp-content/cache/asset-cleanup/[file-name-here.css]) to the combined CSS file
194
+ $uriToFinalCssFile = $maybeDoCssCombine['uri_final_css_file'];
195
+
196
+ if (file_exists($localFinalCssFile)) {
197
+ $cssCachedFileExists = true;
198
+ $this->setCssCachedTransient( $uriToFinalCssFile, $linkHrefs );
199
+ }
200
+ }
201
+
202
+ if ($cssCachedFileExists) {
203
+ $finalTagUrl = WP_CONTENT_URL . self::$relPathCssCacheDir . $uriToFinalCssFile;
204
+
205
+ $finalCssTag = <<<HTML
206
+ <link id="asset-cleanup-combined-css" rel="stylesheet" href="{$finalTagUrl}" type="text/css" media="all" />
207
+ HTML;
208
+
209
+ // Append the combine CSS Link tag right after <head> section of the website
210
+ // Any other <head> strings will be ignored as only the first one from the HTML source code matters
211
+ // e.g. some may use <head> inside a JavaScript code or part of a comment
212
+ $htmlSource = preg_replace('#<head>#si', '<head>'."\n" . $finalCssTag . "\n", $htmlSource, 1);
213
+ $htmlSource = $this->stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource); // Strip the combined files to avoid duplicate code
214
+ }
215
+
216
+ return $htmlSource;
217
+ });
218
+ }, 1);
219
+ }
220
+
221
+ /**
222
+ * @param $linkHrefs
223
+ * @param $htmlSource
224
+ *
225
+ * @return mixed
226
+ */
227
+ public function stripJustCombinedSingleLinkTags($linkHrefs, $htmlSource)
228
+ {
229
+ preg_match_all('#<link[^>]*stylesheet[^>]*(>)#Usmi', $htmlSource, $matchesLinkStylesheetTags, PREG_SET_ORDER);
230
+
231
+ foreach ($matchesLinkStylesheetTags as $matchLinkStylesheetTag) {
232
+ $matchedLinkStylesheetTag = $matchLinkStylesheetTag[0];
233
+
234
+ $domLink = new \DOMDocument();
235
+ $domLink->loadHTML($matchedLinkStylesheetTag);
236
+
237
+ foreach ($domLink->getElementsByTagName( 'link' ) as $tagLinkObject) {
238
+ if (! $tagLinkObject->hasAttributes()) {
239
+ continue;
240
+ }
241
+
242
+ foreach ($tagLinkObject->attributes as $tagLinkAttrs) {
243
+ if ($tagLinkAttrs->nodeName === 'href' && in_array($tagLinkAttrs->nodeValue, $linkHrefs)) {
244
+ $htmlSource = str_replace($matchedLinkStylesheetTag, '', $htmlSource);
245
+ }
246
+ }
247
+ }
248
+ }
249
+
250
+ return $htmlSource;
251
+ }
252
+
253
+ /**
254
+ * @param $shaOneCombinedUriPaths
255
+ * @param $localAssetsPaths
256
+ *
257
+ * @return array
258
+ */
259
+ public function maybeDoCssCombine($shaOneCombinedUriPaths, $localAssetsPaths)
260
+ {
261
+ $current_user = wp_get_current_user();
262
+ $dirToUserCachedFile = ((isset($current_user->ID) && $current_user->ID > 0) ? 'logged-in/'.$current_user->ID.'/' : '');
263
+
264
+ $uriToFinalCssFile = $dirToUserCachedFile . $shaOneCombinedUriPaths . '.css';
265
+ $localFinalCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile;
266
+
267
+ $localDirForCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $dirToUserCachedFile;
268
+
269
+ // Only combine if $shaOneCombinedUriPaths.css does not exist
270
+ // If "?ver" value changes on any of the assets or the asset list changes in any way
271
+ // then $shaOneCombinedUriPaths will change too and a new CSS file will be generated and loaded
272
+
273
+ // || defined('WPACU_DEV_ALWAYS_GENERATE_COMBINED_CSS'
274
+ if (! file_exists($localFinalCssFile)) {
275
+ // Change $assetsContents as paths to fonts and images that are relative (e.g. ../, ../../) have to be updated
276
+ $finalAssetsContents = '';
277
+
278
+ foreach ($localAssetsPaths as $assetHref => $localAssetsPath) {
279
+ $posLastSlash = strrpos($assetHref, '/');
280
+ $pathToAssetDir = substr($assetHref, 0, $posLastSlash);
281
+
282
+ $parseUrl = parse_url($pathToAssetDir);
283
+
284
+ if (isset($parseUrl['scheme']) && $parseUrl['scheme'] !== '') {
285
+ $pathToAssetDir = str_replace(
286
+ array('http://'.$parseUrl['host'], 'https://'.$parseUrl['host']),
287
+ '',
288
+ $pathToAssetDir
289
+ );
290
+ } elseif (strpos($pathToAssetDir, '//') === 0) {
291
+ $pathToAssetDir = str_replace(
292
+ array('//'.$parseUrl['host'], '//'.$parseUrl['host']),
293
+ '',
294
+ $pathToAssetDir
295
+ );
296
+ }
297
+
298
+ $assetContent = file_get_contents($localAssetsPath);
299
+
300
+ if ($assetContent) {
301
+ $finalAssetsContents .= $this->maybeFixCssBackgroundUrls($assetContent, $pathToAssetDir . '/') . "\n\n";
302
+ }
303
+ }
304
+
305
+ $finalAssetsContents = trim($finalAssetsContents);
306
+
307
+ if ($finalAssetsContents) {
308
+ if ($dirToUserCachedFile !== '' && isset($current_user->ID) && $current_user->ID > 0) {
309
+ if (!mkdir($localDirForCssFile) && !is_dir($localDirForCssFile)) {
310
+ return array('uri_final_css_file' => '', 'local_final_css_file' => '');
311
+ }
312
+ }
313
+
314
+ @file_put_contents($localFinalCssFile, $finalAssetsContents);
315
+ }
316
+ }
317
+
318
+ return array(
319
+ 'uri_final_css_file' => $uriToFinalCssFile,
320
+ 'local_final_css_file' => $localFinalCssFile
321
+ );
322
+ }
323
+
324
+ /**
325
+ * @return array
326
+ */
327
+ public function getCssCachedTransient()
328
+ {
329
+ // Only clean request URIs allowed
330
+ if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
331
+ return array();
332
+ }
333
+
334
+ $optionValue = get_transient($this->transientCssName);
335
+
336
+ if ($optionValue) {
337
+ $optionValueArray = json_decode($optionValue, ARRAY_A);
338
+
339
+ $uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
340
+ $linkHrefs = $optionValueArray['link_hrefs'];
341
+
342
+ if ($uriToFinalCssFile) {
343
+ return array(
344
+ 'uri_final_css_file' => $uriToFinalCssFile,
345
+ 'local_final_css_file' => WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile,
346
+ 'link_hrefs' => $linkHrefs
347
+ );
348
+ }
349
+ }
350
+
351
+ return array();
352
+ }
353
+
354
+ /**
355
+ * @param $uriToFinalCssFile
356
+ * @param array $linkHrefs
357
+ */
358
+ public function setCssCachedTransient($uriToFinalCssFile, $linkHrefs)
359
+ {
360
+ // Only clean request URIs allowed
361
+ if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
362
+ return;
363
+ }
364
+
365
+ $optionValue = json_encode(
366
+ array(
367
+ 'request_' => $_SERVER['REQUEST_URI'],
368
+ 'uri_to_final_css_file' => $uriToFinalCssFile,
369
+ 'link_hrefs' => $linkHrefs
370
+ )
371
+ );
372
+
373
+ set_transient($this->transientCssName, $optionValue, self::$transientExpiresIn);
374
+ }
375
+
376
+ /**
377
+ *
378
+ */
379
+ public function deleteCssCachedTransient()
380
+ {
381
+ // Only clean request URIs allowed
382
+ if (strpos($_SERVER['REQUEST_URI'], '?') !== false) {
383
+ return;
384
+ }
385
+
386
+ delete_transient($this->transientCssName);
387
+ }
388
+
389
+ /**
390
+ * @param $cssContent
391
+ * @param $appendBefore
392
+ *
393
+ * @return mixed
394
+ */
395
+ public function maybeFixCssBackgroundUrls($cssContent, $appendBefore)
396
+ {
397
+ $cssContent = str_replace(
398
+ array('url("../', "url('../", 'url(../'),
399
+ array('url("'.$appendBefore.'../', "url('".$appendBefore.'../', 'url('.$appendBefore.'../'),
400
+ $cssContent
401
+ );
402
+
403
+ // Avoid Background URLs starting with "data" or "http" as they do not need to have the path updated
404
+ preg_match_all('/url\((?![\'"]?(?:data|http):)[\'"]?([^\'"\)]*)[\'"]?\)/i', $cssContent, $matches, PREG_PATTERN_ORDER);
405
+
406
+ // If it start with forward slash (/), it doesn't need fix, just skip it
407
+ // Also skip ../ types as they were already processed
408
+ $toSkipList = array("url('/", 'url("/', 'url(/');
409
+
410
+ //$cssContent = "\n".print_r($matches, true)."\n"; // For DEV purposes only
411
+
412
+ foreach ($matches[0] as $match) {
413
+ $fullUrlMatch = trim($match);
414
+
415
+ foreach ($toSkipList as $toSkip) {
416
+ if (substr($fullUrlMatch, 0, strlen($toSkip)) === $toSkip) {
417
+ continue 2; // doesn't need any fix, go to the next match
418
+ }
419
+ }
420
+
421
+ // Go through all situations: with and without quotes, with traversal directory (e.g. ../../)
422
+ $alteredMatch = str_replace(
423
+ array('url("', "url('"),
424
+ array('url("'.$appendBefore, "url('".$appendBefore),
425
+ $fullUrlMatch
426
+ );
427
+
428
+ $alteredMatch = trim($alteredMatch);
429
+
430
+ if (! in_array($fullUrlMatch{4}, array("'", '"', '/', '.'))) {
431
+ $alteredMatch = str_replace('url(', 'url('.$appendBefore, $alteredMatch);
432
+ $alteredMatch = str_replace(array('")', '\')'), ')', $alteredMatch);
433
+ }
434
+
435
+ // Finally, apply the changes
436
+ $cssContent = str_replace($fullUrlMatch, $alteredMatch, $cssContent);
437
+
438
+ // Bug fix
439
+ $cssContent = str_replace(
440
+ array($appendBefore.'"'.$appendBefore, $appendBefore."'".$appendBefore),
441
+ $appendBefore,
442
+ $cssContent
443
+ );
444
+ }
445
+
446
+ return $cssContent;
447
+ }
448
+
449
+ /**
450
+ * @param $href
451
+ *
452
+ * @return bool|string
453
+ */
454
+ public static function getLocalAssetPath($href)
455
+ {
456
+ /*
457
+ * Validate it first
458
+ */
459
+ // Asset's Host
460
+ $assetHost = strtolower(parse_url($href, PHP_URL_HOST));
461
+
462
+ // First check the host name
463
+ $siteUrl = get_option('siteurl');
464
+ $siteUrlHost = strtolower(parse_url($siteUrl, PHP_URL_HOST));
465
+
466
+ if ($assetHost !== $siteUrlHost) {
467
+ return false;
468
+ }
469
+
470
+ $hrefRelPath = self::getHrefRelPath($href);
471
+
472
+ if (strpos($hrefRelPath, '/') === 0) {
473
+ $hrefRelPath = substr($hrefRelPath, 1);
474
+ }
475
+
476
+ $localAssetPath = ABSPATH . $hrefRelPath;
477
+
478
+ //file_put_contents(WP_CONTENT_DIR . '/cache/asset-cleanup/css/data.log', $localAssetPath);
479
+
480
+ if (strpos($localAssetPath, '?ver=') !== false) {
481
+ list($localAssetPathAlt,) = explode('?ver=', $localAssetPath);
482
+ $localAssetPath = $localAssetPathAlt;
483
+ }
484
+
485
+ if (strrchr($localAssetPath, '.') === '.css' && file_exists($localAssetPath)) {
486
+ return $localAssetPath;
487
+ }
488
+
489
+ return false;
490
+ }
491
+
492
+ /**
493
+ * @param $href
494
+ *
495
+ * @return mixed
496
+ */
497
+ public static function getHrefRelPath($href)
498
+ {
499
+ $parseUrl = parse_url($href);
500
+ $hrefHost = $parseUrl['host'];
501
+
502
+ // Sometimes host is different on Staging websites such as the ones from Siteground
503
+ // e.g. staging1.domain.com and domain.com
504
+ // We need to make sure that the URI path is fetched correctly based on the host value from the $href
505
+ $siteDbUrl = get_option('siteurl');
506
+ $parseDbSiteUrl = parse_url(get_option('siteurl'));
507
+
508
+ $dbSiteUrlHost = $parseDbSiteUrl['host'];
509
+
510
+ $finalBaseUrl = str_replace($dbSiteUrlHost, $hrefHost, $siteDbUrl);
511
+
512
+ return str_replace($finalBaseUrl, '', $href);
513
+ }
514
+
515
+ /**
516
+ * @return bool
517
+ */
518
+ public function doCssCombine()
519
+ {
520
+ // No CSS files are combined in the Dashboard
521
+ // Always in the front-end view
522
+ // Do not combine if there's a POST request as there could be assets loading conditionally
523
+ // that might not be needed when the page is accessed without POST, making the final CSS file larger
524
+ if (is_admin() || ! empty($_POST) || array_key_exists('wpacu_no_css_combine', $_GET)) {
525
+ return false; // Do not combine
526
+ }
527
+
528
+ $pluginSettings = Main::instance()->settings;
529
+
530
+ if ($pluginSettings['test_mode']) {
531
+ return false; // Do not combine anything is "Test Mode" is ON
532
+ }
533
+
534
+ if ($pluginSettings['combine_loaded_css'] === '') {
535
+ return false; // Do not combine
536
+ }
537
+
538
+ if ($pluginSettings['combine_loaded_css'] === 'for_admin' && Menu::userCanManageAssets()) {
539
+ return true; // Do combine
540
+ }
541
+
542
+ if ($pluginSettings['combine_loaded_css'] === 'for_all') {
543
+ return true; // Do combine
544
+ }
545
+
546
+ // Finally, return false as none of the checks above matched
547
+ return false;
548
+ }
549
+
550
+ /**
551
+ *
552
+ */
553
+ public function clearAllCacheTransients()
554
+ {
555
+ global $wpdb;
556
+
557
+ // First, select all and get the combined CSS file names in order to be deleted
558
+ // As the files will be regenerated on page loads
559
+ $transientNamePrefix = self::$transientCssNamePrefix;
560
+
561
+ $sqlSelect = <<<SQL
562
+ SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name LIKE '_transient_{$transientNamePrefix}%'
563
+ SQL;
564
+ $sqlResults = $wpdb->get_results($sqlSelect, ARRAY_A);
565
+
566
+ foreach ($sqlResults as $sqlResult) {
567
+ // 53 = length of the following
568
+ // _transient_ (11) + self::$transientCssNamePrefix + MD5 value (always 32)
569
+ $optionNameValidLength = 11 + strlen(self::$transientCssNamePrefix) + 32;
570
+
571
+ // nothing is left by chance to make sure the right transients gets deleted
572
+ if (strlen($sqlResult['option_name']) === $optionNameValidLength) {
573
+ delete_transient( str_replace( '_transient_', '', $sqlResult['option_name'] ) );
574
+ // @TODO: Remove cached CSS files after a while making sure no caching system still loads the old file
575
+ //$this->removeCachedCssFile( $sqlResult['option_value'] );
576
+ }
577
+ }
578
+
579
+ if ( wp_get_referer() ) {
580
+ wp_safe_redirect( wp_get_referer() );
581
+ }
582
+ }
583
+
584
+ /**
585
+ * Triggers in the front-end view only for the current viewed page
586
+ */
587
+ /*
588
+ public function clearTransientCssCacheFile()
589
+ {
590
+ $optionValue = get_transient($this->transientCssName);
591
+
592
+ if ($optionValue) {
593
+ $this->removeCachedCssFile($optionValue);
594
+ }
595
+ }
596
+ */
597
+
598
+ /**
599
+ * @param $optionValue
600
+ */
601
+ /*
602
+ public function removeCachedCssFile($optionValue)
603
+ {
604
+ $optionValueArray = json_decode($optionValue, ARRAY_A);
605
+ $uriToFinalCssFile = $optionValueArray['uri_to_final_css_file'];
606
+
607
+ $fullLocalPathToCachedCssFile = WP_CONTENT_DIR . self::$relPathCssCacheDir . $uriToFinalCssFile;
608
+
609
+ // Check the extension to make sure a CSS file is in fact deleted from the cache
610
+ if (file_exists($fullLocalPathToCachedCssFile) && strrchr($uriToFinalCssFile, '.') === '.css') {
611
+ @unlink($fullLocalPathToCachedCssFile);
612
+ }
613
+ }
614
+ */
615
+ }
classes/OwnAssets.php CHANGED
@@ -45,21 +45,42 @@ class OwnAssets
45
  */
46
  public function inlineCode()
47
  {
48
- ?>
49
- <style type="text/css">
50
- .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
51
-
52
- <?php if (is_admin_bar_showing()) { ?>
53
- #wp-admin-bar-wpacu-test-mode span.dashicons { width: 15px; height: 15px; font-family: 'Dashicons', Arial, "Times New Roman", "Bitstream Charter", Times, serif; }
54
- #wp-admin-bar-wpacu-test-mode > a:first-child strong { font-weight: bolder; color: #76f203; }
55
- #wp-admin-bar-wpacu-test-mode > a:first-child:hover { color: #00b9eb; }
56
- #wp-admin-bar-wpacu-test-mode > a:first-child:hover strong { color: #00b9eb; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  /* Add some spacing below the last text */
59
- #wp-admin-bar-wpacu-test-mode-info-2 { padding-bottom: 8px !important; }
60
- <?php } ?>
61
- </style>
62
- <?php
 
 
63
  }
64
 
65
  /**
@@ -69,9 +90,8 @@ class OwnAssets
69
  {
70
  ?>
71
  <style type="text/css">
72
- .opt-in-or-opt-out.wp-asset-clean-up {
73
- display: none;
74
- }
75
  </style>
76
  <?php
77
  }
@@ -165,13 +185,13 @@ class OwnAssets
165
  {
166
  global $post, $pagenow;
167
 
168
- $page = isset($_GET['page']) ? $_GET['page'] : '';
169
 
170
  $getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
171
 
172
  $postId = isset($post->ID) ? $post->ID : 0;
173
 
174
- if ($getPostId > 0 && $getPostId != $postId) {
175
  $postId = $getPostId;
176
  }
177
 
45
  */
46
  public function inlineCode()
47
  {
48
+ if (is_admin_bar_showing()) {
49
+ ?>
50
+ <style type="text/css">
51
+ #wp-admin-bar-assetcleanup-parent span.dashicons {
52
+ width: 15px;
53
+ height: 15px;
54
+ font-family: 'Dashicons', Arial, "Times New Roman", "Bitstream Charter", Times, serif !important;
55
+ }
56
+
57
+ #wp-admin-bar-assetcleanup-parent > a:first-child strong {
58
+ font-weight: bolder;
59
+ color: #76f203;
60
+ }
61
+
62
+ #wp-admin-bar-assetcleanup-parent > a:first-child:hover {
63
+ color: #00b9eb;
64
+ }
65
+
66
+ #wp-admin-bar-assetcleanup-parent > a:first-child:hover strong {
67
+ color: #00b9eb;
68
+ }
69
+
70
+ #wp-admin-bar-assetcleanup-test-mode-info {
71
+ margin-top: 5px !important;
72
+ margin-bottom: -8px !important;
73
+ padding-top: 3px !important;
74
+ border-top: 1px solid #ffffff52;
75
+ }
76
 
77
  /* Add some spacing below the last text */
78
+ #wp-admin-bar-assetcleanup-test-mode-info-2 {
79
+ padding-bottom: 3px !important;
80
+ }
81
+ </style>
82
+ <?php
83
+ }
84
  }
85
 
86
  /**
90
  {
91
  ?>
92
  <style type="text/css">
93
+ .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
94
+ .opt-in-or-opt-out.wp-asset-clean-up { display: none; }
 
95
  </style>
96
  <?php
97
  }
185
  {
186
  global $post, $pagenow;
187
 
188
+ $page = Misc::getVar('get', 'page');
189
 
190
  $getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
191
 
192
  $postId = isset($post->ID) ? $post->ID : 0;
193
 
194
+ if ($getPostId > 0 && $getPostId !== $postId) {
195
  $postId = $getPostId;
196
  }
197
 
classes/Plugin.php CHANGED
@@ -3,6 +3,7 @@ namespace WpAssetCleanUp;
3
 
4
  /**
5
  * Class Plugin
 
6
  */
7
  class Plugin
8
  {
@@ -12,7 +13,7 @@ class Plugin
12
  public function __construct()
13
  {
14
  register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
15
- add_action('admin_init', array($this, 'redirectToGettingStarted'));
16
 
17
  // [wpacu_lite]
18
  // Admin footer text: Ask the user to review the plugin
@@ -23,28 +24,6 @@ class Plugin
23
  add_filter('plugin_action_links_'.WPACU_PLUGIN_BASE, array($this, 'actionLinks'));
24
  }
25
 
26
- /**
27
- * @param $links
28
- *
29
- * @return mixed
30
- */
31
- public function actionLinks($links)
32
- {
33
- $links['getting_started'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_getting_started">' . __('Getting Started', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
34
- $links['settings'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_settings">' . __('Settings', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
35
-
36
- // [wpacu_lite]
37
- $allPlugins = get_plugins();
38
-
39
- // If the pro version is not installed (active or not), show the upgrade link
40
- if (! array_key_exists('wp-asset-clean-up-pro/wpacu.php', $allPlugins)) {
41
- $links['go_pro'] = '<a target="_blank" style="font-weight: bold;" href="'.WPACU_PLUGIN_GO_PRO_URL.'">Go Pro</a>';
42
- }
43
- // [/wpacu_lite]
44
-
45
- return $links;
46
- }
47
-
48
  // [wpacu_lite]
49
  /**
50
  * @param $text
@@ -67,25 +46,110 @@ class Plugin
67
  */
68
  public function whenActivated()
69
  {
70
- // Is the plugin activated for the first time? Prepare for the redirection to "Getting Started"
 
71
  if (! get_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time')) {
72
  add_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time', 1, 'no');
73
  set_transient(WPACU_PLUGIN_ID . '_redirect_after_activation', 1, 15);
74
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
 
77
  /**
78
  *
79
  */
80
- public function redirectToGettingStarted()
81
  {
82
  if (get_transient(WPACU_PLUGIN_ID . '_redirect_after_activation')) {
83
  // Remove it as only one redirect is needed (first time the plugin is activated)
84
  delete_transient(WPACU_PLUGIN_ID . '_redirect_after_activation');
85
 
86
- // Do the 'first activation time'' redirection
87
- wp_redirect(admin_url('admin.php?page=' . WPACU_PLUGIN_ID . '_getting_started'));
88
  exit();
89
  }
90
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
3
 
4
  /**
5
  * Class Plugin
6
+ * @package WpAssetCleanUp
7
  */
8
  class Plugin
9
  {
13
  public function __construct()
14
  {
15
  register_activation_hook(WPACU_PLUGIN_FILE, array($this, 'whenActivated'));
16
+ add_action('admin_init', array($this, 'redirectToStartingPage'));
17
 
18
  // [wpacu_lite]
19
  // Admin footer text: Ask the user to review the plugin
24
  add_filter('plugin_action_links_'.WPACU_PLUGIN_BASE, array($this, 'actionLinks'));
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  // [wpacu_lite]
28
  /**
29
  * @param $text
46
  */
47
  public function whenActivated()
48
  {
49
+ // Is the plugin activated for the first time?
50
+ // Prepare for the redirection to the WPACU_ADMIN_PAGE_ID_START plugin page
51
  if (! get_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time')) {
52
  add_option(WPACU_PLUGIN_ID.'_do_activation_redirect_first_time', 1, 'no');
53
  set_transient(WPACU_PLUGIN_ID . '_redirect_after_activation', 1, 15);
54
  }
55
+
56
+ /**
57
+ * /wp-content/cache/asset-cleanup/
58
+ * /wp-content/cache/asset-cleanup/index.php
59
+ * /wp-content/cache/asset-cleanup/.htaccess
60
+ *
61
+ * /wp-content/cache/asset-cleanup/css/
62
+ * /wp-content/cache/asset-cleanup/css/index.php
63
+ * /wp-content/cache/asset-cleanup/css/logged-in/
64
+ * /wp-content/cache/asset-cleanup/css/logged-in/index.php
65
+ */
66
+ self::createCacheFoldersFiles();
67
+ }
68
+
69
+ /**
70
+ *
71
+ */
72
+ public static function createCacheFoldersFiles()
73
+ {
74
+ $cacheCssDir = WP_CONTENT_DIR . OptimizeCss::$relPathCssCacheDir;
75
+
76
+ $emptyPhpFileContents = <<<TEXT
77
+ <?php
78
+ // Silence is golden.
79
+ TEXT;
80
+
81
+ $htAccessContents = <<<HTACCESS
82
+ <IfModule mod_autoindex.c>
83
+ Options -Indexes
84
+ </IfModule>
85
+ HTACCESS;
86
+
87
+
88
+ if (! is_dir($cacheCssDir)) {
89
+ mkdir($cacheCssDir, 0755, true);
90
+ }
91
+
92
+ if (! is_file($cacheCssDir . 'index.php')) {
93
+ // /wp-content/cache/asset-cleanup/cache/css/index.php
94
+ file_put_contents( $cacheCssDir . 'index.php', $emptyPhpFileContents );
95
+ }
96
+
97
+ if (! is_dir($cacheCssDir . 'logged-in')) {
98
+ mkdir( $cacheCssDir . 'logged-in', 0755 );
99
+ }
100
+
101
+ if (! is_file($cacheCssDir . 'logged-in/index.php')) {
102
+ // /wp-content/cache/asset-cleanup/cache/css/logged-in/index.html
103
+ file_put_contents( $cacheCssDir . 'logged-in/index.php', $emptyPhpFileContents );
104
+ }
105
+
106
+ $htAccessFilePath = dirname($cacheCssDir) . '/.htaccess';
107
+
108
+ if (! is_file($htAccessFilePath)) {
109
+ // /wp-content/cache/asset-cleanup/.htaccess
110
+ file_put_contents( $htAccessFilePath, $htAccessContents );
111
+ }
112
+
113
+ if (! is_file(dirname($cacheCssDir) . '/index.php')) {
114
+ // /wp-content/cache/asset-cleanup/index.php
115
+ file_put_contents( dirname( $cacheCssDir ) . '/index.php', $emptyPhpFileContents );
116
+ }
117
  }
118
 
119
  /**
120
  *
121
  */
122
+ public function redirectToStartingPage()
123
  {
124
  if (get_transient(WPACU_PLUGIN_ID . '_redirect_after_activation')) {
125
  // Remove it as only one redirect is needed (first time the plugin is activated)
126
  delete_transient(WPACU_PLUGIN_ID . '_redirect_after_activation');
127
 
128
+ // Do the 'first activation time' redirection
129
+ wp_redirect(admin_url('admin.php?page=' . WPACU_ADMIN_PAGE_ID_START));
130
  exit();
131
  }
132
  }
133
+
134
+ /**
135
+ * @param $links
136
+ *
137
+ * @return mixed
138
+ */
139
+ public function actionLinks($links)
140
+ {
141
+ $links['getting_started'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_getting_started">' . __('Getting Started', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
142
+ $links['settings'] = '<a href="admin.php?page=' . WPACU_PLUGIN_ID . '_settings">' . __('Settings', WPACU_PLUGIN_TEXT_DOMAIN) . '</a>';
143
+
144
+ // [wpacu_lite]
145
+ $allPlugins = get_plugins();
146
+
147
+ // If the pro version is not installed (active or not), show the upgrade link
148
+ if (! array_key_exists('wp-asset-clean-up-pro/wpacu.php', $allPlugins)) {
149
+ $links['go_pro'] = '<a target="_blank" style="font-weight: bold;" href="'.WPACU_PLUGIN_GO_PRO_URL.'">Go Pro</a>';
150
+ }
151
+ // [/wpacu_lite]
152
+
153
+ return $links;
154
+ }
155
  }
classes/Settings.php CHANGED
@@ -25,6 +25,9 @@ class Settings
25
  'hide_core_files',
26
  'test_mode',
27
 
 
 
 
28
  'disable_emojis',
29
 
30
  // Stored in 'wpassetcleanup_global_unload' option
@@ -221,6 +224,8 @@ class Settings
221
  */
222
  public function update($settings)
223
  {
 
 
224
  $wpacuUpdate = new Update;
225
 
226
  $settingsNotNull = array();
@@ -283,4 +288,25 @@ class Settings
283
  update_option(WPACU_PLUGIN_ID . '_settings', json_encode($settings), 'no');
284
  $this->status['updated'] = true;
285
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
25
  'hide_core_files',
26
  'test_mode',
27
 
28
+ // Combine loaded CSS (remaining ones after unloading the useless ones) into one file
29
+ 'combine_loaded_css',
30
+
31
  'disable_emojis',
32
 
33
  // Stored in 'wpassetcleanup_global_unload' option
224
  */
225
  public function update($settings)
226
  {
227
+ self::clearAllCache();
228
+
229
  $wpacuUpdate = new Update;
230
 
231
  $settingsNotNull = array();
288
  update_option(WPACU_PLUGIN_ID . '_settings', json_encode($settings), 'no');
289
  $this->status['updated'] = true;
290
  }
291
+
292
+ /**
293
+ *
294
+ */
295
+ public static function clearAllCache()
296
+ {
297
+ // "Combined CSS Loaded" transients
298
+ $optimizeCss = new OptimizeCss();
299
+ $optimizeCss->clearAllCacheTransients();
300
+
301
+ // "WP Rocket" cache
302
+ /*
303
+ add_action('init', function() {
304
+ if ( function_exists( 'rocket_clean_domain' ) ) {
305
+ try {
306
+ @rocket_clean_domain();
307
+ } catch ( \Exception $e ) {}
308
+ }
309
+ });
310
+ */
311
+ }
312
  }
classes/Update.php CHANGED
@@ -259,6 +259,9 @@ HTML;
259
  // Any bulk unloads or removed? (e.g. all pages of a certain post type)
260
  $this->saveToBulkUnloads();
261
  $this->removeBulkUnloads();
 
 
 
262
  }
263
 
264
  /**
@@ -291,6 +294,9 @@ HTML;
291
  add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
292
 
293
  $this->frontEndUpdateFor['homepage'] = true;
 
 
 
294
  }
295
 
296
  /**
259
  // Any bulk unloads or removed? (e.g. all pages of a certain post type)
260
  $this->saveToBulkUnloads();
261
  $this->removeBulkUnloads();
262
+
263
+ // Clear all cache
264
+ Settings::clearAllCache();
265
  }
266
 
267
  /**
294
  add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
295
 
296
  $this->frontEndUpdateFor['homepage'] = true;
297
+
298
+ // Clear all cache
299
+ Settings::clearAllCache();
300
  }
301
 
302
  /**
freemius-load.php CHANGED
@@ -21,7 +21,7 @@ if ( ! function_exists( 'wpassetcleanup_fs' )
21
  'has_paid_plans' => false,
22
  'anonymous_mode' => true,
23
  'menu' => array(
24
- 'slug' => WPACU_PLUGIN_ID . '_getting_started',
25
  'override_exact' => true,
26
  'account' => false,
27
  'contact' => false,
@@ -40,7 +40,7 @@ if ( ! function_exists( 'wpassetcleanup_fs' )
40
  do_action('wpassetcleanup_fs_loaded');
41
 
42
  function wpassetcleanup_fs_settings_url() {
43
- return admin_url('admin.php?page='.WPACU_PLUGIN_ID . '_getting_started');
44
  }
45
 
46
  wpassetcleanup_fs()->add_filter('connect_url', WPACU_PLUGIN_ID.'_fs_settings_url');
21
  'has_paid_plans' => false,
22
  'anonymous_mode' => true,
23
  'menu' => array(
24
+ 'slug' => WPACU_ADMIN_PAGE_ID_START,
25
  'override_exact' => true,
26
  'account' => false,
27
  'contact' => false,
40
  do_action('wpassetcleanup_fs_loaded');
41
 
42
  function wpassetcleanup_fs_settings_url() {
43
+ return admin_url('admin.php?page='.WPACU_ADMIN_PAGE_ID_START);
44
  }
45
 
46
  wpassetcleanup_fs()->add_filter('connect_url', WPACU_PLUGIN_ID.'_fs_settings_url');
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Asset CleanUp: Page Speed Booster ===
2
  Contributors: gabelivan
3
  Tags: pagespeed, page speed, dequeue, performance, gtmetrix
4
- Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7GJZCW6RD8ECS
5
- Requires at least: 4.0
6
- Tested up to: 5.0.2
7
- Stable tag: 1.2.9
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
@@ -131,6 +131,11 @@ With the recently released "Test Mode" feature, you can safely unload assets on
131
  4. Scripts (.JS) are selected for site-wide unload
132
 
133
  == Changelog ==
 
 
 
 
 
134
  = 1.2.9 =
135
  * Added "System Info" to "Tools" page to fetch information about the WordPress environment in case something needs debugged
136
  * Added "Getting Started" page to make things easier for anyone who doesn't understand how the plugin works
1
  === Asset CleanUp: Page Speed Booster ===
2
  Contributors: gabelivan
3
  Tags: pagespeed, page speed, dequeue, performance, gtmetrix
4
+ Donate link: https://gabelivan.com/items/wp-asset-cleanup-pro/?utm_source=wp_org_lite&utm_medium=donate
5
+ Requires at least: 4.4
6
+ Tested up to: 5.0.3
7
+ Stable tag: 1.2.9.1
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
131
  4. Scripts (.JS) are selected for site-wide unload
132
 
133
  == Changelog ==
134
+ = 1.2.9.1 =
135
+ * "Combined Loaded CSS" feature (concatenates all the remaining loaded stylesheets within the HEAD section of the page and saves them into one file) to reduce HTTP requests even further
136
+ * Improved "Getting Started" area
137
+ * Made "Settings" as the default page where you (the administrator user) is redirected when activating the plugin for the first time
138
+
139
  = 1.2.9 =
140
  * Added "System Info" to "Tools" page to fetch information about the WordPress environment in case something needs debugged
141
  * Added "Getting Started" page to make things easier for anyone who doesn't understand how the plugin works
templates/admin-page-getting-started.php CHANGED
@@ -10,7 +10,7 @@ if (! isset($data)) {
10
  <div class="about-wrap wpacu-about-wrap">
11
  <h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
12
  <p class="about-text wpacu-about-text">
13
- Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster &amp; lighter by removing the useless CSS &amp; JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with a caching plugin or a 3rd party solution such as Varnish.
14
  <img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
15
  </p>
16
 
@@ -25,33 +25,31 @@ if (! isset($data)) {
25
  <p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS &amp; JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
26
  <p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
27
  <hr />
28
- <p class="area-title">What Asset CleanUp really does?</p>
29
- <p>Asset CleanUp is not a caching plugin and doesn't just make the page faster once you install &amp; activate it. You need to select the assets that are not needed to load on your website which will in the end reduce considerably the number of HTTP requests and optimize the front-end side of your pages.</p>
30
- <p>Once the setup is completed, the pages will have a better speed score (this can be tested using tools such as GTMetrix) and combined with a caching plugin (such as <a target="_blank" href="https://gabelivan.com/visit/wp-rocket">WP Rocket</a>), it will improve the page speed even more. <span style="font-size: 17px;">🚀</span></p>
31
  <hr />
32
  <p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size: 22px;">✨</span></p>
33
- <p>Let's suppose you have a page where 30 files (CSS &amp; JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also use a caching plugin and combined and minify the remaining 12 files, the total assets size becomes smaller to 0.5 MB. In the end, <strong>the assets will load 3 times faster and improve your page speed score</strong>. Moreover, the HTML source code will be cleaner and easier to go through in case you're a developer and need to do any debugging or just check something in the code.</p>
34
  <hr />
35
  <p class="area-title">Not sure how to configure it? <span style="font-size: 22px;">🤔</span></p>
36
  <p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
37
- <?php } elseif ($data['for'] === 'stop-loading-useless-css-js-files') { ?>
38
-
39
  <?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
40
- <p class="area-title">Higher search ranking</p>
41
  <p>Since 2010, there has been a signal in Google search ranking algorithms: site speed, which reflects how quickly a website responds to web requests.</p>
42
  <p>Speeding up websites is important — not just to site owners, but to all Internet users. Faster sites create happy users and Google has seen in their internal studies that when a site responds slowly, visitors spend less time there. But faster sites don't just improve user experience; recent data shows that improving site speed also reduces operating costs. Like Google, their users place a lot of value in speed — that's why they've decided to take site speed into account in their search rankings. They use a variety of sources to determine the speed of a site relative to other sites.
43
  <p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
44
  <hr />
45
 
46
- <p class="area-title">Visitor Experience</p>
47
  <p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
48
  <hr />
49
 
50
- <p class="area-title">Better Developer Experience</p>
51
  <p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
52
  <hr />
53
 
54
- <p class="area-title">Higher Revenue</p>
55
  <p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
56
 
57
  <p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
@@ -67,11 +65,14 @@ if (! isset($data)) {
67
  <span class="dashicons dashicons-format-image"></span> <a href="#TB_inline?&width=1024&height=550&inlineId=wpacu-brain-slow-website-info"
68
  class="thickbox">View "This Is Your Brain On A Slow Website" Infographic</a>
69
  <?php } elseif ($data['for'] === 'start-optimization') { ?>
70
- <p>The first step that needs to be taken is to check the list of your active plugins that load CSS &amp; JavaScript, as well as the active theme, and determine which .css &amp; .js assets are not needed on the pages you want to optimize.</p>
 
 
 
71
 
72
- <p class="area-title">Common Example: "Contact Form 7" plugin</p>
73
  <p>At the time of writing this (January 1, 2019), the plugin loads 2 files everywhere (site-wide), when most of the WordPress websites only use them in the contact page. These files are:</p>
74
- <ul>
75
  <li><em>/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.1</em> (Stylesheet File)</li>
76
  <li><em>/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.1</em> (JavaScript File)</li>
77
  </ul>
10
  <div class="about-wrap wpacu-about-wrap">
11
  <h1>Welcome to Asset CleanUp <?php echo WPACU_PLUGIN_VERSION; ?></h1>
12
  <p class="about-text wpacu-about-text">
13
+ Thank you for installing this page speed booster plugin! Prepare to make your WordPress website faster &amp; lighter by removing the useless CSS &amp; JavaScript files from your pages. For maximum performance, Asset CleanUp works best when used with either a caching plugin, the in-built hosting caching (e.g. <a style="text-decoration: none; color: #555d66;" href="https://gabelivan.com/visit/wp-engine">WPEngine</a>, Kinsta have it) or something like Varnish.
14
  <img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/wpacu-logo-transparent-bg-v1.png" alt="" />
15
  </p>
16
 
25
  <p>Often, our WordPress websites are loaded with elements that are not needed to load on specific pages or even everywhere. These assets (CSS &amp; JavaScript files) as well as inline code are adding up to the total size of the page, thus taking more time for the page to load.</p>
26
  <p>This could end up in a slow website that leads to page abandonment, poor ranking in Google search and sometimes conflict JavaScript errors where too many scripts are loading and one of them (or more) have poorly written code that is not autonomous and badly interacts with other code.</p>
27
  <hr />
28
+ <p class="area-title">What Asset CleanUp really does? <span style="font-size: 22px;">🚀</span></p>
29
+ <p>Asset CleanUp is front-end optimisation performance plugin and let's you select the assets that are not needed to load on your website and combine the remaining loaded ones into fewer files, which will in the end reduce considerably the number of HTTP requests and optimize the front-end side of your pages. <a target="_blank" href="https://developer.yahoo.com/performance/rules.html">Read more</a></p>
30
+ <p>Once the setup is completed, the pages will have a better speed score (this can be tested using tools such as GTMetrix) and combined with a backend caching system (<em>e.g. a plugin such as <a target="_blank" href="https://gabelivan.com/visit/wp-rocket">WP Rocket</a>, a hosting service that has its in-built WordPress caching like <a href="https://gabelivan.com/visit/wp-engine">WPEngine</a> or Kinsta, a web application accelerator like Varnish that can be setup the server etc.</em>), it will improve the page speed even more.</p>
31
  <hr />
32
  <p class="area-title">Example (Stripping ~66% of "crap") <span style="font-size: 22px;">✨</span></p>
33
+ <p>Let's suppose you have a page where 30 files (CSS &amp; JS) are loaded. All have a total size of 1.5 MB. Using Asset CleanUp, you can reduce the number to 12 files by unloading the other 18 files which are useless on the page. You've reduced the total size to 0.7 MB, this resulting in less time in downloading the assets, thus the page will load faster. If you also combine and minify the remaining 12 files, the total assets size becomes smaller to 0.5 MB. In the end, <strong>the assets will load 3 times faster and improve your page speed score</strong>. Moreover, the HTML source code will be cleaner and easier to go through in case you're a developer and need to do any debugging or just check something in the code.</p>
34
  <hr />
35
  <p class="area-title">Not sure how to configure it? <span style="font-size: 22px;">🤔</span></p>
36
  <p>No problem! You can enable "Test Mode" and any changes you make, will only be visible for you (the logged-in administrator), while the regular visitors will see the pages as if the plugin is not active. Once all is good, you can disable "Test Mode" (thus applying the settings to everyone), clear the page caching (if using a plugin or a server-side solution such as Varnish) and check out the page speed score. <a target="_blank" href="https://assetcleanup.com/docs/?p=84">Read more</a></p>
 
 
37
  <?php } elseif ($data['for'] === 'benefits-fast-pages') { ?>
38
+ <p class="area-title">Higher search ranking <span style="font-size: 22px;">📈</span></p>
39
  <p>Since 2010, there has been a signal in Google search ranking algorithms: site speed, which reflects how quickly a website responds to web requests.</p>
40
  <p>Speeding up websites is important — not just to site owners, but to all Internet users. Faster sites create happy users and Google has seen in their internal studies that when a site responds slowly, visitors spend less time there. But faster sites don't just improve user experience; recent data shows that improving site speed also reduces operating costs. Like Google, their users place a lot of value in speed — that's why they've decided to take site speed into account in their search rankings. They use a variety of sources to determine the speed of a site relative to other sites.
41
  <p><span class="dashicons dashicons-video-alt3"></span> <a href="https://www.youtube.com/watch?v=SO4YuDAkplU" target="_blank">How does Google determine page speed?</a></p>
42
  <hr />
43
 
44
+ <p class="area-title">Visitor Experience <span style="font-size: 22px;">😊</span></p>
45
  <p>For a customer (it's likely happened to you too) that wants to purchase something online, it's very frustrating to land on slow loading website. A blazing fast website, will keep your visitors happy, engaged, which will directly influence conversions. If a visitor doesn't get what he wants in a time he/she thinks it's reasonable, they will probably head to another website belonging to a competitor. As today's users expect a fast and streamlined web experience, you're losing business if you neglect this often overlooked aspect.</p>
46
  <hr />
47
 
48
+ <p class="area-title">Better Developer Experience <span style="font-size: 22px;">⚙️</span></p>
49
  <p>As developers, we often go through the HTML source code of the website, access the server (e.g. Apache, NGINX) logs that has the HTTP requests, and have to sometimes solve code conflict problems (e.g. between plugins) due to poorly written code. By preventing unnecessary files to load, having less HTTP requests, and cleaner HTML code, you will be able to easily go through the code (which is smaller), your log files will take less space on the server, will be easier to backup and analyse, and by having less JavaScript files loading, you will be reduce the changes of getting less JS errors that could interfere with the functionality of your website.</p>
50
  <hr />
51
 
52
+ <p class="area-title">Higher Revenue <span style="font-size: 22px;">💯</span></p>
53
  <p>Just about any major retailer is taking site speed as a very important factor for increasing conversions. According to Strangeloop, 57% of online customers will leave a website after waiting 3 seconds for the page to load. Moreover, 80% of those people will not return to that page. Some of them will tell others about their negative experience. This has a direct impact on the conversion rate, revenue and brand image.</p>
54
 
55
  <p style="margin-bottom: 0;"><em>"78% of users say they've felt STRESS OR ANGER while using a slow website."</em></p>
65
  <span class="dashicons dashicons-format-image"></span> <a href="#TB_inline?&width=1024&height=550&inlineId=wpacu-brain-slow-website-info"
66
  class="thickbox">View "This Is Your Brain On A Slow Website" Infographic</a>
67
  <?php } elseif ($data['for'] === 'start-optimization') { ?>
68
+ <p>For the <em>homepage</em>, you can go to "Asset CleanUp" -&gt; "<a href="<?php echo admin_url('admin.php?page='.WPACU_PLUGIN_ID.'_home_page') ?>">Homepage</a>" from the plugin's menu and you will notice the list of all the styles &amp;scripts files that are loading there. For each file, you will see options that you can enabled/disable.</p>
69
+ <p>For <em>posts, pages &amp; custom post types</em>, you can edit the page within the Dashboard or via the front-end view (if you enabled the option in "Settings") and go to "Asset CleanUp" area where you can manage all the CSS &amp; JS files loading on that post/page.</p>
70
+ <p>To view all the pages where Asset CleanUp can do optimization for, go to "<a href="<?php echo admin_url('admin.php?page=wpassetcleanup_pages_info'); ?>">Pages Info</a>".</p>
71
+ <hr />
72
 
73
+ <p style="font-size: 16px;"><strong>Common Example: "Contact Form 7" plugin</strong></p>
74
  <p>At the time of writing this (January 1, 2019), the plugin loads 2 files everywhere (site-wide), when most of the WordPress websites only use them in the contact page. These files are:</p>
75
+ <ul style="list-style: disc; margin-left: 25px;">
76
  <li><em>/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.1.1</em> (Stylesheet File)</li>
77
  <li><em>/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.1</em> (JavaScript File)</li>
78
  </ul>
templates/admin-page-pages-info.php CHANGED
@@ -9,13 +9,16 @@ if (! isset($data)) {
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
- $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info" class="go-pro-link-no-style"><span class="tooltip">Available for Pro users<br />Click to upgrade!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
13
  // [/wpacu_lite]
14
  ?>
15
  <div id="wpacu-pages-info-area" class="wpacu-wrap">
16
- <!-- [wpacu_lite] -->
17
- <p>* <em>Unloading assets (CSS &amp; JavaScript) for page types that have a locker next to their name requires an <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_pages_info&utm_medium=top_note">upgrade to the Pro version</a>.</em></p>
18
- <!-- [/wpacu_lite] -->
 
 
 
19
 
20
  <div class="wpacu_table_wrap">
21
  <table class="table table-striped">
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
+ $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info" class="go-pro-link-no-style"><span class="wpacu-tooltip">Available for Pro users<br />Click to upgrade!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
13
  // [/wpacu_lite]
14
  ?>
15
  <div id="wpacu-pages-info-area" class="wpacu-wrap">
16
+ <div class="wpacu-notice-info">
17
+ <p>The purpose of this page is to make you aware of all the WordPress pages where Asset CleanUp can be used to unload unused CSS &amp; JavaScript files.</p>
18
+ <!-- [wpacu_lite] -->
19
+ <p>* <em>Unloading assets (CSS &amp; JavaScript) for page types that have a locker next to their name requires an <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_pages_info&utm_medium=top_note">upgrade to the Pro version</a>.</em></p>
20
+ <!-- [/wpacu_lite] -->
21
+ </div>
22
 
23
  <div class="wpacu_table_wrap">
24
  <table class="table table-striped">
templates/admin-page-settings-bulk-unloads.php CHANGED
@@ -9,7 +9,7 @@ if (! isset($data)) {
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
- $availableForPro = '<span class="tooltip">Available for Pro users<br />Click to upgrade!</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
13
  // [/wpacu_lite]
14
  ?>
15
 
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
+ $availableForPro = '<span class="wpacu-tooltip">Available for Pro users<br />Click to upgrade!</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
13
  // [/wpacu_lite]
14
  ?>
15
 
templates/admin-page-settings-homepage.php CHANGED
@@ -56,7 +56,7 @@ if ($data['show_on_front'] === 'page') {
56
 
57
  <p><?php _e('Here you can unload assets that are loading on the home page. "Front page displays" (from "Settings" &#187; "Reading") is set to either "Your latest posts" (in "Settings" &#187; "Reading") OR a special layout (from a theme or plugin) was enabled. When you edit a page/post (e.g. "Posts" -&gt; "All Posts", "Pages" -&gt; "All Pages" etc.), you will see the list inside a meta box.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
58
 
59
- <p>The plugin uses <a target="_blank" href="https://codex.wordpress.org/Function_Reference/is_front_page">is_front_page()</a> and <a href="https://codex.wordpress.org/Conditional_Tags#The_Main_Page">is_home()</a> WordPress functions to check if the visitor is on the home page. Note that the setting will also apply to pages such as <code>/page/2</code> <code>page/3</code> etc. in case the latest blog posts are paginated.</p>
60
 
61
  <div id="wpacu_meta_box_content">
62
  <img src="<?php echo admin_url(); ?>/images/spinner.gif" align="top" width="20" height="20" alt="" />&nbsp;
56
 
57
  <p><?php _e('Here you can unload assets that are loading on the home page. "Front page displays" (from "Settings" &#187; "Reading") is set to either "Your latest posts" (in "Settings" &#187; "Reading") OR a special layout (from a theme or plugin) was enabled. When you edit a page/post (e.g. "Posts" -&gt; "All Posts", "Pages" -&gt; "All Pages" etc.), you will see the list inside a meta box.', WPACU_PLUGIN_TEXT_DOMAIN); ?></p>
58
 
59
+ <p>Note that any changes will also apply to pages such as <code>/page/2</code> <code>page/3</code> etc. in case the latest blog posts are paginated.</p>
60
 
61
  <div id="wpacu_meta_box_content">
62
  <img src="<?php echo admin_url(); ?>/images/spinner.gif" align="top" width="20" height="20" alt="" />&nbsp;
templates/admin-page-settings-plugin.php CHANGED
@@ -9,7 +9,7 @@ if (! isset($data)) {
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
- $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_settings" class="go-pro-link-no-style"><span class="tooltip">Available for Pro users<br />Buy now to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> &nbsp; ';
13
  // [/wpacu_lite]
14
 
15
  do_action('wpacu_admin_notices');
@@ -32,25 +32,52 @@ do_action('wpacu_admin_notices');
32
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dashboard_show]"
33
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
34
  &nbsp;
35
- <small>This will show the list of assets in a meta box on edit the post (any type) / page within the Dashboard</small>
36
- <p><small>The assets would be retrieved via AJAX call(s) that will fetch the post/page URL and extract all the styles &amp; scripts that are enqueued.</small></p>
37
- <p><small>Note that sometimes the assets list is not loading within the Dashboard. That could be because "mod_security" Apache module is enabled or some securiy plugins are blocking the AJAX request. If this option doesn't work, consider managing the list in the front-end view.</small></p>
38
- </td>
39
- </tr>
40
- <tr id="wpacu-settings-assets-retrieval-mode"
41
- <?php if (! ($data['dashboard_show'] == 1)) { echo 'style="display: none;"'; } ?>
42
- valign="top">
43
- <th scope="row">
44
- <label for="wpacu_dom_get_type">Assets Retrieval Mode (if managed in the Dashboard)</label>
45
- </th>
46
- <td><select id="wpacu_dom_get_type" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dom_get_type]">
47
- <option <?php if ($data['dom_get_type'] === 'direct') { ?>selected="selected"<?php } ?> value="direct">Direct</option>
48
- <option <?php if ($data['dom_get_type'] === 'wp_remote_post') { ?>selected="selected"<?php } ?> value="wp_remote_post">WP Remote Post</option>
49
- </select>
50
- <ul>
51
- <li style="margin-bottom: 20px;"><strong>Direct</strong> - <small>This one makes an AJAX call directly on the URL for which the assets are retrieved, then an extra WordPress AJAX call to process the list. Sometimes, due to some external factors (e.g. mod_security module from Apache, security plugin or the fact that non-http is forced for the front-end view and the AJAX request will be blocked), this might not work and another choice method might work better. This used to be the only option available, prior to version 1.2.4.4 and is set as default.</small></li>
52
- <li><strong>WP Remote Post</strong> - <small>It makes a WordPress AJAX call and gets the HTML source code through wp_remote_post(). This one is less likely to be blocked as it is made on the same protocol (no HTTP request from HTTPS). However, in some cases (e.g. a different load balancer configuration), this might not work when the call to fetch a domain's URL (your website) is actually made from the same domain.</small></li>
53
- </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  </td>
55
  </tr>
56
  <tr valign="top">
@@ -65,8 +92,8 @@ do_action('wpacu_admin_notices');
65
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[frontend_show]"
66
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
67
  &nbsp;
68
- <small>If you are logged in, this will make the list of assets show below the page that you view (either home page, a post or a page).</small>
69
- <p><small>The area will be shown through the <code>wp_footer</code> action so in case you do not see the asset list at the bottom of the page, make sure the theme is using <a href="https://codex.wordpress.org/Function_Reference/wp_footer"><code>wp_footer()</code></a> function before the <code>&lt;/body&gt;</code> tag. Any theme that follows the standards should have it. If not, you will have to add it to make sure other plugins and code from functions.php will work fine.</small></p>
70
  </td>
71
  </tr>
72
 
@@ -84,10 +111,7 @@ do_action('wpacu_admin_notices');
84
  </select>
85
  </label>
86
 
87
- <br />
88
-
89
- <p><small>These are various ways in which the list of assets that you will manage will show up. Depending on your preference, you might want to see the list of styles &amp; scripts first, or all together sorted in alphabetical order etc.</small></p>
90
- <p><small>Options that are disabled are available in the Pro version.</small></p>
91
  </td>
92
  </tr>
93
 
@@ -118,7 +142,7 @@ do_action('wpacu_admin_notices');
118
  </ul>
119
  <div class="wpacu-clearfix"></div>
120
 
121
- <p><small>Sometimes, when you have plenty of elements in the edit page, you might want to contract the list of assets when you're viewing the page as it will save space. This can be a good practice, especially when you finished optimising the pages and you don't want to keep seeing the long list of files everytime you edit a page.</small></p>
122
  </td>
123
  </tr>
124
 
@@ -149,7 +173,7 @@ do_action('wpacu_admin_notices');
149
  </ul>
150
  <div class="wpacu-clearfix"></div>
151
 
152
- <p><small>Some assets (CSS &amp; JavaScript) have inline code associate with them and often, they are quite large, making the asset row bigger and requiring you to scroll more until you reach a specific area. By setting it to "Contracted", it will hide all the inline code by default and you can view it by clicking on the toggle link inside the asset row.</small></p>
153
  </td>
154
  </tr>
155
 
@@ -182,7 +206,7 @@ do_action('wpacu_admin_notices');
182
  </ul>
183
  <div class="wpacu-clearfix"></div>
184
 
185
- <p><small>In case you prefer standard HTML checkboxes instead of the enhanced CSS3 iPhone style ones (on &amp; off) or you need a simple HTML layout in case you're using a screen reader software (e.g. for people with disabilities) which requires standard/clean HTML code, then you can choose "Standard" as an option.</small></p>
186
  </td>
187
  </tr>
188
 
@@ -198,7 +222,8 @@ do_action('wpacu_admin_notices');
198
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[hide_core_files]"
199
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
200
  &nbsp;
201
- <small>WordPress Core Files having handles such as 'jquery', 'wp-embed', 'comment-reply', 'dashicons' etc. should only be unloaded by experienced developers when they are convinced that are not needed in particular situations. It's better to leave them loaded if you have any doubts whether you need them or not. By hiding them in the assets management list, you will see a smaller assets list (easier to manage) and you will avoid updating by mistake any option (unload, async, defer) related to any core file.</small>
 
202
  </td>
203
  </tr>
204
 
@@ -216,8 +241,31 @@ do_action('wpacu_admin_notices');
216
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[test_mode]"
217
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
218
  &nbsp;
219
- <small>This is great for debugging when you're going through trial and error while removing unneeded CSS &amp; JavaScript on your website. Your visitors will load the website with all the settings &amp; assets loaded (just like it was before you activated the plugin).</small>
220
- <p><small>For instance, you have an eCommerce website (e.g. WooCommerce, Easy Digital Downloads), and you're worried that unloading one wrong asset could break the "add to cart" functionality or the layout of the product page. You can enable this option, do the unloading for the CSS &amp; JavaScript files you believe are not needed on certain pages, test to check if everything is alright, and then disable test mode to enable the unloading for your visitors too (not only the admin).</small></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  </td>
222
  </tr>
223
  </table>
@@ -239,8 +287,8 @@ do_action('wpacu_admin_notices');
239
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
240
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
241
  &nbsp;
242
- <small>This will unload WordPress' Emojis (the smiley icons)</small>
243
- <p><small>As of WordPress 4.2, a new feature was introduced that allows you to use the new Emojis. While on some WordPress setups is useful, in many situations (especially when you are not using WordPress as a blog), you just don’t need them and the file /wp-includes/js/wp-emoji-release.min.js is loaded along with extra inline JavaScript code which add up to the number of loaded HTTP requests.</small></p>
244
  </td>
245
  </tr>
246
 
@@ -255,8 +303,8 @@ do_action('wpacu_admin_notices');
255
  name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_jquery_migrate]"
256
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
257
  &nbsp;
258
- <small>This will unload jQuery Migrate (<em>jquery-migrate(.min).js</em>)</small>
259
- <p><small>This is a JavaScript library that allows older jQuery code (up to version jQuery 1.9) to run on the latest version of jQuery avoiding incompatibility problems. Unless your website is using an old theme or has a jQuery plugin that was written a long time ago, this file is likely not needed to load. Consider disabling it to improve page loading time. Make sure to properly test the website.</small></p>
260
  </td>
261
  </tr>
262
 
@@ -271,8 +319,8 @@ do_action('wpacu_admin_notices');
271
  name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_comment_reply]"
272
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
273
  &nbsp;
274
- <small>This will unload Comment Reply (<em>/wp-includes/js/comment-reply(.min).js</em>)</small>
275
- <p><small>This is safe to unload if you're not using WordPress as a blog, do not want visitors to leave comments or you've replaced the default WordPress comments with a comment platform such as Disqus or Facebook.</small></p>
276
  </td>
277
  </tr>
278
  </table>
@@ -281,29 +329,6 @@ do_action('wpacu_admin_notices');
281
  <p><em><strong>Note:</strong> The options that have a lock are available to Pro users. <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_settings">Click here to upgrade!</a></em></p>
282
  <hr />
283
 
284
- <h2><?php _e('Page Speed Score Booster: Extras', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
285
-
286
- <table class="wpacu-form-table">
287
- <tr valign="top">
288
- <th scope="row">
289
- <label for="wpacu_remove_query_strings">Remove Query Strings from CSS &amp; JS?</label>
290
- </th>
291
- <td>
292
- <?php echo $availableForPro; ?>
293
- <label class="wpacu_switch wpacu_locked_for_pro">
294
- <input id="wpacu_remove_query_strings" type="checkbox"
295
- disabled="disabled"
296
- name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[remove_query_strings]"
297
- value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
298
- &nbsp;
299
- <small>This will remove everything that is appended after question mark (?) from the source of the CSS and JavaScript files * e.g. <em>/wp-plugins/custom-plugin-here/style.min.css<strong>?ver=1.4.2</strong></em> to <em>/wp-plugins/custom-plugin-here/style.min.css</em> - this option will apply only to front-end view (not within the Dashboard)</small>
300
- <p><small>Sometimes, query strings can cause caching issues (they are not cached by some proxy caching servers), thus, they can be removed. <a target="_blank" href="https://gtmetrix.com/remove-query-strings-from-static-resources.html">Read more</a>.</small></p>
301
- </td>
302
- </tr>
303
- </table>
304
-
305
- <hr />
306
-
307
  <h2><?php _e('Cleanup unused elements within HEAD section', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
308
  <p>There are elements that are enabled by default in many WordPress environments, but not necessary to be enabled. Cleanup the unnecessary code between <code>&lt;head&gt;</code> and <code>&lt;/head&gt;</code>.</p>
309
 
@@ -323,7 +348,7 @@ do_action('wpacu_admin_notices');
323
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
324
  &nbsp;
325
  <code>&lt;link rel=&quot;EditURI&quot; type=&quot;application/rsd xml&quot; title=&quot;RSD&quot; href=&quot;http://yourwebsite.com/xmlrpc.php?rsd&quot; /&gt;</code>
326
- <p>XML-RPC clients use this discover method. If you do not know what this is and don't use service integrations such as <a href="http://www.flickr.com/services/api/request.xmlrpc.html" target="_blank">Flickr</a> on your WordPress website, you can remove it.</p>
327
  </td>
328
  </tr>
329
 
@@ -342,7 +367,7 @@ do_action('wpacu_admin_notices');
342
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
343
  &nbsp;
344
  <code>&lt;link rel=&quot;wlwmanifest&quot; type=&quot;application/wlwmanifest xml&quot; href=&quot;https://yourwebsite.com/asset-optimizer/wp-includes/wlwmanifest.xml&quot; /&gt;</code>
345
- <p>If you do not use Windows Live Writer to edit your blog contents, then it's safe to remove this.</p>
346
  </td>
347
  </tr>
348
 
@@ -361,7 +386,7 @@ do_action('wpacu_admin_notices');
361
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
362
  &nbsp;
363
  <code>&lt;link rel=&#39;https://api.w.org/&#39; href=&#39;https://yourwebsite.com/wp-json/&#39; /&gt;</code>
364
- <p>Are you accessing your content through endpoints (e.g. https://yourwebsite.com/wp-json/, https://yourwebsite.com/wp-json/wp/v2/posts/1 - <em>1</em> in this example is the POST ID)? If not, you can remove this.</p>
365
  </td>
366
  </tr>
367
 
@@ -380,7 +405,7 @@ do_action('wpacu_admin_notices');
380
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
381
  &nbsp;
382
  <code>&lt;link rel=&#39;shortlink&#39; href=&quot;https://yourdomain.com/?p=1&quot;&gt;</code>
383
- <p>Are you using SEO friendly URLs and do not need the default WordPress shortlink? You can just remove this as it bulks out the head section of your website.</p>
384
  </td>
385
  </tr>
386
 
@@ -399,7 +424,7 @@ do_action('wpacu_admin_notices');
399
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
400
  &nbsp;
401
  <code>&lt;link rel=&#39;prev&#39; title=&#39;Title of adjacent post&#39; href=&#39;https://yourdomain.com/adjacent-post-slug-here/&#39; /&gt;</code>
402
- <p>This removes relational links for the posts adjacent to the current post for single post pages.</p>
403
  </td>
404
  </tr>
405
 
@@ -418,7 +443,7 @@ do_action('wpacu_admin_notices');
418
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
419
  &nbsp;
420
  <code>&lt;meta name=&quot;generator&quot; content=&quot;WordPress 4.9.8&quot; /&gt;</code>
421
- <p>This is good for security purposes as well, since it hides the WordPress version you're using (in case of hacking attempts).</p>
422
  </td>
423
  </tr>
424
 
@@ -437,7 +462,7 @@ do_action('wpacu_admin_notices');
437
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
438
  &nbsp;
439
  <code>e.g. &lt;meta name=&quot;generator&quot; content=&quot;Easy Digital Downloads v2.9.8&quot; /&gt;</code>
440
- <p>This will remove all meta tags with the "generator" name, including the WordPress version. You could use a plugin or a theme that has added a generator notice, but you do not need to have it there. Moreover, it will hide the version of the plugins and theme you're using which is good for security reasons.</p>
441
  </td>
442
  </tr>
443
 
@@ -456,7 +481,7 @@ do_action('wpacu_admin_notices');
456
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
457
  &nbsp;
458
  <code>&lt;link rel=&quot;alternate&quot; type=&quot;application/rss xml&quot; title=&quot;Your Site Title &amp;raquo; Feed&quot; href=&quot;https://www.yourwebsite.com/feed/&quot; /&gt;</code>
459
- <p>If you do not use WordPress for blogging purposes at all, and it doesn't have any blog posts (apart from the main pages that you added), then you can remove the main feed link. It will also remove feeds for the following pages: categories, tags, custom taxonomies &amp; search results. Note that it will not remove comments RSS feeds which can be removed using the setting below. Some websites might have blog posts and would keep the main RSS feeds enabled, while removing the comments RSS feeds if they don't use the comments functionality.</p>
460
  </td>
461
  </tr>
462
 
@@ -475,7 +500,7 @@ do_action('wpacu_admin_notices');
475
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
476
  &nbsp;
477
  <code>e.g. &lt;link rel=&quot;alternate&quot; type=&quot;application/rss xml&quot; title=&quot;Your Website Title &amp;raquo; Comments Feed&quot; href=&quot;https://www.yourdomain.com/comments/feed/&quot; /&gt;</code>
478
- <p>If you do not use the comments functionality on your posts or do not use WordPress for blogging purposes at all, then you can remove the comments feed link.</p>
479
  </td>
480
  </tr>
481
 
@@ -492,7 +517,7 @@ do_action('wpacu_admin_notices');
492
 
493
  <p style="margin-bottom: 10px;"><strong>Disable XML-RPC Pingback Only</strong>: If you need the XML-RPC protocol support, but you do not use the pingbacks which are used by your website to notify another website that you have linked to it from your page(s), you can just disable the pinbacks and keep the other XML-RPC functionality. This is also a security measure to prevent DDoS attacks.</p>
494
 
495
- <p style="margin-bottom: 10px;"><strong>Disable XML-RPC Completely</strong>: If you do not use Jetpack plugin for off-site server communication or you only use the Dashboard to post content (without any remote software connection to the WordPress website such as Windows Live Writer or mobile apps), then you can disable the XML-RPC functionality. You can always re-enable it whenever you believe you'll need it.</p>
496
  </td>
497
  </tr>
498
  </table>
9
  include_once '_top-area.php';
10
 
11
  // [wpacu_lite]
12
+ $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_settings" class="go-pro-link-no-style"><span class="wpacu-tooltip">Available for Pro users<br />Buy now to unlock all features!</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a> &nbsp; ';
13
  // [/wpacu_lite]
14
 
15
  do_action('wpacu_admin_notices');
32
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dashboard_show]"
33
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
34
  &nbsp;
35
+ This will show the list of assets in a meta box on edit the post (any type) / page within the Dashboard
36
+ <p>The assets would be retrieved via AJAX call(s) that will fetch the post/page URL and extract all the styles &amp; scripts that are enqueued.</p>
37
+ <p>Note that sometimes the assets list is not loading within the Dashboard. That could be because "mod_security" Apache module is enabled or some securiy plugins are blocking the AJAX request. If this option doesn't work, consider managing the list in the front-end view.</p>
38
+
39
+ <div id="wpacu-settings-assets-retrieval-mode"
40
+ <?php if (! ($data['dashboard_show'] == 1)) { echo 'style="display: none;"'; } ?>>
41
+
42
+ <ul id="wpacu-dom-get-type-selections">
43
+ <li>
44
+ <label for="wpacu_dom_get_type">Select a retrieval way:</label>
45
+ </li>
46
+ <li>
47
+ <label>
48
+ <input class="wpacu-dom-get-type-selection"
49
+ data-target="wpacu-dom-get-type-direct-info"
50
+ <?php if ($data['dom_get_type'] === 'direct') { ?>checked="checked"<?php } ?>
51
+ type="radio" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dom_get_type]"
52
+ value="direct" /> Direct
53
+ </label>
54
+ </li>
55
+ <li>
56
+ <label>
57
+ <input class="wpacu-dom-get-type-selection"
58
+ data-target="wpacu-dom-get-type-wp-remote-post-info"
59
+ <?php if ($data['dom_get_type'] === 'wp_remote_post') { ?>checked="checked"<?php } ?>
60
+ type="radio" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[dom_get_type]"
61
+ value="wp_remote_post" /> WP Remote Post
62
+ </label>
63
+ </li>
64
+ </ul>
65
+
66
+ <div class="wpacu-clearfix" style="height: 0;"></div>
67
+
68
+ <ul id="wpacu-dom-get-type-infos">
69
+ <li <?php if ($data['dom_get_type'] !== 'direct') { ?>style="display: none;"<?php } ?>
70
+ class="wpacu-dom-get-type-info"
71
+ id="wpacu-dom-get-type-direct-info">
72
+ <strong>Direct</strong> - This one makes an AJAX call directly on the URL for which the assets are retrieved, then an extra WordPress AJAX call to process the list. Sometimes, due to some external factors (e.g. mod_security module from Apache, security plugin or the fact that non-http is forced for the front-end view and the AJAX request will be blocked), this might not work and another choice method might work better. This used to be the only option available, prior to version 1.2.4.4 and is set as default.
73
+ </li>
74
+ <li <?php if ($data['dom_get_type'] !== 'wp_remote_post') { ?>style="display: none;"<?php } ?>
75
+ class="wpacu-dom-get-type-info"
76
+ id="wpacu-dom-get-type-wp-remote-post-info">
77
+ <strong>WP Remote Post</strong> - It makes a WordPress AJAX call and gets the HTML source code through wp_remote_post(). This one is less likely to be blocked as it is made on the same protocol (no HTTP request from HTTPS). However, in some cases (e.g. a different load balancer configuration), this might not work when the call to fetch a domain's URL (your website) is actually made from the same domain.
78
+ </li>
79
+ </ul>
80
+ </div>
81
  </td>
82
  </tr>
83
  <tr valign="top">
92
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[frontend_show]"
93
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
94
  &nbsp;
95
+ If you are logged in, this will make the list of assets show below the page that you view (either home page, a post or a page).
96
+ <p style="margin-top: 10px;">The area will be shown through the <code>wp_footer</code> action so in case you do not see the asset list at the bottom of the page, make sure the theme is using <a href="https://codex.wordpress.org/Function_Reference/wp_footer"><code>wp_footer()</code></a> function before the <code>&lt;/body&gt;</code> tag. Any theme that follows the standards should have it. If not, you will have to add it to make sure other plugins and code from functions.php will work fine.</p>
97
  </td>
98
  </tr>
99
 
111
  </select>
112
  </label>
113
 
114
+ <p style="margin-top: 10px;">These are various ways in which the list of assets that you will manage will show up. Depending on your preference, you might want to see the list of styles &amp; scripts first, or all together sorted in alphabetical order etc. Options that are disabled are available in the Pro version.</p>
 
 
 
115
  </td>
116
  </tr>
117
 
142
  </ul>
143
  <div class="wpacu-clearfix"></div>
144
 
145
+ <p>Sometimes, when you have plenty of elements in the edit page, you might want to contract the list of assets when you're viewing the page as it will save space. This can be a good practice, especially when you finished optimising the pages and you don't want to keep seeing the long list of files every time you edit a page.</p>
146
  </td>
147
  </tr>
148
 
173
  </ul>
174
  <div class="wpacu-clearfix"></div>
175
 
176
+ <p>Some assets (CSS &amp; JavaScript) have inline code associate with them and often, they are quite large, making the asset row bigger and requiring you to scroll more until you reach a specific area. By setting it to "Contracted", it will hide all the inline code by default and you can view it by clicking on the toggle link inside the asset row.</p>
177
  </td>
178
  </tr>
179
 
206
  </ul>
207
  <div class="wpacu-clearfix"></div>
208
 
209
+ <p>In case you prefer standard HTML checkboxes instead of the enhanced CSS3 iPhone style ones (on &amp; off) or you need a simple HTML layout in case you're using a screen reader software (e.g. for people with disabilities) which requires standard/clean HTML code, then you can choose "Standard" as an option.</p>
210
  </td>
211
  </tr>
212
 
222
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[hide_core_files]"
223
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
224
  &nbsp;
225
+ WordPress Core Files have handles such as 'jquery', 'wp-embed', 'comment-reply', 'dashicons' etc.
226
+ <p style="margin-top: 10px;">They should only be unloaded by experienced developers when they are convinced that are not needed in particular situations. It's better to leave them loaded if you have any doubts whether you need them or not. By hiding them in the assets management list, you will see a smaller assets list (easier to manage) and you will avoid updating by mistake any option (unload, async, defer) related to any core file.</p>
227
  </td>
228
  </tr>
229
 
241
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[test_mode]"
242
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
243
  &nbsp;
244
+ This is great for debugging when you're going through trial and error while removing unneeded CSS &amp; JavaScript on your website.
245
+ <p>Your visitors will load the website with all the settings &amp; assets loaded (just like it was before you activated the plugin).</p>
246
+ <p>For instance, you have an eCommerce website (e.g. WooCommerce, Easy Digital Downloads), and you're worried that unloading one wrong asset could break the "add to cart" functionality or the layout of the product page. You can enable this option, do the unloading for the CSS &amp; JavaScript files you believe are not needed on certain pages, test to check if everything is alright, and then disable test mode to enable the unloading for your visitors too (not only the admin).</p>
247
+ </td>
248
+ </tr>
249
+
250
+ <tr valign="top">
251
+ <th scope="row" class="setting_title">
252
+ <label for="wpacu_combine_loaded_css">Combine loaded CSS into one file?</label>
253
+ <p class="wpacu_subtitle"><small><em>Helps reducing the number of HTTP Requests even further</em></small></p>
254
+ </th>
255
+ <td>
256
+ <select id="wpacu_combine_loaded_css" name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[combine_loaded_css]">
257
+ <option <?php if ($data['combine_loaded_css'] === 'default') { ?>selected="selected"<?php } ?> value="">No (default)</option>
258
+ <option <?php if ($data['combine_loaded_css'] === 'for_admin') { ?>selected="selected"<?php } ?> value="for_admin">Yes, for logged-in administrators</option>
259
+ <option <?php if ($data['combine_loaded_css'] === 'for_all') { ?>selected="selected"<?php } ?> value="for_all">Yes, for everyone</option>
260
+ </select> <small>* if /wp-content/cache/ directory is not writable for some reason, this feature will not work; requires the DOMDocument XML DOM Parser to be enabled in PHP (which it is by default) for maximum performance</small>
261
+ &nbsp;
262
+ <p>This scans the remaining CSS files from the <code>&lt;head&gt;</code> and combines them into one file. To be 100% sure everything works fine after activation, consider using "Yes, for logged-in administrators" so only you can see the updated page. If all looks good, you can later switch it to "Yes (for everyone)".</p>
263
+ <p style="margin-bottom: 0;">The following stylesheets are not included in the combined CSS file for maximum performance:</p>
264
+ <ul style="list-style: disc; margin-left: 20px; margin-bottom: 0;">
265
+ <li>Have any <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">preloading added to them</a> via <code>rel="preload"</code> will not be combined as they have priority in loading and shouldn't be mixed with the rest of the CSS.</li>
266
+ <li style="margin-bottom: 0;">Are loaded within the <code>&lt;body&gt;</code> part of the page as they were likely added there because they are needed after the page is rendered (e.g. for AJAX styling calls, popups or elements that are not visible in the top viewport etc.)</li>
267
+ </ul>
268
+ <p style="margin-top: 10px;"><strong>Note:</strong> If "Test Mode" is enabled, the CSS files this feature will not work for the guest users, even if "Yes, for everyone" is chosen as "Test Mode" purpose is to make the plugin as inactive for non logged-in administrators for ultimate debugging.</p>
269
  </td>
270
  </tr>
271
  </table>
287
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
288
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
289
  &nbsp;
290
+ This will unload WordPress' Emojis (the smiley icons)
291
+ <p style="margin-top: 10px;">As of WordPress 4.2, a new feature was introduced that allows you to use the new Emojis. While on some WordPress setups is useful, in many situations (especially when you are not using WordPress as a blog), you just don’t need them and the file /wp-includes/js/wp-emoji-release.min.js is loaded along with extra inline JavaScript code which add up to the number of loaded HTTP requests.</p>
292
  </td>
293
  </tr>
294
 
303
  name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_jquery_migrate]"
304
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
305
  &nbsp;
306
+ This will unload jQuery Migrate (<em>jquery-migrate(.min).js</em>)
307
+ <p style="margin-top: 10px;">This is a JavaScript library that allows older jQuery code (up to version jQuery 1.9) to run on the latest version of jQuery avoiding incompatibility problems. Unless your website is using an old theme or has a jQuery plugin that was written a long time ago, this file is likely not needed to load. Consider disabling it to improve page loading time. Make sure to properly test the website.</p>
308
  </td>
309
  </tr>
310
 
319
  name="<?php echo WPACU_PLUGIN_ID . '_global_unloads'; ?>[disable_comment_reply]"
320
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
321
  &nbsp;
322
+ This will unload Comment Reply (<em>/wp-includes/js/comment-reply(.min).js</em>)
323
+ <p style="margin-top: 10px;">This is safe to unload if you're not using WordPress as a blog, do not want visitors to leave comments or you've replaced the default WordPress comments with a comment platform such as Disqus or Facebook.</p>
324
  </td>
325
  </tr>
326
  </table>
329
  <p><em><strong>Note:</strong> The options that have a lock are available to Pro users. <a href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>?utm_source=plugin_settings">Click here to upgrade!</a></em></p>
330
  <hr />
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  <h2><?php _e('Cleanup unused elements within HEAD section', WPACU_PLUGIN_TEXT_DOMAIN); ?></h2>
333
  <p>There are elements that are enabled by default in many WordPress environments, but not necessary to be enabled. Cleanup the unnecessary code between <code>&lt;head&gt;</code> and <code>&lt;/head&gt;</code>.</p>
334
 
348
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
349
  &nbsp;
350
  <code>&lt;link rel=&quot;EditURI&quot; type=&quot;application/rsd xml&quot; title=&quot;RSD&quot; href=&quot;http://yourwebsite.com/xmlrpc.php?rsd&quot; /&gt;</code>
351
+ <p style="margin-top: 10px;">XML-RPC clients use this discover method. If you do not know what this is and don't use service integrations such as <a href="http://www.flickr.com/services/api/request.xmlrpc.html" target="_blank">Flickr</a> on your WordPress website, you can remove it.</p>
352
  </td>
353
  </tr>
354
 
367
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
368
  &nbsp;
369
  <code>&lt;link rel=&quot;wlwmanifest&quot; type=&quot;application/wlwmanifest xml&quot; href=&quot;https://yourwebsite.com/asset-optimizer/wp-includes/wlwmanifest.xml&quot; /&gt;</code>
370
+ <p style="margin-top: 10px;">If you do not use Windows Live Writer to edit your blog contents, then it's safe to remove this.</p>
371
  </td>
372
  </tr>
373
 
386
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
387
  &nbsp;
388
  <code>&lt;link rel=&#39;https://api.w.org/&#39; href=&#39;https://yourwebsite.com/wp-json/&#39; /&gt;</code>
389
+ <p style="margin-top: 10px;">Are you accessing your content through endpoints (e.g. https://yourwebsite.com/wp-json/, https://yourwebsite.com/wp-json/wp/v2/posts/1 - <em>1</em> in this example is the POST ID)? If not, you can remove this.</p>
390
  </td>
391
  </tr>
392
 
405
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
406
  &nbsp;
407
  <code>&lt;link rel=&#39;shortlink&#39; href=&quot;https://yourdomain.com/?p=1&quot;&gt;</code>
408
+ <p style="margin-top: 10px;">Are you using SEO friendly URLs and do not need the default WordPress shortlink? You can just remove this as it bulks out the head section of your website.</p>
409
  </td>
410
  </tr>
411
 
424
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
425
  &nbsp;
426
  <code>&lt;link rel=&#39;prev&#39; title=&#39;Title of adjacent post&#39; href=&#39;https://yourdomain.com/adjacent-post-slug-here/&#39; /&gt;</code>
427
+ <p style="margin-top: 10px;">This removes relational links for the posts adjacent to the current post for single post pages.</p>
428
  </td>
429
  </tr>
430
 
443
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
444
  &nbsp;
445
  <code>&lt;meta name=&quot;generator&quot; content=&quot;WordPress 4.9.8&quot; /&gt;</code>
446
+ <p style="margin-top: 10px;">This is good for security purposes as well, since it hides the WordPress version you're using (in case of hacking attempts).</p>
447
  </td>
448
  </tr>
449
 
462
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
463
  &nbsp;
464
  <code>e.g. &lt;meta name=&quot;generator&quot; content=&quot;Easy Digital Downloads v2.9.8&quot; /&gt;</code>
465
+ <p style="margin-top: 10px;">This will remove all meta tags with the "generator" name, including the WordPress version. You could use a plugin or a theme that has added a generator notice, but you do not need to have it there. Moreover, it will hide the version of the plugins and theme you're using which is good for security reasons.</p>
466
  </td>
467
  </tr>
468
 
481
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
482
  &nbsp;
483
  <code>&lt;link rel=&quot;alternate&quot; type=&quot;application/rss xml&quot; title=&quot;Your Site Title &amp;raquo; Feed&quot; href=&quot;https://www.yourwebsite.com/feed/&quot; /&gt;</code>
484
+ <p style="margin-top: 10px;">If you do not use WordPress for blogging purposes at all, and it doesn't have any blog posts (apart from the main pages that you added), then you can remove the main feed link. It will also remove feeds for the following pages: categories, tags, custom taxonomies &amp; search results. Note that it will not remove comments RSS feeds which can be removed using the setting below. Some websites might have blog posts and would keep the main RSS feeds enabled, while removing the comments RSS feeds if they don't use the comments functionality.</p>
485
  </td>
486
  </tr>
487
 
500
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
501
  &nbsp;
502
  <code>e.g. &lt;link rel=&quot;alternate&quot; type=&quot;application/rss xml&quot; title=&quot;Your Website Title &amp;raquo; Comments Feed&quot; href=&quot;https://www.yourdomain.com/comments/feed/&quot; /&gt;</code>
503
+ <p style="margin-top: 10px;">If you do not use the comments functionality on your posts or do not use WordPress for blogging purposes at all, then you can remove the comments feed link.</p>
504
  </td>
505
  </tr>
506
 
517
 
518
  <p style="margin-bottom: 10px;"><strong>Disable XML-RPC Pingback Only</strong>: If you need the XML-RPC protocol support, but you do not use the pingbacks which are used by your website to notify another website that you have linked to it from your page(s), you can just disable the pinbacks and keep the other XML-RPC functionality. This is also a security measure to prevent DDoS attacks.</p>
519
 
520
+ <p style="margin-bottom: 0;"><strong>Disable XML-RPC Completely</strong>: If you do not use Jetpack plugin for off-site server communication or you only use the Dashboard to post content (without any remote software connection to the WordPress website such as Windows Live Writer or mobile apps), then you can disable the XML-RPC functionality. You can always re-enable it whenever you believe you'll need it.</p>
521
  </td>
522
  </tr>
523
  </table>
templates/meta-box-loaded-assets/_asset-script-single-row.php CHANGED
@@ -18,7 +18,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
18
  <?php
19
  if ($isCoreFile && ! $hideCoreFiles) {
20
  ?>
21
- <span class="dashicons dashicons-warning wordpress-core-file"><span class="tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
22
  <?php
23
  }
24
  ?>
@@ -190,7 +190,9 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
190
  href="#">Show / Hide</a>
191
  <div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
192
  <div>
193
- <p style="margin-top: -7px !important;"><em><?php echo strip_tags($data['row']['extra_data_js']); ?></em></p>
 
 
194
  </div>
195
  </div>
196
  </div>
@@ -212,7 +214,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
212
  }
213
 
214
  // [wpacu_lite]
215
- $extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
216
  // [/wpacu_lite]
217
 
218
  if (! empty($extraInfo)) {
@@ -226,7 +228,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
226
  <p>If loaded (not unloaded by any of the rules above), apply the following attributes: <em><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>">* this option is available in Pro version</a></em></p>
227
 
228
  <ul class="wpacu-script-attributes-settings wpacu-first">
229
- <li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a>&nbsp; <strong>async</strong> &#10230;</li>
230
  <li><label for="async_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
231
  <li><label for="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
232
  <li><label for="async_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
@@ -234,7 +236,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
234
 
235
 
236
  <ul class="wpacu-script-attributes-settings">
237
- <li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a>&nbsp; <strong>defer</strong> &#10230;</li>
238
  <li><label for="defer_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
239
  <li><label for="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
240
  <li><label for="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
18
  <?php
19
  if ($isCoreFile && ! $hideCoreFiles) {
20
  ?>
21
+ <span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
22
  <?php
23
  }
24
  ?>
190
  href="#">Show / Hide</a>
191
  <div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
192
  <div>
193
+ <p style="margin-top: -7px !important; line-height: normal !important;">
194
+ <em><?php echo strip_tags($data['row']['extra_data_js']); ?></em>
195
+ </p>
196
  </div>
197
  </div>
198
  </div>
214
  }
215
 
216
  // [wpacu_lite]
217
+ $extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a class="go-pro-link-no-style" href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
218
  // [/wpacu_lite]
219
 
220
  if (! empty($extraInfo)) {
228
  <p>If loaded (not unloaded by any of the rules above), apply the following attributes: <em><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>">* this option is available in Pro version</a></em></p>
229
 
230
  <ul class="wpacu-script-attributes-settings wpacu-first">
231
+ <li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="wpacu-tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a>&nbsp; <strong>async</strong> &#10230;</li>
232
  <li><label for="async_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
233
  <li><label for="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
234
  <li><label for="async_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="async_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_async[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
236
 
237
 
238
  <ul class="wpacu-script-attributes-settings">
239
+ <li><a class="go-pro-link-no-style" href="<?php echo WPACU_PLUGIN_GO_PRO_URL; ?>"><span class="wpacu-tooltip wpacu-larger">This feature is available in the premium version of the plugin.<br /> Click here to upgrade to Pro!</span><img width="20" height="20" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-lock.svg" valign="top" alt="" /></a>&nbsp; <strong>defer</strong> &#10230;</li>
240
  <li><label for="defer_none_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_none_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="none" />none (default)</label></li>
241
  <li><label for="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_on_this_page_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="on_this_page" />on this page</label></li>
242
  <li><label for="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>"><input disabled="disabled" id="defer_everywhere_<?php echo $data['row']['obj']->handle; ?>" type="radio" name="wpacu_defer[<?php echo $data['row']['obj']->handle; ?>]" value="everywhere" />everywhere</label></li>
templates/meta-box-loaded-assets/_asset-style-single-row.php CHANGED
@@ -18,7 +18,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
18
  <?php
19
  if ($isCoreFile && ! $hideCoreFiles) {
20
  ?>
21
- <span class="dashicons dashicons-warning wordpress-core-file"><span class="tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
22
  <?php
23
  }
24
  ?>
@@ -190,7 +190,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
190
  href="#">Show / Hide</a>
191
  <div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
192
  <div>
193
- <p style="margin-bottom: 15px;">
194
  <?php foreach ($data['row']['extra_data_css_list'] as $extraDataCSS) {
195
  echo '<em>'.htmlspecialchars($extraDataCSS).'</em>'.'<br />';
196
  }
@@ -213,7 +213,7 @@ $isBulkUnloaded = ($data['row']['global_unloaded'] || $data['row']['is_post_ty
213
  }
214
 
215
  // [wpacu_lite]
216
- $extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
217
  // [/wpacu_lite]
218
 
219
  if (! empty($extraInfo)) {
18
  <?php
19
  if ($isCoreFile && ! $hideCoreFiles) {
20
  ?>
21
+ <span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br />Not sure if needed or not? In this case, it's better to leave it loaded to avoid breaking the website.</span></span>
22
  <?php
23
  }
24
  ?>
190
  href="#">Show / Hide</a>
191
  <div class="wpacu-assets-inline-code-collapsible-content <?php if ($inlineCodeStatus !== 'contracted') { echo 'wpacu-open'; } ?>">
192
  <div>
193
+ <p style="margin-bottom: 15px; line-height: normal !important;">
194
  <?php foreach ($data['row']['extra_data_css_list'] as $extraDataCSS) {
195
  echo '<em>'.htmlspecialchars($extraDataCSS).'</em>'.'<br />';
196
  }
213
  }
214
 
215
  // [wpacu_lite]
216
+ $extraInfo[] = '<strong>'.__('File Size:', WPACU_PLUGIN_TEXT_DOMAIN) . '</strong> <a href="' . WPACU_PLUGIN_GO_PRO_URL . '?utm_source=manage_asset&utm_medium=file_size" class="go-pro-link-no-style"><span class="wpacu-tooltip">Upgrade to Pro and unlock all features</span><img width="20" height="20" src="' . WPACU_PLUGIN_URL . '/assets/icons/icon-lock.svg" valign="top" alt="" /> Pro Version</a>';
217
  // [/wpacu_lite]
218
 
219
  if (! empty($extraInfo)) {
templates/meta-box-loaded-assets/_inline_js.php CHANGED
@@ -21,7 +21,8 @@ if (! isset($data)) {
21
  if (assetsListContent.style.maxHeight) {
22
  assetsListContent.style.maxHeight = null;
23
  } else {
24
- assetsListContent.style.maxHeight = assetsListContent.scrollHeight + "px";
 
25
  }
26
  });
27
  }
@@ -67,7 +68,8 @@ if (! isset($data)) {
67
  for (wpacuI = 0; wpacuI < wpacuContentLinks.length; wpacuI++) {
68
  wpacuContentLinks[wpacuI].classList.add('wpacu-assets-collapsible-active');
69
  assetsListContent = wpacuContentLinks[wpacuI].nextElementSibling;
70
- assetsListContent.style.maxHeight = assetsListContent.scrollHeight + 'px';
 
71
  assetsListContent.classList.remove('wpacu-open');
72
  }
73
  }
21
  if (assetsListContent.style.maxHeight) {
22
  assetsListContent.style.maxHeight = null;
23
  } else {
24
+ //assetsListContent.style.maxHeight = assetsListContent.scrollHeight + "px";
25
+ assetsListContent.style.maxHeight = "100%";
26
  }
27
  });
28
  }
68
  for (wpacuI = 0; wpacuI < wpacuContentLinks.length; wpacuI++) {
69
  wpacuContentLinks[wpacuI].classList.add('wpacu-assets-collapsible-active');
70
  assetsListContent = wpacuContentLinks[wpacuI].nextElementSibling;
71
+ //assetsListContent.style.maxHeight = assetsListContent.scrollHeight + 'px';
72
+ assetsListContent.style.maxHeight = '100%';
73
  assetsListContent.classList.remove('wpacu-open');
74
  }
75
  }
templates/meta-box-loaded-assets/view-default.php CHANGED
@@ -14,7 +14,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
14
  ?>
15
  <div class="wpacu-contract-expand-area">
16
  <div class="col-left">
17
- <h4>&#10141; Total enqueued files: <strong><?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong></h4>
18
  </div>
19
  <div class="col-right">
20
  <a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>&nbsp;
@@ -25,7 +25,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
25
 
26
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-styles">
27
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
28
- <span class="dashicons dashicons-admin-appearance"></span> &nbsp; <?php _e('Styles (.css files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> &#10141; Total: <?php echo $data['total_styles']; ?>
29
  </a>
30
 
31
  <div id="wpacu-assets-styles-collapsible-content"
@@ -87,7 +87,7 @@ $listAreaStatus = $data['plugin_settings']['assets_list_layout_areas_status'];
87
 
88
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-scripts">
89
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
90
- <span class="dashicons dashicons-media-code"></span> &nbsp; <?php _e('Scripts (.js files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> &#10141; Total: <?php echo $data['total_scripts']; ?>
91
  </a>
92
 
93
  <div id="wpacu-assets-scripts-collapsible-content"
14
  ?>
15
  <div class="wpacu-contract-expand-area">
16
  <div class="col-left">
17
+ <h4>&#10141; Total enqueued files (including core files): <strong><?php echo (int)$data['total_styles'] + (int)$data['total_scripts']; ?></strong></h4>
18
  </div>
19
  <div class="col-right">
20
  <a href="#" id="wpacu-assets-contract-all" class="wpacu-wp-button wpacu-wp-button-secondary">Contract Both Areas</a>&nbsp;
25
 
26
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-styles">
27
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-styles-collapsible-content">
28
+ <span class="dashicons dashicons-admin-appearance"></span> &nbsp; <?php _e('Styles (.css files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> &#10141; Total (+ core files): <?php echo $data['total_styles']; ?>
29
  </a>
30
 
31
  <div id="wpacu-assets-styles-collapsible-content"
87
 
88
  <div class="wpacu-assets-collapsible-wrap wpacu-wrap-scripts">
89
  <a class="wpacu-assets-collapsible <?php if ($listAreaStatus !== 'contracted') { ?>wpacu-assets-collapsible-active<?php } ?>" href="#wpacu-assets-scripts-collapsible-content">
90
+ <span class="dashicons dashicons-media-code"></span> &nbsp; <?php _e('Scripts (.js files)', WPACU_PLUGIN_TEXT_DOMAIN); ?> &#10141; Total (+ core files): <?php echo $data['total_scripts']; ?>
91
  </a>
92
 
93
  <div id="wpacu-assets-scripts-collapsible-content"
templates/settings-frontend.php CHANGED
@@ -15,12 +15,13 @@ if (! isset($data)) {
15
  $updateClass = new \WpAssetCleanUp\Update;
16
  ?>
17
  <div class="wpacu-updated-frontend"><em>
18
- <?php if (\WpAssetCleanUp\Misc::isHomePage()) {
19
- echo $updateClass->updateDoneMsg['homepage'];
20
- } else {
21
- echo $updateClass->updateDoneMsg['page'];
22
- } ?>
23
- </em></div>
 
24
  <?php
25
  }
26
 
@@ -34,7 +35,10 @@ if (! isset($data)) {
34
  if ($wpRocketSettings['cache_logged_user'] == 1) {
35
  ?>
36
  <div class="wpacu-warning">
37
- <strong><span class="dashicons dashicons-warning"></span> Important:</strong> You have enabled "<em>Enable caching for logged-in WordPress users</em>" in WP Rocket's Cache area. This could cause some issues with Asset CleanUp retrieving an outdated (cached) asset list below. If you experience issues such as unsaved settings or viewing assets from plugins that are disabled, consider using Asset CleanUp only in the Dashboard area (option "Manage in the Dashboard?" has to be enabled in plugin's settings).
 
 
 
38
  </div>
39
  <div class="clearfix"></div>
40
  <?php
15
  $updateClass = new \WpAssetCleanUp\Update;
16
  ?>
17
  <div class="wpacu-updated-frontend"><em>
18
+ <?php if (\WpAssetCleanUp\Misc::isHomePage()) {
19
+ echo $updateClass->updateDoneMsg['homepage'];
20
+ } else {
21
+ echo $updateClass->updateDoneMsg['page'];
22
+ } ?>
23
+ </em>
24
+ </div>
25
  <?php
26
  }
27
 
35
  if ($wpRocketSettings['cache_logged_user'] == 1) {
36
  ?>
37
  <div class="wpacu-warning">
38
+ <strong><span class="dashicons dashicons-warning"></span> Important:</strong> You have enabled "<em>Enable caching for logged-in WordPress users</em>" in WP Rocket's Cache area.
39
+ This could cause some issues with Asset CleanUp retrieving an outdated (cached) asset list below.
40
+ If you experience issues such as unsaved settings or viewing assets from plugins that are disabled, consider using Asset CleanUp only in the Dashboard area (option "Manage in the Dashboard?" has to be enabled in plugin's settings).
41
+ <!-- @TODO: Make sure to instruct the user to append a query string to the URL bar to load an uncached version of the plugin OR find a solution to force page reload (non-cached) -->
42
  </div>
43
  <div class="clearfix"></div>
44
  <?php
wpacu-load.php CHANGED
@@ -58,6 +58,10 @@ new \WpAssetCleanUp\Plugin;
58
  // Admin Bar (Top Area of the website when user is logged in)
59
  new \WpAssetCleanUp\AdminBar();
60
 
 
 
 
 
61
  if (is_admin()) {
62
  new \WpAssetCleanUp\Tools();
63
  }
58
  // Admin Bar (Top Area of the website when user is logged in)
59
  new \WpAssetCleanUp\AdminBar();
60
 
61
+ // Trigger only in the front-end view for guests (regular visitors, not logged-in)
62
+ $wpacuOptimizeCss = new \WpAssetCleanUp\OptimizeCss();
63
+ $wpacuOptimizeCss->init();
64
+
65
  if (is_admin()) {
66
  new \WpAssetCleanUp\Tools();
67
  }
wpacu.php CHANGED
@@ -2,13 +2,13 @@
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
- * Version: 1.2.9
6
  * Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
9
  */
10
 
11
- define('WPACU_PLUGIN_VERSION', '1.2.9');
12
 
13
  // Exit if accessed directly
14
  if (! defined('ABSPATH')) {
@@ -33,6 +33,8 @@ define('WPACU_PLUGIN_TITLE', 'Asset CleanUp'); // a short version of the
33
  define('WPACU_PLUGIN_FILE', __FILE__);
34
  define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
35
 
 
 
36
  // Do not load the plugin if the PHP version is below 5.3
37
  // If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
38
  $wpacuWrongPhp = ((! defined('PHP_VERSION_ID')) || (defined('PHP_VERSION_ID') && PHP_VERSION_ID < 50300));
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
+ * Version: 1.2.9.1
6
  * Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages to reduce HTTP Requests and have the website load faster
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
9
  */
10
 
11
+ define('WPACU_PLUGIN_VERSION', '1.2.9.1');
12
 
13
  // Exit if accessed directly
14
  if (! defined('ABSPATH')) {
33
  define('WPACU_PLUGIN_FILE', __FILE__);
34
  define('WPACU_PLUGIN_BASE', plugin_basename(WPACU_PLUGIN_FILE));
35
 
36
+ define('WPACU_ADMIN_PAGE_ID_START', WPACU_PLUGIN_ID . '_settings');
37
+
38
  // Do not load the plugin if the PHP version is below 5.3
39
  // If PHP_VERSION_ID is not defined, then PHP version is below 5.2.7, thus the plugin is not usable
40
  $wpacuWrongPhp = ((! defined('PHP_VERSION_ID')) || (defined('PHP_VERSION_ID') && PHP_VERSION_ID < 50300));