Asset CleanUp: Page Speed Booster - Version 1.3.2.8

Version Description

  • "Import & Export" added under "Tools" For Settings & Load/Unload Rules
  • "General & Files Management" -> "Assets List Layout" - 2 new options: Group by dependencies & Group by loaded/unloaded status
  • Option to hide "Asset CleanUp" menu from the sidebar
  • Minified CSS/JS Improvement: Do not replace the original source path with the minified one if the cache file was deleted via an external action (e.g. the "cache" directory was deleted via cPanel/FTPS)
Download this release

Release Info

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

Code changes from version 1.3.2.7 to 1.3.2.8

assets/images/sproutedweb-asset-cleanup-elementor-video.jpg ADDED
Binary file
assets/script.min.js CHANGED
@@ -1 +1 @@
1
- function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}if(jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;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()};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(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove()},200)})})):"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(),setTimeout(function(){e.load()},200)}))}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").removeClass("button-primary").addClass("button-secondary")):("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").removeClass("button-secondary").addClass("button-primary")),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_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_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)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){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-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(".input-unload-on-this-page.wpacu-not-locked").prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(".input-unload-on-this-page.wpacu-not-locked").prop("checked",!1).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")}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this);d.hide(),c=d.next(),c.show(),a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:d.attr("data-src")},function(a){c.html(a)})})}};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_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").fadeIn("fast"):a("#wpacu-settings-frontend-exceptions").fadeOut("fast")}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").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_combine_loaded_css_enable").click(function(){a(this).prop("checked")?a("#combine_loaded_css_info_area").css({opacity:1}):a("#combine_loaded_css_info_area").css({opacity:.4})}),a("#wpacu_combine_loaded_js_enable").click(function(){a(this).prop("checked")?a("#combine_loaded_js_info_area").css({opacity:1}):a("#combine_loaded_js_info_area").css({opacity:.4})}),a("#wpacu_minify_css_enable").click(function(){a(this).prop("checked")?a("#wpacu_minify_css_exceptions_area").css({opacity:1}):a("#wpacu_minify_css_exceptions_area").css({opacity:.4})}),a("#wpacu_minify_js_enable").click(function(){a(this).prop("checked")?a("#wpacu_minify_js_exceptions_area").css({opacity:1}):a("#wpacu_minify_js_exceptions_area").css({opacity:.4})}),a("#wpacu_remove_html_comments").click(function(){a(this).prop("checked")?a("#wpacu_remove_html_comments_area").css({opacity:1}):a("#wpacu_remove_html_comments_area").css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.click(function(){a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),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_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),clearInterval(d)}},d=setInterval(c,900)})}),-1!==location.href.indexOf("#")){var hashFromUrl=location.href.substr(location.href.indexOf("#"));jQuery('a[href="'+hashFromUrl+'"]').trigger("click")}
1
+ function wpacuTabOpenSettingsArea(a,b){a.preventDefault();var c,d,e;for(d=document.getElementsByClassName("wpacu-settings-tab-content"),c=0;c<d.length;c++)d[c].style.display="none";for(e=document.getElementsByClassName("wpacu-settings-tab-link"),c=0;c<e.length;c++)e[c].className=e[c].className.replace(" active","");document.getElementById(b).style.display="table-cell",jQuery('a[href="#'+b+'"]').addClass("active"),jQuery("#wpacu-selected-tab-area").val(b)}jQuery(document).ready(function(a){function b(){if(!a("#wpacu_ajax_fetch_assets_list_dashboard_view").length)return!1;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()};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(),setTimeout(function(){e.load(),a(".wpacu_asset_row").removeClass("wpacu-loading"),a("#wpacu-assets-reloading").remove()},200)})})):"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(),setTimeout(function(){e.load()},200)}))}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").removeClass("button-primary").addClass("button-secondary")):("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").removeClass("button-secondary").addClass("button-primary")),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_except_settings"===a("#wpacu-reset-drop-down").val()?d=wpacu_object.reset_everything_except_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)}),a("#wpacu-import-form").submit(function(){if(!confirm(wpacu_object.import_confirm_msg))return!1;a(this).find("button").addClass("wpacu-importing").prop("disabled",!0)});var e={load:function(){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-plugin-check-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(".input-unload-on-this-page.wpacu-not-locked").prop("checked",!0).closest("tr").addClass("wpacu_not_load")}),a(".wpacu-plugin-uncheck-all").on("click",function(b){b.preventDefault();var c=a(this).attr("data-wpacu-plugin");a('table.wpacu_list_by_location[data-wpacu-plugin="'+c+'"]').find(".input-unload-on-this-page.wpacu-not-locked").prop("checked",!1).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")}),a(".wpacu-add-handle-note").on("click",function(b){b.preventDefault();var c=a(this).attr("data-handle"),d=a('.wpacu-handle-notes-field[data-handle="'+c+'"]');d.is(":hidden")?a(d).show():a(d).hide()}),a(".wpacu-external-file-size").on("click",function(b){b.preventDefault();var c,d=a(this);d.hide(),c=d.next(),c.show(),a.post(wpacu_object.ajax_url,{action:"get_external_file_size",wpacu_remote_file:d.attr("data-src")},function(a){c.html(a)})})}};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-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_frontend").click(function(){a(this).prop("checked")?a("#wpacu-settings-frontend-exceptions").fadeIn("fast"):a("#wpacu-settings-frontend-exceptions").fadeOut("fast")}),a("#wpacu_assets_list_layout").on("click change",function(){"by-location"===a(this).val()?a("#wpacu-assets-list-by-location-selected").fadeIn("fast"):a("#wpacu-assets-list-by-location-selected").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_combine_loaded_css_enable").click(function(){a(this).prop("checked")?a("#combine_loaded_css_info_area").css({opacity:1}):a("#combine_loaded_css_info_area").css({opacity:.4})}),a("#wpacu_combine_loaded_js_enable").click(function(){a(this).prop("checked")?a("#combine_loaded_js_info_area").css({opacity:1}):a("#combine_loaded_js_info_area").css({opacity:.4})}),a("#wpacu_minify_css_enable").click(function(){a(this).prop("checked")?a("#wpacu_minify_css_exceptions_area").css({opacity:1}):a("#wpacu_minify_css_exceptions_area").css({opacity:.4})}),a("#wpacu_minify_js_enable").click(function(){a(this).prop("checked")?a("#wpacu_minify_js_exceptions_area").css({opacity:1}):a("#wpacu_minify_js_exceptions_area").css({opacity:.4})}),a("#wpacu_remove_html_comments").click(function(){a(this).prop("checked")?a("#wpacu_remove_html_comments_area").css({opacity:1}):a("#wpacu_remove_html_comments_area").css({opacity:.4})}),a(".wpacu-combine-loaded-js-level").change(function(){a(this).is(":checked")&&(a(".wpacu_combine_loaded_js_level_area").removeClass("wpacu_active"),a("#"+a(this).attr("data-target")).addClass("wpacu_active"))});var f=a('#wpacu-update-button-area input[type="submit"]');f.click(function(){a("#wpacu-updating-settings").show()});var g=a("#wpacu-update-front-settings-area .wpacu_update_btn");if(g.parents("form").submit(function(){return g.attr("disabled",!0).addClass("wpacu_submitting"),a("#wpacu-updating-front-settings").show(),!0}),a("form#wpacu-settings-form, form#wpacu_home_page_form").submit(function(){return f.attr("disabled",!0),!0}),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_restore_position").click(function(){var b=a(this).parents(".wpacu_restore_position_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a(".wpacu_remove_global_attr").click(function(){var b=a(this).parents(".wpacu_remove_global_attr_row");a(this).prop("checked")?b.addClass("wpacu_selected"):b.removeClass("wpacu_selected")}),a("#wpacu_wrap_assets").length>0&&setTimeout(function(){e.load()},200),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;b(),a(document).on("click",".wp-admin.post-php .edit-post-header__settings button.is-primary",function(){var c=function(){if(0===a(".edit-post-header__settings .is-saving").length){if(a("#wpacu_unload_assets_area_loaded").length>0&&a("#wpacu_unload_assets_area_loaded").val()){a("#wpacu-assets-reloading").remove();var c='<span id="wpacu-assets-reloading" class="editor-post-saved-state is-wpacu-reloading">'+wpacu_object.reload_icon+wpacu_object.reload_msg+"</span>";a(".wp-admin.post-php .edit-post-header__settings").prepend(c)}a(".wpacu_asset_row").addClass("wpacu-loading"),b(),clearInterval(d)}},d=setInterval(c,900)})});
assets/style.min.css CHANGED
@@ -1 +1 @@
1
- #wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{color:#74777b;float:right;width:auto;margin-right:30px;background:rgba(40,44,42,.05);border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}#wpacu_meta_box_content .dashicons.dashicons-warning,.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.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-license-area .notice .dashicons,.wpacu-settings-area .notice .dashicons,.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:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;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{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.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}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.dashicons-wpacu{width:17px;height:17px;margin:2px 0 0;font-size:16px;text-decoration:none}#wpacu_meta_box_content,.wpacu_widefat{width:99%}.wpacu_widefat .check-column.wpacu_check{padding:10px}body[class*=wpassetcleanup] #footer-left{border-left:2px solid green;padding-left:10px}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content .emoji{font-size:18px}#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 .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .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_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-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}#wpacu-updating-front-settings{display:none;position:absolute;top:5px;right:-35px}#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{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!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:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td.selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_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:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_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_add_global{cursor:pointer!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 10px 0 0;list-style:none;display:inline-block;line-height:normal}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_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;cursor:pointer!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.wpacu_submitting,.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.wpacu_submitting{cursor:default!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=reset].btn-block,.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=submit].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}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}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{text-shadow:none;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 .wpacu-tooltip,.wordpress-core-file .wpacu-tooltip{font-size:14px;line-height:18px;width:160px;color:#fff;text-align:center;z-index:1}.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{position:absolute;visibility:hidden;background-color:#00a7a7;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:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.wordpress-core-file{position:relative;font-style:normal;color:inherit}.wordpress-core-file .wpacu-tooltip{position:absolute;visibility:hidden;background-color:#c00;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:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;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 #008f9c}.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;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;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-dom-get-type-selections,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_switch .wpacu_slider.wpacu_round,.wpacu-wrap.wpacu-switch-enhanced .wpacu_switch .wpacu_slider.wpacu_round{border-radius:29px}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:auto;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:25px}.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: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:4px;line-height:1.4}.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-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.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}.wpacu-form-table label input[type=checkbox]{height:19px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:19%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:'';position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}#wpacu-update-button-area{position:relative;margin-left:19%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area p{margin-top:10px}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:19px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:'';height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}body.wp-admin .wpacu-handle-notes{margin-top:10px!important}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{margin-top:12px!important;padding-top:5px;border-top:1px solid #e7e7e7}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.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;min-width:52px;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:.15s;transition:.15s}.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:.15s;transition:.15s}.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:before{border-radius:50%}.wpacu-switch-enhanced .wpacu_asset_row .wpacu_slider_text{position:absolute;left:62px;top:3px}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin .wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin .wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin .wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row input{height:auto;min-height:16px}.wpacu_asset_row td{width:100%;text-align:left}.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{display:table;content:''}.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-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:'';position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 16px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:"\f132"}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:"\f460"}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:'';position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"\f106";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}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 .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){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{color:inherit;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;width:14px;height: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-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.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}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7}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-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.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}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:'';position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}
1
+ #wpacu-pages-info-area{width:98%}#wpacu-top-area{margin:15px 0;padding:0 10px}#wpacu-quick-actions{color:#74777b;float:right;width:auto;margin-right:30px;background:rgba(40,44,42,.05);border-radius:10px;padding:6px 12px}#wpacu-quick-actions .wpacu-actions-title{font-weight:200;letter-spacing:.5px}#wpacu-quick-actions a{color:#004567;text-decoration:none}#wpacu-quick-actions a:hover{color:#0073aa}#wpacu-logo-wrap{width:auto;display:inline-block;position:relative}#wpacu-logo-wrap a{display:block}#wpacu-logo-wrap img{width:352px;height:79px}#wpacu-logo-wrap .wpacu-pro-sign{position:absolute;height:auto;font-family:FiraSans-Medium,proxima-nova-1,Montserrat,Helvetica,sans-serif;font-size:13px;font-weight:600;letter-spacing:1px;padding:5px 11px;border-radius:15px;right:-60px;top:30px;width:auto;display:inline-block;text-align:center}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-lite{color:#74777b;background:rgba(40,44,42,.05)}#wpacu-logo-wrap .wpacu-pro-sign.wpacu-pro{color:#004567;background-color:rgba(40,44,42,.05)}#wpacu_meta_box_content .dashicons.dashicons-warning,.wpacu-tabs nav ul li span.license-status.inactive{color:#c00}.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.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:#008f9c;border-bottom:none}.wpacu-tabs-style-topline nav a{padding:20px 18px;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{background:0 0;color:#008f9c}.wpacu-tabs-style-topline nav li.wpacu-tab-current a{background:0 0;box-shadow:inset 0 3px 0 #008f9c;color:#008f9c}.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]{width:auto;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_location_changed>td{border-left:#004567 4px solid}tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1!important}tr.wpacu_not_load td .wpacu-assets-inline-code-wrap,tr.wpacu_not_load td .wpacu-script-attributes-area,tr.wpacu_not_load th .wpacu-assets-inline-code-wrap,tr.wpacu_not_load th .wpacu-script-attributes-area{filter:alpha(opacity=45);opacity:.45}.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}#wpassetcleanup_asset_list small{width:auto;float:none;display:inline}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content .emoji{font-size:18px}#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 .wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content .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_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-update-front-settings-area{margin:10px 0;display:inline-block;position:relative}#wpacu-updating-front-settings{display:none;position:absolute;top:5px;right:-35px}#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{display:inline!important;margin:0!important;letter-spacing:normal!important}#wpacu_wrap_assets input[type=checkbox]{width:auto!important;margin-right:4px!important}#wpacu_wrap_assets img:not(.wpacu-ajax-loader){display:inline-block!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:first-child td{border-top:1px solid #cdcdcd}.wpacu_asset_row td{border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:1px solid #cdcdcd}.wpacu_asset_row.wpacu_notice_row td{position:relative;padding:5px;border-bottom:1px solid transparent}.wpacu_asset_row.wpacu_notice_row td div.wpacu-warning{width:auto;margin:5px;font-style:italic}.wpacu_asset_row:not(.wpacu_notice_row) td{padding:18px!important;position:relative}.wpacu_asset_row:not(.wpacu_notice_row) td.selected,.wpacu_asset_row:not(.wpacu_notice_row) td:hover{-moz-box-shadow:inset 0 0 12px #cdcdcd;-webkit-box-shadow:inset 0 0 12px #cdcdcd;box-shadow:inset 0 0 12px #cdcdcd}.wpacu_asset_row:not(.wpacu_notice_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:not(.wpacu_notice_row) td label{width:auto!important;margin:0!important;cursor:pointer!important;display:inline-block!important;font-size:100%!important;font-weight:400!important}.wpacu_asset_row:not(.wpacu_notice_row) td label span:not(.dashicons){font-size:100%!important}.wpacu_asset_row:not(.wpacu_notice_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_add_global{cursor:pointer!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 10px 0 0;list-style:none;display:inline-block;line-height:normal}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%}.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;cursor:pointer!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.wpacu_submitting,.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.wpacu_submitting{cursor:default!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=reset].btn-block,.wpacu-btns input[type=button].btn-block,.wpacu-btns input[type=submit].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}.wpacu-restore-pos-btn{font-size:14px!important;line-height:normal!important;height:42px!important;padding:0 18px!important;margin-top:10px!important}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{text-shadow:none;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>img{max-width:20px;max-height:20px}.go-pro-link-no-style .wpacu-tooltip{font-size:14px;line-height:18px;position:absolute;z-index:1;visibility:hidden;width:160px;background-color:#00a7a7;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:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.go-pro-link-no-style .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;left:50%;left:calc(50% - 10px);border-color:#00a7a7 transparent transparent}.go-pro-link-no-style .wpacu-tooltip.wpacu-on-pages-btn{cursor:pointer;margin-left:-77px;width:130px}.go-pro-link-no-style .wpacu-tooltip.wpacu-larger{width:240px}.go-pro-link-no-style:hover .wpacu-tooltip{visibility:visible}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip{bottom:-40px;left:120px;margin-left:-86px}.wpacu_list_table tr:first-child .wordpress-core-file .wpacu-tooltip:after{top:41px;left:-20px;border-color:transparent #c00 transparent transparent}.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:.1s all ease;transition:.1s all ease;-webkit-transition-delay:0s;transition-delay:0s}.wordpress-core-file .wpacu-tooltip:after{content:"";position:absolute;border-width:10px;border-style:solid;top:100%;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 #008f9c}.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;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;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,.wpacu-radio-selections{float:none;clear:both;width:auto;display:inline-block;margin-bottom:0;margin-top:0}#wpacu-dom-get-type-selections.wpacu-vertical,.wpacu-radio-selections.wpacu-vertical{display:block;margin-top:15px;margin-bottom:18px}#wpacu-dom-get-type-selections.wpacu-vertical li,.wpacu-radio-selections.wpacu-vertical li{float:none;margin-bottom:12px}#wpacu-dom-get-type-selections.wpacu-vertical li:last-child,.wpacu-radio-selections.wpacu-vertical li:last-child{margin-bottom:0}#wpacu-dom-get-type-selections li,.wpacu-radio-selections li{margin-right:30px;float:left;margin-bottom:0}#wpacu-dom-get-type-selections li:first-child,.wpacu-radio-selections li:first-child{margin-right:15px}#wpacu-dom-get-type-selections li:last-child,.wpacu-radio-selections li:last-child{margin-right:0}.wpacu_combine_loaded_js_level_area{display:none;background:0 0;border-left:2px solid #008f9c;padding-top:8px;padding-bottom:8px;padding-right:10px;padding-left:10px;margin:20px 0 15px}.wpacu_combine_loaded_js_level_area.wpacu_active{display:block}#wpacu-dom-get-type-infos{margin-bottom:0}#wpacu-dom-get-type-infos li{margin-bottom:0;line-height:20px}.wpacu-wrap li,.wpacu-wrap p,.wpacu-wrap td{font-weight:400}.wpacu-wrap small{width:auto;float:none;display:inline}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-tab-content{display:block;width:100%}.wpacu-wrap.wpacu-settings-show-all .wpacu-settings-area-title{color:#004567;padding:16px 15px;background:#f8f8f8;border-left:5px solid #004567b0;border-top:1px solid #e7e7e7;border-right:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;font-size:1.45em;font-weight:500}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area{margin:0}.wpacu-wrap.wpacu-settings-show-all #wpacu-update-button-area .button{padding:11px 28px;height:auto;font-size:18px}.wpacu-wrap.wpacu-settings-show-all #wpacu-updating-settings{margin-left:224px;top:25px}.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:4px;line-height:1.4}.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-assets-list-by-location-selected{background:0 0;border:1px solid #e7e7e7;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding:8px;clear:both}.notice.notice-success+.wpacu-wrap.wpacu-settings-area{margin-top:20px}.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}.wpacu-form-table label input[type=checkbox]{height:19px;width:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.wpacu-form-table label input[type=checkbox]:checked,.wpacu-form-table label input[type=checkbox]:hover{border:1px solid green}.wpacu-form-table label input[type=checkbox]:checked:before{color:#52af00;font:400 24px/1 dashicons}#wpacu-settings-vertical-tab-wrap{display:table;width:100%}#wpacu-settings-vertical-tab-wrap *{box-sizing:border-box}.wpacu-settings-tab{display:table-cell;width:19%;height:100%;vertical-align:top}.wpacu-settings-tab a{text-decoration:none;border-left:3px solid transparent;display:block;background-color:#f1f1f1;color:#004567;padding:17px 16px;width:100%;outline:0;text-align:left;cursor:pointer;font-size:14px;font-weight:600;border-bottom:1px solid #ccc}.wpacu-settings-tab a:first-child{border-top:1px solid transparent!important}.wpacu-settings-tab a:last-child{border-bottom:1px solid transparent!important}.wpacu-settings-tab a:hover{background-color:#fff;border-left:3px solid #004567;position:relative}.wpacu-settings-tab a.active{color:#004567;background-color:#fff;border-left:3px solid #004567;position:relative;border-bottom:1px solid #ccc}.wpacu-settings-tab a.active:after{content:'';position:absolute;height:100%;width:1px;top:0;right:-1px;background-color:#fff}.wpacu-settings-tab-content{background-color:#fff;display:none;padding:12px 18px;width:79%;border-left:none;height:100%;border-top-right-radius:10px;border-bottom-right-radius:10px}.wpacu-settings-tab-content h2{padding:0 0 15px;border-bottom:1px solid #e7e7e7}.wpacu-settings-tab-content.active{display:table-cell}#wpacu_minify_css_exceptions_area,#wpacu_minify_js_exceptions_area{margin:16px 0 0}#wpacu-update-button-area{position:relative;margin-left:19%}#wpacu-update-button-area.no-left-margin{margin-left:0}#wpacu-update-button-area p{margin-top:10px}#wpacu-update-button-area .button{padding:5px 18px;height:38px;font-size:15px}#wpacu-updating-settings{position:absolute;margin-left:183px;top:19px;display:none}#combine_loaded_js_info_area{position:relative}#combine_loaded_js_info_area.locked-for-pro:before{position:absolute;content:'';height:100%;width:100%;background:#fff;opacity:.5;z-index:10000}body.wp-admin .wpacu-handle-notes{margin-top:10px!important}body.wp-admin .wpacu-handle-notes p{margin-top:0!important}body.wp-admin .wpacu-handle-notes p a{font-size:inherit}body.wp-admin .wpacu-handle-notes p a span.dashicons{font-size:19px;width:19px;height:19px;vertical-align:bottom;text-decoration:none}.wpacu-handle-notes{margin-top:12px!important;padding-top:5px;border-top:1px solid #e7e7e7}.wpacu-handle-notes .wpacu-handle-notes-field{display:none}.wpacu-handle-notes .wpacu-handle-notes-field>textarea{font-size:85%;padding:6px;width:320px;max-width:100%}.wpacu-handle-notes p{margin:10px 0 0!important}.wpacu-handle-notes p a.wpacu-add-handle-note{text-decoration:none;font-size:80%;display:inline-block;color:inherit}.wpacu-handle-notes p a.wpacu-add-handle-note span.dashicons{font-size:18px;width:18px;height:18px}.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;min-width:52px;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:.15s;transition:.15s}.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:.15s;transition:.15s}.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}.editor-post-saved-state.is-wpacu-reloading{animation:edit-post__loading-fade-animation .5s infinite}body.wp-admin .wpacu_asset_row.wpacu-loading{position:relative}body.wp-admin .wpacu_asset_row.wpacu-loading .wpacu-ajax-loader{display:block!important}body.wp-admin .wpacu_asset_row .wpacu-ajax-loader{display:none;width:58px;height:58px;position:absolute;bottom:0;right:0;opacity:.75}.wpacu_asset_row input{width:auto;height:auto;min-height:16px}.wpacu_asset_row td{width:100%;text-align:left}.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{display:table;content:''}.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-wp-button:hover{background:#fafafa;border-color:#999;color:#23282d}.distinguish-asset-list{list-style:none;margin-left:0;margin-bottom:5px;display:inline-block}.distinguish-asset-list li{float:left;margin-right:20px}.distinguish-asset-list li:last-child{margin-right:0}body[class*=asset-cleanup-pro] a.wpacu-plugin-contracted-wrap-link{padding:16px 6px 16px 41px!important}body[class*=asset-cleanup-pro] .wpacu-area-open .wpacu-plugin-toggle-all{font-size:12px!important;width:calc(100% - 26px)!important}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all{top:5px}body.wp-admin .wpacu-area-expanded .wpacu-plugin-toggle-all ul li{font-size:12px!important}.wpacu-assets-collapsible-wrap{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location{margin-bottom:15px}.wpacu-assets-collapsible-wrap.wpacu-wrap-all,.wpacu-assets-collapsible-wrap.wpacu-wrap-styles{margin-top:20px}.wpacu-assets-collapsible-wrap.wpacu-wrap-scripts{margin-top:10px}.wpacu-assets-collapsible-wrap.wpacu-by-location>a.wpacu-assets-collapsible{padding:15px 15px 15px 43px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu_list_table{border-width:0;margin:0;border-spacing:inherit;width:100%;box-shadow:3px 3px 2px #ddd;border-bottom-right-radius:5px;border-top-right-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-name{font-weight:600}.wpacu-assets-collapsible-wrap.wpacu-by-location span.wpacu-child-location-version{font-weight:200}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area[data-wpacu-plugin=oxygen] .icon-area{border-radius:50%}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all{display:inline-block;padding:0;font-size:13px;width:100%;width:calc(100% + 46px);min-width:250px;position:absolute;left:100%;left:calc(100% + 6px);margin:0;top:4px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul{display:inline-block;margin:0;list-style:none;padding-left:13px;padding-top:0}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul li{padding:0;margin:0;line-height:normal;font-size:14px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-location-child-area .wpacu-plugin-toggle-all ul li:first-child{font-style:italic;margin-bottom:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;position:relative;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title:after{content:'';position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap{padding:0 0 10px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open .wpacu-plugin-toggle-all{display:inline-block;padding:7px 12px 16px;font-size:14px;width:100%;text-align:left;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-plugin-assets-wrap.wpacu-area-open.wpacu-plugin-assets-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link{color:inherit;text-decoration:none;font-weight:inherit;font-style:inherit;font-size:105%;line-height:initial;height:auto;margin:14px 0 0;padding:13px 6px 14px 39px;position:relative;display:block}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:after{position:absolute;font-size:18px;font-family:Dashicons;right:12px;top:14px;content:"\f132"}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open:after{content:"\f460"}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed{border:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover{border:1px solid #878787;background:#f9f9f9}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link:hover.wpacu-link-closed{box-shadow:3px 3px 2px #ddd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-open{border-top:1px solid #cdcdcd;border-left:1px solid #cdcdcd;border-right:1px solid #cdcdcd;border-bottom:none}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-link-closed.wpacu-last-wrap-link{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default{top:10px;left:10px;width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area{width:30px;height:30px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .icon-plugin-default .icon-area:before{font-size:22px;line-height:22px;top:4px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title{position:relative;padding:17px 10px 16px 46px;z-index:1}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link .wpacu-area-title:after{content:'';position:absolute;width:100%;left:0;bottom:0;height:1px;background-color:#fdfdfd}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content a.wpacu-plugin-contracted-wrap-link.wpacu-area-last{margin-bottom:18px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-open{padding:0;max-height:100%}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content .wpacu-area-closed{padding:0;overflow:hidden;max-height:0}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-plugins .wpacu-assets-collapsible-content>table:last-child{margin-bottom:20px}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{margin-top:0;margin-bottom:-1px;padding:14px 10px 16px 12px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location.wpacu-themes .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title.wpacu-theme-has-icon{padding:18px 10px 16px 58px!important}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area{margin-top:22px;margin-bottom:-1px;font-size:110%;line-height:initial}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-location-child-area-first{margin-top:2px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area.wpacu-area-expanded .wpacu-area-title{display:inline-block;z-index:1;padding:17px 10px 16px 46px}.wpacu-assets-collapsible-wrap.wpacu-by-location .wpacu-assets-collapsible-content .wpacu-location-child-area .wpacu-area-title{display:inline;border-top-right-radius:8px;border-top-left-radius:8px;background-color:#f9f9f9;border-left:1px solid #cdcdcd;border-top:1px solid #cdcdcd;border-bottom:1px solid transparent;border-right:1px solid #cdcdcd;position:relative}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon){color:#b4b9be;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default:not(.has-icon) .icon-area:before{content:"\f106";font-family:Dashicons;position:absolute;font-size:28px;line-height:28px;top:5px;left:5px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-plugin-default .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme{position:absolute;padding:0;top:10px;left:10px;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-by-location .icon-theme .icon-area{position:relative;width:37px;height:37px}.wpacu-assets-collapsible-wrap.wpacu-wp_core{border:1px solid #c00}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content{padding:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table{width:100%;margin:0}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row td{border-left:hidden;border-right:hidden;border-bottom:1px solid #cdcdcd}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child{margin-bottom:0!important}.wpacu-assets-collapsible-wrap.wpacu-external .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child,.wpacu-assets-collapsible-wrap.wpacu-wp_core .wpacu-assets-collapsible-content .wpacu_list_table .wpacu_asset_row:last-child td:last-child{border-bottom:hidden}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 .wpacu-assets-note{margin:0;padding:15px 15px 10px}.wpacu-assets-collapsible-content>div:not(.wpacu-assets-table-list-wrap){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{color:inherit;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;width:14px;height: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-wrap-choose-position{display:inline}.wpacu-wrap-choose-position>div{display:inline-block}.wpacu-wrap-choose-position select{width:auto;font-size:inherit;display:inline;margin-left:6px;margin-right:4px}.wpacu-wrap-choose-position>.select>.select{display:inline}.wpacu-wrap-choose-position>.select>.select select{padding-right:30px}.wpacu-wrap-choose-position>.select>.select:after{right:15px;top:-4px}.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}.wp-list-table .wpacu_remove_global_attr_row.wpacu_selected,.wp-list-table .wpacu_restore_position_row.wpacu_selected{background:#e7e7e7}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-tools-area .wpacu-export-import-area{padding:10px}.wpacu-tools-area .wpacu-export-import-area form>p:first-of-type{margin-top:0}.wpacu-tools-area .wpacu-export-import-area form>p:last-of-type{margin-bottom:0}.wpacu-tools-area .wpacu-export-import-area:hover{background:rgba(40,44,42,.05);box-shadow:inset 0 0 10px rgba(160,165,170,.15)}.wpacu-tools-area .wpacu-export-import-area+hr{display:block;height:1px;border:0;border-top:1px solid #cdcdcd;margin:10px 0;padding:0}#wpacu-import-form button.wpacu-importing img.wpacu-spinner{display:inline-block}#wpacu-import-form button img.wpacu-spinner{display:none;margin:0 0 0 5px;height:16px;width:16px;vertical-align:middle}.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}.wpacu-lite-vs-pro-wrap ul{display:flex;top:0;z-index:10;padding-bottom:14px}.wpacu-lite-vs-pro-wrap li{list-style:none;flex:1}.wpacu-lite-vs-pro-wrap li:last-child{border-right:1px solid #DDD}.wpacu-lite-vs-pro-wrap button{width:100%;border:1px solid #DDD;border-right:0;border-top:0;padding:10px;background:#FFF;font-size:14px;font-weight:700;height:60px;color:#999}.wpacu-lite-vs-pro-wrap li.active button{background:#F5F5F5;color:#000}.wpacu-lite-vs-pro-wrap table{border-collapse:collapse;table-layout:fixed;width:100%}.wpacu-lite-vs-pro-wrap th{background:inherit}.wpacu-lite-vs-pro-wrap tr.first{background:inherit;font-size:18px}.wpacu-lite-vs-pro-wrap tr.first .bg-lite{border-top:4px solid #6d6e70;background:#fff;color:#6d6e70}.wpacu-lite-vs-pro-wrap tr.first .bg-pro{border-top:4px solid green;background:#fff;color:green}.wpacu-lite-vs-pro-wrap tr:not(.first){background:#fff}.wpacu-lite-vs-pro-wrap tr:not(:last-child):hover{background:#f8f8f8}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{height:53px;border:1px solid #DDD;padding:10px 16px;empty-cells:show;text-align:left}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{font-size:14px}}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{text-align:center;display:none}.wpacu-lite-vs-pro-wrap td.default{display:table-cell}.wpacu-lite-vs-pro-wrap .txt-l{font-size:28px;font-weight:700}.wpacu-lite-vs-pro-wrap .txt-top{position:relative;top:-9px;left:-2px}.wpacu-lite-vs-pro-wrap svg{width:18px;height:18px}.wpacu-lite-vs-pro-wrap svg path{fill:green}.wpacu-lite-vs-pro-wrap .tick{color:#2CA01C}.wpacu-lite-vs-pro-wrap .tick img{fill:#2CA01C}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .txt-l{font-size:20px}.wpacu-lite-vs-pro-wrap .tick{font-size:15px}}.wpacu-lite-vs-pro-wrap .na{font-size:18px;opacity:.3;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"}.wpacu-lite-vs-pro-wrap .hide{border:0;background:0 0}.wpacu-lite-vs-pro-wrap td,.wpacu-lite-vs-pro-wrap th{display:table-cell!important;width:auto}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:130px}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap .na{font-size:15px}.wpacu-lite-vs-pro-wrap td+td,.wpacu-lite-vs-pro-wrap th+th{width:42px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap td .button{font-size:16px!important}}@media only screen and (max-width:767px){.wpacu-lite-vs-pro-wrap td .button{font-size:14px!important;padding:0 20px!important}.wpacu-lite-vs-pro-wrap td .button.button-primary{margin-top:6px;margin-bottom:14px}}@media only screen and (min-width:768px){.wpacu-lite-vs-pro-wrap{margin-bottom:40px;clear:both}}.wpacu-video-areas>div{padding:20px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.wpacu-video-areas>div:nth-child(odd){background:#fff}.wpacu-video-areas>div:nth-child(even){background:inherit}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 15px;display:flex}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right{padding:0 20px 0 25px}}@media only screen and (min-width:992px) and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper{margin:0 0 40px}}.wpacu-video-areas .wpacu-video-area-wrapper ol{font-size:14px}.wpacu-video-areas .wpacu-video-area-wrapper ul{font-size:14px;list-style:disc;margin-left:22px}@media only screen and (min-width:1200px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:first-child{margin-top:0}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-col-right p:last-child{margin-bottom:0}}@media only screen and (max-width:1199px){.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.wpacu-video-areas .wpacu-video-area-wrapper .wpacu-video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}}#wpassetcleanup_asset_list.postbox h2{padding-left:52px!important;position:relative}#wpassetcleanup_asset_list.postbox h2:before{content:'';position:absolute;background-image:url(images/wpacu-logo-transparent-bg-v1.png);background-size:cover;top:6px;left:13px;width:33px;height:26px;opacity:.8;-webkit-filter:grayscale(100%);filter:grayscale(100%)}body.wp-admin .wpacu-modal{display:none;position:fixed;z-index:1000000;padding-top:15%;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}body.wp-admin .wpacu-modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:80%;max-width:600px;border-radius:10px}body.wp-admin .wpacu-close{color:#aaa;float:right;font-size:28px;font-weight:700}body.wp-admin .wpacu-close:focus,body.wp-admin .wpacu-close:hover{color:#000;text-decoration:none;cursor:pointer}.wpacu-bulk-changes-tabs{display:table;position:relative;overflow:hidden;margin:0;width:100%}.wpacu-bulk-changes-tabs li{border-top:1px solid rgba(40,44,42,.1);border-left:1px solid rgba(40,44,42,.1);border-bottom:1px solid rgba(40,44,42,.1);float:left;line-height:38px;padding:0;position:relative;margin-bottom:12px}.wpacu-bulk-changes-tabs li:last-child{border-right:1px solid rgba(40,44,42,.1)}.wpacu-bulk-changes-tabs a{position:relative;background:rgba(40,44,42,.05);color:#004567;font-size:14px;font-weight:500;display:block;letter-spacing:0;outline:0;padding:6px 20px;text-decoration:none;border-top:3px solid transparent}.wpacu-bulk-changes-tabs a:hover{background:#f1f1f1;border-top:3px solid transparent}.wpacu-bulk-changes-tabs .current a{background:#fff;border-top:3px solid #004567}.wpacu-bulk-changes-tabs .current a:hover{background:#fff}.wpacu-bulk-changes-tabs .current a:after,.wpacu-bulk-changes-tabs .current a:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.wpacu-bulk-changes-tabs .current a:after{border-color:rgba(136,183,213,0);border-top-color:#fff;border-width:12px;margin-left:-12px}.wpacu-bulk-changes-tabs .current a:before{border-color:rgba(194,225,245,0);border-top-color:rgba(40,44,42,.1);border-width:13px;margin-left:-13px}
classes/CleanUp.php CHANGED
@@ -53,6 +53,13 @@ class CleanUp
53
  if ($settings['remove_shortlink'] == 1) {
54
  // <link rel='shortlink' href="https://yourdomain.com/?p=1">
55
  remove_action('wp_head', 'wp_shortlink_wp_head');
 
 
 
 
 
 
 
56
  }
57
 
58
  // Remove "Post's Relational Links"?
@@ -340,15 +347,19 @@ class CleanUp
340
  }
341
 
342
  /**
343
- * @param $srcContains
344
  * @param $htmlSource
345
  *
346
  * @return mixed
347
  */
348
- public static function cleanLinkTagFromHtmlSource($srcContains, $htmlSource)
349
  {
350
- $srcContainsFormat = preg_quote($srcContains, '/');
351
- $regExpPattern = '#<link[^>]*stylesheet[^>]*'. $srcContainsFormat. '.*(>)#Usmi';
 
 
 
 
352
 
353
  preg_match_all($regExpPattern, $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
354
 
@@ -363,6 +374,55 @@ class CleanUp
363
  return $htmlSource;
364
  }
365
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  /**
367
  *
368
  */
@@ -452,4 +512,36 @@ class CleanUp
452
  return $excludeParams;
453
  });
454
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
455
  }
53
  if ($settings['remove_shortlink'] == 1) {
54
  // <link rel='shortlink' href="https://yourdomain.com/?p=1">
55
  remove_action('wp_head', 'wp_shortlink_wp_head');
56
+
57
+ // For some reason, in some WP installs, it's not enough to just use the "remove_action" function
58
+ add_action('wp_loaded', function () {
59
+ ob_start(function($htmlSource) {
60
+ return self::cleanRelShortLink($htmlSource);
61
+ });
62
+ }, PHP_INT_MAX);
63
  }
64
 
65
  // Remove "Post's Relational Links"?
347
  }
348
 
349
  /**
350
+ * @param $strContains
351
  * @param $htmlSource
352
  *
353
  * @return mixed
354
  */
355
+ public static function cleanLinkTagFromHtmlSource($strContains, $htmlSource)
356
  {
357
+ if ($strContains === '' || strlen($strContains) < 5) {
358
+ return $htmlSource;
359
+ }
360
+
361
+ $strContainsFormat = preg_quote($strContains, '/');
362
+ $regExpPattern = '#<link[^>]*stylesheet[^>]*'. $strContainsFormat. '.*(>)#Usmi';
363
 
364
  preg_match_all($regExpPattern, $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
365
 
374
  return $htmlSource;
375
  }
376
 
377
+ /**
378
+ * @param $strContains
379
+ * @param $htmlSource
380
+ *
381
+ * @return mixed
382
+ */
383
+ public static function cleanScriptTagFromHtmlSource($strContains, $htmlSource)
384
+ {
385
+ if ($strContains === '' || strlen($strContains) < 5) {
386
+ return $htmlSource;
387
+ }
388
+
389
+ $strContainsFormat = preg_quote($strContains, '/');
390
+
391
+ $regExpPattern = '#<script[^>]*src(|\s+)=(|\s+)[^>]*'. $strContainsFormat. '.*(>)#Usmi';
392
+
393
+ preg_match_all($regExpPattern, $htmlSource, $matchesSourcesFromTags, PREG_SET_ORDER);
394
+
395
+ if (isset($matchesSourcesFromTags[0][0])) {
396
+ $htmlSource = str_replace($matchesSourcesFromTags[0][0].'</script>', '', $htmlSource);
397
+ }
398
+
399
+ return $htmlSource;
400
+ }
401
+
402
+ /**
403
+ * @param $htmlSource
404
+ *
405
+ * @return mixed
406
+ */
407
+ public function cleanRelShortLink($htmlSource)
408
+ {
409
+ $regExpPattern = '#<link[^>]*shortlink[^>]*(>)#Usmi';
410
+
411
+ preg_match_all($regExpPattern, $htmlSource, $matchedLinks, PREG_SET_ORDER);
412
+
413
+ if (! isset($matchedLinks[0][0])) {
414
+ return $htmlSource;
415
+ }
416
+
417
+ $linkTag = $matchedLinks[0][0];
418
+
419
+ if (stripos($linkTag, '<link') === 0 && substr($linkTag, -1) === '>' && strip_tags($linkTag) === '') {
420
+ $htmlSource = str_replace($matchedLinks[0][0], '', $htmlSource);
421
+ }
422
+
423
+ return $htmlSource;
424
+ }
425
+
426
  /**
427
  *
428
  */
512
  return $excludeParams;
513
  });
514
  }
515
+
516
+ /**
517
+ * @return array
518
+ */
519
+ public function allCssHandles()
520
+ {
521
+ global $wp_styles;
522
+
523
+ $allCssHandles = array();
524
+
525
+ if (isset($wp_styles->registered) && ! empty($wp_styles->registered)) {
526
+ $allCssHandles = array_keys($wp_styles->registered);
527
+ }
528
+
529
+ return $allCssHandles;
530
+ }
531
+
532
+ /**
533
+ * @return array
534
+ */
535
+ public function allJsHandles()
536
+ {
537
+ global $wp_scripts;
538
+
539
+ $allJsHandles = array();
540
+
541
+ if (isset($wp_scripts->registered) && ! empty($wp_scripts->registered)) {
542
+ $allJsHandles = array_keys($wp_scripts->registered);
543
+ }
544
+
545
+ return $allJsHandles;
546
+ }
547
  }
classes/ImportExport.php CHANGED
@@ -17,6 +17,14 @@ class ImportExport
17
  {
18
  $wpacuSettings = new Settings();
19
  $settingsArray = $wpacuSettings->getAll();
 
 
 
 
 
 
 
 
20
  return json_encode($settingsArray);
21
  }
22
 
@@ -73,6 +81,9 @@ class ImportExport
73
  $bulkUnloadListJson = get_option(WPACU_PLUGIN_ID . '_bulk_unload');
74
  $bulkUnloadArray = json_decode($bulkUnloadListJson, ARRAY_A);
75
 
 
 
 
76
  // Pages, Posts, Custom Post Types: All Metas
77
  global $wpdb;
78
 
@@ -101,6 +112,7 @@ SQL;
101
 
102
  'global_unload' => $globalUnloadArray,
103
  'bulk_unload' => $bulkUnloadArray,
 
104
  'posts_metas' => $allMetasResults
105
  );
106
 
@@ -162,6 +174,14 @@ SQL;
162
 
163
  // "Settings" (Replace)
164
  if (isset($valuesArray['settings']) && ! empty($valuesArray['settings'])) {
 
 
 
 
 
 
 
 
165
  Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($valuesArray['settings']));
166
  $importedList[] = 'settings';
167
  }
@@ -194,9 +214,16 @@ SQL;
194
  $importedList[] = 'bulk_unload';
195
  }
196
 
 
 
 
 
 
 
 
197
  // All Posts Metas (per page unloads, page options from side meta box)
198
- if (isset($valuesArray['metas']) && ! empty($valuesArray['metas'])) {
199
- foreach ($valuesArray['metas'] as $postValues) {
200
  // It needs to have a post ID and meta key starting with _' . WPACU_PLUGIN_ID . '
201
  if ( ! (isset($postValues['post_id'], $postValues['meta_key'])
202
  && strpos($postValues['meta_key'], '_' . WPACU_PLUGIN_ID) === 0) ) {
17
  {
18
  $wpacuSettings = new Settings();
19
  $settingsArray = $wpacuSettings->getAll();
20
+
21
+ // Some "Site-wide Common Unloads" values are fetched outside the "Settings" option values
22
+ // e.g. jQuery Migrate, Comment Reply
23
+ $globalUnloadList = Main::instance()->getGlobalUnload();
24
+
25
+ $settingsArray['disable_jquery_migrate'] = in_array('jquery-migrate', $globalUnloadList['scripts']);
26
+ $settingsArray['disable_comment_reply'] = in_array('comment-reply', $globalUnloadList['scripts']);
27
+
28
  return json_encode($settingsArray);
29
  }
30
 
81
  $bulkUnloadListJson = get_option(WPACU_PLUGIN_ID . '_bulk_unload');
82
  $bulkUnloadArray = json_decode($bulkUnloadListJson, ARRAY_A);
83
 
84
+ $globalDataListJson = get_option(WPACU_PLUGIN_ID . '_global_data');
85
+ $globalDataArray = json_decode($globalDataListJson, ARRAY_A);
86
+
87
  // Pages, Posts, Custom Post Types: All Metas
88
  global $wpdb;
89
 
112
 
113
  'global_unload' => $globalUnloadArray,
114
  'bulk_unload' => $bulkUnloadArray,
115
+ 'global_data' => $globalDataArray,
116
  'posts_metas' => $allMetasResults
117
  );
118
 
174
 
175
  // "Settings" (Replace)
176
  if (isset($valuesArray['settings']) && ! empty($valuesArray['settings'])) {
177
+ $wpacuSettings = new Settings();
178
+
179
+ // "Site-wide Common Unloads" - apply settings
180
+ $disableJQueryMigrate = isset($valuesArray['settings']['disable_jquery_migrate']) ? $valuesArray['settings']['disable_jquery_migrate'] : false;
181
+ $disableCommentReply = isset($valuesArray['settings']['disable_comment_reply']) ? $valuesArray['settings']['disable_comment_reply'] : false;
182
+
183
+ $wpacuSettings->loadUnloadCommon(array('jquery_migrate' => $disableJQueryMigrate, 'comment_reply' => $disableCommentReply));
184
+
185
  Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($valuesArray['settings']));
186
  $importedList[] = 'settings';
187
  }
214
  $importedList[] = 'bulk_unload';
215
  }
216
 
217
+ // Global Data
218
+ if (isset($valuesArray['global_data']['scripts'])
219
+ || isset($valuesArray['global_data']['styles'])) {
220
+ Misc::addUpdateOption(WPACU_PLUGIN_ID . '_global_data', json_encode($valuesArray['global_data']));
221
+ $importedList[] = 'global_data';
222
+ }
223
+
224
  // All Posts Metas (per page unloads, page options from side meta box)
225
+ if (isset($valuesArray['posts_metas']) && ! empty($valuesArray['posts_metas'])) {
226
+ foreach ($valuesArray['posts_metas'] as $postValues) {
227
  // It needs to have a post ID and meta key starting with _' . WPACU_PLUGIN_ID . '
228
  if ( ! (isset($postValues['post_id'], $postValues['meta_key'])
229
  && strpos($postValues['meta_key'], '_' . WPACU_PLUGIN_ID) === 0) ) {
classes/Main.php CHANGED
@@ -95,6 +95,16 @@ class Main
95
  */
96
  public $wpAllStyles = array();
97
 
 
 
 
 
 
 
 
 
 
 
98
  /**
99
  * @var int
100
  */
@@ -109,6 +119,9 @@ class Main
109
  public $lastStylePos = 1;
110
  */
111
 
 
 
 
112
  public static $wpStylesSpecialDelimiters = array(
113
  'start' => '<!--START-WPACU-SPECIAL-STYLES',
114
  'end' => 'END-WPACU-SPECIAL-STYLES-->'
@@ -211,6 +224,12 @@ class Main
211
  // then the prevention will trigger within filterStyles() and filterScripts()
212
 
213
  if (! $this->isGetAssetsCall) { // No AJAX call from the Dashboard? Trigger the code below
 
 
 
 
 
 
214
  // SG Optimizer Compatibility: Unload Styles - HEAD (Before pre_combine_header_styles() from Combinator)
215
  if (get_option('siteground_optimizer_combine_css')) {
216
  add_action('wp_print_styles', array($this, 'filterStyles'), 9); // priority should be below 10
@@ -218,7 +237,7 @@ class Main
218
 
219
  // Unload Styles - HEAD
220
  add_action( 'wp_print_styles', array( $this, 'filterStyles' ), 100000 );
221
- $this->filterStylesSpecialCases();
222
 
223
  // Unload Scripts - HEAD
224
  add_action( 'wp_print_scripts', array( $this, 'filterScripts' ), 100000 );
@@ -456,7 +475,9 @@ class Main
456
  return;
457
  }
458
 
459
- foreach ($list as $handle) {
 
 
460
  $handle = trim($handle);
461
 
462
  // Special Action for 'jquery-migrate' handler as its tied to 'jquery'
@@ -470,6 +491,13 @@ class Main
470
  continue;
471
  }
472
 
 
 
 
 
 
 
 
473
  wp_deregister_script($handle);
474
  wp_dequeue_script($handle);
475
  }
@@ -581,7 +609,16 @@ class Main
581
  return;
582
  }
583
 
 
 
584
  foreach ($list as $handle) {
 
 
 
 
 
 
 
585
  $handle = trim($handle);
586
 
587
  wp_deregister_style($handle);
@@ -684,6 +721,86 @@ class Main
684
  }, 1);
685
  }
686
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
687
  /**
688
  * @param string $type
689
  * @param string $postId
@@ -784,6 +901,84 @@ class Main
784
  return $existingList;
785
  }
786
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
787
  /**
788
  *
789
  */
@@ -1134,6 +1329,9 @@ class Main
1134
  }
1135
  // [/wpacu_lite]
1136
 
 
 
 
1137
  $this->parseTemplate('settings-frontend', $data, true);
1138
  } elseif ($isDashboardEditView) {
1139
  // AJAX call (not the classic WP one) from the WP Dashboard
@@ -1304,6 +1502,9 @@ class Main
1304
 
1305
  $data['all_deps'] = $this->getAllDeps($data['all']);
1306
 
 
 
 
1307
  $this->parseTemplate('meta-box-loaded', $data, true);
1308
 
1309
  exit;
95
  */
96
  public $wpAllStyles = array();
97
 
98
+ /**
99
+ * @var array
100
+ */
101
+ public $ignoreChildren = array();
102
+
103
+ /**
104
+ * @var array
105
+ */
106
+ public $ignoreChildrenHandlesOnTheFly = array();
107
+
108
  /**
109
  * @var int
110
  */
119
  public $lastStylePos = 1;
120
  */
121
 
122
+ /**
123
+ * @var int
124
+ */
125
  public static $wpStylesSpecialDelimiters = array(
126
  'start' => '<!--START-WPACU-SPECIAL-STYLES',
127
  'end' => 'END-WPACU-SPECIAL-STYLES-->'
224
  // then the prevention will trigger within filterStyles() and filterScripts()
225
 
226
  if (! $this->isGetAssetsCall) { // No AJAX call from the Dashboard? Trigger the code below
227
+ // [START] Unload CSS/JS on URI Request (for debugging)
228
+ add_filter('wpacu_filter_styles', array($this, 'filterCssOnTheFly'));
229
+ add_filter('wpacu_filter_scripts', array($this, 'filterJsOnTheFly'));
230
+ add_filter('wpacu_ignore_child_parent_list', array($this, 'filterIgnoreChildParentList'));
231
+ // [END] Unload CSS/JS on URI Request (for debugging)
232
+
233
  // SG Optimizer Compatibility: Unload Styles - HEAD (Before pre_combine_header_styles() from Combinator)
234
  if (get_option('siteground_optimizer_combine_css')) {
235
  add_action('wp_print_styles', array($this, 'filterStyles'), 9); // priority should be below 10
237
 
238
  // Unload Styles - HEAD
239
  add_action( 'wp_print_styles', array( $this, 'filterStyles' ), 100000 );
240
+ $this->filterStylesSpecialCases(); // e.g. CSS enqueued in a different way via Oxygen Builder
241
 
242
  // Unload Scripts - HEAD
243
  add_action( 'wp_print_scripts', array( $this, 'filterScripts' ), 100000 );
475
  return;
476
  }
477
 
478
+ $ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
479
+
480
+ foreach ($list as $handle) {
481
  $handle = trim($handle);
482
 
483
  // Special Action for 'jquery-migrate' handler as its tied to 'jquery'
491
  continue;
492
  }
493
 
494
+ if (isset($ignoreChildParentList['scripts'], $this->wpAllScripts['registered'][$handle]->src) && is_array($ignoreChildParentList['scripts']) && array_key_exists($handle, $ignoreChildParentList['scripts'])) {
495
+ // Do not dequeue it as it's "children" will also be dequeued (ignore rule is applied)
496
+ // It will be stripped by cleaning its SCRIPT tag from the HTML Source
497
+ $this->ignoreChildren['scripts'][$handle] = $this->wpAllScripts['registered'][$handle]->src;
498
+ continue;
499
+ }
500
+
501
  wp_deregister_script($handle);
502
  wp_dequeue_script($handle);
503
  }
609
  return;
610
  }
611
 
612
+ $ignoreChildParentList = apply_filters('wpacu_ignore_child_parent_list', $this->getIgnoreChildren());
613
+
614
  foreach ($list as $handle) {
615
+ if (isset($ignoreChildParentList['styles'], $this->wpAllStyles['registered'][$handle]->src) && is_array($ignoreChildParentList['styles']) && array_key_exists($handle, $ignoreChildParentList['styles'])) {
616
+ // Do not dequeue it as it's "children" will also be dequeued (ignore rule is applied)
617
+ // It will be stripped by cleaning its LINK tag from the HTML Source
618
+ $this->ignoreChildren['styles'][$handle] = $this->wpAllStyles['registered'][$handle]->src;
619
+ continue;
620
+ }
621
+
622
  $handle = trim($handle);
623
 
624
  wp_deregister_style($handle);
721
  }, 1);
722
  }
723
 
724
+ /**
725
+ * Alter CSS list marked for dequeue
726
+ *
727
+ * @param $cssHandles
728
+ *
729
+ * @return mixed
730
+ */
731
+ public function filterCssOnTheFly($cssHandles)
732
+ {
733
+ if (isset($_GET['wpacu_unload_css']) && $_GET['wpacu_unload_css']) {
734
+ $unloadCss = $_GET['wpacu_unload_css'];
735
+
736
+ if (strpos($unloadCss, ',') === false) {
737
+ if (strpos($unloadCss, '[ignore-deps]') === false) {
738
+ $unloadCss = str_replace('[ignore-deps]', '', $unloadCss);
739
+ $this->ignoreChildrenHandlesOnTheFly['styles'][] = $unloadCss;
740
+ }
741
+
742
+ $cssHandles[] = $unloadCss;
743
+ } else {
744
+ $unloadCssList = explode(',', $unloadCss);
745
+
746
+ foreach ($unloadCssList as $unloadCss) {
747
+ $unloadCss = trim($unloadCss);
748
+
749
+ if ($unloadCss) {
750
+ if (strpos($unloadCss, '[ignore-deps]') === false) {
751
+ $unloadCss = str_replace('[ignore-deps]', '', $unloadCss);
752
+ $this->ignoreChildrenHandlesOnTheFly['styles'][] = $unloadCss;
753
+ }
754
+
755
+ $cssHandles[] = $unloadCss;
756
+ }
757
+ }
758
+ }
759
+ }
760
+
761
+ return $cssHandles;
762
+ }
763
+
764
+ /**
765
+ * Alter JS list marked for dequeue
766
+ *
767
+ * @param $jsHandles
768
+ *
769
+ * @return mixed
770
+ */
771
+ public function filterJsOnTheFly($jsHandles)
772
+ {
773
+ if (isset($_GET['wpacu_unload_js']) && $_GET['wpacu_unload_js']) {
774
+ $unloadJs = $_GET['wpacu_unload_js'];
775
+
776
+ if (strpos($unloadJs, ',') === false) {
777
+ if (strpos($unloadJs, '[ignore-deps]') !== false) {
778
+ $unloadJs = str_replace('[ignore-deps]', '', $unloadJs);
779
+ $this->ignoreChildrenHandlesOnTheFly['scripts'][] = $unloadJs;
780
+ }
781
+
782
+ $jsHandles[] = $unloadJs;
783
+ } else {
784
+ $unloadCssList = explode(',', $unloadJs);
785
+
786
+ foreach ($unloadCssList as $unloadJs) {
787
+ $unloadJs = trim($unloadJs);
788
+
789
+ if ($unloadJs) {
790
+ if (strpos($unloadJs, '[ignore-deps]') !== false) {
791
+ $unloadJs = str_replace('[ignore-deps]', '', $unloadJs);
792
+ $this->ignoreChildrenHandlesOnTheFly['scripts'][] = $unloadJs;
793
+ }
794
+
795
+ $jsHandles[] = $unloadJs;
796
+ }
797
+ }
798
+ }
799
+ }
800
+
801
+ return $jsHandles;
802
+ }
803
+
804
  /**
805
  * @param string $type
806
  * @param string $postId
901
  return $existingList;
902
  }
903
 
904
+ /**
905
+ * @return array
906
+ */
907
+ public function getHandleNotes()
908
+ {
909
+ $handleNotes = array('styles' => array(), 'scripts' => array());
910
+
911
+ $handleNotesListJson = get_option(WPACU_PLUGIN_ID . '_global_data');
912
+
913
+ if ($handleNotesListJson) {
914
+ $handleNotesList = @json_decode($handleNotesListJson, true);
915
+
916
+ // Issues with decoding the JSON file? Return an empty list
917
+ if (Misc::jsonLastError() !== JSON_ERROR_NONE) {
918
+ return $handleNotes;
919
+ }
920
+
921
+ // Are new positions set for styles and scripts?
922
+ foreach (array('styles', 'scripts') as $assetKey) {
923
+ if ( isset( $handleNotesList[$assetKey]['notes'] ) && ! empty( $handleNotesList[$assetKey]['notes'] ) ) {
924
+ $handleNotes[$assetKey] = $handleNotesList[$assetKey]['notes'];
925
+ }
926
+ }
927
+ }
928
+
929
+ return $handleNotes;
930
+ }
931
+
932
+ /**
933
+ * @return array
934
+ */
935
+ public function getIgnoreChildren()
936
+ {
937
+ if (empty($this->ignoreChildren)) {
938
+ $ignoreChildListJson = get_option(WPACU_PLUGIN_ID . '_global_data');
939
+
940
+ if ($ignoreChildListJson) {
941
+ $ignoreChildList = @json_decode($ignoreChildListJson, true);
942
+
943
+ // Issues with decoding the JSON file? Return an empty list
944
+ if (Misc::jsonLastError() !== JSON_ERROR_NONE) {
945
+ return $this->ignoreChildren;
946
+ }
947
+
948
+ // Are ignore "children" rules set for styles and scripts?
949
+ foreach (array('styles', 'scripts') as $assetKey) {
950
+ if (isset($ignoreChildList[$assetKey]['ignore_child']) && $ignoreChildList[$assetKey]['ignore_child']) {
951
+ $this->ignoreChildren[$assetKey] = $ignoreChildList[$assetKey]['ignore_child'];
952
+ }
953
+ }
954
+ }
955
+ }
956
+
957
+ return $this->ignoreChildren;
958
+ }
959
+
960
+ /**
961
+ * @param $ignoreChildParentList
962
+ *
963
+ * @return mixed
964
+ */
965
+ public function filterIgnoreChildParentList($ignoreChildParentList)
966
+ {
967
+ if (isset($this->ignoreChildrenHandlesOnTheFly['styles']) && ! empty($this->ignoreChildrenHandlesOnTheFly['styles'])) {
968
+ foreach ($this->ignoreChildrenHandlesOnTheFly['styles'] as $cssHandle) {
969
+ $ignoreChildParentList['styles'][$cssHandle] = 1;
970
+ }
971
+ }
972
+
973
+ if (isset($this->ignoreChildrenHandlesOnTheFly['scripts']) && ! empty($this->ignoreChildrenHandlesOnTheFly['scripts'])) {
974
+ foreach ($this->ignoreChildrenHandlesOnTheFly['scripts'] as $jsHandle) {
975
+ $ignoreChildParentList['scripts'][$jsHandle] = 1;
976
+ }
977
+ }
978
+
979
+ return $ignoreChildParentList;
980
+ }
981
+
982
  /**
983
  *
984
  */
1329
  }
1330
  // [/wpacu_lite]
1331
 
1332
+ $data['handle_notes'] = $this->getHandleNotes();
1333
+ $data['ignore_child'] = $this->getIgnoreChildren();
1334
+
1335
  $this->parseTemplate('settings-frontend', $data, true);
1336
  } elseif ($isDashboardEditView) {
1337
  // AJAX call (not the classic WP one) from the WP Dashboard
1502
 
1503
  $data['all_deps'] = $this->getAllDeps($data['all']);
1504
 
1505
+ $data['handle_notes'] = $this->getHandleNotes();
1506
+ $data['ignore_child'] = $this->getIgnoreChildren();
1507
+
1508
  $this->parseTemplate('meta-box-loaded', $data, true);
1509
 
1510
  exit;
classes/Menu.php CHANGED
@@ -30,6 +30,8 @@ class Menu
30
  header('Location: '.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_go_pro');
31
  exit();
32
  }
 
 
33
  }
34
 
35
  /**
@@ -45,35 +47,35 @@ class Menu
45
  add_menu_page(
46
  __('Asset CleanUp', 'wp-asset-clean-up'),
47
  __('Asset CleanUp', 'wp-asset-clean-up'),
48
- self::$_capability,
49
  self::$_slug,
50
  array(new Info, 'gettingStarted'),
51
  WPACU_PLUGIN_URL.'/assets/icons/icon-asset-cleanup.png'
52
  );
53
 
54
- add_submenu_page(
55
- self::$_slug,
56
- __('CSS &amp; JS Manager', 'wp-asset-clean-up'),
57
- __('CSS &amp; JS Manager', 'wp-asset-clean-up'),
58
- self::$_capability,
59
- WPACU_PLUGIN_ID . '_assets_manager',
60
- array(new AssetsPagesManager, 'page')
61
- );
62
-
63
  add_submenu_page(
64
  self::$_slug,
65
  __('Settings', 'wp-asset-clean-up'),
66
  __('Settings', 'wp-asset-clean-up'),
67
- self::$_capability,
68
  WPACU_PLUGIN_ID . '_settings',
69
  array(new Settings, 'settingsPage')
70
  );
71
 
 
 
 
 
 
 
 
 
 
72
  add_submenu_page(
73
  self::$_slug,
74
  __('Bulk Changes', 'wp-asset-clean-up'),
75
  __('Bulk Changes', 'wp-asset-clean-up'),
76
- self::$_capability,
77
  WPACU_PLUGIN_ID . '_bulk_unloads',
78
  array(new BulkUnloads, 'pageBulkUnloads')
79
  );
@@ -82,7 +84,7 @@ class Menu
82
  self::$_slug,
83
  __('Tools', 'wp-asset-clean-up'),
84
  __('Tools', 'wp-asset-clean-up'),
85
- self::$_capability,
86
  WPACU_PLUGIN_ID . '_tools',
87
  array(new Tools, 'toolsPage')
88
  );
@@ -92,7 +94,7 @@ class Menu
92
  self::$_slug,
93
  __('License', 'wp-asset-clean-up'),
94
  __('License', 'wp-asset-clean-up'),
95
- self::$_capability,
96
  WPACU_PLUGIN_ID . '_license',
97
  array(new Info, 'license')
98
  );
@@ -102,7 +104,7 @@ class Menu
102
  self::$_slug,
103
  __('Help', 'wp-asset-clean-up'),
104
  __('Help', 'wp-asset-clean-up'),
105
- self::$_capability,
106
  WPACU_PLUGIN_ID . '_get_help',
107
  array(new Info, 'help')
108
  );
@@ -112,7 +114,7 @@ class Menu
112
  self::$_slug,
113
  __('Go Pro', 'wp-asset-clean-up'),
114
  __('Go Pro', 'wp-asset-clean-up') . ' <span style="font-size: 16px;" class="dashicons dashicons-star-filled"></span>',
115
- self::$_capability,
116
  WPACU_PLUGIN_ID . '_go_pro',
117
  function() {}
118
  );
@@ -121,7 +123,7 @@ class Menu
121
  // For easier navigation
122
  $GLOBALS['submenu']['options-general.php'][] = array(
123
  __('Asset CleanUp', 'wp-asset-clean-up'),
124
- self::$_capability,
125
  admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings'),
126
  __('Asset CleanUp', 'wp-asset-clean-up'),
127
  );
@@ -135,6 +137,48 @@ class Menu
135
  */
136
  public static function userCanManageAssets()
137
  {
138
- return current_user_can(self::$_capability) && current_user_can('activate_plugins');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  }
140
  }
30
  header('Location: '.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_go_pro');
31
  exit();
32
  }
33
+
34
+ add_action('admin_page_access_denied', array($this, 'pluginPagesAccessDenied'));
35
  }
36
 
37
  /**
47
  add_menu_page(
48
  __('Asset CleanUp', 'wp-asset-clean-up'),
49
  __('Asset CleanUp', 'wp-asset-clean-up'),
50
+ self::getAccessCapability(),
51
  self::$_slug,
52
  array(new Info, 'gettingStarted'),
53
  WPACU_PLUGIN_URL.'/assets/icons/icon-asset-cleanup.png'
54
  );
55
 
 
 
 
 
 
 
 
 
 
56
  add_submenu_page(
57
  self::$_slug,
58
  __('Settings', 'wp-asset-clean-up'),
59
  __('Settings', 'wp-asset-clean-up'),
60
+ self::getAccessCapability(),
61
  WPACU_PLUGIN_ID . '_settings',
62
  array(new Settings, 'settingsPage')
63
  );
64
 
65
+ add_submenu_page(
66
+ self::$_slug,
67
+ __('CSS/JS Load Manager', 'wp-asset-clean-up'),
68
+ __('CSS/JS Load Manager', 'wp-asset-clean-up'),
69
+ self::getAccessCapability(),
70
+ WPACU_PLUGIN_ID . '_assets_manager',
71
+ array(new AssetsPagesManager, 'page')
72
+ );
73
+
74
  add_submenu_page(
75
  self::$_slug,
76
  __('Bulk Changes', 'wp-asset-clean-up'),
77
  __('Bulk Changes', 'wp-asset-clean-up'),
78
+ self::getAccessCapability(),
79
  WPACU_PLUGIN_ID . '_bulk_unloads',
80
  array(new BulkUnloads, 'pageBulkUnloads')
81
  );
84
  self::$_slug,
85
  __('Tools', 'wp-asset-clean-up'),
86
  __('Tools', 'wp-asset-clean-up'),
87
+ self::getAccessCapability(),
88
  WPACU_PLUGIN_ID . '_tools',
89
  array(new Tools, 'toolsPage')
90
  );
94
  self::$_slug,
95
  __('License', 'wp-asset-clean-up'),
96
  __('License', 'wp-asset-clean-up'),
97
+ self::getAccessCapability(),
98
  WPACU_PLUGIN_ID . '_license',
99
  array(new Info, 'license')
100
  );
104
  self::$_slug,
105
  __('Help', 'wp-asset-clean-up'),
106
  __('Help', 'wp-asset-clean-up'),
107
+ self::getAccessCapability(),
108
  WPACU_PLUGIN_ID . '_get_help',
109
  array(new Info, 'help')
110
  );
114
  self::$_slug,
115
  __('Go Pro', 'wp-asset-clean-up'),
116
  __('Go Pro', 'wp-asset-clean-up') . ' <span style="font-size: 16px;" class="dashicons dashicons-star-filled"></span>',
117
+ self::getAccessCapability(),
118
  WPACU_PLUGIN_ID . '_go_pro',
119
  function() {}
120
  );
123
  // For easier navigation
124
  $GLOBALS['submenu']['options-general.php'][] = array(
125
  __('Asset CleanUp', 'wp-asset-clean-up'),
126
+ self::getAccessCapability(),
127
  admin_url( 'admin.php?page=' . WPACU_PLUGIN_ID . '_settings'),
128
  __('Asset CleanUp', 'wp-asset-clean-up'),
129
  );
137
  */
138
  public static function userCanManageAssets()
139
  {
140
+ // Has self::$_capability been changed? Just user current_user_can()
141
+ if (self::getAccessCapability() !== self::$_capability) {
142
+ return current_user_can(self::getAccessCapability());
143
+ }
144
+
145
+ // self::$_capability default value; also check if the user can activate plugins
146
+ return current_user_can(self::getAccessCapability()) && current_user_can('activate_plugins');
147
+ }
148
+
149
+ /**
150
+ * Here self::$_capability can be overridden
151
+ *
152
+ * @return mixed|void
153
+ */
154
+ public static function getAccessCapability()
155
+ {
156
+ return apply_filters('wpacu_access_role', self::$_capability);
157
+ }
158
+
159
+ /**
160
+ * Message to show if the user does not have self::$_capability role and tries to access a plugin's page
161
+ */
162
+ public function pluginPagesAccessDenied()
163
+ {
164
+ if ( ! (isset($_GET['page']) && strpos($_GET['page'], WPACU_PLUGIN_ID . '_') === 0) ) {
165
+ // Not an Asset CleanUp page
166
+ return;
167
+ }
168
+
169
+ $userMeta = get_userdata(get_current_user_id());
170
+ $userRoles = $userMeta->roles;
171
+
172
+ wp_die(
173
+ __('Sorry, you are not allowed to access this page.').'<br /><br />'.
174
+ sprintf(__('Asset CleanUp requires "%s" role and the ability to activate plugins in order to access its pages.', 'wp-asset-clean-up'), '<span style="color: green; font-weight: bold;">'.self::getAccessCapability().'</span>').'<br />'.
175
+ sprintf(__('Your current role(s): <strong>%s</strong>', 'wp-asset-clean-up'), implode(', ', $userRoles)).'<br /><br />'.
176
+ __('The value (in green color) can be changed if you use the following snippet in functions.php (within your theme/child theme or a custom plugin):').'<br />'.
177
+ '<p style="margin: -10px 0 0;"><code style="background: #f2f3ea; padding: 5px;">add_filter(\'wpacu_access_role\', function($role) { return \'your_role_here\'; });</code></p>'.
178
+ '<p>If the snippet is not used, it will default to "administrator".</p>'.
179
+ '<p>Possible values: <strong>manage_options</strong>, <strong>activate_plugins</strong>, <strong>manager</strong> etc.</p>'.
180
+ '<p>Read more: <a target="_blank" href="https://wordpress.org/support/article/roles-and-capabilities/#summary-of-roles">https://wordpress.org/support/article/roles-and-capabilities/#summary-of-roles</a></p>',
181
+ 403
182
+ );
183
  }
184
  }
classes/Misc.php CHANGED
@@ -419,6 +419,25 @@ class Misc
419
  return $defaultValue;
420
  }
421
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
  /**
423
  * @param $optionName
424
  * @param $optionValue
@@ -600,36 +619,17 @@ class Misc
600
  }
601
 
602
  /**
603
- * @return array
604
- */
605
- public function allCssHandles()
606
- {
607
- global $wp_styles;
608
-
609
- $allCssHandles = array();
610
-
611
- if (isset($wp_styles->registered) && ! empty($wp_styles->registered)) {
612
- $allCssHandles = array_keys($wp_styles->registered);
613
- }
614
-
615
- return $allCssHandles;
616
- }
617
-
618
- /**
619
- * @return array
620
  */
621
- public function allJsHandles()
622
- {
623
- global $wp_scripts;
624
-
625
- $allJsHandles = array();
626
-
627
- if (isset($wp_scripts->registered) && ! empty($wp_scripts->registered)) {
628
- $allJsHandles = array_keys($wp_scripts->registered);
629
- }
630
 
631
- return $allJsHandles;
632
- }
633
 
634
  /**
635
  * Triggers only in the front-end view (e.g. Homepage URL, /contact/, /about/ etc.)
419
  return $defaultValue;
420
  }
421
 
422
+ /**
423
+ * @param $requestMethod
424
+ * @param $key
425
+ *
426
+ * @return bool|mixed
427
+ */
428
+ public static function isValidRequest($requestMethod, $key)
429
+ {
430
+ if ($requestMethod === 'post' && $key && isset($_POST[$key]) && ! empty($_POST[$key])) {
431
+ return true;
432
+ }
433
+
434
+ if ($requestMethod === 'get' && $key && isset($_GET[$key]) && ! empty($_GET[$key])) {
435
+ return true;
436
+ }
437
+
438
+ return false;
439
+ }
440
+
441
  /**
442
  * @param $optionName
443
  * @param $optionValue
619
  }
620
 
621
  /**
622
+ * @return mixed|string
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
623
  */
624
+ public static function getSimpleCustomCss()
625
+ {
626
+ $sccssOptions = get_option('sccss_settings');
627
+ $sccssRawContent = isset($sccssOptions['sccss-content']) ? $sccssOptions['sccss-content'] : '';
628
+ $cssContent = wp_kses($sccssRawContent, array('\'', '\"'));
629
+ $cssContent = str_replace('&gt;', '>', $cssContent);
 
 
 
630
 
631
+ return trim($cssContent);
632
+ }
633
 
634
  /**
635
  * Triggers only in the front-end view (e.g. Homepage URL, /contact/, /about/ etc.)
classes/OptimiseAssets/MinifyCss.php CHANGED
@@ -18,22 +18,11 @@ class MinifyCss
18
  public function __construct()
19
  {
20
  add_action('wp_footer', function() {
21
- if ( array_key_exists('wpacu_no_css_minify', $_GET) || // not on query string request (debugging purposes)
22
- is_admin() || // not for Dashboard view
23
- (! Main::instance()->settings['minify_loaded_css']) || // Minify CSS has to be Enabled
24
- (Main::instance()->settings['test_mode'] && ! Menu::userCanManageAssets()) ) { // Does not trigger if "Test Mode" is Enabled
25
  return;
26
  }
27
 
28
- if (defined('WPACU_CURRENT_PAGE_ID') && WPACU_CURRENT_PAGE_ID > 0 && is_singular()) {
29
- // If "Do not minify CSS on this page" is checked in "Asset CleanUp: Options" side meta box
30
- $pageOptions = MetaBoxes::getPageOptions( WPACU_CURRENT_PAGE_ID );
31
-
32
- if ( isset( $pageOptions['no_css_minify'] ) && $pageOptions['no_css_minify'] ) {
33
- return;
34
- }
35
- }
36
-
37
  global $wp_styles;
38
 
39
  $allStylesHandles = wp_cache_get('wpacu_all_styles_handles');
@@ -107,6 +96,7 @@ class MinifyCss
107
 
108
  if ($linkSourceTag !== $newLinkSourceTag) {
109
  // Strip ?ver=
 
110
  $toStrip = Misc::extractBetween($newLinkSourceTag, '?ver=', ' ');
111
 
112
  if (in_array(substr($toStrip, -1), array('"', "'"))) {
@@ -167,34 +157,103 @@ class MinifyCss
167
  $src = site_url() . $src;
168
  }
169
 
170
- $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
 
 
 
 
 
 
 
 
 
 
171
 
172
- if (! file_exists($localAssetPath)) {
173
- return array();
174
- }
175
 
176
- $assetHref = $value->src;
177
 
178
- $posLastSlash = strrpos($assetHref, '/');
179
- $pathToAssetDir = substr($assetHref, 0, $posLastSlash);
180
 
181
- $parseUrl = parse_url($pathToAssetDir);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
 
183
- if (isset($parseUrl['scheme']) && $parseUrl['scheme'] !== '') {
184
- $pathToAssetDir = str_replace(
185
- array('http://'.$parseUrl['host'], 'https://'.$parseUrl['host']),
186
- '',
187
- $pathToAssetDir
188
- );
189
- } elseif (strpos($pathToAssetDir, '//') === 0) {
190
- $pathToAssetDir = str_replace(
191
- array('//'.$parseUrl['host'], '//'.$parseUrl['host']),
192
- '',
193
- $pathToAssetDir
194
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  }
196
 
197
- $cssContent = @file_get_contents($localAssetPath);
198
  $cssContent = OptimizeCss::maybeFixCssBackgroundUrls($cssContent, $pathToAssetDir . '/'); // Minify it and save it to /wp-content/cache/css/min/
199
 
200
  $cssContent = self::applyMinification($cssContent);
@@ -208,7 +267,7 @@ class MinifyCss
208
  $newLocalPathUrl = WP_CONTENT_URL . $newFilePathUri; // Full URL path
209
 
210
  if ($cssContent) {
211
- $cssContent = '/*** Source (before minification): ' . str_replace(ABSPATH, '/', $localAssetPath) . ' ***/' . "\n" . $cssContent;
212
  }
213
 
214
  $saveFile = @file_put_contents($newLocalPath, $cssContent);
@@ -218,7 +277,7 @@ class MinifyCss
218
  }
219
 
220
  $saveValues = array(
221
- 'source_uri' => OptimizeCommon::getHrefRelPath($value->src),
222
  'min_uri' => OptimizeCommon::getHrefRelPath($newLocalPathUrl),
223
  'ver' => $ver
224
  );
@@ -227,7 +286,7 @@ class MinifyCss
227
  set_transient($transientName, json_encode($saveValues));
228
 
229
  return array(
230
- OptimizeCommon::getHrefRelPath($value->src),
231
  OptimizeCommon::getHrefRelPath($newLocalPathUrl),
232
  );
233
  }
@@ -316,4 +375,35 @@ class MinifyCss
316
 
317
  return false;
318
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  }
18
  public function __construct()
19
  {
20
  add_action('wp_footer', function() {
21
+ // Do not continue if "Minify CSS" is not enabled (in "Settings" or on the fly)
22
+ if (! self::isMinifyCssEnabled()) {
 
 
23
  return;
24
  }
25
 
 
 
 
 
 
 
 
 
 
26
  global $wp_styles;
27
 
28
  $allStylesHandles = wp_cache_get('wpacu_all_styles_handles');
96
 
97
  if ($linkSourceTag !== $newLinkSourceTag) {
98
  // Strip ?ver=
99
+ $newLinkSourceTag = str_replace('&#038;ver=', '?ver=', $newLinkSourceTag);
100
  $toStrip = Misc::extractBetween($newLinkSourceTag, '?ver=', ' ');
101
 
102
  if (in_array(substr($toStrip, -1), array('"', "'"))) {
157
  $src = site_url() . $src;
158
  }
159
 
160
+ if ($value->handle === 'sccss_style' && in_array('simple-custom-css/simple-custom-css.php', apply_filters('active_plugins', get_option('active_plugins')))) {
161
+ /*
162
+ * Special Case: "Simple Custom CSS" Plugin
163
+ *
164
+ * /?sccss=1
165
+ *
166
+ * As it is (no minification or optimization), it adds extra load time to the page
167
+ * as the CSS is read via PHP and all the WP environment is loading
168
+ */
169
+ $pathToAssetDir = '';
170
+ $sourceBeforeMin = $value->src;
171
 
172
+ $cssContent = Misc::getSimpleCustomCss();
 
 
173
 
174
+ $newLocalSrc = WP_CONTENT_DIR . OptimizeCss::getRelPathCssCacheDir() . 'sccss_style.css';
175
 
176
+ // Append CSS content to make it cacheable (exception)
177
+ $cssContent = '/*! Simple Custom CSS */' ."\n". $cssContent;
178
 
179
+ if (! file_put_contents($newLocalSrc, $cssContent)) {
180
+ return array();
181
+ }
182
+ // strpos($src, '.css?ver=') === false
183
+ } elseif (strpos($src, '/?custom-css=') !== false) {
184
+ /*
185
+ * JetPack Custom CSS
186
+ * /?custom-css
187
+ */
188
+ global $wp_version;
189
+
190
+ $pathToAssetDir = '';
191
+ $sourceBeforeMin = $value->src;
192
+
193
+ if (! OptimizeCommon::isSourceFromSameHost($sourceBeforeMin)) {
194
+ return array();
195
+ }
196
 
197
+ $response = wp_remote_get($sourceBeforeMin);
198
+ $responseCode = wp_remote_retrieve_response_code($response);
199
+
200
+ if ($responseCode !== 200) {
201
+ return array();
202
+ }
203
+
204
+ $cssContent = wp_remote_retrieve_body($response);
205
+
206
+ $listSrcAfterSlash = str_replace('/?', '', strrchr($src, '/?'));
207
+
208
+ parse_str($listSrcAfterSlash, $outputSrcParse);
209
+
210
+ $customCssVersion = isset($outputSrcParse['custom-css']) ? $outputSrcParse['custom-css'] : $wp_version;
211
+ $extraVersion = isset($value->ver) ? '_'.$value->ver : '';
212
+
213
+ $newLocalSrc = WP_CONTENT_DIR . OptimizeCss::getRelPathCssCacheDir() . 'custom_css_' . $customCssVersion . $extraVersion . '.css';
214
+
215
+ // Append CSS content to make it cacheable (exception)
216
+ $cssContent = '/*! JetPack Custom CSS */' ."\n". $cssContent;
217
+
218
+ if (! file_put_contents($newLocalSrc, $cssContent)) {
219
+ return array();
220
+ }
221
+ } else {
222
+ /*
223
+ * All the CSS that exists as a .css file within the plugins/theme
224
+ */
225
+ $localAssetPath = OptimizeCommon::getLocalAssetPath($src, 'css');
226
+
227
+ if (! file_exists($localAssetPath)) {
228
+ return array();
229
+ }
230
+
231
+ $assetHref = $src;
232
+
233
+ $posLastSlash = strrpos($assetHref, '/');
234
+ $pathToAssetDir = substr($assetHref, 0, $posLastSlash);
235
+
236
+ $parseUrl = parse_url($pathToAssetDir);
237
+
238
+ if (isset($parseUrl['scheme']) && $parseUrl['scheme'] !== '') {
239
+ $pathToAssetDir = str_replace(
240
+ array('http://' . $parseUrl['host'], 'https://' . $parseUrl['host']),
241
+ '',
242
+ $pathToAssetDir
243
+ );
244
+ } elseif (strpos($pathToAssetDir, '//') === 0) {
245
+ $pathToAssetDir = str_replace(
246
+ array('//' . $parseUrl['host'], '//' . $parseUrl['host']),
247
+ '',
248
+ $pathToAssetDir
249
+ );
250
+ }
251
+
252
+ $cssContent = @file_get_contents($localAssetPath);
253
+
254
+ $sourceBeforeMin = str_replace(ABSPATH, '/', $localAssetPath);
255
  }
256
 
 
257
  $cssContent = OptimizeCss::maybeFixCssBackgroundUrls($cssContent, $pathToAssetDir . '/'); // Minify it and save it to /wp-content/cache/css/min/
258
 
259
  $cssContent = self::applyMinification($cssContent);
267
  $newLocalPathUrl = WP_CONTENT_URL . $newFilePathUri; // Full URL path
268
 
269
  if ($cssContent) {
270
+ $cssContent = '/*** Source (before minification): ' . $sourceBeforeMin . ' ***/' . "\n" . $cssContent;
271
  }
272
 
273
  $saveFile = @file_put_contents($newLocalPath, $cssContent);
277
  }
278
 
279
  $saveValues = array(
280
+ 'source_uri' => OptimizeCommon::getHrefRelPath($src),
281
  'min_uri' => OptimizeCommon::getHrefRelPath($newLocalPathUrl),
282
  'ver' => $ver
283
  );
286
  set_transient($transientName, json_encode($saveValues));
287
 
288
  return array(
289
+ OptimizeCommon::getHrefRelPath($src),
290
  OptimizeCommon::getHrefRelPath($newLocalPathUrl),
291
  );
292
  }
375
 
376
  return false;
377
  }
378
+
379
+ /**
380
+ * @return bool
381
+ */
382
+ public static function isMinifyCssEnabled()
383
+ {
384
+ // Request Minify On The Fly
385
+ // It will preview the page with CSS minified
386
+ // Only if the admin is logged-in as it uses more resources (CPU / Memory)
387
+ if (array_key_exists('wpacu_css_minify', $_GET) && Menu::userCanManageAssets()) {
388
+ return true;
389
+ }
390
+
391
+ if ( array_key_exists('wpacu_no_css_minify', $_GET) || // not on query string request (debugging purposes)
392
+ is_admin() || // not for Dashboard view
393
+ (! Main::instance()->settings['minify_loaded_css']) || // Minify CSS has to be Enabled
394
+ (Main::instance()->settings['test_mode'] && ! Menu::userCanManageAssets()) ) { // Does not trigger if "Test Mode" is Enabled
395
+ return false;
396
+ }
397
+
398
+ if (defined('WPACU_CURRENT_PAGE_ID') && WPACU_CURRENT_PAGE_ID > 0 && is_singular()) {
399
+ // If "Do not minify CSS on this page" is checked in "Asset CleanUp: Options" side meta box
400
+ $pageOptions = MetaBoxes::getPageOptions( WPACU_CURRENT_PAGE_ID );
401
+
402
+ if ( isset( $pageOptions['no_css_minify'] ) && $pageOptions['no_css_minify'] ) {
403
+ return false;
404
+ }
405
+ }
406
+
407
+ return true;
408
+ }
409
  }
classes/OptimiseAssets/MinifyJs.php CHANGED
@@ -22,22 +22,11 @@ class MinifyJs
22
  * STEP 1: Prepare minify-able caching list
23
  */
24
  add_action('wp_print_footer_scripts', function() {
25
- if ( array_key_exists('wpacu_no_js_minify', $_GET) || // not on query string request (debugging purposes)
26
- is_admin() || // not for Dashboard view
27
- (! Main::instance()->settings['minify_loaded_js']) || // Minify JS has to be Enabled
28
- (Main::instance()->settings['test_mode'] && ! Menu::userCanManageAssets()) ) { // Does not trigger if "Test Mode" is Enabled
29
  return;
30
  }
31
 
32
- if (defined('WPACU_CURRENT_PAGE_ID') && WPACU_CURRENT_PAGE_ID > 0 && is_singular()) {
33
- // If "Do not minify JS on this page" is checked in "Asset CleanUp: Options" side meta box
34
- $pageOptions = MetaBoxes::getPageOptions( WPACU_CURRENT_PAGE_ID );
35
-
36
- if ( isset( $pageOptions['no_js_minify'] ) && $pageOptions['no_js_minify'] ) {
37
- return;
38
- }
39
- }
40
-
41
  global $wp_scripts;
42
 
43
  $jsMinifyList = array();
@@ -441,4 +430,35 @@ class MinifyJs
441
 
442
  return false;
443
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
  }
22
  * STEP 1: Prepare minify-able caching list
23
  */
24
  add_action('wp_print_footer_scripts', function() {
25
+ // Do not continue if "Minify JS" is not enabled (in "Settings" or on the fly)
26
+ if (! self::isMinifyJsEnabled()) {
 
 
27
  return;
28
  }
29
 
 
 
 
 
 
 
 
 
 
30
  global $wp_scripts;
31
 
32
  $jsMinifyList = array();
430
 
431
  return false;
432
  }
433
+
434
+ /**
435
+ * @return bool
436
+ */
437
+ public static function isMinifyJsEnabled()
438
+ {
439
+ // Request Minify On The Fly
440
+ // It will preview the page with JS minified
441
+ // Only if the admin is logged-in as it uses more resources (CPU / Memory)
442
+ if (array_key_exists('wpacu_js_minify', $_GET) && Menu::userCanManageAssets()) {
443
+ return true;
444
+ }
445
+
446
+ if ( array_key_exists('wpacu_no_js_minify', $_GET) || // not on query string request (debugging purposes)
447
+ is_admin() || // not for Dashboard view
448
+ (! Main::instance()->settings['minify_loaded_js']) || // Minify JS has to be Enabled
449
+ (Main::instance()->settings['test_mode'] && ! Menu::userCanManageAssets()) ) { // Does not trigger if "Test Mode" is Enabled
450
+ return false;
451
+ }
452
+
453
+ if (defined('WPACU_CURRENT_PAGE_ID') && WPACU_CURRENT_PAGE_ID > 0 && is_singular()) {
454
+ // If "Do not minify JS on this page" is checked in "Asset CleanUp: Options" side meta box
455
+ $pageOptions = MetaBoxes::getPageOptions( WPACU_CURRENT_PAGE_ID );
456
+
457
+ if ( isset( $pageOptions['no_js_minify'] ) && $pageOptions['no_js_minify'] ) {
458
+ return false;
459
+ }
460
+ }
461
+
462
+ return true;
463
+ }
464
  }
classes/OptimiseAssets/OptimizeCommon.php CHANGED
@@ -159,31 +159,9 @@ class OptimizeCommon
159
  */
160
  public static function getLocalAssetPath($href, $assetType)
161
  {
162
- // Check the host name
163
- $siteDbUrl = get_option('siteurl');
164
- $siteUrlHost = strtolower(parse_url($siteDbUrl, PHP_URL_HOST));
165
-
166
- if (strpos($href, '//') === 0) {
167
- list ($urlPrefix) = explode('//', $siteDbUrl);
168
- $href = $urlPrefix . $href;
169
- }
170
-
171
- $externalHostsList = array(
172
- 'fonts.googleapis.com'
173
- );
174
-
175
- /*
176
- * Validate it first
177
- */
178
- $assetHost = strtolower(parse_url($href, PHP_URL_HOST));
179
 
180
- if (in_array($assetHost, $externalHostsList)) {
181
- return false;
182
- }
183
-
184
- // Different host name (most likely 3rd party one such as fonts.googleapis.com or an external CDN)
185
- // Do not add it to the combine list
186
- if ($assetHost !== $siteUrlHost) {
187
  return false;
188
  }
189
 
@@ -213,6 +191,44 @@ class OptimizeCommon
213
  return false;
214
  }
215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  /**
217
  * @param $href
218
  *
@@ -297,7 +313,7 @@ class OptimizeCommon
297
  return $optionValueArray;
298
  }
299
 
300
- if ($assetType === 'js' && ! empty( $optionValueArray )) {
301
  return $optionValueArray;
302
  }
303
  }
159
  */
160
  public static function getLocalAssetPath($href, $assetType)
161
  {
162
+ $href = self::isSourceFromSameHost($href);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
 
164
+ if (! $href) {
 
 
 
 
 
 
165
  return false;
166
  }
167
 
191
  return false;
192
  }
193
 
194
+ /**
195
+ * @param $href
196
+ *
197
+ * @return bool
198
+ */
199
+ public static function isSourceFromSameHost($href)
200
+ {
201
+ // Check the host name
202
+ $siteDbUrl = get_option('siteurl');
203
+ $siteUrlHost = strtolower(parse_url($siteDbUrl, PHP_URL_HOST));
204
+
205
+ if (strpos($href, '//') === 0) {
206
+ list ($urlPrefix) = explode('//', $siteDbUrl);
207
+ $href = $urlPrefix . $href;
208
+ }
209
+
210
+ $externalHostsList = array(
211
+ 'fonts.googleapis.com'
212
+ );
213
+
214
+ /*
215
+ * Validate it first
216
+ */
217
+ $assetHost = strtolower(parse_url($href, PHP_URL_HOST));
218
+
219
+ if (in_array($assetHost, $externalHostsList)) {
220
+ return false;
221
+ }
222
+
223
+ // Different host name (most likely 3rd party one such as fonts.googleapis.com or an external CDN)
224
+ // Do not add it to the combine list
225
+ if ($assetHost !== $siteUrlHost) {
226
+ return false;
227
+ }
228
+
229
+ return $href;
230
+ }
231
+
232
  /**
233
  * @param $href
234
  *
313
  return $optionValueArray;
314
  }
315
 
316
+ if ($assetType === 'js' && ! empty($optionValueArray)) {
317
  return $optionValueArray;
318
  }
319
  }
classes/OptimiseAssets/OptimizeCss.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  namespace WpAssetCleanUp\OptimiseAssets;
3
 
 
4
  use WpAssetCleanUp\Main;
5
  use WpAssetCleanUp\Menu;
6
  use WpAssetCleanUp\MetaBoxes;
@@ -42,7 +43,17 @@ class OptimizeCss
42
  return $htmlSource;
43
  }
44
 
45
- if (Main::instance()->settings['minify_loaded_css']) {
 
 
 
 
 
 
 
 
 
 
46
  // 'wpacu_css_minify_list' caching list is also checked; if it's empty, no minification is made
47
  $htmlSource = MinifyCss::updateHtmlSourceOriginalToMinCss($htmlSource);
48
  }
1
  <?php
2
  namespace WpAssetCleanUp\OptimiseAssets;
3
 
4
+ use WpAssetCleanUp\CleanUp;
5
  use WpAssetCleanUp\Main;
6
  use WpAssetCleanUp\Menu;
7
  use WpAssetCleanUp\MetaBoxes;
43
  return $htmlSource;
44
  }
45
 
46
+ // Are there any assets unloaded where their "children" are ignored?
47
+ // Since they weren't dequeued the WP way (to avoid unloading the "children"), they will be stripped here
48
+ $ignoreChild = Main::instance()->getIgnoreChildren();
49
+
50
+ if (isset($ignoreChild['styles']) && ! empty($ignoreChild['styles'])) {
51
+ foreach ($ignoreChild['styles'] as $styleSrc) {
52
+ $htmlSource = CleanUp::cleanLinkTagFromHtmlSource($styleSrc, $htmlSource);
53
+ }
54
+ }
55
+
56
+ if (MinifyCss::isMinifyCssEnabled()) {
57
  // 'wpacu_css_minify_list' caching list is also checked; if it's empty, no minification is made
58
  $htmlSource = MinifyCss::updateHtmlSourceOriginalToMinCss($htmlSource);
59
  }
classes/OptimiseAssets/OptimizeJs.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  namespace WpAssetCleanUp\OptimiseAssets;
3
 
 
4
  use WpAssetCleanUp\Main;
5
  use WpAssetCleanUp\Menu;
6
  use WpAssetCleanUp\MetaBoxes;
@@ -43,13 +44,23 @@ class OptimizeJs
43
  return $htmlSource;
44
  }
45
 
 
 
 
 
 
 
 
 
 
 
46
  /*
47
  * #minifying
48
  * STEP 2: Load minify-able caching list and replace the original source URLs with the new cached ones
49
  */
50
- if (Main::instance()->settings['minify_loaded_js']) {
51
  // 'wpacu_js_minify_list' caching list is also checked; if it's empty, no minification is made
52
- $htmlSource = MinifyJs::updateHtmlSourceOriginalToMinJs( $htmlSource );
53
  }
54
 
55
  if ( array_key_exists('wpacu_no_js_combine', $_GET) || // not on query string request (debugging purposes)
1
  <?php
2
  namespace WpAssetCleanUp\OptimiseAssets;
3
 
4
+ use WpAssetCleanUp\CleanUp;
5
  use WpAssetCleanUp\Main;
6
  use WpAssetCleanUp\Menu;
7
  use WpAssetCleanUp\MetaBoxes;
44
  return $htmlSource;
45
  }
46
 
47
+ // Are there any assets unloaded where their "children" are ignored?
48
+ // Since they weren't dequeued the WP way (to avoid unloading the "children"), they will be stripped here
49
+ $ignoreChild = Main::instance()->getIgnoreChildren();
50
+
51
+ if (isset($ignoreChild['scripts']) && ! empty($ignoreChild['scripts'])) {
52
+ foreach ($ignoreChild['scripts'] as $scriptSrc) {
53
+ $htmlSource = CleanUp::cleanScriptTagFromHtmlSource($scriptSrc, $htmlSource);
54
+ }
55
+ }
56
+
57
  /*
58
  * #minifying
59
  * STEP 2: Load minify-able caching list and replace the original source URLs with the new cached ones
60
  */
61
+ if (MinifyJs::isMinifyJsEnabled()) {
62
  // 'wpacu_js_minify_list' caching list is also checked; if it's empty, no minification is made
63
+ $htmlSource = MinifyJs::updateHtmlSourceOriginalToMinJs($htmlSource);
64
  }
65
 
66
  if ( array_key_exists('wpacu_no_js_combine', $_GET) || // not on query string request (debugging purposes)
classes/OwnAssets.php CHANGED
@@ -8,41 +8,41 @@ namespace WpAssetCleanUp;
8
  *
9
  * @package WpAssetCleanUp
10
  */
11
- class OwnAssets
12
- {
13
- /**
14
- * @var bool
15
- */
16
- public $loadPluginAssets = false; // default
17
 
18
  /**
19
  *
20
  */
21
- public function init()
22
- {
23
- add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
24
- add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
25
 
26
- // Code only for the Dashboard
27
- add_action('admin_head', array($this, 'inlineAdminCode'));
28
 
29
- // Code for both the Dashboard and the Front-end view
30
- add_action('admin_head', array($this, 'inlineCode'));
31
- add_action('wp_head', array($this, 'inlineCode'));
32
 
33
- // Rename ?ver= to ?wpacuversion to prevent other plugins from stripping "ver"
34
- add_filter('script_loader_src', array($this, 'ownAssetLoaderSrc'));
35
- add_filter('style_loader_src', array($this, 'ownAssetLoaderSrc'));
36
- add_filter('script_loader_tag', array($this, 'ownAssetLoaderTag'), 10, 2);
37
- }
 
 
38
 
39
  /**
40
  *
41
  */
42
  public function inlineCode()
43
  {
44
- if (is_admin_bar_showing()) {
45
- ?>
46
  <style type="text/css">
47
  #wp-admin-bar-assetcleanup-parent span.dashicons {
48
  width: 15px;
@@ -75,152 +75,162 @@ class OwnAssets
75
  padding-bottom: 3px !important;
76
  }
77
  </style>
78
- <?php
79
- }
80
- }
81
 
82
  /**
83
  *
84
  */
85
  public function inlineAdminCode()
86
  {
87
- ?>
88
  <style type="text/css">
89
- .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img { width: 26px; position: absolute; left: 8px; top: -4px; }
90
- .plugin-title .opt-in-or-opt-out.wp-asset-clean-up { display: none; }
 
 
 
 
 
 
 
 
91
  </style>
92
- <?php
93
- }
94
 
95
- /**
96
- *
97
- */
98
- public function stylesAndScriptsForAdmin()
99
  {
100
- global $post;
101
 
102
- if (! Menu::userCanManageAssets()) {
103
- return;
104
- }
105
 
106
- $page = Misc::getVar('get', 'page');
107
- $getPostId = (int)Misc::getVar('get', 'post');
108
 
109
- // Only load the plugin's assets when they are needed
110
- // This an example of assets that are correctly loaded in WordPress
111
- if (isset($post->ID)) {
112
- $this->loadPluginAssets = true;
113
- }
114
 
115
- if ($getPostId > 0) {
116
- $this->loadPluginAssets = true;
117
- }
118
 
119
- if (strpos($page, WPACU_PLUGIN_ID) === 0) {
120
- $this->loadPluginAssets = true;
121
- }
122
 
123
- if (! $this->loadPluginAssets) {
124
- return;
125
- }
126
 
127
- $this->enqueueAdminStyles();
128
- $this->enqueueAdminScripts();
129
- }
130
 
131
- /**
132
- *
133
- */
134
- public function stylesAndScriptsForPublic()
135
  {
136
- // Do not print it when an AJAX call is made from the Dashboard
137
- if (isset($_POST[WPACU_LOAD_ASSETS_REQ_KEY])) {
138
- return;
139
- }
140
-
141
- // Only for the administrator with the right permission
142
- if (! Menu::userCanManageAssets()) {
143
- return;
144
- }
145
-
146
- // Is the Admin Bar not showing and "Manage in the Front-end" option is not enabled in the plugin's "Settings"?
147
- // In this case, there's no point in loading the assets below
148
- if (! is_admin_bar_showing() && ! Main::instance()->frontendShow()) {
149
- return;
150
- }
151
-
152
- // Do not load any CSS & JS belonging to Asset CleanUp if in "Elementor" preview
153
- if (Main::instance()->isFrontendEditView && array_key_exists('elementor-preview', $_GET) && $_GET['elementor-preview'] && Main::instance()->isFrontendEditView) {
154
- return;
155
- }
 
 
 
 
 
156
 
157
- $this->enqueuePublicStyles();
158
- $this->enqueuePublicScripts();
159
- }
 
 
 
 
 
160
 
161
- /**
162
- *
163
- */
164
- private function enqueueAdminStyles()
165
  {
166
- $styleRelPath = '/assets/style.min.css';
167
- wp_enqueue_style( WPACU_PLUGIN_ID . '-style', plugins_url($styleRelPath, WPACU_PLUGIN_FILE), array(), $this->_assetVer($styleRelPath));
168
- }
169
 
170
- /**
171
- *
172
- */
173
- private function enqueueAdminScripts()
174
- {
175
- global $post, $pagenow;
176
 
177
- $page = Misc::getVar('get', 'page');
178
 
179
- $getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
180
 
181
- $postId = isset($post->ID) ? $post->ID : 0;
 
 
182
 
183
- if ($getPostId > 0 && $getPostId !== $postId) {
184
- $postId = $getPostId;
185
- }
186
 
187
- if ($page === WPACU_PLUGIN_ID . '_home_page' || $postId < 1) {
188
- $postId = 0; // for home page
189
- }
190
-
191
- $scriptRelPath = '/assets/script.min.js';
192
 
193
- wp_register_script(
194
- WPACU_PLUGIN_ID . '-script',
195
- plugins_url($scriptRelPath, WPACU_PLUGIN_FILE),
196
- array('jquery'),
197
- $this->_assetVer($scriptRelPath)
198
- );
199
 
200
- // It can also be the front page URL
201
- $pageUrl = Misc::getPageUrl($postId);
202
 
203
- $svgReloadIcon = <<<HTML
204
  <svg aria-hidden="true" role="img" focusable="false" class="dashicon dashicons-cloud" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M14.9 9c1.8.2 3.1 1.7 3.1 3.5 0 1.9-1.6 3.5-3.5 3.5h-10C2.6 16 1 14.4 1 12.5 1 10.7 2.3 9.3 4.1 9 4 8.9 4 8.7 4 8.5 4 7.1 5.1 6 6.5 6c.3 0 .7.1.9.2C8.1 4.9 9.4 4 11 4c2.2 0 4 1.8 4 4 0 .4-.1.7-.1 1z"></path></svg>
205
  HTML;
206
 
207
- $wpacuObjectData = array(
208
- 'plugin_name' => WPACU_PLUGIN_ID,
209
- 'reload_icon' => $svgReloadIcon,
210
- 'reload_msg' => sprintf(__('Reloading %s CSS &amp; JS list', 'wp-asset-clean-up'), '<strong style="margin: 0 4px;">'.WPACU_PLUGIN_TITLE.'</strong>'),
211
- 'dom_get_type' => Main::$domGetType,
212
- 'start_del' => Main::START_DEL,
213
- 'end_del' => Main::END_DEL,
214
- 'ajax_url' => admin_url('admin-ajax.php'),
215
- 'post_id' => $postId, // if any
216
- 'page_url' => $pageUrl // post, page, custom post type, homepage etc.
217
- );
218
-
219
- // [wpacu_lite]
220
- $submitTicketLink = 'https://wordpress.org/support/plugin/wp-asset-clean-up';
221
- // [/wpacu_lite]
222
-
223
- $wpacuObjectData['ajax_direct_fetch_error'] = <<<HTML
 
224
  <div class="ajax-direct-call-error-area">
225
  <p class="note"><strong>Note:</strong> The checked URL returned an error when fetching the assets via AJAX call. This could be because of a firewall that is blocking the AJAX call, a redirect loop or an error in the script that is retrieving the output which could be due to an incompatibility between the plugin and the WordPress setup you are using.</p>
226
  <p>Here is the response from the call:</p>
@@ -242,101 +252,111 @@ HTML;
242
  </div>
243
  HTML;
244
 
245
- $wpacuObjectData['jquery_migration_disable_confirm_msg'] =
246
- __('Make sure to properly test your website if you unload the jQuery migration library.', 'wp-asset-clean-up')."\n\n".
247
- __('In some cases, due to old jQuery code triggered from plugins or the theme, unloading this migration library could cause those scripts not to function anymore and break some of the front-end functionality.', 'wp-asset-clean-up')."\n\n".
248
- __('If you are not sure about whether activating this option is right or not, it is better to leave it as it is (to be loaded by default) and consult with a developer.', 'wp-asset-clean-up')."\n\n".
249
- __('Confirm this action to enable the unloading or cancel to leave it loaded by default.', 'wp-asset-clean-up');
250
-
251
- $wpacuObjectData['comment_reply_disable_confirm_msg'] =
252
- __('This is worth disabling if you are NOT using the default WordPress comment system (e.g. you are using the website for business purposes, to showcase your products and you are not using it as a blog where people leave comments to your posts).', 'wp-asset-clean-up')."\n\n".
253
- __('If you are not sure about whether activating this option is right or not, it is better to leave it as it is (to be loaded by default).', 'wp-asset-clean-up')."\n\n".
254
- __('Confirm this action to enable the unloading or cancel to leave it loaded by default.', 'wp-asset-clean-up');
255
-
256
- // "Tools" - "Reset"
257
- $wpacuObjectData['reset_settings_confirm_msg'] =
258
- __('Are you sure you want to reset the settings to their default values?', 'wp-asset-clean-up')."\n\n".
259
- __('This is an irreversible action.', 'wp-asset-clean-up')."\n\n".
260
- __('Please confirm to continue or "Cancel" to abort it', 'wp-asset-clean-up');
261
-
262
- $wpacuObjectData['reset_everything_except_settings_confirm_msg'] =
263
- __('Are you sure you want to reset everything (unloads, load exceptions etc.) except settings?', 'wp-asset-clean-up')."\n\n".
264
- __('This is an irreversible action.', 'wp-asset-clean-up')."\n\n".
265
- __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
266
-
267
- $wpacuObjectData['reset_everything_confirm_msg'] =
268
- __('Are you sure you want to reset everything (settings, unloads, load exceptions etc.) to the same point it was when you first activated the plugin?', 'wp-asset-clean-up')."\n\n".
269
- __('This is an irreversible action.', 'wp-asset-clean-up')."\n\n".
270
- __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
271
-
272
- // "Tools" - "Import & Export"
273
- $wpacuObjectData['import_confirm_msg'] =
274
- __('This process is NOT reversible.', 'wp-asset-clean-up')."\n\n".
275
- __('Please make sure you have a backup (e.g. an exported JSON file) before proceeding.', 'wp-asset-clean-up')."\n\n".
276
- __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
277
-
278
- wp_localize_script(
279
- WPACU_PLUGIN_ID . '-script',
280
- 'wpacu_object',
281
- apply_filters('wpacu_object_data', $wpacuObjectData)
282
- );
283
-
284
- wp_enqueue_script(WPACU_PLUGIN_ID . '-script');
285
- }
 
 
 
 
 
 
 
 
 
 
286
 
287
- /**
288
- *
289
- */
290
- private function enqueuePublicStyles()
291
- {
292
- $styleRelPath = '/assets/style.min.css';
293
- wp_enqueue_style(WPACU_PLUGIN_ID . '-style', plugins_url($styleRelPath, WPACU_PLUGIN_FILE), array(), $this->_assetVer($styleRelPath));
294
- }
295
 
296
- /**
297
- *
298
- */
299
- public function enqueuePublicScripts()
300
- {
301
- $scriptRelPath = '/assets/script.min.js';
302
- wp_enqueue_script( WPACU_PLUGIN_ID . '-script', plugins_url($scriptRelPath, WPACU_PLUGIN_FILE), array('jquery'), $this->_assetVer($scriptRelPath), true);
303
- }
304
 
305
- /**
306
- * @param $relativePath
307
- * @return bool|false|int|string
308
- */
309
- private function _assetVer($relativePath)
310
- {
311
- $assetVer = @filemtime(dirname(WPACU_PLUGIN_FILE) . $relativePath);
312
 
313
- if (! $assetVer) {
314
- $assetVer = date('dmYHi');
315
- }
316
 
317
- return $assetVer;
318
- }
319
 
320
  /**
321
- * Prevent "?ver=" or "&ver=" from being stripped when loading plugin's own assets
322
- * It will force them to refresh whenever there's a change in either of the files
323
- *
324
  * @param $src
325
  *
326
  * @return mixed
327
  */
328
  public function ownAssetLoaderSrc($src)
329
  {
330
- if ( strpos($src, '/wp-asset-clean-up/assets/script.min.js') !== false
331
- || strpos($src, '/wp-asset-clean-up/assets/style.min.css') !== false ) {
332
- $src = str_replace(
333
- array('?ver=', '&ver='),
334
- array('?wpacuversion=', '&wpacuversion='),
335
- $src);
336
- }
337
-
338
- return $src;
339
- }
340
 
341
  /**
342
  * @param $tag
@@ -346,12 +366,83 @@ HTML;
346
  */
347
  public function ownAssetLoaderTag($tag, $handle)
348
  {
349
- // Useful in case jQuery library is deferred too (rare situations)
350
- if ($handle === WPACU_PLUGIN_ID . '-script') {
351
- $tag = str_replace(' src=', ' defer=\'defer\' src=', $tag);
352
- }
353
-
354
- return $tag;
355
- }
356
 
 
357
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  *
9
  * @package WpAssetCleanUp
10
  */
11
+ class OwnAssets {
12
+ /**
13
+ * @var bool
14
+ */
15
+ public $loadPluginAssets = false; // default
 
16
 
17
  /**
18
  *
19
  */
20
+ public function init() {
21
+ add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
22
+ add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
 
23
 
24
+ // Code only for the Dashboard
25
+ add_action('admin_head', array($this, 'inlineAdminCode'));
26
 
27
+ // Code for both the Dashboard and the Front-end view
28
+ add_action('admin_head', array($this, 'inlineCode'));
29
+ add_action('wp_head', array($this, 'inlineCode'));
30
 
31
+ add_action('admin_footer', array($this, 'inlineFooterCode'));
32
+
33
+ // Rename ?ver= to ?wpacuversion to prevent other plugins from stripping "ver"
34
+ add_filter('script_loader_src', array($this, 'ownAssetLoaderSrc'));
35
+ add_filter('style_loader_src', array($this, 'ownAssetLoaderSrc'));
36
+ add_filter('script_loader_tag', array($this, 'ownAssetLoaderTag'), 10, 2);
37
+ }
38
 
39
  /**
40
  *
41
  */
42
  public function inlineCode()
43
  {
44
+ if (is_admin_bar_showing()) {
45
+ ?>
46
  <style type="text/css">
47
  #wp-admin-bar-assetcleanup-parent span.dashicons {
48
  width: 15px;
75
  padding-bottom: 3px !important;
76
  }
77
  </style>
78
+ <?php
79
+ }
80
+ }
81
 
82
  /**
83
  *
84
  */
85
  public function inlineAdminCode()
86
  {
87
+ ?>
88
  <style type="text/css">
89
+ .menu-top.toplevel_page_wpassetcleanup_getting_started .wp-menu-image > img {
90
+ width: 26px;
91
+ position: absolute;
92
+ left: 8px;
93
+ top: -4px;
94
+ }
95
+
96
+ .plugin-title .opt-in-or-opt-out.wp-asset-clean-up {
97
+ display: none;
98
+ }
99
  </style>
100
+ <?php
101
+ }
102
 
103
+ /**
104
+ *
105
+ */
106
+ public function stylesAndScriptsForAdmin()
107
  {
108
+ global $post;
109
 
110
+ if (! Menu::userCanManageAssets()) {
111
+ return;
112
+ }
113
 
114
+ $page = Misc::getVar('get', 'page');
115
+ $getPostId = (int)Misc::getVar('get', 'post');
116
 
117
+ // Only load the plugin's assets when they are needed
118
+ // This an example of assets that are correctly loaded in WordPress
119
+ if (isset($post->ID)) {
120
+ $this->loadPluginAssets = true;
121
+ }
122
 
123
+ if ($getPostId > 0) {
124
+ $this->loadPluginAssets = true;
125
+ }
126
 
127
+ if (strpos($page, WPACU_PLUGIN_ID) === 0) {
128
+ $this->loadPluginAssets = true;
129
+ }
130
 
131
+ if (! $this->loadPluginAssets) {
132
+ return;
133
+ }
134
 
135
+ $this->enqueueAdminStyles();
136
+ $this->enqueueAdminScripts();
137
+ }
138
 
139
+ /**
140
+ *
141
+ */
142
+ public function stylesAndScriptsForPublic()
143
  {
144
+ // Do not print it when an AJAX call is made from the Dashboard
145
+ if (isset($_POST[WPACU_LOAD_ASSETS_REQ_KEY])) {
146
+ return;
147
+ }
148
+
149
+ // Only for the administrator with the right permission
150
+ if (! Menu::userCanManageAssets()) {
151
+ return;
152
+ }
153
+
154
+ // Is the Admin Bar not showing and "Manage in the Front-end" option is not enabled in the plugin's "Settings"?
155
+ // In this case, there's no point in loading the assets below
156
+ if (! is_admin_bar_showing() && ! Main::instance()->frontendShow()) {
157
+ return;
158
+ }
159
+
160
+ // Do not load any CSS & JS belonging to Asset CleanUp if in "Elementor" preview
161
+ if (Main::instance()->isFrontendEditView && array_key_exists('elementor-preview',
162
+ $_GET) && $_GET['elementor-preview'] && Main::instance()->isFrontendEditView) {
163
+ return;
164
+ }
165
+
166
+ $this->enqueuePublicStyles();
167
+ $this->enqueuePublicScripts();
168
+ }
169
 
170
+ /**
171
+ *
172
+ */
173
+ private function enqueueAdminStyles() {
174
+ $styleRelPath = '/assets/style.min.css';
175
+ wp_enqueue_style(WPACU_PLUGIN_ID . '-style', plugins_url($styleRelPath, WPACU_PLUGIN_FILE), array(),
176
+ $this->_assetVer($styleRelPath));
177
+ }
178
 
179
+ /**
180
+ *
181
+ */
182
+ private function enqueueAdminScripts()
183
  {
184
+ global $post, $pagenow;
 
 
185
 
186
+ $page = Misc::getVar('get', 'page');
 
 
 
 
 
187
 
188
+ $getPostId = (isset($_GET['post'], $_GET['action']) && $_GET['action'] === 'edit' && $pagenow === 'post.php') ? (int)$_GET['post'] : '';
189
 
190
+ $postId = isset($post->ID) ? $post->ID : 0;
191
 
192
+ if ($getPostId > 0 && $getPostId !== $postId) {
193
+ $postId = $getPostId;
194
+ }
195
 
196
+ if ($page === WPACU_PLUGIN_ID . '_home_page' || $postId < 1) {
197
+ $postId = 0; // for home page
198
+ }
199
 
200
+ $scriptRelPath = '/assets/script.min.js';
 
 
 
 
201
 
202
+ wp_register_script(
203
+ WPACU_PLUGIN_ID . '-script',
204
+ plugins_url($scriptRelPath, WPACU_PLUGIN_FILE),
205
+ array('jquery'),
206
+ $this->_assetVer($scriptRelPath)
207
+ );
208
 
209
+ // It can also be the front page URL
210
+ $pageUrl = Misc::getPageUrl($postId);
211
 
212
+ $svgReloadIcon = <<<HTML
213
  <svg aria-hidden="true" role="img" focusable="false" class="dashicon dashicons-cloud" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M14.9 9c1.8.2 3.1 1.7 3.1 3.5 0 1.9-1.6 3.5-3.5 3.5h-10C2.6 16 1 14.4 1 12.5 1 10.7 2.3 9.3 4.1 9 4 8.9 4 8.7 4 8.5 4 7.1 5.1 6 6.5 6c.3 0 .7.1.9.2C8.1 4.9 9.4 4 11 4c2.2 0 4 1.8 4 4 0 .4-.1.7-.1 1z"></path></svg>
214
  HTML;
215
 
216
+ $wpacuObjectData = array(
217
+ 'plugin_name' => WPACU_PLUGIN_ID,
218
+ 'reload_icon' => $svgReloadIcon,
219
+ 'reload_msg' => sprintf(__('Reloading %s CSS &amp; JS list', 'wp-asset-clean-up'),
220
+ '<strong style="margin: 0 4px;">' . WPACU_PLUGIN_TITLE . '</strong>'),
221
+ 'dom_get_type' => Main::$domGetType,
222
+ 'start_del' => Main::START_DEL,
223
+ 'end_del' => Main::END_DEL,
224
+ 'ajax_url' => admin_url('admin-ajax.php'),
225
+ 'post_id' => $postId, // if any
226
+ 'page_url' => $pageUrl // post, page, custom post type, homepage etc.
227
+ );
228
+
229
+ // [wpacu_lite]
230
+ $submitTicketLink = 'https://wordpress.org/support/plugin/wp-asset-clean-up';
231
+ // [/wpacu_lite]
232
+
233
+ $wpacuObjectData['ajax_direct_fetch_error'] = <<<HTML
234
  <div class="ajax-direct-call-error-area">
235
  <p class="note"><strong>Note:</strong> The checked URL returned an error when fetching the assets via AJAX call. This could be because of a firewall that is blocking the AJAX call, a redirect loop or an error in the script that is retrieving the output which could be due to an incompatibility between the plugin and the WordPress setup you are using.</p>
236
  <p>Here is the response from the call:</p>
252
  </div>
253
  HTML;
254
 
255
+ $wpacuObjectData['jquery_migration_disable_confirm_msg'] =
256
+ __('Make sure to properly test your website if you unload the jQuery migration library.',
257
+ 'wp-asset-clean-up') . "\n\n" .
258
+ __('In some cases, due to old jQuery code triggered from plugins or the theme, unloading this migration library could cause those scripts not to function anymore and break some of the front-end functionality.',
259
+ 'wp-asset-clean-up') . "\n\n" .
260
+ __('If you are not sure about whether activating this option is right or not, it is better to leave it as it is (to be loaded by default) and consult with a developer.',
261
+ 'wp-asset-clean-up') . "\n\n" .
262
+ __('Confirm this action to enable the unloading or cancel to leave it loaded by default.',
263
+ 'wp-asset-clean-up');
264
+
265
+ $wpacuObjectData['comment_reply_disable_confirm_msg'] =
266
+ __('This is worth disabling if you are NOT using the default WordPress comment system (e.g. you are using the website for business purposes, to showcase your products and you are not using it as a blog where people leave comments to your posts).',
267
+ 'wp-asset-clean-up') . "\n\n" .
268
+ __('If you are not sure about whether activating this option is right or not, it is better to leave it as it is (to be loaded by default).',
269
+ 'wp-asset-clean-up') . "\n\n" .
270
+ __('Confirm this action to enable the unloading or cancel to leave it loaded by default.',
271
+ 'wp-asset-clean-up');
272
+
273
+ // "Tools" - "Reset"
274
+ $wpacuObjectData['reset_settings_confirm_msg'] =
275
+ __('Are you sure you want to reset the settings to their default values?', 'wp-asset-clean-up') . "\n\n" .
276
+ __('This is an irreversible action.', 'wp-asset-clean-up') . "\n\n" .
277
+ __('Please confirm to continue or "Cancel" to abort it', 'wp-asset-clean-up');
278
+
279
+ $wpacuObjectData['reset_everything_except_settings_confirm_msg'] =
280
+ __('Are you sure you want to reset everything (unloads, load exceptions etc.) except settings?',
281
+ 'wp-asset-clean-up') . "\n\n" .
282
+ __('This is an irreversible action.', 'wp-asset-clean-up') . "\n\n" .
283
+ __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
284
+
285
+ $wpacuObjectData['reset_everything_confirm_msg'] =
286
+ __('Are you sure you want to reset everything (settings, unloads, load exceptions etc.) to the same point it was when you first activated the plugin?',
287
+ 'wp-asset-clean-up') . "\n\n" .
288
+ __('This is an irreversible action.', 'wp-asset-clean-up') . "\n\n" .
289
+ __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
290
+
291
+ // "Tools" - "Import & Export"
292
+ $wpacuObjectData['import_confirm_msg'] =
293
+ __('This process is NOT reversible.', 'wp-asset-clean-up') . "\n\n" .
294
+ __('Please make sure you have a backup (e.g. an exported JSON file) before proceeding.',
295
+ 'wp-asset-clean-up') . "\n\n" .
296
+ __('Please confirm to continue or "Cancel" to abort it.', 'wp-asset-clean-up');
297
+
298
+ wp_localize_script(
299
+ WPACU_PLUGIN_ID . '-script',
300
+ 'wpacu_object',
301
+ apply_filters('wpacu_object_data', $wpacuObjectData)
302
+ );
303
+
304
+ wp_enqueue_script(WPACU_PLUGIN_ID . '-script');
305
+ }
306
 
307
+ /**
308
+ *
309
+ */
310
+ private function enqueuePublicStyles() {
311
+ $styleRelPath = '/assets/style.min.css';
312
+ wp_enqueue_style(WPACU_PLUGIN_ID . '-style', plugins_url($styleRelPath, WPACU_PLUGIN_FILE), array(),
313
+ $this->_assetVer($styleRelPath));
314
+ }
315
 
316
+ /**
317
+ *
318
+ */
319
+ public function enqueuePublicScripts() {
320
+ $scriptRelPath = '/assets/script.min.js';
321
+ wp_enqueue_script(WPACU_PLUGIN_ID . '-script', plugins_url($scriptRelPath, WPACU_PLUGIN_FILE), array('jquery'),
322
+ $this->_assetVer($scriptRelPath), true);
323
+ }
324
 
325
+ /**
326
+ * @param $relativePath
327
+ *
328
+ * @return bool|false|int|string
329
+ */
330
+ private function _assetVer($relativePath) {
331
+ $assetVer = @filemtime(dirname(WPACU_PLUGIN_FILE) . $relativePath);
332
 
333
+ if (! $assetVer) {
334
+ $assetVer = date('dmYHi');
335
+ }
336
 
337
+ return $assetVer;
338
+ }
339
 
340
  /**
341
+ * Prevent "?ver=" or "&ver=" from being stripped when loading plugin's own assets
342
+ * It will force them to refresh whenever there's a change in either of the files
343
+ *
344
  * @param $src
345
  *
346
  * @return mixed
347
  */
348
  public function ownAssetLoaderSrc($src)
349
  {
350
+ if (strpos($src, '/wp-asset-clean-up/assets/script.min.js') !== false
351
+ || strpos($src, '/wp-asset-clean-up/assets/style.min.css') !== false) {
352
+ $src = str_replace(
353
+ array('?ver=', '&ver='),
354
+ array('?wpacuversion=', '&wpacuversion='),
355
+ $src);
356
+ }
357
+
358
+ return $src;
359
+ }
360
 
361
  /**
362
  * @param $tag
366
  */
367
  public function ownAssetLoaderTag($tag, $handle)
368
  {
369
+ // Useful in case jQuery library is deferred too (rare situations)
370
+ if ($handle === WPACU_PLUGIN_ID . '-script' && ! is_admin()) {
371
+ $tag = str_replace(' src=', ' defer=\'defer\' src=', $tag);
372
+ }
 
 
 
373
 
374
+ return $tag;
375
  }
376
+
377
+ /**
378
+ *
379
+ */
380
+ public function inlineFooterCode()
381
+ {
382
+ if (defined('WPACU_USE_MODAL_BOX') && WPACU_USE_MODAL_BOX === true) { ?>
383
+ <script type="text/javascript">
384
+ jQuery(document).ready(function ($) {
385
+ /*
386
+ * START WPACU MODAL
387
+ */
388
+ var wpacuCurrentModal, $wpacuModals = $('.wpacu-modal');
389
+
390
+ if ($wpacuModals.length < 1) {
391
+ return;
392
+ }
393
+
394
+ $wpacuModals.each(function (wpacuIndex) {
395
+ var wpacuModalId = $(this).attr('id');
396
+
397
+ // Get the modal
398
+ var wpacuModal = document.getElementById(wpacuModalId);
399
+
400
+ // Get the link/button that opens the modal
401
+ var wpacuTarget = document.getElementById(wpacuModalId + '-target');
402
+
403
+ // When the user clicks the button, open the modal
404
+ wpacuTarget.onclick = function () {
405
+ wpacuModal.style.display = 'block';
406
+ wpacuCurrentModal = wpacuModal;
407
+ };
408
+
409
+ // Get the <span> element that closes the modal
410
+ var wpacuSpan = document.getElementsByClassName('wpacu-close')[wpacuIndex];
411
+
412
+ // When the user clicks on <span> (x), close the modal
413
+ wpacuSpan.onclick = function () {
414
+ wpacuModal.style.display = 'none';
415
+ };
416
+ });
417
+
418
+ // When the user clicks anywhere outside of the modal, close it
419
+ window.onclick = function (event) {
420
+ if (event.target === wpacuCurrentModal) {
421
+ wpacuCurrentModal.style.display = 'none';
422
+ }
423
+ };
424
+ /*
425
+ * END WPACU MODAL
426
+ */
427
+ });
428
+ </script>
429
+ <?php }
430
+
431
+ if (isset($_GET['page']) && $_GET['page'] === WPACU_PLUGIN_ID.'_settings') {
432
+ // Only relevant in the "Settings" area
433
+ ?>
434
+ <script type="text/javascript">
435
+ // Tab Area | Keep selected tab after page reload
436
+ if (location.href.indexOf('#') !== -1) {
437
+ var hashFromUrl = location.href.substr(location.href.indexOf('#'));
438
+ //wpacuTabOpenSettingsArea(event, hashFromUrl.substring(1));
439
+ //console.log(hashFromUrl);
440
+ jQuery('a[href="'+ hashFromUrl +'"]').trigger('click');
441
+ //console.log(hashFromUrl);
442
+ //console.log(hashFromUrl.substring(1));
443
+ }
444
+ </script>
445
+ <?php
446
+ }
447
+ }
448
+ }
classes/Settings.php CHANGED
@@ -122,7 +122,7 @@ class Settings
122
 
123
  'assets_list_layout_plugin_area_status' => 'expanded', // Go Pro for 'contracted'
124
 
125
- 'assets_list_inline_code_status' => 'contracted',
126
 
127
  'minify_loaded_css_exceptions' => '(.*?).min.css'. "\n". '/plugins/wd-instagram-feed/(.*?).css',
128
  'minify_loaded_js_exceptions' => '(.*?).min.js' . "\n". '/plugins/wd-instagram-feed/(.*?).js',
@@ -318,8 +318,6 @@ class Settings
318
  */
319
  public function update($settings)
320
  {
321
- $wpacuUpdate = new Update;
322
-
323
  $settingsNotNull = array();
324
 
325
  foreach ($settings as $settingKey => $settingValue) {
@@ -335,53 +333,67 @@ class Settings
335
  $this->redirectAfterUpdate(); // script ends here
336
  }
337
 
 
338
  $disableJQueryMigrate = isset($_POST[WPACU_PLUGIN_ID . '_global_unloads']['disable_jquery_migrate']);
339
- $disableCommentReply = isset($_POST[WPACU_PLUGIN_ID . '_global_unloads']['disable_comment_reply']);
340
 
341
- /*
342
- * Add element(s) to the global unload rules
343
- */
344
- if ($disableJQueryMigrate || $disableCommentReply) {
345
- $unloadList = array();
346
 
347
- // Add jQuery Migrate to the global unload rules
348
- if ($disableJQueryMigrate) {
349
- $unloadList[] = 'jquery-migrate';
350
- }
351
 
352
- // Add Comment Reply to the global unload rules
353
- if ($disableCommentReply) {
354
- $unloadList[] = 'comment-reply';
355
- }
356
 
357
- $wpacuUpdate->saveToEverywhereUnloads(array(), $unloadList);
358
- }
359
 
360
- /*
361
- * Remove element(s) from the global unload rules
362
- */
363
- if (! $disableJQueryMigrate || ! $disableCommentReply) {
364
- $removeFromUnloadList = array();
 
365
 
366
- // Remove jQuery Migrate from global unload rules
367
- if (! $disableJQueryMigrate) {
368
- $removeFromUnloadList['jquery-migrate'] = 'remove';
369
- }
370
 
371
- // Remove Comment Reply from global unload rules
372
- if (! $disableCommentReply) {
373
- $removeFromUnloadList['comment-reply'] = 'remove';
374
- }
 
375
 
376
- $wpacuUpdate->removeEverywhereUnloads(array(), $removeFromUnloadList);
377
- }
 
 
378
 
379
- Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($settings));
 
 
 
380
 
381
- // After settings are saved, clear all cache to re-built the CSS/JS based on the new settings
382
- OptimizeCommon::clearAllCache();
383
 
384
- $this->redirectAfterUpdate();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  }
386
 
387
  /**
122
 
123
  'assets_list_layout_plugin_area_status' => 'expanded', // Go Pro for 'contracted'
124
 
125
+ 'assets_list_inline_code_status' => 'contracted', // takes less space overall
126
 
127
  'minify_loaded_css_exceptions' => '(.*?).min.css'. "\n". '/plugins/wd-instagram-feed/(.*?).css',
128
  'minify_loaded_js_exceptions' => '(.*?).min.js' . "\n". '/plugins/wd-instagram-feed/(.*?).js',
318
  */
319
  public function update($settings)
320
  {
 
 
321
  $settingsNotNull = array();
322
 
323
  foreach ($settings as $settingKey => $settingValue) {
333
  $this->redirectAfterUpdate(); // script ends here
334
  }
335
 
336
+ // "Site-Wide Common Unloads" tab
337
  $disableJQueryMigrate = isset($_POST[WPACU_PLUGIN_ID . '_global_unloads']['disable_jquery_migrate']);
338
+ $disableCommentReply = isset($_POST[WPACU_PLUGIN_ID . '_global_unloads']['disable_comment_reply']);
339
 
340
+ $this->loadUnloadCommon(array('jquery_migrate' => $disableJQueryMigrate, 'comment_reply' => $disableCommentReply));
 
 
 
 
341
 
342
+ Misc::addUpdateOption(WPACU_PLUGIN_ID . '_settings', json_encode($settings));
 
 
 
343
 
344
+ // After settings are saved, clear all cache to re-built the CSS/JS based on the new settings
345
+ OptimizeCommon::clearAllCache();
 
 
346
 
347
+ $this->redirectAfterUpdate();
348
+ }
349
 
350
+ /**
351
+ * @param $unloadsList
352
+ */
353
+ public function loadUnloadCommon($unloadsList)
354
+ {
355
+ $wpacuUpdate = new Update;
356
 
357
+ $disableJQueryMigrate = $unloadsList['jquery_migrate'];
358
+ $disableCommentReply = $unloadsList['comment_reply'];
 
 
359
 
360
+ /*
361
+ * Add element(s) to the global unload rules
362
+ */
363
+ if ($disableJQueryMigrate || $disableCommentReply) {
364
+ $unloadList = array();
365
 
366
+ // Add jQuery Migrate to the global unload rules
367
+ if ($disableJQueryMigrate) {
368
+ $unloadList[] = 'jquery-migrate';
369
+ }
370
 
371
+ // Add Comment Reply to the global unload rules
372
+ if ($disableCommentReply) {
373
+ $unloadList[] = 'comment-reply';
374
+ }
375
 
376
+ $wpacuUpdate->saveToEverywhereUnloads(array(), $unloadList);
377
+ }
378
 
379
+ /*
380
+ * Remove element(s) from the global unload rules
381
+ */
382
+ if (! $disableJQueryMigrate || ! $disableCommentReply) {
383
+ $removeFromUnloadList = array();
384
+
385
+ // Remove jQuery Migrate from global unload rules
386
+ if (! $disableJQueryMigrate) {
387
+ $removeFromUnloadList['jquery-migrate'] = 'remove';
388
+ }
389
+
390
+ // Remove Comment Reply from global unload rules
391
+ if (! $disableCommentReply) {
392
+ $removeFromUnloadList['comment-reply'] = 'remove';
393
+ }
394
+
395
+ $wpacuUpdate->removeEverywhereUnloads(array(), $removeFromUnloadList);
396
+ }
397
  }
398
 
399
  /**
classes/Tools.php CHANGED
@@ -178,69 +178,6 @@ class Tools
178
  $return .= strip_tags($browser)."\n";
179
  }
180
 
181
- $return .= "\n" . '# Asset CleanUp Configuration '. "\n";
182
-
183
- $settingsClass = new Settings();
184
- $settings = $settingsClass->getAll();
185
-
186
- $return .= 'Has read "Stripping the fat" text: '. (($settings['wiki_read'] == 1) ? 'Yes' : 'No') . "\n\n";
187
-
188
- $return .= 'Manage in the Dashboard: '. (($settings['dashboard_show'] == 1) ? 'Yes ('.$settings['dom_get_type'].')' : 'No');
189
-
190
- if ($settings['hide_assets_meta_box']) {
191
- $return .= ' - Assets Meta Box is Hidden';
192
- }
193
-
194
- if ($settings['hide_options_meta_box']) {
195
- $return .= ' - Side Options Meta Box is Hidden';
196
- }
197
-
198
- $return .= "\n";
199
-
200
- $return .= 'Manage in the Front-end: '. (($settings['frontend_show'] == 1) ? 'Yes' : 'No') . "\n";
201
-
202
- if ($settings['frontend_show'] == 1 && $settings['frontend_show_exceptions']) {
203
- $return .= 'Do not show front-end assets when the URI contains (textarea value):' . "\n" . $settings['frontend_show_exceptions'] . "\n\n";
204
- }
205
-
206
- $return .= 'Input Fields Style: '. ucfirst($settings['input_style'])."\n";
207
- $return .= 'Hide WP Files (from managing): '. (($settings['hide_core_files'] == 1) ? 'Yes' : 'No') . "\n";
208
- $return .= 'Enable "Test Mode"? '. (($settings['test_mode'] == 1) ? 'Yes' : 'No') . "\n\n";
209
-
210
- $return .= 'Minify loaded CSS? '. (($settings['minify_loaded_css'] == 1) ? 'Yes' : 'No') . "\n";
211
- $return .= 'Minify loaded JS? '. (($settings['minify_loaded_js'] == 1) ? 'Yes' : 'No') . "\n";
212
-
213
- $return .= 'Combine loaded CSS? '. (($settings['combine_loaded_css'] == 1) ? 'Yes' : 'No') . "\n";
214
- $return .= 'Combine loaded JS? '. (($settings['combine_loaded_js'] == 1) ? 'Yes' : 'No') . "\n";
215
-
216
- $storageCssJsDir = WP_CONTENT_DIR . OptimizeCommon::getRelPathPluginCacheDir();
217
- $return .= 'CSS/JS Storage Directory: '. $storageCssJsDir . ' ('.(is_writable($storageCssJsDir) ? 'writable' : 'NON WRITABLE').')' ."\n\n";
218
-
219
- $return .= 'Disable Emojis? '. (($settings['disable_emojis'] == 1) ? 'Yes' : 'No') . "\n";
220
- $return .= 'Disable jQuery Migrate (site-wide)? '. (($settings['disable_jquery_migrate'] == 1) ? 'Yes' : 'No') . "\n";
221
- $return .= 'Disable Comment Reply (site-wide)? '. (($settings['disable_comment_reply'] == 1) ? 'Yes' : 'No') . "\n\n";
222
-
223
- $return .= 'Remove "Really Simple Discovery (RSD)" link tag? '. (($settings['remove_rsd_link'] == 1) ? 'Yes' : 'No') . "\n";
224
- $return .= 'Remove "Windows Live Writer" link tag? '. (($settings['remove_wlw_link'] == 1) ? 'Yes' : 'No') . "\n";
225
- $return .= 'Remove "REST API" link tag? '. (($settings['remove_rest_api_link'] == 1) ? 'Yes' : 'No') . "\n";
226
- $return .= 'Remove Pages/Posts "Shortlink" tag? '. (($settings['remove_shortlink'] == 1) ? 'Yes' : 'No') . "\n";
227
- $return .= 'Remove "Post\'s Relational Links" tag? '. (($settings['remove_posts_rel_links'] == 1) ? 'Yes' : 'No') . "\n";
228
- $return .= 'Remove "WordPress version" meta tag? '. (($settings['remove_wp_version'] == 1) ? 'Yes' : 'No') . "\n";
229
- $return .= 'Remove All "generator" meta tags? '. (($settings['remove_generator_tag'] == 1) ? 'Yes' : 'No') . "\n";
230
- $return .= 'Remove Main RSS Feed Link? '. (($settings['remove_main_feed_link'] == 1) ? 'Yes' : 'No') . "\n";
231
- $return .= 'Remove Comment RSS Feed Link? '. (($settings['remove_comment_feed_link'] == 1) ? 'Yes' : 'No') . "\n";
232
-
233
- $xmlProtocolStatus = 'Enabled (default)';
234
-
235
- if ($settings['disable_xmlrpc'] === 'disable_pingback') {
236
- $xmlProtocolStatus = 'Disable XML-RPC Pingback Only';
237
- } elseif ($settings['disable_xmlrpc'] === 'disable_all') {
238
- $xmlProtocolStatus = 'Disable XML-RPC Completely';
239
- }
240
-
241
- $return .= "\n" . 'XML-RPC protocol: '. $xmlProtocolStatus . "\n";
242
-
243
-
244
  // WordPress configuration.
245
  // Get theme info.
246
  $theme_data = wp_get_theme();
@@ -371,6 +308,124 @@ class Tools
371
  $return .= 'Use Only Cookies: ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
372
  }
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  $return .= "\n" . '### End System Info ###';
375
 
376
  return $return;
178
  $return .= strip_tags($browser)."\n";
179
  }
180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  // WordPress configuration.
182
  // Get theme info.
183
  $theme_data = wp_get_theme();
308
  $return .= 'Use Only Cookies: ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
309
  }
310
 
311
+ $return .= "\n" . '# Asset CleanUp Configuration '. "\n";
312
+
313
+ $settingsClass = new Settings();
314
+ $settings = $settingsClass->getAll();
315
+
316
+ $return .= 'Has read "Stripping the fat" text: '. (($settings['wiki_read'] == 1) ? 'Yes' : 'No') . "\n\n";
317
+
318
+ $return .= 'Manage in the Dashboard: '. (($settings['dashboard_show'] == 1) ? 'Yes ('.$settings['dom_get_type'].')' : 'No');
319
+
320
+ if ($settings['hide_assets_meta_box']) {
321
+ $return .= ' - Assets Meta Box is Hidden';
322
+ }
323
+
324
+ if ($settings['hide_options_meta_box']) {
325
+ $return .= ' - Side Options Meta Box is Hidden';
326
+ }
327
+
328
+ $return .= "\n";
329
+
330
+ $return .= 'Manage in the Front-end: '. (($settings['frontend_show'] == 1) ? 'Yes' : 'No') . "\n";
331
+
332
+ if ($settings['frontend_show'] == 1 && $settings['frontend_show_exceptions']) {
333
+ $return .= 'Do not show front-end assets when the URI contains (textarea value):' . "\n" . $settings['frontend_show_exceptions'] . "\n\n";
334
+ }
335
+
336
+ $return .= 'Input Fields Style: '. ucfirst($settings['input_style'])."\n";
337
+ $return .= 'Hide WP Files (from managing): '. (($settings['hide_core_files'] == 1) ? 'Yes' : 'No') . "\n";
338
+ $return .= 'Enable "Test Mode"? '. (($settings['test_mode'] == 1) ? 'Yes' : 'No') . "\n\n";
339
+
340
+ $return .= 'Minify loaded CSS? '. (($settings['minify_loaded_css'] == 1) ? 'Yes' : 'No') . "\n";
341
+ $return .= 'Minify loaded JS? '. (($settings['minify_loaded_js'] == 1) ? 'Yes' : 'No') . "\n";
342
+
343
+ $return .= 'Combine loaded CSS? '. (($settings['combine_loaded_css'] == 1) ? 'Yes' : 'No') . "\n";
344
+ $return .= 'Combine loaded JS? '. (($settings['combine_loaded_js'] == 1) ? 'Yes' : 'No') . "\n";
345
+
346
+ $storageCssJsDir = WP_CONTENT_DIR . OptimizeCommon::getRelPathPluginCacheDir();
347
+ $return .= 'CSS/JS Storage Directory: '. $storageCssJsDir . ' ('.(is_writable($storageCssJsDir) ? 'writable' : 'NON WRITABLE').')' ."\n\n";
348
+
349
+ $return .= 'Disable Emojis? '. (($settings['disable_emojis'] == 1) ? 'Yes' : 'No') . "\n";
350
+ $return .= 'Disable jQuery Migrate (site-wide)? '. (($settings['disable_jquery_migrate'] == 1) ? 'Yes' : 'No') . "\n";
351
+ $return .= 'Disable Comment Reply (site-wide)? '. (($settings['disable_comment_reply'] == 1) ? 'Yes' : 'No') . "\n\n";
352
+
353
+ $return .= 'Remove "Really Simple Discovery (RSD)" link tag? '. (($settings['remove_rsd_link'] == 1) ? 'Yes' : 'No') . "\n";
354
+ $return .= 'Remove "Windows Live Writer" link tag? '. (($settings['remove_wlw_link'] == 1) ? 'Yes' : 'No') . "\n";
355
+ $return .= 'Remove "REST API" link tag? '. (($settings['remove_rest_api_link'] == 1) ? 'Yes' : 'No') . "\n";
356
+ $return .= 'Remove Pages/Posts "Shortlink" tag? '. (($settings['remove_shortlink'] == 1) ? 'Yes' : 'No') . "\n";
357
+ $return .= 'Remove "Post\'s Relational Links" tag? '. (($settings['remove_posts_rel_links'] == 1) ? 'Yes' : 'No') . "\n";
358
+ $return .= 'Remove "WordPress version" meta tag? '. (($settings['remove_wp_version'] == 1) ? 'Yes' : 'No') . "\n";
359
+ $return .= 'Remove All "generator" meta tags? '. (($settings['remove_generator_tag'] == 1) ? 'Yes' : 'No') . "\n";
360
+ $return .= 'Remove Main RSS Feed Link? '. (($settings['remove_main_feed_link'] == 1) ? 'Yes' : 'No') . "\n";
361
+ $return .= 'Remove Comment RSS Feed Link? '. (($settings['remove_comment_feed_link'] == 1) ? 'Yes' : 'No') . "\n";
362
+
363
+ $xmlProtocolStatus = 'Enabled (default)';
364
+
365
+ if ($settings['disable_xmlrpc'] === 'disable_pingback') {
366
+ $xmlProtocolStatus = 'Disable XML-RPC Pingback Only';
367
+ } elseif ($settings['disable_xmlrpc'] === 'disable_all') {
368
+ $xmlProtocolStatus = 'Disable XML-RPC Completely';
369
+ }
370
+
371
+ $return .= "\n" . 'XML-RPC protocol: '. $xmlProtocolStatus . "\n";
372
+
373
+ $return .= "\n" . '# Asset CleanUp Database Storage '. "\n";
374
+
375
+ $wpacuPluginId = WPACU_PLUGIN_ID;
376
+
377
+ $wpacuOptionNamesExceptions = array(
378
+ "'".$wpacuPluginId.'_pro_license_key'."'",
379
+ );
380
+
381
+ $wpacuSqlPartOptionExceptions = implode(',', $wpacuOptionNamesExceptions);
382
+
383
+ $sqlQueryGetOptions = <<<SQL
384
+ SELECT option_name, option_value FROM `{$wpdb->prefix}options`
385
+ WHERE option_name LIKE '{$wpacuPluginId}_%' AND option_name NOT IN ({$wpacuSqlPartOptionExceptions})
386
+ SQL;
387
+ $wpacuOptions = $wpdb->get_results($sqlQueryGetOptions, ARRAY_A);
388
+
389
+ $return .= "\n" . 'Table: options'."\n";
390
+
391
+ if (! empty($wpacuOptions)) {
392
+ foreach ($wpacuOptions as $wpacuOption) {
393
+ $return .= '-- Option Name: ' . $wpacuOption['option_name'] . ' / Option Value: ' . $wpacuOption['option_value'] . "\n";
394
+ }
395
+ } else {
396
+ $return .= 'No records'."\n";
397
+ }
398
+
399
+ // `usermeta` and `termmeta` might have traces from the Pro version (if ever used)
400
+ foreach (array('postmeta', 'usermeta', 'termmeta') as $tableBaseName) {
401
+ // Get all Asset CleanUp meta keys from all WordPress meta tables where it can be possibly used
402
+ $wpacuGetMetaKeysQuery = <<<SQL
403
+ SELECT * FROM `{$wpdb->prefix}{$tableBaseName}` WHERE meta_key LIKE '_{$wpacuPluginId}_%'
404
+ SQL;
405
+ $wpacuMetaResults = $wpdb->get_results($wpacuGetMetaKeysQuery, ARRAY_A);
406
+
407
+ $return .= "\n" . 'Table: '.$tableBaseName."\n";
408
+
409
+ if (! empty($wpacuMetaResults)) {
410
+ foreach ($wpacuMetaResults as $metaResult) {
411
+ $rowIdVal = '';
412
+
413
+ if (isset($metaResult['post_id'])) {
414
+ $rowIdVal = 'Post ID: '.$metaResult['post_id'];
415
+ } elseif (isset($metaResult['user_id'])) {
416
+ $rowIdVal = 'User ID: '.$metaResult['user_id'];
417
+ } elseif (isset($metaResult['term_id'])) {
418
+ $term = get_term($metaResult['term_id']);
419
+ $rowIdVal = 'Taxonomy Name: '.$term->taxonomy.'; Taxonomy ID: '.$metaResult['term_id'];
420
+ }
421
+
422
+ $return .= '-- ' . $rowIdVal . ' / Meta Key: ' . $metaResult['meta_key'] . ' / Meta Value: ' . $metaResult['meta_value'] . "\n";
423
+ }
424
+ } else {
425
+ $return .= 'No records'."\n";
426
+ }
427
+ }
428
+
429
  $return .= "\n" . '### End System Info ###';
430
 
431
  return $return;
classes/Update.php CHANGED
@@ -137,6 +137,12 @@ HTML;
137
  return;
138
  }
139
 
 
 
 
 
 
 
140
  }
141
 
142
  /**
@@ -260,6 +266,15 @@ HTML;
260
  $this->saveToBulkUnloads();
261
  $this->removeBulkUnloads();
262
 
 
 
 
 
 
 
 
 
 
263
  // Clear all cache
264
  OptimizeCommon::clearAllCache();
265
  }
@@ -289,6 +304,12 @@ HTML;
289
  // Add / Remove Site-wide Unloads
290
  $this->updateEverywhereUnloads();
291
 
 
 
 
 
 
 
292
  add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
293
 
294
  $this->frontEndUpdateFor['homepage'] = true;
@@ -297,7 +318,6 @@ HTML;
297
  OptimizeCommon::clearAllCache();
298
  }
299
 
300
- /**
301
  /**
302
  *
303
  */
@@ -721,4 +741,94 @@ HTML;
721
 
722
  return $isUpdated;
723
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
724
  }
137
  return;
138
  }
139
 
140
+ // Any handle notes?
141
+ self::updateHandleNotes();
142
+
143
+ // Any ignore deps
144
+ self::updateIgnoreChild();
145
+
146
  }
147
 
148
  /**
266
  $this->saveToBulkUnloads();
267
  $this->removeBulkUnloads();
268
 
269
+ // Any positions changed?
270
+ // For Pro Only
271
+
272
+ // Any handle notes
273
+ self::updateHandleNotes();
274
+
275
+ // Any ignore deps
276
+ self::updateIgnoreChild();
277
+
278
  // Clear all cache
279
  OptimizeCommon::clearAllCache();
280
  }
304
  // Add / Remove Site-wide Unloads
305
  $this->updateEverywhereUnloads();
306
 
307
+ // Any handle notes
308
+ self::updateHandleNotes();
309
+
310
+ // Any ignore deps
311
+ self::updateIgnoreChild();
312
+
313
  add_action('wpacu_admin_notices', array($this, 'homePageUpdated'));
314
 
315
  $this->frontEndUpdateFor['homepage'] = true;
318
  OptimizeCommon::clearAllCache();
319
  }
320
 
 
321
  /**
322
  *
323
  */
741
 
742
  return $isUpdated;
743
  }
744
+
745
+ /**
746
+ *
747
+ */
748
+ public static function updateHandleNotes()
749
+ {
750
+ if (! Misc::isValidRequest('post', 'wpacu_handle_notes')) {
751
+ return;
752
+ }
753
+
754
+ if (! isset($_POST['wpacu_handle_notes']['styles']) && ! isset($_POST['wpacu_handle_notes']['scripts'])) {
755
+ return;
756
+ }
757
+
758
+ $optionToUpdate = WPACU_PLUGIN_ID . '_global_data';
759
+ $globalKey = 'notes';
760
+
761
+ $existingListEmpty = array('styles' => array($globalKey => array()), 'scripts' => array($globalKey => array()));
762
+ $existingListJson = get_option($optionToUpdate);
763
+
764
+ $existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
765
+ $existingList = $existingListData['list'];
766
+
767
+ foreach ($_POST['wpacu_handle_notes']['styles'] as $styleHandle => $styleNote) {
768
+ $styleNote = trim($styleNote);
769
+
770
+ if ($styleNote === '' && isset($existingList['styles'][$globalKey][$styleHandle])) {
771
+ unset($existingList['styles'][$globalKey][$styleHandle]);
772
+ } elseif ($styleNote !== '') {
773
+ $existingList['styles'][$globalKey][$styleHandle] = $styleNote;
774
+ }
775
+ }
776
+
777
+ foreach ($_POST['wpacu_handle_notes']['scripts'] as $scriptHandle => $scriptNote) {
778
+ $scriptNote = trim($scriptNote);
779
+
780
+ if ($scriptNote === '' && isset($existingList['scripts'][$globalKey][$scriptHandle])) {
781
+ unset($existingList['scripts'][$globalKey][$scriptHandle]);
782
+ } elseif ($scriptNote !== '') {
783
+ $existingList['scripts'][$globalKey][$scriptHandle] = $scriptNote;
784
+ }
785
+ }
786
+
787
+ Misc::addUpdateOption($optionToUpdate, json_encode($existingList));
788
+ }
789
+
790
+ /**
791
+ *
792
+ */
793
+ public static function updateIgnoreChild()
794
+ {
795
+ if (! Misc::isValidRequest('post', 'wpacu_ignore_child')) {
796
+ return;
797
+ }
798
+
799
+ if (! isset($_POST['wpacu_ignore_child']['styles']) && ! isset($_POST['wpacu_ignore_child']['scripts'])) {
800
+ return;
801
+ }
802
+
803
+ $optionToUpdate = WPACU_PLUGIN_ID . '_global_data';
804
+ $globalKey = 'ignore_child';
805
+
806
+ $existingListEmpty = array('styles' => array($globalKey => array()), 'scripts' => array($globalKey => array()));
807
+ $existingListJson = get_option($optionToUpdate);
808
+
809
+ $existingListData = Main::instance()->existingList($existingListJson, $existingListEmpty);
810
+ $existingList = $existingListData['list'];
811
+
812
+ foreach ($_POST['wpacu_ignore_child']['styles'] as $styleHandle => $styleVal) {
813
+ $styleVal = trim($styleVal);
814
+
815
+ if ($styleVal === '' && isset($existingList['styles'][$globalKey][$styleHandle])) {
816
+ unset($existingList['styles'][$globalKey][$styleHandle]);
817
+ } elseif ($styleVal !== '') {
818
+ $existingList['styles'][$globalKey][$styleHandle] = $styleVal;
819
+ }
820
+ }
821
+
822
+ foreach ($_POST['wpacu_ignore_child']['scripts'] as $scriptHandle => $scriptVal) {
823
+ $scriptVal = trim($scriptVal); // should be '1' (meaning it's true)
824
+
825
+ if ($scriptVal === '' && isset($existingList['scripts'][$globalKey][$scriptHandle])) {
826
+ unset($existingList['scripts'][$globalKey][$scriptHandle]);
827
+ } elseif ($scriptVal !== '') {
828
+ $existingList['scripts'][$globalKey][$scriptHandle] = $scriptVal;
829
+ }
830
+ }
831
+
832
+ Misc::addUpdateOption($optionToUpdate, json_encode($existingList));
833
+ }
834
  }
early-triggers.php CHANGED
@@ -54,6 +54,16 @@ if (! function_exists('assetCleanUpNoLoad')) {
54
  return true;
55
  }
56
 
 
 
 
 
 
 
 
 
 
 
57
  // Perfmatters: Script Manager
58
  if (isset($_GET['perfmatters'])) {
59
  return true;
@@ -66,6 +76,16 @@ if (! function_exists('assetCleanUpNoLoad')) {
66
  return true;
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
69
  return false;
70
  }
71
  }
54
  return true;
55
  }
56
 
57
+ // Brizy - Page Builder
58
+ if (isset($_GET['brizy-edit']) || isset($_GET['brizy-edit-iframe'])) {
59
+ return true;
60
+ }
61
+
62
+ // WPBakery Page Builder
63
+ if (isset($_GET['vc_editable'], $_GET['_vcnonce']) || (is_admin() && isset($_GET['vc_action']))) {
64
+ return true;
65
+ }
66
+
67
  // Perfmatters: Script Manager
68
  if (isset($_GET['perfmatters'])) {
69
  return true;
76
  return true;
77
  }
78
 
79
+ // REST Request
80
+ if ((strpos($_SERVER['REQUEST_URI'], '/wp-json/wp/v2/') !== false) || (defined('REST_REQUEST') && REST_REQUEST)) {
81
+ return true;
82
+ }
83
+
84
+ // Stripe Requests via EDD Plugin
85
+ if (isset($_GET['edd-listener']) && $_GET['edd-listener'] === 'stripe') {
86
+ return true;
87
+ }
88
+
89
  return false;
90
  }
91
  }
freemius/templates/forms/deactivation/form.php CHANGED
@@ -31,10 +31,10 @@
31
  } else {
32
  $reason_internal_message = '';
33
  }
34
-
35
  $reason_input_type = ( ! empty( $reason['input_type'] ) ? $reason['input_type'] : '' );
36
  $reason_input_placeholder = ( ! empty( $reason['input_placeholder'] ) ? $reason['input_placeholder'] : '' );
37
-
38
  $reason_list_item_html = <<< HTML
39
  <li class="{$list_item_classes}"
40
  data-input-type="{$reason_input_type}"
@@ -182,7 +182,7 @@ HTML;
182
  *
183
  * @author Leo Fajardo (@leorw)
184
  * @since 1.2.2
185
- *
186
  * @since 1.2.2.7 Don't trigger the deactivation feedback form if activating the premium version of the theme.
187
  */
188
  ?>
@@ -344,7 +344,7 @@ HTML;
344
  if (_parent.hasClass('has-input')) {
345
  var inputType = _parent.data('input-type'),
346
  inputPlaceholder = _parent.data('input-placeholder'),
347
- reasonInputHtml = '<div class="reason-input"><span class="message"></span>' + ( ( 'textfield' === inputType ) ? '<input type="text" />' : '<textarea rows="5"></textarea>' ) + '</div>';
348
 
349
  _parent.append($(reasonInputHtml));
350
  _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
31
  } else {
32
  $reason_internal_message = '';
33
  }
34
+
35
  $reason_input_type = ( ! empty( $reason['input_type'] ) ? $reason['input_type'] : '' );
36
  $reason_input_placeholder = ( ! empty( $reason['input_placeholder'] ) ? $reason['input_placeholder'] : '' );
37
+
38
  $reason_list_item_html = <<< HTML
39
  <li class="{$list_item_classes}"
40
  data-input-type="{$reason_input_type}"
182
  *
183
  * @author Leo Fajardo (@leorw)
184
  * @since 1.2.2
185
+ *
186
  * @since 1.2.2.7 Don't trigger the deactivation feedback form if activating the premium version of the theme.
187
  */
188
  ?>
344
  if (_parent.hasClass('has-input')) {
345
  var inputType = _parent.data('input-type'),
346
  inputPlaceholder = _parent.data('input-placeholder'),
347
+ reasonInputHtml = '<div class="reason-input"><span class="message"></span>' + ( ( 'textfield' === inputType ) ? '<input type="text" maxlength="128" />' : '<textarea rows="5" maxlength="128"></textarea>' ) + '</div>';
348
 
349
  _parent.append($(reasonInputHtml));
350
  _parent.find('input, textarea').attr('placeholder', inputPlaceholder).focus();
readme.txt CHANGED
@@ -3,8 +3,8 @@ 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.1.1
7
- Stable tag: 1.3.2.7
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
@@ -154,6 +154,12 @@ With the recently released "Test Mode" feature, you can safely unload assets on
154
  4. Homepage CSS & JS Management (List sorted by location)
155
 
156
  == Changelog ==
 
 
 
 
 
 
157
  = 1.3.2.7 =
158
  * Bug Fix: array_key_first() didn't have a fallback for PHP 5 causing plugin admin pages to disappear
159
  * Do not trigger Asset CleanUp if either of the following page builders are in edit mode: "Thrive Architect", "Page Builder by SiteOrigin" & "Beaver Builder"
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.2
7
+ Stable tag: 1.3.2.8
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
154
  4. Homepage CSS & JS Management (List sorted by location)
155
 
156
  == Changelog ==
157
+ = 1.3.2.8 =
158
+ * "Import & Export" added under "Tools" For Settings & Load/Unload Rules
159
+ * "General & Files Management" -> "Assets List Layout" - 2 new options: Group by dependencies & Group by loaded/unloaded status
160
+ * Option to hide "Asset CleanUp" menu from the sidebar
161
+ * Minified CSS/JS Improvement: Do not replace the original source path with the minified one if the cache file was deleted via an external action (e.g. the "cache" directory was deleted via cPanel/FTPS)
162
+
163
  = 1.3.2.7 =
164
  * Bug Fix: array_key_first() didn't have a fallback for PHP 5 causing plugin admin pages to disappear
165
  * Do not trigger Asset CleanUp if either of the following page builders are in edit mode: "Thrive Architect", "Page Builder by SiteOrigin" & "Beaver Builder"
templates/_admin-page-getting-started-areas/_video-tutorials.php CHANGED
@@ -12,7 +12,7 @@ if (! isset($data)) {
12
  <iframe width="560" height="315" src="https://www.youtube.com/embed/ATXACFtcyKs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
13
  </div>
14
  <div class="wpacu-col-right">
15
- <p>If you are using heavy themes such as Avada, visual builders like Divi, Elementor, Beaver Builder or anything else that causes bloat, this tutorial will teach you optimizations which will significantly speed up ANY WordPress website. <strong>At around 07:21, the stripping of the "fat" topic is brought, followed by the setup of Asset CleanUp.</strong></p>
16
  <p>There are three main thing that typically degrade performance and make a WordPress website run slowly. Fix these, and you'll have a fast loading website:</p>
17
  <ol>
18
  <li>Plugins (and WordPress core) loads scripts and styles onto all pages of your site, even when they only need to be present on a single page.</li>
@@ -35,4 +35,26 @@ if (! isset($data)) {
35
  </ul>
36
  </div>
37
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  </div>
12
  <iframe width="560" height="315" src="https://www.youtube.com/embed/ATXACFtcyKs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
13
  </div>
14
  <div class="wpacu-col-right">
15
+ <p>If you are using heavy themes such as Avada, visual builders like Divi, Elementor, Beaver Builder or anything else that causes bloat, this tutorial will teach you optimizations which will significantly speed up ANY WordPress website. <strong><em>At ~07:21 within the video, the stripping of the "fat" topic is brought, followed by the setup of Asset CleanUp.</em></strong></p>
16
  <p>There are three main thing that typically degrade performance and make a WordPress website run slowly. Fix these, and you'll have a fast loading website:</p>
17
  <ol>
18
  <li>Plugins (and WordPress core) loads scripts and styles onto all pages of your site, even when they only need to be present on a single page.</li>
35
  </ul>
36
  </div>
37
  </div>
38
+
39
+ <div class="wpacu-video-area-wrapper">
40
+ <div class="wpacu-col-left wpacu-video-wrapper">
41
+ <a target="_blank" href="https://www.youtube.com/watch?v=garf1tL6PTU&start=1925"><img src="<?php echo WPACU_PLUGIN_URL; ?>/assets/images/sproutedweb-asset-cleanup-elementor-video.jpg" style="width: 560px;" alt="" /></a>
42
+ </div>
43
+ <div class="wpacu-col-right">
44
+ <p>This video from SproutedWeb, covers some basic Performance Fundamentals, shows the latest Benchmarks for Elementor v2.5.3 (on WP Engine, PHP 7.2, WP 5.1).</p>
45
+ <p>They also cover the basics of how to read a Waterfall Chart, and how to trim a lot of the fat on Elementor pages.</p>
46
+ <p><strong>At ~32:05 within the video, Asset CleanUp comes into play.</strong></p>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="wpacu-video-area-wrapper">
51
+ <div class="wpacu-col-left wpacu-video-wrapper">
52
+ <iframe width="560" height="315" src="https://www.youtube.com/embed/FiYYtr-9jGA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
53
+ </div>
54
+ <div class="wpacu-col-right">
55
+ <p><strong><span class="dashicons dashicons-info"></span> This video is for portuguese speakers.</strong></p>
56
+ <p>Veja Outras dicas de Performance WordPress para deixar o seu site ainda mais rápido.</p>
57
+ <p>Tutorial: <a target="_blank" href="https://blog.escolaninjawp.com.br/performance-wordpress/">https://blog.escolaninjawp.com.br/performance-wordpress/</a></p>
58
+ </div>
59
+ </div>
60
  </div>
templates/_admin-page-settings-bulk-changes/_bulk-unloaded.php CHANGED
@@ -6,12 +6,14 @@ if (! isset($data)) {
6
  exit;
7
  }
8
 
 
 
 
 
9
  // [wpacu_lite]
10
  $availableForPro = '<span class="wpacu-tooltip">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
11
  // [/wpacu_lite]
12
  ?>
13
- <p><span class="dashicons dashicons-info" style="color: #004567;"></span> This page is an overview of all the assets that have bulk changes applied such as <em>"Unload site-wide"</em> or <em>"Unload on All Pages of <strong>post</strong> post type"</em> etc. These are added when editing pages via the CSS/JS Load Manager. <strong>A bulk change is considered anything that is applied once and it has effect on multiple pages of the same kind or site-wide</strong>.</p>
14
-
15
  <nav class="nav-tab-wrapper">
16
  <a href="<?php echo admin_url('admin.php?page=wpassetcleanup_bulk_unloads'); ?>" class="nav-tab <?php if ($data['for'] === 'everywhere') { ?>nav-tab-active<?php } ?>"><?php _e('Everywhere', 'wp-asset-clean-up'); ?></a>
17
  <a href="<?php echo admin_url('admin.php?page=wpassetcleanup_bulk_unloads&wpacu_for=post_types'); ?>" class="nav-tab <?php if ($data['for'] === 'post_types') { ?>nav-tab-active<?php } ?>">Posts, Pages &amp; Custom Post Types</a>
@@ -53,8 +55,8 @@ if ($data['for'] === 'post_types') {
53
  <div class="wpacu-clearfix"></div>
54
 
55
  <div class="alert">
56
- <p>This is the list of the assets that are <strong>globally unloaded</strong> on all pages (including home page).</p>
57
- <p>If you want to remove this rule and have them loading, use the "Remove rule" checkbox.</p>
58
  <div style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">
59
  <ul>
60
  <li>This list fills once you select "<em>Unload site-wide</em>" when you edit posts/pages for the assets that you want to prevent from loading on every page.</li>
@@ -66,7 +68,7 @@ if ($data['for'] === 'post_types') {
66
  <div class="wpacu-clearfix"></div>
67
 
68
  <div style="padding: 0 10px 0 0;">
69
- <h3><?php _e('Styles', 'wp-asset-clean-up'); ?></h3>
70
  <?php
71
  if (! empty($data['values']['styles'])) {
72
  ?>
@@ -84,7 +86,7 @@ if ($data['for'] === 'post_types') {
84
  <label><input type="checkbox"
85
  class="wpacu_remove_rule"
86
  name="wpacu_options_styles[<?php echo $handle; ?>]"
87
- value="remove" /> Remove rule</label>
88
  </td>
89
  </tr>
90
  <?php
@@ -99,7 +101,9 @@ if ($data['for'] === 'post_types') {
99
  }
100
  ?>
101
 
102
- <h3><?php _e('Scripts', 'wp-asset-clean-up'); ?></h3>
 
 
103
  <?php
104
  if (! empty($data['values']['scripts'])) {
105
  ?>
@@ -138,7 +142,7 @@ if ($data['for'] === 'post_types') {
138
  <div class="wpacu-clearfix"></div>
139
 
140
  <div class="alert">
141
- <p>This is the list of the assets that are <strong>unloaded</strong> on all pages belonging to the <strong><u><?php echo $data['post_type']; ?></u></strong> post type.</p>
142
  <p>If you want to make an asset load again, use the "Remove rule" checkbox.</p>
143
  <div style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">
144
  <ul>
@@ -151,7 +155,7 @@ if ($data['for'] === 'post_types') {
151
  <div class="wpacu-clearfix"></div>
152
 
153
  <div style="padding: 0 10px 0 0;">
154
- <h3><?php _e('Styles', 'wp-asset-clean-up'); ?></h3>
155
  <?php
156
  if (! empty($data['values']['styles'])) {
157
  ?>
@@ -184,7 +188,10 @@ if ($data['for'] === 'post_types') {
184
  }
185
  ?>
186
 
187
- <h3><?php _e('Scripts', 'wp-asset-clean-up'); ?></h3>
 
 
 
188
  <?php
189
  if (! empty($data['values']['scripts'])) {
190
  ?>
@@ -248,7 +255,7 @@ if ($data['for'] === 'post_types') {
248
  disabled="disabled"
249
  <?php } ?>
250
  class="button button-primary"
251
- value="<?php esc_attr_e('Update', 'wp-asset-clean-up'); ?>" />
252
  <?php
253
  if ($noAssetsToRemove) {
254
  ?>
@@ -259,3 +266,20 @@ if ($data['for'] === 'post_types') {
259
  </p>
260
  </div>
261
  </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  exit;
7
  }
8
 
9
+ if (! defined('WPACU_USE_MODAL_BOX')) {
10
+ define('WPACU_USE_MODAL_BOX', true);
11
+ }
12
+
13
  // [wpacu_lite]
14
  $availableForPro = '<span class="wpacu-tooltip">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span> <img style="opacity: 0.4;" width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" />';
15
  // [/wpacu_lite]
16
  ?>
 
 
17
  <nav class="nav-tab-wrapper">
18
  <a href="<?php echo admin_url('admin.php?page=wpassetcleanup_bulk_unloads'); ?>" class="nav-tab <?php if ($data['for'] === 'everywhere') { ?>nav-tab-active<?php } ?>"><?php _e('Everywhere', 'wp-asset-clean-up'); ?></a>
19
  <a href="<?php echo admin_url('admin.php?page=wpassetcleanup_bulk_unloads&wpacu_for=post_types'); ?>" class="nav-tab <?php if ($data['for'] === 'post_types') { ?>nav-tab-active<?php } ?>">Posts, Pages &amp; Custom Post Types</a>
55
  <div class="wpacu-clearfix"></div>
56
 
57
  <div class="alert">
58
+ <p>This is the list of the assets that are <strong>globally unloaded</strong> on all pages (including home page). &nbsp;&nbsp;<a id="wpacu-add-bulk-rules-info-target" href="#wpacu-add-bulk-rules-info" style="text-decoration: none;"><span class="dashicons dashicons-info"></span> How the list below gets filled with site-wide rules?</a></p>
59
+ <p>If you want to remove this rule and have them loading, use the "Remove site-wide rule" checkbox.</p>
60
  <div style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">
61
  <ul>
62
  <li>This list fills once you select "<em>Unload site-wide</em>" when you edit posts/pages for the assets that you want to prevent from loading on every page.</li>
68
  <div class="wpacu-clearfix"></div>
69
 
70
  <div style="padding: 0 10px 0 0;">
71
+ <p style="margin-bottom: 10px;"><strong><?php _e('Stylesheets (.css) Unloaded', 'wp-asset-clean-up'); ?></strong></p>
72
  <?php
73
  if (! empty($data['values']['styles'])) {
74
  ?>
86
  <label><input type="checkbox"
87
  class="wpacu_remove_rule"
88
  name="wpacu_options_styles[<?php echo $handle; ?>]"
89
+ value="remove" /> Remove site-wide rule</label>
90
  </td>
91
  </tr>
92
  <?php
101
  }
102
  ?>
103
 
104
+ <hr style="margin: 15px 0;"/>
105
+
106
+ <p style="margin-bottom: 10px;"><strong><?php _e('Scripts (.js) Unloaded', 'wp-asset-clean-up'); ?></strong></p>
107
  <?php
108
  if (! empty($data['values']['scripts'])) {
109
  ?>
142
  <div class="wpacu-clearfix"></div>
143
 
144
  <div class="alert">
145
+ <p>This is the list of the assets that are <strong>unloaded</strong> on all pages belonging to the <strong><u><?php echo $data['post_type']; ?></u></strong> post type. &nbsp;&nbsp;<a id="wpacu-add-bulk-rules-info-target" href="#wpacu-add-bulk-rules-info" style="text-decoration: none;"><span class="dashicons dashicons-info"></span> How the list below gets filled with site-wide rules?</a></p>
146
  <p>If you want to make an asset load again, use the "Remove rule" checkbox.</p>
147
  <div style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">
148
  <ul>
155
  <div class="wpacu-clearfix"></div>
156
 
157
  <div style="padding: 0 10px 0 0;">
158
+ <p style="margin-bottom: 10px;"><strong><?php _e('Stylesheets (.css) Unloaded', 'wp-asset-clean-up'); ?></strong></p>
159
  <?php
160
  if (! empty($data['values']['styles'])) {
161
  ?>
188
  }
189
  ?>
190
 
191
+ <hr style="margin: 15px 0;"/>
192
+
193
+ <p style="margin-bottom: 10px;"><strong><?php _e('Scripts (.js) Unloaded', 'wp-asset-clean-up'); ?></strong></p>
194
+
195
  <?php
196
  if (! empty($data['values']['scripts'])) {
197
  ?>
255
  disabled="disabled"
256
  <?php } ?>
257
  class="button button-primary"
258
+ value="<?php esc_attr_e('Apply changes', 'wp-asset-clean-up'); ?>" />
259
  <?php
260
  if ($noAssetsToRemove) {
261
  ?>
266
  </p>
267
  </div>
268
  </form>
269
+ <!-- Start Site-Wide Modal -->
270
+ <div id="wpacu-add-bulk-rules-info" class="wpacu-modal">
271
+ <div class="wpacu-modal-content">
272
+ <span class="wpacu-close">&times;</span>
273
+ <h2><?php _e('Unloading CSS/JS site-wide or for a group of pages', 'wp-asset-clean-up'); ?></h2>
274
+ <p>This is an overview of all the assets that have bulk changes applied. Anything you see on this page is filled the moment you go to edit a page via the "CSS/JS Load Manager" (e.g. homepage or a post) and use the options such as:</p>
275
+
276
+ <ul style="list-style: disc; margin-left: 20px;">
277
+ <li>Unload site-wide (everywhere)</strong></li>
278
+ <li>Unload on All Pages of `product` post type</li>
279
+ <li>Unload on All Pages of `product_cat` taxonomy type etc.</li>
280
+ </ul>
281
+
282
+ <p>A bulk change is considered anything that is applied once and it has effect on multiple pages of the same kind or site-wide.</p>
283
+ </div>
284
+ </div>
285
+ <!-- End Site-Wide Modal -->
templates/_admin-page-settings-plugin-areas/_combine-loaded-files.php CHANGED
@@ -6,6 +6,10 @@ if (! isset($data)) {
6
  exit;
7
  }
8
 
 
 
 
 
9
  $tabIdArea = 'wpacu-setting-combine-loaded-files';
10
  $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-cell;"' : '';
11
  ?>
@@ -13,7 +17,7 @@ $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-ce
13
  <h2 class="wpacu-settings-area-title"><?php echo __('Combine loaded CSS &amp; JavaScript files into fewer files', 'wp-asset-clean-up'); ?></h2>
14
 
15
  <div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
16
- <strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. &nbsp; <span style="color: #0073aa;" class="dashicons dashicons-info"></span> <a id="wpacu-http2-info-link" href="#wpacu-http2-info"><?php _e('Read more', 'wp-asset-clean-up'); ?></a> &nbsp;|&nbsp; <a target="_blank" href="https://tools.keycdn.com/http2-test"><?php _e('Verify if your server has HTTP/2 support', 'wp-asset-clean-up'); ?></a>
17
  </div>
18
 
19
  <table class="wpacu-form-table">
@@ -136,7 +140,7 @@ $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-ce
136
  <!--
137
  -->
138
  <p>
139
- <?php _e('This results in as less JS combination groups as possible (this combines all JS files into 2/3 files, keeping their HEAD and BODY locations and most of the inline script tags before them for maximum compatibility)', 'wp-asset-clean-up'); ?> - <a id="wpacu-combine-js-method-info-link" href="#wpacu-combine-js-method-info"><?php _e('Read more', 'wp-asset-clean-up'); ?></a>
140
  </p>
141
 
142
  <hr />
6
  exit;
7
  }
8
 
9
+ if (! defined('WPACU_USE_MODAL_BOX')) {
10
+ define('WPACU_USE_MODAL_BOX', true);
11
+ }
12
+
13
  $tabIdArea = 'wpacu-setting-combine-loaded-files';
14
  $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-cell;"' : '';
15
  ?>
17
  <h2 class="wpacu-settings-area-title"><?php echo __('Combine loaded CSS &amp; JavaScript files into fewer files', 'wp-asset-clean-up'); ?></h2>
18
 
19
  <div style="line-height: 22px; background: #f8f8f8; border-left: 4px solid #008f9c; padding: 10px; margin: 0 0 15px;">
20
+ <strong><?php _e('NOTE', 'wp-asset-clean-up'); ?>:</strong> <?php echo __('Concatenating assets is no longer a recommended practice in HTTP/2', 'wp-asset-clean-up'); ?>. &nbsp; <span style="color: #0073aa;" class="dashicons dashicons-info"></span> <a id="wpacu-http2-info-target" href="#wpacu-http2-info"><?php _e('Read more', 'wp-asset-clean-up'); ?></a> &nbsp;|&nbsp; <a target="_blank" href="https://tools.keycdn.com/http2-test"><?php _e('Verify if your server has HTTP/2 support', 'wp-asset-clean-up'); ?></a>
21
  </div>
22
 
23
  <table class="wpacu-form-table">
140
  <!--
141
  -->
142
  <p>
143
+ <?php _e('This results in as less JS combination groups as possible (this combines all JS files into 2/3 files, keeping their HEAD and BODY locations and most of the inline script tags before them for maximum compatibility)', 'wp-asset-clean-up'); ?> - <a id="wpacu-combine-js-method-info-target" href="#wpacu-combine-js-method-info"><?php _e('Read more', 'wp-asset-clean-up'); ?></a>
144
  </p>
145
 
146
  <hr />
templates/_admin-page-settings-plugin-areas/_common-files-unload.php CHANGED
@@ -26,8 +26,14 @@ $styleTabContent = ($selectedTabArea === $tabIdArea) ? 'style="display: table-ce
26
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
27
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
28
  &nbsp;
 
29
  <?php echo sprintf(__('This will unload %s', 'wp-asset-clean-up'), 'WordPress\' Emojis'); ?> (the smiley icons)
30
- <p style="margin-top: 10px;"><?php _e('As of WordPress 4.2, a new feature was introduced that allows you to use the new Emojis.', 'wp-asset-clean-up'); ?> <?php echo sprintf(__('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 %s is loaded along with extra inline JavaScript code which add up to the number of loaded HTTP requests.', 'wp-asset-clean-up'), '/wp-includes/js/wp-emoji-release.min.js'); ?></p>
 
 
 
 
 
31
  </td>
32
  </tr>
33
 
26
  name="<?php echo WPACU_PLUGIN_ID . '_settings'; ?>[disable_emojis]"
27
  value="1" /> <span class="wpacu_slider wpacu_round"></span> </label>
28
  &nbsp;
29
+
30
  <?php echo sprintf(__('This will unload %s', 'wp-asset-clean-up'), 'WordPress\' Emojis'); ?> (the smiley icons)
31
+
32
+ <p style="margin-top: 10px;">
33
+ <?php _e('As of WordPress 4.2, a new feature was introduced that allows you to use the new Emojis.', 'wp-asset-clean-up'); ?>
34
+ <?php echo __('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.', 'wp-asset-clean-up'); ?>
35
+ <?php echo sprintf(__('The file <em>%s</em> (12 KB) is loaded (along with extra inline JavaScript code) which adds up to the number of loaded HTTP requests.', 'wp-asset-clean-up'), '/wp-includes/js/wp-emoji-release.min.js'); ?>
36
+ </p>
37
  </td>
38
  </tr>
39
 
templates/admin-page-child-pages-info.php CHANGED
@@ -6,6 +6,10 @@ if (! isset($data)) {
6
  exit;
7
  }
8
 
 
 
 
 
9
  // [wpacu_lite]
10
  $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info_lock_page_type" class="go-pro-link-no-style"><span class="wpacu-tooltip">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
11
  $availableForProBtn = '<a class="button button-disabled go-pro-link-no-style" style="font-style: normal;" href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info_lock_action_btn"><span class="wpacu-tooltip wpacu-on-pages-btn">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span>'.__('Manage Assets', 'wp-asset-clean-up').'</a>';
@@ -23,8 +27,8 @@ $availableForProBtn = '<a class="button button-disabled go-pro-link-no-style" st
23
  <table class="table table-striped">
24
  <thead class="thead-default">
25
  <tr>
26
- <th align="left"><?php _e('PAGE TYPE', 'wp-asset-clean-up'); ?></th>
27
- <th align="left"><?php _e('ACTION', 'wp-asset-clean-up'); ?></th>
28
  <th align="left"><?php _e('DESCRIPTION', 'wp-asset-clean-up'); ?></th>
29
  </tr>
30
  </thead>
@@ -33,22 +37,22 @@ $availableForProBtn = '<a class="button button-disabled go-pro-link-no-style" st
33
  -->
34
  <tr>
35
  <td width="16%"><strong><?php _e('Posts', 'wp-asset-clean-up'); ?></strong></td>
36
- <td><a class="button" id="wpacu-manage-assets-posts-info-btn" href="#wpacu-manage-assets-posts-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
37
  <td>Post Type: 'post' (e.g. blog entries) &#10230; <a href="https://codex.wordpress.org/Posts_Screen"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
38
  </tr>
39
  <tr>
40
  <td><strong><?php _e('Custom Post Type', 'wp-asset-clean-up'); ?></strong></td>
41
- <td><a class="button" id="wpacu-manage-assets-custom-post-type-info-btn" href="#wpacu-manage-assets-custom-post-type-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
42
  <td>Popular examples: 'product' created by WooCommerce, 'download' created by Easy Digital Downloads etc. &#10230; <a href="https://codex.wordpress.org/Post_Types#Custom_Post_Types"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
43
  </tr>
44
  <tr>
45
  <td><strong><?php _e('Pages', 'wp-asset-clean-up'); ?></strong></td>
46
- <td><a class="button" id="wpacu-manage-assets-pages-info-btn" href="#wpacu-manage-assets-pages-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
47
  <td>Post Type: 'page' (e.g. About us, Contact) &#10230; <a href="https://codex.wordpress.org/Pages_Screen"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
48
  </tr>
49
  <tr>
50
  <td><strong><?php _e('Media Attachment', 'wp-asset-clean-up'); ?></strong></td>
51
- <td><a class="button" id="wpacu-manage-assets-attachments-info-btn" href="#wpacu-manage-assets-attachments-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
52
  <td>Post Type: 'attachment' (e.g. files from <a target="_blank" href="https://codex.wordpress.org/Media_Library_Screen">"Media" &#187; "Library"</a>, the page loaded usually prints the image or other media type) &#10230; <a href="https://codex.wordpress.org/Edit_Media"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
53
  </tr>
54
  <tr>
@@ -147,83 +151,4 @@ $availableForProBtn = '<a class="button button-disabled go-pro-link-no-style" st
147
  </div>
148
  </div>
149
  <!-- End "Media Attachment Pages" Modal -->
150
- </div>
151
-
152
- <style type="text/css">
153
- /* The Modal (background) */
154
- .wpacu-modal {
155
- display: none; /* Hidden by default */
156
- position: fixed; /* Stay in place */
157
- z-index: 1000000; /* Sit on top */
158
- padding-top: 15%; /* Location of the box */
159
- left: 0;
160
- top: 0;
161
- width: 100%; /* Full width */
162
- height: 100%; /* Full height */
163
- overflow: auto; /* Enable scroll if needed */
164
- background-color: rgb(0,0,0); /* Fallback color */
165
- background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
166
- }
167
-
168
- /* Modal Content */
169
- .wpacu-modal-content {
170
- background-color: #fefefe;
171
- margin: auto;
172
- padding: 20px;
173
- border: 1px solid #888;
174
- width: 80%;
175
- max-width: 600px;
176
- border-radius: 10px;
177
- }
178
-
179
- /* The Close Button */
180
- .wpacu-close {
181
- color: #aaaaaa;
182
- float: right;
183
- font-size: 28px;
184
- font-weight: bold;
185
- }
186
-
187
- .wpacu-close:hover,
188
- .wpacu-close:focus {
189
- color: #000;
190
- text-decoration: none;
191
- cursor: pointer;
192
- }
193
- </style>
194
-
195
- <script type="text/javascript">
196
- jQuery(document).ready(function($) {
197
- var currentModal;
198
- $('.wpacu-modal').each(function (wpacuIndex) {
199
- var wpacuModalId = $(this).attr('id');
200
-
201
- // Get the modal
202
- var wpacuModal = document.getElementById(wpacuModalId);
203
-
204
- // Get the button that opens the modal
205
- var wpacuBtn = document.getElementById(wpacuModalId + '-btn');
206
-
207
- // When the user clicks the button, open the modal
208
- wpacuBtn.onclick = function() {
209
- wpacuModal.style.display = 'block';
210
- currentModal = wpacuModal;
211
- };
212
-
213
- // Get the <span> element that closes the modal
214
- var wpacuSpan = document.getElementsByClassName('wpacu-close')[wpacuIndex];
215
-
216
- // When the user clicks on <span> (x), close the modal
217
- wpacuSpan.onclick = function() {
218
- wpacuModal.style.display = 'none';
219
- };
220
- });
221
-
222
- // When the user clicks anywhere outside of the modal, close it
223
- window.onclick = function (event) {
224
- if (event.target === currentModal) {
225
- currentModal.style.display = 'none';
226
- }
227
- };
228
- });
229
- </script>
6
  exit;
7
  }
8
 
9
+ if (! defined('WPACU_USE_MODAL_BOX')) {
10
+ define('WPACU_USE_MODAL_BOX', true);
11
+ }
12
+
13
  // [wpacu_lite]
14
  $availableForPro = '<a href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info_lock_page_type" class="go-pro-link-no-style"><span class="wpacu-tooltip">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span> <img width="20" height="20" src="'.WPACU_PLUGIN_URL.'/assets/icons/icon-lock.svg" valign="top" alt="" /></a>';
15
  $availableForProBtn = '<a class="button button-disabled go-pro-link-no-style" style="font-style: normal;" href="'.WPACU_PLUGIN_GO_PRO_URL.'?utm_source=plugin_pages_info_lock_action_btn"><span class="wpacu-tooltip wpacu-on-pages-btn">'.__('Available for Pro users', 'wp-asset-clean-up').'<br />'.__('Click to upgrade!', 'wp-asset-clean-up').'</span>'.__('Manage Assets', 'wp-asset-clean-up').'</a>';
27
  <table class="table table-striped">
28
  <thead class="thead-default">
29
  <tr>
30
+ <th align="left"><?php _e('PAGE TYPE', 'wp-asset-clean-up'); ?></th>
31
+ <th align="left"><?php _e('ACTION', 'wp-asset-clean-up'); ?></th>
32
  <th align="left"><?php _e('DESCRIPTION', 'wp-asset-clean-up'); ?></th>
33
  </tr>
34
  </thead>
37
  -->
38
  <tr>
39
  <td width="16%"><strong><?php _e('Posts', 'wp-asset-clean-up'); ?></strong></td>
40
+ <td><a class="button" id="wpacu-manage-assets-posts-info-target" href="#wpacu-manage-assets-posts-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
41
  <td>Post Type: 'post' (e.g. blog entries) &#10230; <a href="https://codex.wordpress.org/Posts_Screen"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
42
  </tr>
43
  <tr>
44
  <td><strong><?php _e('Custom Post Type', 'wp-asset-clean-up'); ?></strong></td>
45
+ <td><a class="button" id="wpacu-manage-assets-custom-post-type-info-target" href="#wpacu-manage-assets-custom-post-type-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
46
  <td>Popular examples: 'product' created by WooCommerce, 'download' created by Easy Digital Downloads etc. &#10230; <a href="https://codex.wordpress.org/Post_Types#Custom_Post_Types"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
47
  </tr>
48
  <tr>
49
  <td><strong><?php _e('Pages', 'wp-asset-clean-up'); ?></strong></td>
50
+ <td><a class="button" id="wpacu-manage-assets-pages-info-target" href="#wpacu-manage-assets-pages-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
51
  <td>Post Type: 'page' (e.g. About us, Contact) &#10230; <a href="https://codex.wordpress.org/Pages_Screen"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
52
  </tr>
53
  <tr>
54
  <td><strong><?php _e('Media Attachment', 'wp-asset-clean-up'); ?></strong></td>
55
+ <td><a class="button" id="wpacu-manage-assets-attachments-info-target" href="#wpacu-manage-assets-attachments-info"><?php _e('Manage Assets', 'wp-asset-clean-up'); ?></a></td>
56
  <td>Post Type: 'attachment' (e.g. files from <a target="_blank" href="https://codex.wordpress.org/Media_Library_Screen">"Media" &#187; "Library"</a>, the page loaded usually prints the image or other media type) &#10230; <a href="https://codex.wordpress.org/Edit_Media"><?php _e('read more', 'wp-asset-clean-up'); ?></a></td>
57
  </tr>
58
  <tr>
151
  </div>
152
  </div>
153
  <!-- End "Media Attachment Pages" Modal -->
154
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/admin-page-settings-plugin.php CHANGED
@@ -97,42 +97,6 @@ if ($showSettingsType === 'tabs') {
97
  </div>
98
 
99
  <script type="text/javascript">
100
- jQuery(document).ready(function($) {
101
- // [START] MODAL INFO
102
- var currentModal;
103
- $('.wpacu-modal').each(function (wpacuIndex) {
104
- var wpacuModalId = $(this).attr('id');
105
-
106
- // Get the modal
107
- var wpacuModal = document.getElementById(wpacuModalId);
108
-
109
- // Get the button that opens the modal
110
- var wpacuBtn = document.getElementById(wpacuModalId + '-link');
111
-
112
- // When the user clicks the button, open the modal
113
- wpacuBtn.onclick = function() {
114
- wpacuModal.style.display = 'block';
115
- currentModal = wpacuModal;
116
- };
117
-
118
- // Get the <span> element that closes the modal
119
- var wpacuSpan = document.getElementsByClassName('wpacu-close')[wpacuIndex];
120
-
121
- // When the user clicks on <span> (x), close the modal
122
- wpacuSpan.onclick = function() {
123
- wpacuModal.style.display = 'none';
124
- };
125
- });
126
-
127
- // When the user clicks anywhere outside of the modal, close it
128
- window.onclick = function (event) {
129
- if (event.target === currentModal) {
130
- currentModal.style.display = 'none';
131
- }
132
- };
133
- // [END] MODAL INFO
134
- });
135
-
136
  <?php
137
  if (! empty($_POST)) {
138
  ?>
97
  </div>
98
 
99
  <script type="text/javascript">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  <?php
101
  if (! empty($_POST)) {
102
  ?>
templates/meta-box-loaded-assets/_asset-script-single-row.php CHANGED
@@ -10,6 +10,8 @@ $inlineCodeStatus = $data['plugin_settings']['assets_list_inline_code_status'];
10
  $isCoreFile = isset($data['row']['obj']->wp) && $data['row']['obj']->wp;
11
  $hideCoreFiles = $data['plugin_settings']['hide_core_files'];
12
  $isBulkUnloaded = $data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded'];
 
 
13
  $childHandles = isset($data['all_deps']['scripts'][$data['row']['obj']->handle]) ? $data['all_deps']['scripts'][$data['row']['obj']->handle] : array();
14
  sort($childHandles);
15
 
@@ -21,9 +23,7 @@ $jqueryIconHtmlDepends = '<img src="'.WPACU_PLUGIN_URL.'/assets/icons/handles/ic
21
  <p class="wpacu_handle">
22
  <label for="script_<?php echo $data['row']['obj']->handle; ?>"> <?php _e('Handle:', 'wp-asset-clean-up'); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong> <?php if (in_array($data['row']['obj']->handle, array('jquery', 'jquery-core', 'jquery-migrate'))) { echo '&nbsp;'.$jqueryIconHtmlHandle; } ?></label>
23
  <?php if (isset($data['view_by_location']) || isset($data['view_by_position'])) { echo '&nbsp;<em>* JavaScript (.js)</em>'; } ?>
24
- <?php
25
- if ($isCoreFile && ! $hideCoreFiles) {
26
- ?>
27
  <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>
28
  <?php
29
  }
@@ -32,7 +32,26 @@ $jqueryIconHtmlDepends = '<img src="'.WPACU_PLUGIN_URL.'/assets/icons/handles/ic
32
 
33
  <?php
34
  if (! empty($childHandles)) {
35
- echo '<p><em style="font-size: 85%;"><span style="color: #0073aa; width: 19px; height: 19px;" class="dashicons dashicons-info"></span> This file has other JavaScript "children" files depending on it, thus, by unloading it, the following will also be unloaded: <span style="color: green; font-weight: 600;">'.implode('<span style="color: black;">,</span> ', $childHandles).'</span></em></p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  ?>
38
 
@@ -318,6 +337,25 @@ $jqueryIconHtmlDepends = '<img src="'.WPACU_PLUGIN_URL.'/assets/icons/handles/ic
318
  </div>
319
  <?php } ?>
320
  <!-- [/wpacu_lite] -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  <img style="display: none;" class="wpacu-ajax-loader" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
322
  </td>
323
  </tr>
10
  $isCoreFile = isset($data['row']['obj']->wp) && $data['row']['obj']->wp;
11
  $hideCoreFiles = $data['plugin_settings']['hide_core_files'];
12
  $isBulkUnloaded = $data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded'];
13
+
14
+ // Does it have "children"? - other JS file(s) depending on it
15
  $childHandles = isset($data['all_deps']['scripts'][$data['row']['obj']->handle]) ? $data['all_deps']['scripts'][$data['row']['obj']->handle] : array();
16
  sort($childHandles);
17
 
23
  <p class="wpacu_handle">
24
  <label for="script_<?php echo $data['row']['obj']->handle; ?>"> <?php _e('Handle:', 'wp-asset-clean-up'); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong> <?php if (in_array($data['row']['obj']->handle, array('jquery', 'jquery-core', 'jquery-migrate'))) { echo '&nbsp;'.$jqueryIconHtmlHandle; } ?></label>
25
  <?php if (isset($data['view_by_location']) || isset($data['view_by_position'])) { echo '&nbsp;<em>* JavaScript (.js)</em>'; } ?>
26
+ <?php if ($isCoreFile && ! $hideCoreFiles) { ?>
 
 
27
  <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>
28
  <?php
29
  }
32
 
33
  <?php
34
  if (! empty($childHandles)) {
35
+ $ignoreChild = (isset($data['ignore_child']['scripts'][$data['row']['obj']->handle]) && $data['ignore_child']['scripts'][$data['row']['obj']->handle]);
36
+ ?>
37
+ <p>
38
+ <em style="font-size: 85%;">
39
+ <span style="color: #0073aa; width: 19px; height: 19px; vertical-align: middle;" class="dashicons dashicons-info"></span>
40
+ This file has other JavaScript "children" files depending on it, thus, by unloading it, the following will also be unloaded:
41
+ <span style="color: green; font-weight: 600;">
42
+ <?php echo implode('<span style="color: black;">,</span> ', $childHandles); ?>
43
+ </span>
44
+ </em>
45
+ <label for="script_<?php echo $data['row']['obj']->handle; ?>_ignore_children">
46
+ <input type="hidden" name="wpacu_ignore_child[scripts][<?php echo $data['row']['obj']->handle; ?>]" value="" />
47
+ &#10230; <input id="script_<?php echo $data['row']['obj']->handle; ?>_ignore_children"
48
+ type="checkbox"
49
+ <?php if ($ignoreChild) { ?>checked="checked"<?php } ?>
50
+ name="wpacu_ignore_child[scripts][<?php echo $data['row']['obj']->handle; ?>]"
51
+ value="1" /> <small><?php _e('Ignore dependency rule and keep the "children" loaded', 'wp-asset-clean-up'); ?></small>
52
+ </label>
53
+ </p>
54
+ <?php
55
  }
56
  ?>
57
 
337
  </div>
338
  <?php } ?>
339
  <!-- [/wpacu_lite] -->
340
+
341
+ <?php
342
+ $handleNote = (isset($data['handle_notes']['scripts'][$data['row']['obj']->handle]) && $data['handle_notes']['scripts'][$data['row']['obj']->handle])
343
+ ? $data['handle_notes']['scripts'][$data['row']['obj']->handle]
344
+ : false;
345
+ ?>
346
+ <div class="wpacu-handle-notes">
347
+ <?php if (! $handleNote) { ?>
348
+ <p><small>No notes have been added about this JavaScript file (e.g. why you unloaded it or decided to keep it loaded) &#10230; <a data-handle="<?php echo $data['row']['obj']->handle; ?>" href="#" class="wpacu-add-handle-note"><span class="dashicons dashicons-welcome-write-blog"></span> <label for="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>">Add Note</label></a></small></p>
349
+ <?php } else { ?>
350
+ <p><small>The following note has been added for this JavaScript file (<em>to have it removed on update, just leave the text area empty</em>):</small></p>
351
+ <?php } ?>
352
+ <div <?php if ($handleNote) { echo 'style="display: block;"'; } ?> data-handle="<?php echo $data['row']['obj']->handle; ?>" class="wpacu-handle-notes-field">
353
+ <textarea id="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>"
354
+ rows="3"
355
+ placeholder="<?php echo esc_attr('Add your note here about this JavaScript file', 'wp-asset-clean-up'); ?>"
356
+ name="wpacu_handle_notes[scripts][<?php echo $data['row']['obj']->handle; ?>]"><?php echo (isset($data['handle_notes']['scripts'][$data['row']['obj']->handle]) ? $data['handle_notes']['scripts'][$data['row']['obj']->handle] : ''); ?></textarea>
357
+ </div>
358
+ </div>
359
  <img style="display: none;" class="wpacu-ajax-loader" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
360
  </td>
361
  </tr>
templates/meta-box-loaded-assets/_asset-style-single-row.php CHANGED
@@ -10,6 +10,8 @@ $inlineCodeStatus = $data['plugin_settings']['assets_list_inline_code_status'];
10
  $isCoreFile = isset($data['row']['obj']->wp) && $data['row']['obj']->wp;
11
  $hideCoreFiles = $data['plugin_settings']['hide_core_files'];
12
  $isBulkUnloaded = $data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded'];
 
 
13
  $childHandles = isset($data['all_deps']['styles'][$data['row']['obj']->handle]) ? $data['all_deps']['styles'][$data['row']['obj']->handle] : array();
14
  sort($childHandles);
15
  ?>
@@ -18,9 +20,7 @@ sort($childHandles);
18
  <p class="wpacu_handle">
19
  <label for="style_<?php echo $data['row']['obj']->handle; ?>"><?php _e('Handle:', 'wp-asset-clean-up'); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong></label>
20
  <?php if (isset($data['view_by_location'])) { echo '&nbsp;<em>* Stylesheet (.css)</em>'; } ?>
21
- <?php
22
- if ($isCoreFile && ! $hideCoreFiles) {
23
- ?>
24
  <span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br /><?php _e('Not sure if needed or not? In this case, it\'s better to leave it loaded to avoid breaking the website.', 'wp-asset-clean-up'); ?></span></span>
25
  <?php
26
  }
@@ -28,9 +28,28 @@ sort($childHandles);
28
  </p>
29
 
30
  <?php
31
- if (! empty($childHandles)) {
32
- echo '<p><em style="font-size: 85%;"><span style="color: #0073aa; width: 19px; height: 19px;" class="dashicons dashicons-info"></span> This file has other CSS files depending on it. By unloading this CSS, the following "children" files will be unloaded too: <span style="color: green; font-weight: 600;">'.implode(', ', $childHandles).'</span></em></p>';
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  $ver = (isset($data['row']['obj']->ver) && trim($data['row']['obj']->ver)) ? $data['row']['obj']->ver : $data['wp_version'];
36
  ?>
@@ -292,8 +311,24 @@ sort($childHandles);
292
  </div>
293
  <?php
294
  }
295
- ?>
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  <img style="display: none;" class="wpacu-ajax-loader" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
298
  </td>
299
  </tr>
10
  $isCoreFile = isset($data['row']['obj']->wp) && $data['row']['obj']->wp;
11
  $hideCoreFiles = $data['plugin_settings']['hide_core_files'];
12
  $isBulkUnloaded = $data['row']['global_unloaded'] || $data['row']['is_post_type_unloaded'];
13
+
14
+ // Does it have "children"? - other CSS file(s) depending on it
15
  $childHandles = isset($data['all_deps']['styles'][$data['row']['obj']->handle]) ? $data['all_deps']['styles'][$data['row']['obj']->handle] : array();
16
  sort($childHandles);
17
  ?>
20
  <p class="wpacu_handle">
21
  <label for="style_<?php echo $data['row']['obj']->handle; ?>"><?php _e('Handle:', 'wp-asset-clean-up'); ?> <strong><span style="color: green;"><?php echo $data['row']['obj']->handle; ?></span></strong></label>
22
  <?php if (isset($data['view_by_location'])) { echo '&nbsp;<em>* Stylesheet (.css)</em>'; } ?>
23
+ <?php if ($isCoreFile && ! $hideCoreFiles) { ?>
 
 
24
  <span class="dashicons dashicons-warning wordpress-core-file"><span class="wpacu-tooltip">WordPress Core File<br /><?php _e('Not sure if needed or not? In this case, it\'s better to leave it loaded to avoid breaking the website.', 'wp-asset-clean-up'); ?></span></span>
25
  <?php
26
  }
28
  </p>
29
 
30
  <?php
31
+ if (! empty($childHandles)) {
32
+ $ignoreChild = (isset($data['ignore_child']['styles'][$data['row']['obj']->handle]) && $data['ignore_child']['styles'][$data['row']['obj']->handle]);
33
+ ?>
34
+ <p>
35
+ <em style="font-size: 85%;">
36
+ <span style="color: #0073aa; width: 19px; height: 19px; vertical-align: middle;" class="dashicons dashicons-info"></span>
37
+ This file has other CSS "children" files depending on it. By unloading this CSS, the following "children" files will be unloaded too:
38
+ <span style="color: green; font-weight: 600;">
39
+ <?php echo implode(', ', $childHandles); ?>
40
+ </span>
41
+ </em>
42
+ <label for="style_<?php echo $data['row']['obj']->handle; ?>_ignore_children">
43
+ <input type="hidden" name="wpacu_ignore_child[styles][<?php echo $data['row']['obj']->handle; ?>]" value="" />
44
+ &#10230; <input id="style_<?php echo $data['row']['obj']->handle; ?>_ignore_children"
45
+ type="checkbox"
46
+ <?php if ($ignoreChild) { ?>checked="checked"<?php } ?>
47
+ name="wpacu_ignore_child[styles][<?php echo $data['row']['obj']->handle; ?>]"
48
+ value="1" /> <small><?php _e('Ignore dependency rule and keep the "children" loaded', 'wp-asset-clean-up'); ?></small>
49
+ </label>
50
+ </p>
51
+ <?php
52
+ }
53
 
54
  $ver = (isset($data['row']['obj']->ver) && trim($data['row']['obj']->ver)) ? $data['row']['obj']->ver : $data['wp_version'];
55
  ?>
311
  </div>
312
  <?php
313
  }
 
314
 
315
+ $handleNote = (isset($data['handle_notes']['styles'][$data['row']['obj']->handle]) && $data['handle_notes']['styles'][$data['row']['obj']->handle])
316
+ ? $data['handle_notes']['styles'][$data['row']['obj']->handle]
317
+ : false;
318
+ ?>
319
+ <div class="wpacu-handle-notes">
320
+ <?php if (! $handleNote) { ?>
321
+ <p><small>No notes have been added about this stylesheet file (e.g. why you unloaded it or decided to keep it loaded) &#10230; <a data-handle="<?php echo $data['row']['obj']->handle; ?>" href="#" class="wpacu-add-handle-note"><span class="dashicons dashicons-welcome-write-blog"></span> <label for="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>">Add Note</label></a></small></p>
322
+ <?php } else { ?>
323
+ <p><small>The following note has been added for this stylesheet file (<em>to have it removed on update, just leave the text area empty</em>):</small></p>
324
+ <?php } ?>
325
+ <div <?php if ($handleNote) { echo 'style="display: block;"'; } ?> data-handle="<?php echo $data['row']['obj']->handle; ?>" class="wpacu-handle-notes-field">
326
+ <textarea id="wpacu_handle_note_<?php echo $data['row']['obj']->handle; ?>"
327
+ rows="3"
328
+ placeholder="<?php echo esc_attr('Add your note here about this stylesheet file', 'wp-asset-clean-up'); ?>"
329
+ name="wpacu_handle_notes[styles][<?php echo $data['row']['obj']->handle; ?>]"><?php echo $handleNote; ?></textarea>
330
+ </div>
331
+ </div>
332
  <img style="display: none;" class="wpacu-ajax-loader" src="<?php echo WPACU_PLUGIN_URL; ?>/assets/icons/icon-ajax-loading-spinner.svg" alt="" />
333
  </td>
334
  </tr>
templates/settings-frontend.php CHANGED
@@ -127,7 +127,7 @@ if (! isset($data)) {
127
  </div>
128
 
129
  <p align="right"><small><?php echo sprintf(
130
- __('Powered by %s, version %d', 'wp-asset-clean-up'),
131
  WPACU_PLUGIN_TITLE,
132
  WPACU_PLUGIN_VERSION);
133
  ?></small></p>
127
  </div>
128
 
129
  <p align="right"><small><?php echo sprintf(
130
+ __('Powered by %1$s, version %2$s', 'wp-asset-clean-up'),
131
  WPACU_PLUGIN_TITLE,
132
  WPACU_PLUGIN_VERSION);
133
  ?></small></p>
wpacu.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
- * Version: 1.3.2.7
6
  * Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
@@ -10,7 +10,7 @@
10
  * Domain Path: /languages
11
  */
12
 
13
- define('WPACU_PLUGIN_VERSION', '1.3.2.7');
14
 
15
  // Exit if accessed directly
16
  if (! defined('ABSPATH')) {
2
  /*
3
  * Plugin Name: Asset CleanUp: Page Speed Booster
4
  * Plugin URI: https://wordpress.org/plugins/wp-asset-clean-up/
5
+ * Version: 1.3.2.8
6
  * Description: Unload Chosen Scripts & Styles from Posts/Pages to reduce HTTP Requests, Combine/Minify CSS/JS files
7
  * Author: Gabriel Livan
8
  * Author URI: http://gabelivan.com/
10
  * Domain Path: /languages
11
  */
12
 
13
+ define('WPACU_PLUGIN_VERSION', '1.3.2.8');
14
 
15
  // Exit if accessed directly
16
  if (! defined('ABSPATH')) {