Asset CleanUp: Page Speed Booster - Version 1.2.4

Version Description

  • Bug Fix: Remove "Unload everywhere" rule had to be updated to work no matter what key is assigned to the handle in the array resulting from the JSON
Download this release

Release Info

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

Code changes from version 1.2.1 to 1.2.4

assets/icheck/icheck.min.js CHANGED
File without changes
assets/icheck/skins/square/red.css CHANGED
File without changes
assets/icheck/skins/square/red.png CHANGED
File without changes
assets/icheck/skins/square/red@2x.png CHANGED
File without changes
assets/script.js CHANGED
@@ -7,7 +7,7 @@ jQuery(document).ready(function($) {
7
  //
8
  var WpAssetCleanUp = {
9
  load: function() {
10
- var cbSelector = '.icheckbox_square-red';
11
 
12
  $(cbSelector).iCheck({
13
  checkboxClass: 'icheckbox_square-red',
@@ -22,39 +22,44 @@ jQuery(document).ready(function($) {
22
  $(event.target).closest('tr').removeClass('wpacu_not_load');
23
  });
24
 
25
- var handle;
26
-
27
  // Unload Everywhere
28
  $('.wpacu_global_unload').click(function() {
29
  handle = $(this).attr('data-handle');
30
 
31
  if ($(this).prop('checked')) {
32
  $(this).parent('label').addClass('wpacu_global_checked');
33
- $(this).closest('tr').addClass('wpacu_not_load');
34
 
 
35
  if ($(this).hasClass('wpacu_global_style')) {
36
  $('#style_' + handle).iCheck('check').iCheck('disable');
37
  } else if($(this).hasClass('wpacu_global_script')) {
38
  $('#script_' + handle).iCheck('check').iCheck('disable');
39
  }
 
40
  } else {
41
  $(this).parent('label').removeClass('wpacu_global_checked');
42
- $(this).closest('tr').removeClass('wpacu_not_load');
43
 
 
44
  if ($(this).hasClass('wpacu_global_style')) {
45
  $('#style_' + handle).iCheck('uncheck').iCheck('enable');
46
  } else if($(this).hasClass('wpacu_global_script')) {
47
  $('#script_' + handle).iCheck('uncheck').iCheck('enable');
48
  }
 
49
 
 
50
  // Un-check make exception as it is not relevant
51
  // if unload everywhere is selected
52
  $('#wpacu_style_load_it_' + handle)
53
  .prop('checked', false)
54
  .parent('label').removeClass('wpacu_global_unload_exception');
 
55
  }
56
  });
57
 
 
58
  // Asset Global Options
59
  $('.wpacu_global_option').click(function() {
60
  var handle = $(this).attr('data-handle'), handleType;
@@ -67,10 +72,10 @@ jQuery(document).ready(function($) {
67
 
68
  if ($(this).val() == 'remove') {
69
  $(this).closest('tr').removeClass('wpacu_not_load');
70
-
71
  $('#wpacu_load_it_option_'+ handleType +'_'+ handle).hide();
 
72
 
73
- } else if ($(this).val() == 'default'
74
  && !$('#wpacu_'+ handleType +'_load_it_'+ handle).prop('checked')) {
75
  $(this).closest('tr').addClass('wpacu_not_load');
76
  }
@@ -79,9 +84,19 @@ jQuery(document).ready(function($) {
79
  $('#wpacu_load_it_option_'+ handleType + '_' + handle).show();
80
  }
81
  });
 
 
 
 
 
 
 
 
 
82
 
83
  // Load it checkbox
84
  $('.wpacu_load_it_option').click(function() {
 
85
  var handle = $(this).attr('data-handle'), wpacu_input_name;
86
 
87
  if ($(this).hasClass('wpacu_style')) {
@@ -89,13 +104,14 @@ jQuery(document).ready(function($) {
89
  } else if ($(this).hasClass('wpacu_script')) {
90
  wpacu_input_name = 'wpacu_options_scripts['+ handle +']';
91
  }
 
92
 
93
  if ($(this).prop('checked')) {
94
  $(this).parent('label').addClass('wpacu_global_unload_exception');
95
- $(this).closest('tr').removeClass('wpacu_not_load');
96
- } else if ($('input[name="'+ wpacu_input_name +'"]:checked').val() == 'default') {
97
- $(this).parent('label').removeClass('wpacu_global_unload_exception');
98
- $(this).closest('tr').addClass('wpacu_not_load');
99
  } else {
100
  $(this).parent('label').removeClass('wpacu_global_unload_exception');
101
  }
@@ -103,6 +119,22 @@ jQuery(document).ready(function($) {
103
  }
104
  };
105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  //
107
  // Asset Front-end Edit (if setting is enabled)
108
  //
7
  //
8
  var WpAssetCleanUp = {
9
  load: function() {
10
+ var cbSelector = '.icheckbox_square-red', handle;
11
 
12
  $(cbSelector).iCheck({
13
  checkboxClass: 'icheckbox_square-red',
22
  $(event.target).closest('tr').removeClass('wpacu_not_load');
23
  });
24
 
 
 
25
  // Unload Everywhere
26
  $('.wpacu_global_unload').click(function() {
27
  handle = $(this).attr('data-handle');
28
 
29
  if ($(this).prop('checked')) {
30
  $(this).parent('label').addClass('wpacu_global_checked');
31
+ //$(this).closest('tr').addClass('wpacu_not_load');
32
 
33
+ /*
34
  if ($(this).hasClass('wpacu_global_style')) {
35
  $('#style_' + handle).iCheck('check').iCheck('disable');
36
  } else if($(this).hasClass('wpacu_global_script')) {
37
  $('#script_' + handle).iCheck('check').iCheck('disable');
38
  }
39
+ */
40
  } else {
41
  $(this).parent('label').removeClass('wpacu_global_checked');
42
+ //$(this).closest('tr').removeClass('wpacu_not_load');
43
 
44
+ /*
45
  if ($(this).hasClass('wpacu_global_style')) {
46
  $('#style_' + handle).iCheck('uncheck').iCheck('enable');
47
  } else if($(this).hasClass('wpacu_global_script')) {
48
  $('#script_' + handle).iCheck('uncheck').iCheck('enable');
49
  }
50
+ */
51
 
52
+ /*
53
  // Un-check make exception as it is not relevant
54
  // if unload everywhere is selected
55
  $('#wpacu_style_load_it_' + handle)
56
  .prop('checked', false)
57
  .parent('label').removeClass('wpacu_global_unload_exception');
58
+ */
59
  }
60
  });
61
 
62
+ /*
63
  // Asset Global Options
64
  $('.wpacu_global_option').click(function() {
65
  var handle = $(this).attr('data-handle'), handleType;
72
 
73
  if ($(this).val() == 'remove') {
74
  $(this).closest('tr').removeClass('wpacu_not_load');
 
75
  $('#wpacu_load_it_option_'+ handleType +'_'+ handle).hide();
76
+ }
77
 
78
+ if ($(this).val() == 'default'
79
  && !$('#wpacu_'+ handleType +'_load_it_'+ handle).prop('checked')) {
80
  $(this).closest('tr').addClass('wpacu_not_load');
81
  }
84
  $('#wpacu_load_it_option_'+ handleType + '_' + handle).show();
85
  }
86
  });
87
+ */
88
+
89
+ $('.wpacu_post_type_unload').click(function() {
90
+ if ($(this).prop('checked')) {
91
+ $(this).parent('label').addClass('wpacu_post_type_unload_active');
92
+ } else {
93
+ $(this).parent('label').removeClass('wpacu_post_type_unload_active');
94
+ }
95
+ });
96
 
97
  // Load it checkbox
98
  $('.wpacu_load_it_option').click(function() {
99
+ /*
100
  var handle = $(this).attr('data-handle'), wpacu_input_name;
101
 
102
  if ($(this).hasClass('wpacu_style')) {
104
  } else if ($(this).hasClass('wpacu_script')) {
105
  wpacu_input_name = 'wpacu_options_scripts['+ handle +']';
106
  }
107
+ */
108
 
109
  if ($(this).prop('checked')) {
110
  $(this).parent('label').addClass('wpacu_global_unload_exception');
111
+ //$(this).closest('tr').removeClass('wpacu_not_load');
112
+ ///} else if ($('input[name="'+ wpacu_input_name +'"]:checked').val() == 'default') {
113
+ // $(this).parent('label').removeClass('wpacu_global_unload_exception');
114
+ //$(this).closest('tr').addClass('wpacu_not_load');
115
  } else {
116
  $(this).parent('label').removeClass('wpacu_global_unload_exception');
117
  }
119
  }
120
  };
121
 
122
+ $('#wpacu_post_type_select').change(function() {
123
+ $('#wpacu_post_type_form').submit();
124
+ });
125
+
126
+ // Items are marked for removal from the unload list
127
+ // from either "Everywhere" or "Post Type"
128
+ $('.wpacu_remove_rule').click(function() {
129
+ var $wpacuGlobalRuleRow = $(this).parents('.wpacu_global_rule_row');
130
+
131
+ if ($(this).prop('checked')) {
132
+ $wpacuGlobalRuleRow.addClass('selected');
133
+ } else {
134
+ $wpacuGlobalRuleRow.removeClass('selected');
135
+ }
136
+ });
137
+
138
  //
139
  // Asset Front-end Edit (if setting is enabled)
140
  //
assets/script.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(document).ready(function(a){var b={load:function(){var b,c=".icheckbox_square-red";a(c).iCheck({checkboxClass:"icheckbox_square-red",increaseArea:"20%"}),a(c).on("ifChecked",function(b){a(b.target).closest("tr").addClass("wpacu_not_load")}),a(c).on("ifUnchecked",function(b){a(b.target).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_post_type_unload").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_post_type_unload_active"):a(this).parent("label").removeClass("wpacu_post_type_unload_active")}),a(".wpacu_load_it_option").click(function(){a(this).prop("checked")?a(this).parent("label").addClass("wpacu_global_unload_exception"):a(this).parent("label").removeClass("wpacu_global_unload_exception")})}};if(a("#wpacu_post_type_select").change(function(){a("#wpacu_post_type_form").submit()}),a(".wpacu_remove_rule").click(function(){var b=a(this).parents(".wpacu_global_rule_row");a(this).prop("checked")?b.addClass("selected"):b.removeClass("selected")}),a("#wpacu_wrap_assets").length>0&&b.load(),"undefined"==typeof wpacu_object||a("#wpacu_meta_box_content").length<1)return!1;var c=wpacu_object.plugin_name+"_load=1";jQuery.post(wpacu_object.post_url,c,function(c){var d={action:wpacu_object.plugin_name+"_get_loaded_assets",contents:c,post_id:wpacu_object.post_id,post_url:wpacu_object.post_url};jQuery.post(wpacu_object.ajax_url,d,function(c){return""!=c&&(a("#wpacu_meta_box_content").html(c),a("#wpacu_home_page_form").length>0&&a("#submit").show(),void b.load())})})});
assets/style.css CHANGED
@@ -1,156 +1,63 @@
1
- tr.wpacu_not_load th, tr.wpacu_not_load td {
2
- background: #FFE1E1; }
3
-
4
- .widefat .check-column.wpacu_check {
5
- padding: 10px; }
6
-
7
- #wpacu_meta_box_content {
8
- width: 99%; }
9
- #wpacu_meta_box_content h3 {
10
- margin-left: 0;
11
- padding-left: 0; }
12
- #wpacu_meta_box_content div.wpacu_note {
13
- padding: 10px;
14
- background-color: #f5f5f5; }
15
-
16
- #wpacu_wrap_assets div.wpacu_note {
17
- padding: 10px;
18
- background-color: #f5f5f5; }
19
-
20
- #wpacu_meta_box_content div.wpacu_warning, #wpacu_wrap_assets div.wpacu_warning {
21
- border: 1px solid #cc0000; }
22
-
23
- #wpacu_meta_box_content div.wpacu_verified {
24
- padding: 10px;
25
- background-color: #f5f5f5;
26
- border-left: 1px solid #ddd; }
27
- #wpacu_meta_box_content div.wpacu_verified span {
28
- color: #0073aa;
29
- font-weight: bold; }
30
- #wpacu_meta_box_content ul.wpacu_asset_options {
31
- margin: 0;
32
- padding: 0; }
33
- #wpacu_meta_box_content ul.wpacu_asset_options li {
34
- list-style: none;
35
- display: inline-block; }
36
- #wpacu_meta_box_content ul.wpacu_asset_options label {
37
- margin-right: 20px;
38
- font-weight: normal; }
39
 
40
  /*
41
  * Asset List Styling: Front-end and Back-end
42
  */
43
- #wpacu_wrap_assets {
44
- color: #000000 !important;
45
- text-align: left;
46
- clear: both;
47
- width: 90%;
48
- padding: 20px;
49
- margin: 30px 0 0 15px;
50
- border: 1px solid #cdcdcd;
51
- z-index: 10000 !important;
52
- position: relative;
53
- background-color: white; }
54
- #wpacu_wrap_assets img {
55
- display: inline-block !important; }
56
- #wpacu_wrap_assets p {
57
- margin: 10px 0;
58
- line-height: 22px;
59
- text-align: left; }
60
- #wpacu_wrap_assets h1 {
61
- margin: 0 0 20px;
62
- font-size: 160%;
63
- text-align: left; }
64
- #wpacu_wrap_assets h3 {
65
- margin: 20px 0;
66
- font-size: 130%; }
67
-
68
- .wpacu_verified {
69
- margin: 0 0 10px 0; }
70
-
71
- .wpacu_asset_row td {
72
- padding: 10px; }
73
- .wpacu_asset_row td p {
74
- margin-bottom: 10px;
75
- word-wrap: break-word; }
76
- .wpacu_asset_row td label {
77
- cursor: pointer !important;
78
- display: inline-block !important;
79
- font-size: 100%;
80
- font-weight: normal; }
81
- .wpacu_asset_row td label span {
82
- font-size: 100% !important; }
83
- .wpacu_asset_row td.wpacu_check {
84
- width: 50px; }
85
 
86
  /* Dashboard adjust */
87
- body.wp-admin .wpacu_asset_row td.wpacu_check {
88
- width: 25px; }
89
-
90
- label.wpacu_add_global {
91
- cursor: pointer; }
92
- label.wpacu_global_checked {
93
- font-weight: bold;
94
- color: #d54e21; }
95
- label.wpacu_global_unload_exception {
96
- font-weight: bold; }
97
-
98
- ul.wpacu_asset_options {
99
- margin: 0;
100
- padding: 0; }
101
- ul.wpacu_asset_options li {
102
- list-style: none;
103
- display: inline-block; }
104
- ul.wpacu_asset_options label {
105
- margin-right: 20px;
106
- font-weight: normal; }
107
- ul.wpacu_asset_options label input {
108
- margin-right: 4px; }
109
 
110
  /* Assets Table */
111
- .wp-asset-clean-up.widefat {
112
- width: 99%; }
113
-
114
- .wpacu_widefat {
115
- border: 1px solid #e5e5e5 !important; }
116
- .wpacu_widefat td {
117
- border: 1px solid #e5e5e5 !important; }
118
-
119
- .wpacu_striped > tbody > :nth-child(odd), ul.wpacu_striped > :nth-child(odd) {
120
- background-color: #f9f9f9 !important; }
121
-
122
- .wpacu_update_btn {
123
- -moz-box-shadow: inset 0 1px 0 0 #54a3f7 !important;
124
- -webkit-box-shadow: inset 0 1px 0 0 #54a3f7 !important;
125
- box-shadow: inset 0 1px 0 0 #54a3f7 !important;
126
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #007dc1), color-stop(1, #0061a7)) !important;
127
- background: -moz-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
128
- background: -webkit-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
129
- background: -o-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
130
- background: -ms-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
131
- background: linear-gradient(to bottom, #007dc1 5%, #0061a7 100%) !important;
132
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7',GradientType=0) !important;
133
- background-color: #007dc1 !important;
134
- -moz-border-radius: 3px !important;
135
- -webkit-border-radius: 3px !important;
136
- border-radius: 3px !important;
137
- border: 1px solid #124d77 !important;
138
- display: inline-block !important;
139
- cursor: pointer !important;
140
- color: #ffffff !important;
141
- font-size: 15px !important;
142
- padding: 10px 24px !important;
143
- text-decoration: none !important;
144
- text-shadow: 0 1px 0 #154682 !important; }
145
- .wpacu_update_btn:hover {
146
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #0061a7), color-stop(1, #007dc1)) !important;
147
- background: -moz-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
148
- background: -webkit-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
149
- background: -o-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
150
- background: -ms-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
151
- background: linear-gradient(to bottom, #0061a7 5%, #007dc1 100%) !important;
152
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1',GradientType=0) !important;
153
- background-color: #0061a7 !important; }
154
- .wpacu_update_btn:active {
155
- position: relative !important;
156
- top: 1px !important; }
1
+ tr.wpacu_not_load th, tr.wpacu_not_load td { background: #FFE1E1; }
2
+
3
+ .widefat .check-column.wpacu_check { padding: 10px; }
4
+
5
+ #wpacu_meta_box_content { width: 99%; }
6
+ #wpacu_meta_box_content h3 { margin-left: 0; padding-left: 0; }
7
+ #wpacu_meta_box_content div.wpacu_note { padding: 10px; background-color: #f5f5f5; }
8
+
9
+ #wpacu_wrap_assets div.wpacu_note { padding: 10px; background-color: #f5f5f5; }
10
+
11
+ #wpacu_meta_box_content div.wpacu_warning, #wpacu_wrap_assets div.wpacu_warning { border: 1px solid #cc0000; }
12
+
13
+ #wpacu_meta_box_content div.wpacu_verified { padding: 10px; background-color: #f5f5f5; border-left: 1px solid #ddd; }
14
+ #wpacu_meta_box_content div.wpacu_verified span { color: #0073aa; font-weight: bold; }
15
+ #wpacu_meta_box_content ul.wpacu_asset_options { margin: 0; padding: 0; }
16
+ #wpacu_meta_box_content ul.wpacu_asset_options li { list-style: none; display: inline-block; }
17
+ #wpacu_meta_box_content ul.wpacu_asset_options label { margin-right: 20px; font-weight: normal; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  /*
20
  * Asset List Styling: Front-end and Back-end
21
  */
22
+ #wpacu_wrap_assets { color: #000000 !important; text-align: left; clear: both; width: 90%; padding: 20px; margin: 30px 0 0 15px; border: 1px solid #cdcdcd; z-index: 10000 !important; position: relative; background-color: white; }
23
+ #wpacu_wrap_assets img { display: inline-block !important; }
24
+ #wpacu_wrap_assets p { margin: 10px 0; line-height: 22px; text-align: left; }
25
+ #wpacu_wrap_assets h1 { margin: 0 0 20px; font-size: 160%; text-align: left; }
26
+ #wpacu_wrap_assets h3 { margin: 20px 0; font-size: 130%; }
27
+
28
+ .wpacu_verified { margin: 0 0 10px 0; }
29
+
30
+ .wpacu_asset_row td { padding: 10px; }
31
+ .wpacu_asset_row td p { margin-bottom: 10px; word-wrap: break-word; }
32
+ .wpacu_asset_row td label { cursor: pointer !important; display: inline-block !important; font-size: 100%; font-weight: normal; }
33
+ .wpacu_asset_row td label span { font-size: 100% !important; }
34
+ .wpacu_asset_row td.wpacu_check { width: 50px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  /* Dashboard adjust */
37
+ body.wp-admin .wpacu_asset_row td.wpacu_check { width: 25px; }
38
+
39
+ label.wpacu_add_global { cursor: pointer; }
40
+ label.wpacu_global_checked { font-weight: bold; color: #d54e21; }
41
+ label.wpacu_global_unload_exception { font-weight: bold !important; }
42
+ label.wpacu_post_type_unload_active { color: #d54e21; }
43
+
44
+ tr.wpacu_global_rule_row.selected { background: #e7e7e7; }
45
+
46
+ .nav-tab-wrapper { border-bottom: 1px solid #ccc; width: 95%; }
47
+
48
+ ul.wpacu_asset_options { margin: 0; padding: 0; }
49
+ ul.wpacu_asset_options li { list-style: none; display: inline-block; }
50
+ ul.wpacu_asset_options label { margin-right: 20px; font-weight: normal; }
51
+ ul.wpacu_asset_options label input { margin-right: 4px; }
 
 
 
 
 
 
 
52
 
53
  /* Assets Table */
54
+ .wp-asset-clean-up.widefat { width: 99%; }
55
+
56
+ .wpacu_widefat { border: 1px solid #e5e5e5 !important; }
57
+ .wpacu_widefat td { border: 1px solid #e5e5e5 !important; }
58
+
59
+ .wpacu_striped > tbody > :nth-child(odd), ul.wpacu_striped > :nth-child(odd) { background-color: #f9f9f9 !important; }
60
+
61
+ .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(0.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: #ffffff !important; font-size: 15px !important; padding: 10px 24px !important; text-decoration: none !important; text-shadow: 0 1px 0 #154682 !important; }
62
+ .wpacu_update_btn:hover { background: -webkit-gradient(linear, left top, left bottom, color-stop(0.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; }
63
+ .wpacu_update_btn:active { position: relative !important; top: 1px !important; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/style.min.css ADDED
@@ -0,0 +1 @@
 
1
+ tr.wpacu_not_load td,tr.wpacu_not_load th{background:#FFE1E1}.widefat .check-column.wpacu_check{padding:10px}#wpacu_meta_box_content{width:99%}#wpacu_meta_box_content h3{margin-left:0;padding-left:0}#wpacu_meta_box_content div.wpacu_note,#wpacu_wrap_assets div.wpacu_note{padding:10px;background-color:#f5f5f5}#wpacu_meta_box_content div.wpacu_warning,#wpacu_wrap_assets div.wpacu_warning{border:1px solid #c00}#wpacu_meta_box_content div.wpacu_verified{padding:10px;background-color:#f5f5f5;border-left:1px solid #ddd}#wpacu_meta_box_content div.wpacu_verified span{color:#0073aa;font-weight:700}#wpacu_meta_box_content ul.wpacu_asset_options{margin:0;padding:0}#wpacu_meta_box_content ul.wpacu_asset_options li{list-style:none;display:inline-block}#wpacu_wrap_assets img,.wpacu_asset_row td label{display:inline-block!important}#wpacu_meta_box_content ul.wpacu_asset_options label{margin-right:20px;font-weight:400}#wpacu_wrap_assets{color:#000!important;text-align:left;clear:both;width:90%;padding:20px;margin:30px 0 0 15px;border:1px solid #cdcdcd;z-index:10000!important;position:relative;background-color:#fff}#wpacu_wrap_assets p{margin:10px 0;line-height:22px;text-align:left}#wpacu_wrap_assets h1{margin:0 0 20px;font-size:160%;text-align:left}#wpacu_wrap_assets h3{margin:20px 0;font-size:130%}.wpacu_verified{margin:0 0 10px}.wpacu_asset_row td{padding:10px}.wpacu_asset_row td p{margin-bottom:10px;word-wrap:break-word}.wpacu_asset_row td label{cursor:pointer!important;font-size:100%;font-weight:400}.wpacu_asset_row td label span{font-size:100%!important}.wpacu_asset_row td.wpacu_check{width:50px}body.wp-admin .wpacu_asset_row td.wpacu_check{width:25px}label.wpacu_add_global{cursor:pointer}label.wpacu_global_checked{font-weight:700;color:#d54e21}label.wpacu_global_unload_exception{font-weight:700!important}label.wpacu_post_type_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;padding:0}ul.wpacu_asset_options li{list-style:none;display:inline-block}ul.wpacu_asset_options label{margin-right:20px;font-weight:400}ul.wpacu_asset_options label input{margin-right:4px}.wp-asset-clean-up.widefat{width:99%}.wpacu_widefat,.wpacu_widefat td{border:1px solid #e5e5e5!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}.wpacu_update_btn:hover{background:-webkit-gradient(linear,left top,left bottom,color-stop(.05,#0061a7),color-stop(1,#007dc1))!important;background:-moz-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-webkit-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-o-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:-ms-linear-gradient(top,#0061a7 5%,#007dc1 100%)!important;background:linear-gradient(to bottom,#0061a7 5%,#007dc1 100%)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1', GradientType=0)!important;background-color:#0061a7!important}.wpacu_update_btn:active{position:relative!important;top:1px!important}
assets/style.scss ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ tr.wpacu_not_load {
2
+ th, td {
3
+ background: #FFE1E1;
4
+ }
5
+ }
6
+
7
+ .widefat .check-column.wpacu_check {
8
+ padding: 10px;
9
+ }
10
+
11
+ #wpacu_meta_box_content {
12
+ width: 99%;
13
+
14
+ h3 {
15
+ margin-left: 0;
16
+ padding-left: 0;
17
+ }
18
+ div.wpacu_note {
19
+ padding: 10px;
20
+ background-color: #f5f5f5;
21
+ }
22
+ }
23
+
24
+ #wpacu_wrap_assets div.wpacu_note {
25
+ padding: 10px;
26
+ background-color: #f5f5f5;
27
+ }
28
+
29
+ #wpacu_meta_box_content div.wpacu_warning, #wpacu_wrap_assets div.wpacu_warning {
30
+ border: 1px solid #cc0000;
31
+ }
32
+
33
+ #wpacu_meta_box_content {
34
+ div.wpacu_verified {
35
+ padding: 10px;
36
+ background-color: #f5f5f5;
37
+ border-left: 1px solid #ddd;
38
+ span {
39
+ color: #0073aa;
40
+ font-weight: bold;
41
+ }
42
+ }
43
+ ul.wpacu_asset_options {
44
+ margin: 0;
45
+ padding: 0;
46
+ li {
47
+ list-style: none;
48
+ display: inline-block;
49
+ }
50
+ label {
51
+ margin-right: 20px;
52
+ font-weight: normal;
53
+ }
54
+ }
55
+ }
56
+
57
+ /*
58
+ * Asset List Styling: Front-end and Back-end
59
+ */
60
+
61
+ #wpacu_wrap_assets {
62
+ color: #000000 !important;
63
+ text-align: left;
64
+ clear: both;
65
+ width: 90%;
66
+ padding: 20px;
67
+ margin: 30px 0 0 15px;
68
+ border: 1px solid #cdcdcd;
69
+ z-index: 10000 !important;
70
+ position: relative;
71
+ background-color: white;
72
+ img {
73
+ display: inline-block !important;
74
+ }
75
+ p {
76
+ margin: 10px 0;
77
+ line-height: 22px;
78
+ text-align: left;
79
+ }
80
+ h1 {
81
+ margin: 0 0 20px;
82
+ font-size: 160%;
83
+ text-align: left;
84
+ }
85
+ h3 {
86
+ margin: 20px 0;
87
+ font-size: 130%;
88
+ }
89
+ }
90
+
91
+ .wpacu_verified {
92
+ margin: 0 0 10px 0;
93
+ }
94
+
95
+ .wpacu_asset_row td {
96
+ padding: 10px;
97
+ p {
98
+ margin-bottom: 10px;
99
+ word-wrap: break-word;
100
+ }
101
+ label {
102
+ cursor: pointer !important;
103
+ display: inline-block !important;
104
+ font-size: 100%;
105
+ font-weight: normal;
106
+ span {
107
+ font-size: 100% !important;
108
+ }
109
+ }
110
+ &.wpacu_check {
111
+ width: 50px;
112
+ }
113
+ }
114
+
115
+ /* Dashboard adjust */
116
+
117
+ body.wp-admin .wpacu_asset_row td.wpacu_check {
118
+ width: 25px;
119
+ }
120
+
121
+ label {
122
+ &.wpacu_add_global {
123
+ cursor: pointer;
124
+ }
125
+ &.wpacu_global_checked {
126
+ font-weight: bold;
127
+ color: #d54e21;
128
+ }
129
+ &.wpacu_global_unload_exception {
130
+ font-weight: bold !important;
131
+ }
132
+
133
+ &.wpacu_post_type_unload_active {
134
+ color: #d54e21;
135
+ }
136
+ }
137
+
138
+ tr.wpacu_global_rule_row {
139
+ &.selected {
140
+ background: #e7e7e7;
141
+ }
142
+ }
143
+
144
+ .nav-tab-wrapper {
145
+ border-bottom: 1px solid #ccc;
146
+ width: 95%;
147
+ }
148
+
149
+ ul.wpacu_asset_options {
150
+ margin: 0;
151
+ padding: 0;
152
+ li {
153
+ list-style: none;
154
+ display: inline-block;
155
+ }
156
+ label {
157
+ margin-right: 20px;
158
+ font-weight: normal;
159
+ input {
160
+ margin-right: 4px;
161
+ }
162
+ }
163
+ }
164
+
165
+ /* Assets Table */
166
+ .wp-asset-clean-up.widefat {
167
+ width: 99%;
168
+ }
169
+
170
+ .wpacu_widefat {
171
+ border: 1px solid #e5e5e5 !important;
172
+ td {
173
+ border: 1px solid #e5e5e5 !important;
174
+ }
175
+ }
176
+
177
+ .wpacu_striped > tbody > :nth-child(odd), ul.wpacu_striped > :nth-child(odd) {
178
+ background-color: #f9f9f9 !important;
179
+ }
180
+
181
+ .wpacu_update_btn {
182
+ -moz-box-shadow: inset 0 1px 0 0 #54a3f7 !important;
183
+ -webkit-box-shadow: inset 0 1px 0 0 #54a3f7 !important;
184
+ box-shadow: inset 0 1px 0 0 #54a3f7 !important;
185
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #007dc1), color-stop(1, #0061a7)) !important;
186
+ background: -moz-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
187
+ background: -webkit-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
188
+ background: -o-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
189
+ background: -ms-linear-gradient(top, #007dc1 5%, #0061a7 100%) !important;
190
+ background: linear-gradient(to bottom, #007dc1 5%, #0061a7 100%) !important;
191
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7',GradientType=0) !important;
192
+ background-color: #007dc1 !important;
193
+ -moz-border-radius: 3px !important;
194
+ -webkit-border-radius: 3px !important;
195
+ border-radius: 3px !important;
196
+ border: 1px solid #124d77 !important;
197
+ display: inline-block !important;
198
+ cursor: pointer !important;
199
+ color: #ffffff !important;
200
+ font-size: 15px !important;
201
+ padding: 10px 24px !important;
202
+ text-decoration: none !important;
203
+ text-shadow: 0 1px 0 #154682 !important;
204
+ &:hover {
205
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #0061a7), color-stop(1, #007dc1)) !important;
206
+ background: -moz-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
207
+ background: -webkit-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
208
+ background: -o-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
209
+ background: -ms-linear-gradient(top, #0061a7 5%, #007dc1 100%) !important;
210
+ background: linear-gradient(to bottom, #0061a7 5%, #007dc1 100%) !important;
211
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0061a7', endColorstr='#007dc1',GradientType=0) !important;
212
+ background-color: #0061a7 !important;
213
+ }
214
+ &:active {
215
+ position: relative !important;
216
+ top: 1px !important;
217
+ }
218
+ }
classes/GlobalRules.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class GlobalRules
6
+ * @package WpAssetCleanUp
7
+ */
8
+ class GlobalRules
9
+ {
10
+ /**
11
+ * @var string
12
+ */
13
+ public $wpacuFor = 'everywhere';
14
+
15
+ /**
16
+ * @var string
17
+ */
18
+ public $wpacuPostType = 'post';
19
+
20
+ /**
21
+ * @var array
22
+ */
23
+ public $data = array();
24
+
25
+ /**
26
+ * GlobalRules constructor.
27
+ */
28
+ public function __construct()
29
+ {
30
+ $this->wpacuFor = isset($_REQUEST['wpacu_for'])
31
+ ? $_REQUEST['wpacu_for']
32
+ : $this->wpacuFor;
33
+
34
+ $this->wpacuPostType = isset($_REQUEST['wpacu_post_type'])
35
+ ? $_REQUEST['wpacu_post_type']
36
+ : $this->wpacuPostType;
37
+
38
+ if (isset($_REQUEST['wpacu_update']) && $_REQUEST['wpacu_update'] == 1) {
39
+ $this->update();
40
+ }
41
+ }
42
+
43
+ /**
44
+ * @return array
45
+ */
46
+ public function getCount()
47
+ {
48
+ $values = array();
49
+
50
+ if ($this->wpacuFor === 'everywhere') {
51
+ $values = Main::instance()->getGlobalUnload();
52
+ } elseif ($this->wpacuFor === 'post_types') {
53
+ $values = Main::instance()->getPostTypeUnload($this->wpacuPostType);
54
+ }
55
+
56
+ return $values;
57
+ }
58
+
59
+ /**
60
+ *
61
+ */
62
+ public function page()
63
+ {
64
+ $this->data['for'] = $this->wpacuFor;
65
+
66
+ if ($this->wpacuFor === 'post_types') {
67
+ $this->data['post_type'] = $this->wpacuPostType;
68
+
69
+ // Get All Post Types
70
+ $postTypes = get_post_types(array('public' => true));
71
+ $this->data['post_types_list'] = $postTypes;
72
+ }
73
+
74
+ $this->data['values'] = $this->getCount();
75
+
76
+ $this->data['nonce_name'] = Update::NONCE_FIELD_NAME;
77
+ $this->data['nonce_action'] = Update::NONCE_ACTION_NAME;
78
+
79
+ Main::instance()->parseTemplate('settings-globals', $this->data, true);
80
+ }
81
+
82
+ /**
83
+ *
84
+ */
85
+ public function update()
86
+ {
87
+ if ($this->wpacuFor === 'everywhere') {
88
+ $removed = (new Update)->removeEverywhereUnloads();
89
+
90
+ if ($removed) {
91
+ add_action('admin_notices', array($this, 'noticeGlobalsRemoved'));
92
+ }
93
+ }
94
+
95
+ if ($this->wpacuFor === 'post_types') {
96
+ $removed = (new Update)->removeBulkUnloads($this->wpacuPostType);
97
+
98
+ if ($removed) {
99
+ add_action('admin_notices', array($this, 'noticePostTypesRemoved'));
100
+ }
101
+ }
102
+ }
103
+
104
+ /**
105
+ *
106
+ */
107
+ public function noticeGlobalsRemoved()
108
+ {
109
+ ?>
110
+ <div class="updated notice is-dismissible">
111
+ <p>The selected styles/scripts were removed from the global unload list and they will now load in the pages/posts,
112
+ unless you have other rules that would prevent them from loading.</p>
113
+ </div>
114
+ <?php
115
+ }
116
+
117
+ /**
118
+ *
119
+ */
120
+ public function noticePostTypesRemoved()
121
+ {
122
+ ?>
123
+ <div class="updated notice is-dismissible">
124
+ <p>The selected styles/scripts were removed from the unload list for <strong><u><?php echo $this->wpacuPostType; ?></u></strong>
125
+ post type and they will now load in the pages/posts, unless you have other rules that would prevent them from loading.</p>
126
+ </div>
127
+ <?php
128
+ }
129
+ }
classes/HomePage.php CHANGED
@@ -20,59 +20,36 @@ class HomePage
20
  $this->data['nonce_name'] = WPACU_PLUGIN_NAME.'_settings';
21
  $this->data['show_on_front'] = get_option('show_on_front');
22
 
23
- if (isset($_GET['page']) && $_GET['page'] == WPACU_PLUGIN_NAME.'_home_page') {
24
 
25
- if ($this->data['show_on_front'] === 'page') {
26
- // Front page displays: A Static Page
27
- $this->data['page_on_front'] = get_option('page_on_front');
28
-
29
- if ($this->data['page_on_front']) {
30
- $this->data['page_on_front_title'] = get_the_title($this->data['page_on_front']);
31
- }
32
 
33
- $this->data['page_for_posts'] = get_option('page_for_posts');
 
 
34
 
35
- if ($this->data['page_for_posts']) {
36
- $this->data['page_for_posts_title'] = get_the_title($this->data['page_for_posts']);
37
- }
38
- } elseif ($this->data['show_on_front'] === 'posts') {
39
- // Your latest posts
40
- $postUrl = get_option('siteurl');
41
 
42
- if (substr($postUrl, -1) != '/') {
43
- $postUrl .= '/';
44
- }
45
 
46
- $this->data['site_url'] = $postUrl;
47
-
48
- add_action('admin_enqueue_scripts', array(Main::instance(), 'stylesAndScriptsForAdmin'));
49
  }
50
- }
51
- }
52
-
53
- /**
54
- * @param $wpacuNoLoadAssets
55
- */
56
- public static function updateFrontPage($wpacuNoLoadAssets)
57
- {
58
- if (! is_array($wpacuNoLoadAssets)) {
59
- return; // only arrays (empty or not) should be used
60
- }
61
 
62
- $jsonNoAssetsLoadList = json_encode($wpacuNoLoadAssets);
 
 
63
 
64
- if (! update_option(WPACU_PLUGIN_NAME . '_front_page_no_load', $jsonNoAssetsLoadList)) {
65
- add_option(WPACU_PLUGIN_NAME . '_front_page_no_load', $jsonNoAssetsLoadList);
66
  }
67
-
68
- // If globally disabled, make exception to load for submitted assets
69
- Main::instance()->saveLoadExceptions('front_page');
70
-
71
- // Any global unloads?
72
- Main::instance()->saveToGlobalUnload();
73
-
74
- // Any global unloads removed?
75
- Main::instance()->removeGlobalUnloads();
76
  }
77
 
78
  /**
@@ -87,7 +64,7 @@ class HomePage
87
  ? $_POST[$this->data['nonce_name']] : '';
88
 
89
  if (is_array($wpacuNoLoadAssets) && wp_verify_nonce($noncePost, $this->data['nonce_name'])) {
90
- $this->updateFrontPage($wpacuNoLoadAssets);
91
  }
92
 
93
  $this->data['nonce_value'] = wp_create_nonce($this->data['nonce_name']);
20
  $this->data['nonce_name'] = WPACU_PLUGIN_NAME.'_settings';
21
  $this->data['show_on_front'] = get_option('show_on_front');
22
 
23
+ $isHomePageEdit = (isset($_GET['page']) && $_GET['page'] == WPACU_PLUGIN_NAME.'_home_page');
24
 
25
+ // Only continue if we are on the plugin's homepage edit mode
26
+ if (! $isHomePageEdit) {
27
+ return '';
28
+ }
 
 
 
29
 
30
+ if ($this->data['show_on_front'] === 'page') {
31
+ // Front page displays: A Static Page
32
+ $this->data['page_on_front'] = get_option('page_on_front');
33
 
34
+ if ($this->data['page_on_front']) {
35
+ $this->data['page_on_front_title'] = get_the_title($this->data['page_on_front']);
36
+ }
 
 
 
37
 
38
+ $this->data['page_for_posts'] = get_option('page_for_posts');
 
 
39
 
40
+ if ($this->data['page_for_posts']) {
41
+ $this->data['page_for_posts_title'] = get_the_title($this->data['page_for_posts']);
 
42
  }
43
+ } elseif ($this->data['show_on_front'] === 'posts') {
44
+ // Your latest posts
45
+ $postUrl = get_option('siteurl');
 
 
 
 
 
 
 
 
46
 
47
+ if (substr($postUrl, -1) != '/') {
48
+ $postUrl .= '/';
49
+ }
50
 
51
+ $this->data['site_url'] = $postUrl;
 
52
  }
 
 
 
 
 
 
 
 
 
53
  }
54
 
55
  /**
64
  ? $_POST[$this->data['nonce_name']] : '';
65
 
66
  if (is_array($wpacuNoLoadAssets) && wp_verify_nonce($noncePost, $this->data['nonce_name'])) {
67
+ (new Update)->updateFrontPage($wpacuNoLoadAssets);
68
  }
69
 
70
  $this->data['nonce_value'] = wp_create_nonce($this->data['nonce_name']);
classes/Main.php CHANGED
@@ -11,30 +11,17 @@ class Main
11
  *
12
  */
13
  const STARTDEL = '@ BEGIN WPACU PLUGIN JSON @';
14
- /**
15
- *
16
- */
17
- const ENDDEL = '@ END WPACU PLUGIN JSON @';
18
 
19
  /**
20
  *
21
  */
22
- const FRONT_NONCE_ACTION_NAME = 'wpacu_front_update';
23
- /**
24
- *
25
- */
26
- const FRONT_NONCE_FIELD_NAME = 'wpacu_front_nonce';
27
 
28
  /**
29
  * @var array
30
  */
31
  public $assetsRemoved = array();
32
 
33
- /**
34
- * @var bool
35
- */
36
- public $loadPluginAssets = false; // default
37
-
38
  /**
39
  * @var array
40
  */
@@ -64,11 +51,17 @@ class Main
64
  * @var array
65
  */
66
  public $wpScripts = array();
 
67
  /**
68
  * @var array
69
  */
70
  public $wpStyles = array();
71
 
 
 
 
 
 
72
  /**
73
  * @var Main|null
74
  */
@@ -94,19 +87,8 @@ class Main
94
  $this->frontendShow = (get_option(WPACU_PLUGIN_NAME.'_frontend_show'));
95
 
96
  // Early Triggers
97
- // run right after the other 'wp_loaded' action
98
  add_action('wp', array($this, 'setVars'), 2);
99
 
100
- add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
101
- add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
102
-
103
- if ($this->frontendShow) {
104
- add_action('wp', array($this, 'frontendUpdate'), 1);
105
- }
106
-
107
- // After post/page is saved - update your styles/scripts lists
108
- add_action('save_post', array($this, 'savePost'));
109
-
110
  // Fetch the page in the background to see what scripts/styles are already loading
111
  if (isset($_POST[WPACU_PLUGIN_NAME.'_load']) || $this->frontendShow) {
112
  if (isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
@@ -157,6 +139,10 @@ class Main
157
 
158
  $type = (is_front_page()) ? 'front_page' : 'post';
159
 
 
 
 
 
160
  $this->loadExceptions = $this->getLoadExceptions($type, $postId);
161
  }
162
  }
@@ -208,7 +194,7 @@ class Main
208
 
209
  $data['get_assets'] = $getAssets;
210
 
211
- $data['fetch_url'] = $this->fetchUrl;
212
 
213
  $this->parseTemplate('meta-box', $data, true);
214
  }
@@ -259,6 +245,20 @@ class Main
259
  }
260
  }
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  $list = array_unique($list);
263
  }
264
 
@@ -345,6 +345,20 @@ class Main
345
  }
346
  }
347
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
348
  $list = array_unique($list);
349
  }
350
 
@@ -385,99 +399,6 @@ class Main
385
  }
386
  }
387
 
388
- /**
389
- * Save post metadata when a post is saved.
390
- *
391
- * @param $postId
392
- */
393
- public function savePost($postId, $post = array())
394
- {
395
- if (empty($post)) {
396
- global $post;
397
- }
398
-
399
- if (! isset($post->ID)) {
400
- return;
401
- }
402
-
403
- // Has to be a public post type
404
- $obj = get_post_type_object($post->post_type);
405
-
406
- if ($obj->public < 1) {
407
- return;
408
- }
409
-
410
- // only for admins
411
- if (! current_user_can('manage_options')) {
412
- return;
413
- }
414
-
415
- $wpacuNoLoadAssets = isset($_POST[WPACU_PLUGIN_NAME])
416
- ? $_POST[WPACU_PLUGIN_NAME] : array();
417
-
418
- if (is_array($wpacuNoLoadAssets)) {
419
- $jsonNoAssetsLoadList = json_encode($wpacuNoLoadAssets);
420
-
421
- if (! add_post_meta($postId, '_'.WPACU_PLUGIN_NAME.'_no_load', $jsonNoAssetsLoadList, true)) {
422
- update_post_meta($postId, '_'.WPACU_PLUGIN_NAME.'_no_load', $jsonNoAssetsLoadList);
423
- }
424
- }
425
-
426
- // If globally disabled, make exception to load for submitted assets
427
- Main::instance()->saveLoadExceptions('post', $postId);
428
-
429
- // Any global unloads?
430
- Main::instance()->saveToGlobalUnload();
431
-
432
- // Any global unloads removed?
433
- Main::instance()->removeGlobalUnloads();
434
- }
435
-
436
- /**
437
- *
438
- */
439
- public function frontendUpdate()
440
- {
441
- global $post;
442
-
443
- // Check nonce
444
- $nonceName = self::FRONT_NONCE_FIELD_NAME;
445
- $nonceAction = self::FRONT_NONCE_ACTION_NAME;
446
-
447
- $updateAction = isset($_POST['wpacu_update_asset_frontend']) ?
448
- $_POST['wpacu_update_asset_frontend'] : '';
449
-
450
- if (! isset($_POST[$nonceName]) || $updateAction != 1 || ! $this->frontendShow) {
451
- return;
452
- }
453
-
454
- // only for admins
455
- if (! current_user_can('manage_options')) {
456
- return;
457
- }
458
-
459
- if (! wp_verify_nonce($_POST[$nonceName], $nonceAction)) {
460
- $postUrlAnchor = get_permalink($post->ID).'#wpacu_wrap_assets';
461
- wp_die(
462
- sprintf(
463
- __('The nonce expired or is not correct, thus the request was not processed. %sPlease retry%s.', WPACU_PLUGIN_NAME),
464
- '<a href="'.$postUrlAnchor.'">',
465
- '</a>'
466
- ),
467
- __('Nonce Expired', WPACU_PLUGIN_NAME)
468
- );
469
- }
470
-
471
- if (is_front_page()) {
472
- $wpacuNoLoadAssets = isset($_POST[WPACU_PLUGIN_NAME])
473
- ? $_POST[WPACU_PLUGIN_NAME] : array();
474
-
475
- HomePage::updateFrontPage($wpacuNoLoadAssets);
476
- } else {
477
- $this->savePost($post->ID, $post);
478
- }
479
- }
480
-
481
  /**
482
  * @param string $type
483
  * @param string $postId
@@ -527,150 +448,6 @@ class Main
527
  return $exceptionsList;
528
  }
529
 
530
- /**
531
- * @param string $type
532
- * @param string $postId
533
- * @return bool
534
- */
535
- public function saveLoadExceptions($type = 'post', $postId = '')
536
- {
537
- if ($type == 'post' && !$postId) {
538
- // $postId needs to have a value if $type is a 'post' type
539
- return false;
540
- }
541
-
542
- if (! in_array($type, array('post', 'front_page'))) {
543
- // Invalid request
544
- return false;
545
- }
546
-
547
- // Any global upload options
548
- $isPostOptionStyles = (isset($_POST['wpacu_styles_load_it']) && ! empty($_POST['wpacu_styles_load_it']));
549
- $isPostOptionScripts = (isset($_POST['wpacu_scripts_load_it']) && ! empty($_POST['wpacu_scripts_load_it']));
550
-
551
- $loadExceptionsStyles = $loadExceptionsScripts = array();
552
-
553
- // Clear existing list first
554
- if ($type == 'post') {
555
- delete_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions');
556
- } elseif ($type == 'front_page') {
557
- delete_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions');
558
- }
559
-
560
- if (!$isPostOptionStyles && !$isPostOptionScripts) {
561
- return false;
562
- }
563
-
564
- // Load Exception
565
- if (isset($_POST['wpacu_styles_load_it']) && ! empty($_POST['wpacu_styles_load_it'])) {
566
- foreach ($_POST['wpacu_styles_load_it'] as $wpacuHandle) {
567
- // Do not append it if the global unload is removed
568
- if (isset($_POST['wpacu_options_styles'][$wpacuHandle])
569
- && $_POST['wpacu_options_styles'][$wpacuHandle] == 'remove') {
570
- continue;
571
- }
572
- $loadExceptionsStyles[] = $wpacuHandle;
573
- }
574
- }
575
-
576
- if (! empty($_POST['wpacu_scripts_load_it'])) {
577
- foreach ($_POST['wpacu_scripts_load_it'] as $wpacuHandle) {
578
- // Do not append it if the global unload is removed
579
- if (isset($_POST['wpacu_options_scripts'][$wpacuHandle])
580
- && $_POST['wpacu_options_scripts'][$wpacuHandle] == 'remove') {
581
- continue;
582
- }
583
- $loadExceptionsScripts[] = $wpacuHandle;
584
- }
585
- }
586
-
587
- if (! empty($loadExceptionsStyles) || ! empty($loadExceptionsScripts)) {
588
- // Default
589
- $list = array('styles' => array(), 'scripts' => array());
590
-
591
- // Build list
592
- if (! empty($loadExceptionsStyles)) {
593
- foreach ($loadExceptionsStyles as $postHandle) {
594
- $list['styles'][] = $postHandle;
595
- }
596
- }
597
-
598
- if (! empty($loadExceptionsScripts)) {
599
- foreach ($loadExceptionsScripts as $postHandle) {
600
- $list['scripts'][] = $postHandle;
601
- }
602
- }
603
-
604
- if (is_array($list['styles'])) {
605
- $list['styles'] = array_unique($list['styles']);
606
- }
607
-
608
- if (is_array($list['scripts'])) {
609
- $list['scripts'] = array_unique($list['scripts']);
610
- }
611
-
612
- $jsonLoadExceptions = json_encode($list);
613
-
614
- if ($type == 'post') {
615
- if (! add_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions, true)) {
616
- update_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions);
617
- }
618
- } elseif ($type == 'front_page') {
619
- update_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions', $jsonLoadExceptions);
620
- }
621
- }
622
- }
623
-
624
- /**
625
- *
626
- */
627
- public function saveToGlobalUnload()
628
- {
629
- $postStyles = (isset($_POST['wpacu_global_unload_styles']) && is_array($_POST['wpacu_global_unload_styles']))
630
- ? $_POST['wpacu_global_unload_styles'] : array();
631
-
632
- $postScripts = (isset($_POST['wpacu_global_unload_scripts']) && is_array($_POST['wpacu_global_unload_scripts']))
633
- ? $_POST['wpacu_global_unload_scripts'] : array();
634
-
635
- // Is there any entry already in JSON format?
636
- $existingListJson = get_option(WPACU_PLUGIN_NAME.'_global_unload');
637
-
638
- // Default list as array
639
- $existingListEmpty = array('styles' => array(), 'scripts' => array());
640
-
641
- if (! $existingListJson) {
642
- $existingList = $existingListEmpty;
643
- } else {
644
- $existingList = json_decode($existingListJson, true);
645
-
646
- if (json_last_error() != JSON_ERROR_NONE) {
647
- $existingList = $existingListEmpty;
648
- }
649
- }
650
-
651
- // Append to the list anything from the POST (if any)
652
- if (! empty($postStyles)) {
653
- foreach ($postStyles as $postStyleHandle) {
654
- $existingList['styles'][] = $postStyleHandle;
655
- }
656
- }
657
-
658
- if (! empty($postScripts)) {
659
- foreach ($postScripts as $postScriptHandle) {
660
- $existingList['scripts'][] = $postScriptHandle;
661
- }
662
- }
663
-
664
- // Make sure all entries are unique (no handle duplicates)
665
- $existingList['styles'] = array_unique($existingList['styles']);
666
- $existingList['scripts'] = array_unique($existingList['scripts']);
667
-
668
- update_option(
669
- WPACU_PLUGIN_NAME.'_global_unload',
670
- json_encode($existingList)
671
- );
672
- }
673
-
674
  /**
675
  * @return array
676
  */
@@ -694,61 +471,38 @@ class Main
694
  }
695
 
696
  /**
697
- *
 
698
  */
699
- public function removeGlobalUnloads()
700
  {
701
- $stylesList = isset($_POST['wpacu_options_styles']) ? $_POST['wpacu_options_styles'] : array();
702
- $scriptsList = isset($_POST['wpacu_options_scripts']) ? $_POST['wpacu_options_scripts'] : array();
703
 
704
- $removeStylesList = $removeScriptsList = array();
705
 
706
- if (! empty($stylesList)) {
707
- foreach ($stylesList as $handle => $value) {
708
- if ($value == 'remove') {
709
- $removeStylesList[] = $handle;
710
- }
711
- }
712
- }
713
-
714
- if (! empty($scriptsList)) {
715
- foreach ($scriptsList as $handle => $value) {
716
- if ($value == 'remove') {
717
- $removeScriptsList[] = $handle;
718
- }
719
- }
720
  }
721
 
722
- $existingListJson = get_option(WPACU_PLUGIN_NAME.'_global_unload');
723
 
724
- if (! $existingListJson) {
725
- return;
726
  }
727
 
728
- $existingList = json_decode($existingListJson, true);
729
 
730
- if (json_last_error() == JSON_ERROR_NONE) {
731
- if (! empty($removeStylesList)) {
732
- foreach ($existingList['styles'] as $handleKey => $handle) {
733
- if (in_array($handle, $removeStylesList)) {
734
- unset($existingList['styles'][$handleKey]);
735
- }
736
- }
737
- }
738
-
739
- if (! empty($removeScriptsList)) {
740
- foreach ($existingList['scripts'] as $handleKey => $handle) {
741
- if (in_array($handle, $removeScriptsList)) {
742
- unset($existingList['scripts'][$handleKey]);
743
- }
744
- }
745
- }
746
 
747
- update_option(
748
- WPACU_PLUGIN_NAME.'_global_unload',
749
- json_encode($existingList)
750
- );
751
  }
 
 
752
  }
753
 
754
  /**
@@ -815,10 +569,27 @@ class Main
815
  }
816
  }
817
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
818
  /*
819
  * Style List
820
  */
821
  if (! empty($wp_styles)) {
 
 
822
  $skipStyles = array(
823
  'admin-bar',
824
  WPACU_PLUGIN_NAME . '-icheck-square-red',
@@ -841,7 +612,7 @@ class Main
841
  }
842
  }
843
 
844
- // Apppend unloaded ones (if any)
845
  if (! empty($currentUnloadedAll['styles']) && !empty($stylesBeforeUnload)) {
846
  foreach ($currentUnloadedAll['styles'] as $sbuHandle) {
847
  if (!in_array($sbuHandle, $wp_styles->done)) {
@@ -866,6 +637,8 @@ class Main
866
  * Scripts List
867
  */
868
  if (! empty($wp_scripts)) {
 
 
869
  $skipScripts = array(
870
  'admin-bar',
871
  WPACU_PLUGIN_NAME . '-icheck',
@@ -888,7 +661,7 @@ class Main
888
  }
889
  }
890
 
891
- // Apppend unloaded ones (if any)
892
  if (! empty($currentUnloadedAll['scripts']) && !empty($scriptsBeforeUnload)) {
893
  foreach ($currentUnloadedAll['scripts'] as $sbuHandle) {
894
  if (!in_array($sbuHandle, $wp_scripts->done)) {
@@ -918,13 +691,12 @@ class Main
918
  $data['all']['scripts'] = $list['scripts'];
919
  $data['all']['styles'] = $list['styles'];
920
 
921
- $this->fetchUrl = (is_front_page())
922
- ? get_option('siteurl') : $this->getPostUrl($post->ID);
923
 
924
  $data['fetch_url'] = $this->fetchUrl;
925
 
926
- $data['nonce_name'] = self::FRONT_NONCE_FIELD_NAME;
927
- $data['nonce_action'] = self::FRONT_NONCE_ACTION_NAME;
928
 
929
  $data = $this->alterAssetObj($data);
930
 
@@ -935,6 +707,15 @@ class Main
935
 
936
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
937
 
 
 
 
 
 
 
 
 
 
938
  $this->parseTemplate('settings-frontend', $data, true);
939
  } elseif ($isDashboardView) {
940
  // AJAX call from the WordPress Dashboard
@@ -972,169 +753,6 @@ class Main
972
  return $result;
973
  }
974
 
975
- /**
976
- *
977
- */
978
- public function stylesAndScriptsForAdmin()
979
- {
980
- global $post;
981
-
982
- $page = (isset($_GET['page'])) ? $_GET['page'] : '';
983
- $getPostId = (isset($_GET['post'])) ? (int)$_GET['post'] : '';
984
-
985
- $homepageClass = new HomePage;
986
-
987
- if (isset($post->ID)) {
988
- $this->loadPluginAssets = true;
989
- }
990
-
991
- if ($getPostId > 0) {
992
- $this->loadPluginAssets = true;
993
- }
994
-
995
- if ($page == WPACU_PLUGIN_NAME.'_home_page'
996
- && $homepageClass->data['show_on_front'] === 'posts'
997
- ) {
998
- $this->loadPluginAssets = true;
999
- }
1000
-
1001
- if (! $this->loadPluginAssets) {
1002
- return;
1003
- }
1004
-
1005
- $this->enqueueAdminStyles();
1006
- $this->enqueueAdminScripts();
1007
- }
1008
-
1009
- /**
1010
- *
1011
- */
1012
- public function stylesAndScriptsForPublic()
1013
- {
1014
- $this->enqueuePublicStyles();
1015
- $this->enqueuePublicScripts();
1016
- }
1017
-
1018
- /**
1019
- *
1020
- */
1021
- private function enqueueAdminStyles()
1022
- {
1023
- wp_enqueue_style(WPACU_PLUGIN_NAME . '-style', plugins_url('/assets/style.css', WPACU_PLUGIN_FILE));
1024
- wp_enqueue_style(WPACU_PLUGIN_NAME . '-icheck-square-red', plugins_url('/assets/icheck/skins/square/red.css', WPACU_PLUGIN_FILE));
1025
- }
1026
-
1027
- /**
1028
- *
1029
- */
1030
- private function enqueueAdminScripts()
1031
- {
1032
- global $post, $pagenow;
1033
-
1034
- $page = (isset($_GET['page'])) ? $_GET['page'] : '';
1035
-
1036
- $getPostId = (isset($_GET['post'])
1037
- && isset($_GET['action'])
1038
- && $_GET['action'] === 'edit'
1039
- && $pagenow == 'post.php')
1040
- ? (int)$_GET['post'] : '';
1041
-
1042
- $postId = (isset($post->ID)) ? $post->ID : 0;
1043
-
1044
- if ($getPostId > 0 && $getPostId != $postId) {
1045
- $postId = $getPostId;
1046
- }
1047
-
1048
- if ($page == WPACU_PLUGIN_NAME.'_home_page' || $postId < 1) {
1049
- $postId = 0; // for home page
1050
- }
1051
-
1052
- // Not home page (posts list)? See if the individual post is published to continue
1053
- if ($postId > 0) {
1054
- $postStatus = get_post_status($postId);
1055
-
1056
- if (! $postStatus) {
1057
- return;
1058
- }
1059
-
1060
- // Only for Published Posts
1061
- if ($postStatus != 'publish') {
1062
- return;
1063
- }
1064
- }
1065
-
1066
- wp_register_script(WPACU_PLUGIN_NAME . '-script', plugins_url('/assets/script.js', WPACU_PLUGIN_FILE), array('jquery'), '1.1');
1067
-
1068
- // It can also be the front page URL
1069
- $postUrl = $this->getPostUrl($postId);
1070
-
1071
- $this->fetchUrl = $postUrl;
1072
-
1073
- wp_localize_script(
1074
- WPACU_PLUGIN_NAME . '-script',
1075
- 'wpacu_object',
1076
- array(
1077
- 'plugin_name' => WPACU_PLUGIN_NAME,
1078
- 'ajax_url' => admin_url('admin-ajax.php'),
1079
- 'post_id' => $postId,
1080
- 'post_url' => $postUrl
1081
- )
1082
- );
1083
-
1084
- wp_enqueue_script(WPACU_PLUGIN_NAME . '-icheck', plugins_url('/assets/icheck/icheck.min.js', WPACU_PLUGIN_FILE), array('jquery'));
1085
- wp_enqueue_script(WPACU_PLUGIN_NAME . '-script');
1086
- }
1087
-
1088
- /**
1089
- *
1090
- */
1091
- private function enqueuePublicStyles()
1092
- {
1093
- if ($this->frontendShow && current_user_can('manage_options') && !isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
1094
- wp_enqueue_style(WPACU_PLUGIN_NAME . '-style', plugins_url('/assets/style.css', WPACU_PLUGIN_FILE));
1095
- wp_enqueue_style(WPACU_PLUGIN_NAME . '-icheck-square-red', plugins_url('/assets/icheck/skins/square/red.css', WPACU_PLUGIN_FILE));
1096
- }
1097
- }
1098
-
1099
- /**
1100
- *
1101
- */
1102
- public function enqueuePublicScripts()
1103
- {
1104
- if ($this->frontendShow && current_user_can('manage_options') && !isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
1105
- wp_enqueue_script(WPACU_PLUGIN_NAME . '-icheck', plugins_url('/assets/icheck/icheck.min.js', WPACU_PLUGIN_FILE), array('jquery'));
1106
- wp_enqueue_script(WPACU_PLUGIN_NAME . '-script', plugins_url('/assets/script.js', WPACU_PLUGIN_FILE), array('jquery'), '1.1');
1107
- }
1108
- }
1109
-
1110
- /**
1111
- * @param $postId
1112
- * @return false|mixed|string|void
1113
- */
1114
- public function getPostUrl($postId)
1115
- {
1116
- if ($postId > 0) {
1117
- $postUrl = get_permalink($postId);
1118
- } else {
1119
- $postUrl = get_option('siteurl');
1120
-
1121
- if (substr($postUrl, -1) != '/') {
1122
- $postUrl .= '/';
1123
- }
1124
- }
1125
-
1126
- // If we are in the Dashboard on a HTTPS connection,
1127
- // then we will make the AJAX call over HTTPS as well for the front-end
1128
- // to avoid blocking
1129
- $https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off');
1130
-
1131
- if ($https && strpos($postUrl, 'http://') === 0) {
1132
- $postUrl = str_ireplace('http://', 'https://', $postUrl);
1133
- }
1134
-
1135
- return $postUrl;
1136
- }
1137
-
1138
  /**
1139
  *
1140
  */
@@ -1145,7 +763,7 @@ class Main
1145
  $postUrl = isset($_POST['post_url']) ? $_POST['post_url'] : '';
1146
 
1147
  $json = base64_decode(
1148
- $this->extractBetween(
1149
  $contents,
1150
  self::STARTDEL,
1151
  self::ENDDEL
@@ -1174,6 +792,18 @@ class Main
1174
  $data['fetch_url'] = $postUrl;
1175
  $data['global_unload'] = $this->getGlobalUnload();
1176
 
 
 
 
 
 
 
 
 
 
 
 
 
1177
  $type = ($postId == 0) ? 'front_page' : 'post';
1178
 
1179
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
@@ -1237,8 +867,8 @@ class Main
1237
  $data['core_scripts_loaded'] = false;
1238
 
1239
  if (isset($data['contents'])) {
1240
- $headPart = $this->extractBetween($data['contents'], '<head', '</head>');
1241
- $bodyPart = $this->extractBetween($data['contents'], '<body', '</body>');
1242
  }
1243
 
1244
  foreach ($data['all']['scripts'] as $key => $obj) {
@@ -1311,8 +941,8 @@ class Main
1311
  }
1312
 
1313
  /**
1314
- * @param string $postId
1315
- * @return array|mixed|void
1316
  */
1317
  public function getAssetsUnloaded($postId = 0)
1318
  {
@@ -1336,27 +966,4 @@ class Main
1336
 
1337
  return $this->assetsRemoved;
1338
  }
1339
-
1340
- /**
1341
- * @param $string
1342
- * @param $start
1343
- * @param $end
1344
- * @return string
1345
- */
1346
- public function extractBetween($string, $start, $end)
1347
- {
1348
- $pos = stripos($string, $start);
1349
-
1350
- $str = substr($string, $pos);
1351
-
1352
- $strTwo = substr($str, strlen($start));
1353
-
1354
- $secondPos = stripos($strTwo, $end);
1355
-
1356
- $strThree = substr($strTwo, 0, $secondPos);
1357
-
1358
- $unit = trim($strThree); // remove whitespaces
1359
-
1360
- return $unit;
1361
- }
1362
  }
11
  *
12
  */
13
  const STARTDEL = '@ BEGIN WPACU PLUGIN JSON @';
 
 
 
 
14
 
15
  /**
16
  *
17
  */
18
+ const ENDDEL = '@ END WPACU PLUGIN JSON @';
 
 
 
 
19
 
20
  /**
21
  * @var array
22
  */
23
  public $assetsRemoved = array();
24
 
 
 
 
 
 
25
  /**
26
  * @var array
27
  */
51
  * @var array
52
  */
53
  public $wpScripts = array();
54
+
55
  /**
56
  * @var array
57
  */
58
  public $wpStyles = array();
59
 
60
+ /**
61
+ * @var array
62
+ */
63
+ public $postTypesUnloaded = array();
64
+
65
  /**
66
  * @var Main|null
67
  */
87
  $this->frontendShow = (get_option(WPACU_PLUGIN_NAME.'_frontend_show'));
88
 
89
  // Early Triggers
 
90
  add_action('wp', array($this, 'setVars'), 2);
91
 
 
 
 
 
 
 
 
 
 
 
92
  // Fetch the page in the background to see what scripts/styles are already loading
93
  if (isset($_POST[WPACU_PLUGIN_NAME.'_load']) || $this->frontendShow) {
94
  if (isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
139
 
140
  $type = (is_front_page()) ? 'front_page' : 'post';
141
 
142
+ if (is_singular()) {
143
+ $this->postTypesUnloaded = $this->getPostTypeUnload($post->post_type);
144
+ }
145
+
146
  $this->loadExceptions = $this->getLoadExceptions($type, $postId);
147
  }
148
  }
194
 
195
  $data['get_assets'] = $getAssets;
196
 
197
+ $data['fetch_url'] = Misc::getPostUrl($postId);
198
 
199
  $this->parseTemplate('meta-box', $data, true);
200
  }
245
  }
246
  }
247
 
248
+ if (is_singular()) {
249
+ // Any bulk unloaded styles (e.g. for all pages belonging to a post type)? Append them
250
+ if (empty($this->postTypesUnloaded)) {
251
+ global $post;
252
+ $this->postTypesUnloaded = $this->getPostTypeUnload($post->post_type);
253
+ }
254
+
255
+ if (!empty($this->postTypesUnloaded['scripts'])) {
256
+ foreach ($this->postTypesUnloaded['scripts'] as $handleStyle) {
257
+ $list[] = $handleStyle;
258
+ }
259
+ }
260
+ }
261
+
262
  $list = array_unique($list);
263
  }
264
 
345
  }
346
  }
347
 
348
+ if (is_singular()) {
349
+ // Any bulk unloaded styles (e.g. for all pages belonging to a post type)? Append them
350
+ if (empty($this->postTypesUnloaded)) {
351
+ global $post;
352
+ $this->postTypesUnloaded = $this->getPostTypeUnload($post->post_type);
353
+ }
354
+
355
+ if (!empty($this->postTypesUnloaded['styles'])) {
356
+ foreach ($this->postTypesUnloaded['styles'] as $handleStyle) {
357
+ $list[] = $handleStyle;
358
+ }
359
+ }
360
+ }
361
+
362
  $list = array_unique($list);
363
  }
364
 
399
  }
400
  }
401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  /**
403
  * @param string $type
404
  * @param string $postId
448
  return $exceptionsList;
449
  }
450
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  /**
452
  * @return array
453
  */
471
  }
472
 
473
  /**
474
+ * @param $postType
475
+ * @return array
476
  */
477
+ public function getPostTypeUnload($postType)
478
  {
479
+ $existingListEmpty = array();
 
480
 
481
+ $existingListAllJson = get_option(WPACU_PLUGIN_NAME.'_bulk_unload');
482
 
483
+ if (! $existingListAllJson) {
484
+ return $existingListEmpty;
 
 
 
 
 
 
 
 
 
 
 
 
485
  }
486
 
487
+ $existingListAll = json_decode($existingListAllJson, true);
488
 
489
+ if (json_last_error() != JSON_ERROR_NONE) {
490
+ return $existingListEmpty;
491
  }
492
 
493
+ $existingList = array();
494
 
495
+ if (isset($existingListAll['styles']['post_type'][$postType])
496
+ && is_array($existingListAll['styles']['post_type'][$postType])) {
497
+ $existingList['styles'] = $existingListAll['styles']['post_type'][$postType];
498
+ }
 
 
 
 
 
 
 
 
 
 
 
 
499
 
500
+ if (isset($existingListAll['scripts']['post_type'][$postType])
501
+ && is_array($existingListAll['scripts']['post_type'][$postType])) {
502
+ $existingList['scripts'] = $existingListAll['scripts']['post_type'][$postType];
 
503
  }
504
+
505
+ return $existingList;
506
  }
507
 
508
  /**
569
  }
570
  }
571
 
572
+ // Append bulk unloaded assets to current (one by one) unloaded ones
573
+ if (is_singular()) {
574
+ if (! empty($this->postTypesUnloaded['styles'])) {
575
+ foreach ($this->postTypesUnloaded['styles'] as $postTypeStyle) {
576
+ $currentUnloadedAll['styles'][] = $postTypeStyle;
577
+ }
578
+ }
579
+
580
+ if (! empty($this->postTypesUnloaded['scripts'])) {
581
+ foreach ($this->postTypesUnloaded['scripts'] as $postTypeScript) {
582
+ $currentUnloadedAll['scripts'][] = $postTypeScript;
583
+ }
584
+ }
585
+ }
586
+
587
  /*
588
  * Style List
589
  */
590
  if (! empty($wp_styles)) {
591
+ /* These styles below are used by this plugin (except admin-bar) and they should not show in the list
592
+ as they are loaded only when you (or other admin) manage the assets, never for your website visitors */
593
  $skipStyles = array(
594
  'admin-bar',
595
  WPACU_PLUGIN_NAME . '-icheck-square-red',
612
  }
613
  }
614
 
615
+ // Append unloaded ones (if any)
616
  if (! empty($currentUnloadedAll['styles']) && !empty($stylesBeforeUnload)) {
617
  foreach ($currentUnloadedAll['styles'] as $sbuHandle) {
618
  if (!in_array($sbuHandle, $wp_styles->done)) {
637
  * Scripts List
638
  */
639
  if (! empty($wp_scripts)) {
640
+ /* These scripts below are used by this plugin (except admin-bar) and they should not show in the list
641
+ as they are loaded only when you (or other admin) manage the assets, never for your website visitors */
642
  $skipScripts = array(
643
  'admin-bar',
644
  WPACU_PLUGIN_NAME . '-icheck',
661
  }
662
  }
663
 
664
+ // Append unloaded ones (if any)
665
  if (! empty($currentUnloadedAll['scripts']) && !empty($scriptsBeforeUnload)) {
666
  foreach ($currentUnloadedAll['scripts'] as $sbuHandle) {
667
  if (!in_array($sbuHandle, $wp_scripts->done)) {
691
  $data['all']['scripts'] = $list['scripts'];
692
  $data['all']['styles'] = $list['styles'];
693
 
694
+ $this->fetchUrl = Misc::getPostUrl($post->ID);
 
695
 
696
  $data['fetch_url'] = $this->fetchUrl;
697
 
698
+ $data['nonce_name'] = Update::NONCE_FIELD_NAME;
699
+ $data['nonce_action'] = Update::NONCE_ACTION_NAME;
700
 
701
  $data = $this->alterAssetObj($data);
702
 
707
 
708
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
709
 
710
+ if (is_singular()) {
711
+ // Current Post Type
712
+ $data['post_type'] = $post->post_type;
713
+
714
+ // Are there any assets unloaded for this specific post type?
715
+ // (e.g. page, post, product (from WooCommerce) or other custom post type)
716
+ $data['post_type_unloaded'] = $this->getPostTypeUnload($data['post_type']);
717
+ }
718
+
719
  $this->parseTemplate('settings-frontend', $data, true);
720
  } elseif ($isDashboardView) {
721
  // AJAX call from the WordPress Dashboard
753
  return $result;
754
  }
755
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
756
  /**
757
  *
758
  */
763
  $postUrl = isset($_POST['post_url']) ? $_POST['post_url'] : '';
764
 
765
  $json = base64_decode(
766
+ Misc::extractBetween(
767
  $contents,
768
  self::STARTDEL,
769
  self::ENDDEL
792
  $data['fetch_url'] = $postUrl;
793
  $data['global_unload'] = $this->getGlobalUnload();
794
 
795
+ // Post Information
796
+ $postData = get_post($postId);
797
+
798
+ // Current Post Type
799
+ $data['post_type'] = $postData->post_type;
800
+
801
+ // Are there any assets unloaded for this specific post type?
802
+ // (e.g. page, post, product (from WooCommerce) or other custom post type)
803
+ $data['post_type_unloaded'] = $this->getPostTypeUnload($data['post_type']);
804
+
805
+ //echo '<pre>'; print_r($data['post_type_unloaded']);
806
+
807
  $type = ($postId == 0) ? 'front_page' : 'post';
808
 
809
  $data['load_exceptions'] = $this->getLoadExceptions($type, $postId);
867
  $data['core_scripts_loaded'] = false;
868
 
869
  if (isset($data['contents'])) {
870
+ $headPart = Misc::extractBetween($data['contents'], '<head', '</head>');
871
+ $bodyPart = Misc::extractBetween($data['contents'], '<body', '</body>');
872
  }
873
 
874
  foreach ($data['all']['scripts'] as $key => $obj) {
941
  }
942
 
943
  /**
944
+ * @param int $postId
945
+ * @return array|mixed|string|void
946
  */
947
  public function getAssetsUnloaded($postId = 0)
948
  {
966
 
967
  return $this->assetsRemoved;
968
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
969
  }
classes/Menu.php CHANGED
@@ -41,6 +41,16 @@ class Menu
41
  array(new HomePage, 'page')
42
  );
43
 
 
 
 
 
 
 
 
 
 
 
44
  $GLOBALS['submenu'][$menuSlug][0][0] = esc_attr__('Settings', WPACU_PLUGIN_NAME);
45
  }
46
  }
41
  array(new HomePage, 'page')
42
  );
43
 
44
+ add_submenu_page(
45
+ $menuSlug,
46
+ __('Global Rules', WPACU_PLUGIN_NAME),
47
+ __('Global Rules', WPACU_PLUGIN_NAME),
48
+ $capability,
49
+ WPACU_PLUGIN_NAME.'_globals',
50
+ array(new GlobalRules, 'page')
51
+ );
52
+
53
+ // Rename first item from the menu which has the same title as the menu page
54
  $GLOBALS['submenu'][$menuSlug][0][0] = esc_attr__('Settings', WPACU_PLUGIN_NAME);
55
  }
56
  }
classes/Misc.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class Misc
6
+ * contains various common functions that are used by the plugin
7
+ * @package WpAssetCleanUp
8
+ */
9
+ class Misc
10
+ {
11
+ /**
12
+ * @param $string
13
+ * @param $start
14
+ * @param $end
15
+ * @return string
16
+ */
17
+ public static function extractBetween($string, $start, $end)
18
+ {
19
+ $pos = stripos($string, $start);
20
+
21
+ $str = substr($string, $pos);
22
+
23
+ $strTwo = substr($str, strlen($start));
24
+
25
+ $secondPos = stripos($strTwo, $end);
26
+
27
+ $strThree = substr($strTwo, 0, $secondPos);
28
+
29
+ $unit = trim($strThree); // remove whitespaces
30
+
31
+ return $unit;
32
+ }
33
+
34
+ /**
35
+ * @return string
36
+ */
37
+ public static function isHttpsSecure()
38
+ {
39
+ $isSecure = false;
40
+
41
+ if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
42
+ $isSecure = true;
43
+ } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
44
+ || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
45
+ // Is it behind a load balancer?
46
+ $isSecure = true;
47
+ }
48
+
49
+ return $isSecure;
50
+ }
51
+
52
+ /**
53
+ * @param $postId
54
+ * @return false|mixed|string|void
55
+ */
56
+ public static function getPostUrl($postId)
57
+ {
58
+ if (is_front_page()) {
59
+ return get_option('siteurl');
60
+ }
61
+
62
+ if ($postId > 0) {
63
+ $postUrl = get_permalink($postId);
64
+ } else {
65
+ $postUrl = get_option('siteurl');
66
+
67
+ if (substr($postUrl, -1) != '/') {
68
+ $postUrl .= '/';
69
+ }
70
+ }
71
+
72
+ // If we are in the Dashboard on a HTTPS connection,
73
+ // then we will make the AJAX call over HTTPS as well for the front-end
74
+ // to avoid blocking
75
+ $https = Misc::isHttpsSecure();
76
+
77
+ if ($https && strpos($postUrl, 'http://') === 0) {
78
+ $postUrl = str_ireplace('http://', 'https://', $postUrl);
79
+ }
80
+
81
+ return $postUrl;
82
+ }
83
+ }
classes/OwnAssets.php ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class OwnAssets
6
+ *
7
+ * These are plugin's own assets and they are used only when you're logged and do not show in the list for unload
8
+ *
9
+ * @package WpAssetCleanUp
10
+ */
11
+ class OwnAssets
12
+ {
13
+ /**
14
+ * @var bool
15
+ */
16
+ public $loadPluginAssets = false; // default
17
+
18
+ /**
19
+ * OwnAssets constructor.
20
+ */
21
+ public function __construct()
22
+ {
23
+ add_action('admin_enqueue_scripts', array($this, 'stylesAndScriptsForAdmin'));
24
+ add_action('wp_enqueue_scripts', array($this, 'stylesAndScriptsForPublic'));
25
+ }
26
+
27
+ /**
28
+ *
29
+ */
30
+ public function stylesAndScriptsForAdmin()
31
+ {
32
+ global $post;
33
+
34
+ $page = (isset($_GET['page'])) ? $_GET['page'] : '';
35
+ $getPostId = (isset($_GET['post'])) ? (int)$_GET['post'] : '';
36
+
37
+ // Only load the plugin's assets when they are needed
38
+ // This an example of assets that are correctly loaded in WordPress
39
+ if (isset($post->ID)) {
40
+ $this->loadPluginAssets = true;
41
+ }
42
+
43
+ if ($getPostId > 0) {
44
+ $this->loadPluginAssets = true;
45
+ }
46
+
47
+ if (in_array($page, array(WPACU_PLUGIN_NAME.'_home_page', WPACU_PLUGIN_NAME.'_globals'))) {
48
+ $this->loadPluginAssets = true;
49
+ }
50
+
51
+ if (! $this->loadPluginAssets) {
52
+ return;
53
+ }
54
+
55
+ $this->enqueueAdminStyles();
56
+ $this->enqueueAdminScripts();
57
+ }
58
+
59
+
60
+ /**
61
+ *
62
+ */
63
+ public function stylesAndScriptsForPublic()
64
+ {
65
+ $this->enqueuePublicStyles();
66
+ $this->enqueuePublicScripts();
67
+ }
68
+
69
+ /**
70
+ *
71
+ */
72
+ private function enqueueAdminStyles()
73
+ {
74
+ wp_enqueue_style(WPACU_PLUGIN_NAME . '-style', plugins_url('/assets/style.min.css', WPACU_PLUGIN_FILE));
75
+ wp_enqueue_style(WPACU_PLUGIN_NAME . '-icheck-square-red', plugins_url('/assets/icheck/skins/square/red.css', WPACU_PLUGIN_FILE));
76
+ }
77
+
78
+ /**
79
+ *
80
+ */
81
+ private function enqueueAdminScripts()
82
+ {
83
+ global $post, $pagenow;
84
+
85
+ $page = (isset($_GET['page'])) ? $_GET['page'] : '';
86
+
87
+ $getPostId = (isset($_GET['post'])
88
+ && isset($_GET['action'])
89
+ && $_GET['action'] === 'edit'
90
+ && $pagenow == 'post.php')
91
+ ? (int)$_GET['post'] : '';
92
+
93
+ $postId = (isset($post->ID)) ? $post->ID : 0;
94
+
95
+ if ($getPostId > 0 && $getPostId != $postId) {
96
+ $postId = $getPostId;
97
+ }
98
+
99
+ if ($page == WPACU_PLUGIN_NAME.'_home_page' || $postId < 1) {
100
+ $postId = 0; // for home page
101
+ }
102
+
103
+ // Not home page (posts list)? See if the individual post is published to continue
104
+ if ($postId > 0) {
105
+ $postStatus = get_post_status($postId);
106
+
107
+ if (! $postStatus) {
108
+ return;
109
+ }
110
+
111
+ // Only for Published Posts
112
+ if ($postStatus != 'publish') {
113
+ return;
114
+ }
115
+ }
116
+
117
+ wp_register_script(WPACU_PLUGIN_NAME . '-script', plugins_url('/assets/script.min.js', WPACU_PLUGIN_FILE), array('jquery'), '1.1');
118
+
119
+ // It can also be the front page URL
120
+ $postUrl = Misc::getPostUrl($postId);
121
+
122
+ $this->fetchUrl = $postUrl;
123
+
124
+ wp_localize_script(
125
+ WPACU_PLUGIN_NAME . '-script',
126
+ 'wpacu_object',
127
+ array(
128
+ 'plugin_name' => WPACU_PLUGIN_NAME,
129
+ 'ajax_url' => admin_url('admin-ajax.php'),
130
+ 'post_id' => $postId,
131
+ 'post_url' => $postUrl
132
+ )
133
+ );
134
+
135
+ wp_enqueue_script(WPACU_PLUGIN_NAME . '-icheck', plugins_url('/assets/icheck/icheck.min.js', WPACU_PLUGIN_FILE), array('jquery'));
136
+ wp_enqueue_script(WPACU_PLUGIN_NAME . '-script');
137
+ }
138
+
139
+ /**
140
+ *
141
+ */
142
+ private function enqueuePublicStyles()
143
+ {
144
+ if (Main::instance()->frontendShow && current_user_can('manage_options') && !isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
145
+ wp_enqueue_style(WPACU_PLUGIN_NAME . '-style', plugins_url('/assets/style.min.css', WPACU_PLUGIN_FILE));
146
+ wp_enqueue_style(WPACU_PLUGIN_NAME . '-icheck-square-red', plugins_url('/assets/icheck/skins/square/red.css', WPACU_PLUGIN_FILE));
147
+ }
148
+ }
149
+
150
+ /**
151
+ *
152
+ */
153
+ public function enqueuePublicScripts()
154
+ {
155
+ if (Main::instance()->frontendShow && current_user_can('manage_options') && !isset($_POST[WPACU_PLUGIN_NAME.'_load'])) {
156
+ wp_enqueue_script(WPACU_PLUGIN_NAME . '-icheck', plugins_url('/assets/icheck/icheck.min.js', WPACU_PLUGIN_FILE), array('jquery'));
157
+ wp_enqueue_script(WPACU_PLUGIN_NAME . '-script', plugins_url('/assets/script.min.js', WPACU_PLUGIN_FILE), array('jquery'), '1.1');
158
+ }
159
+ }
160
+ }
classes/Update.php ADDED
@@ -0,0 +1,523 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WpAssetCleanUp;
3
+
4
+ /**
5
+ * Class Update
6
+ * @package WpAssetCleanUp
7
+ */
8
+ class Update
9
+ {
10
+ /**
11
+ *
12
+ */
13
+ const NONCE_ACTION_NAME = 'wpacu_data_update';
14
+ /**
15
+ *
16
+ */
17
+ const NONCE_FIELD_NAME = 'wpacu_data_nonce';
18
+
19
+ /**
20
+ *
21
+ */
22
+ public function init()
23
+ {
24
+ if (Main::instance()->frontendShow) {
25
+ add_action('wp', array($this, 'frontendUpdate'), 1);
26
+ }
27
+
28
+ // After post/page is saved - update your styles/scripts lists
29
+ add_action('save_post', array($this, 'savePost'));
30
+ }
31
+
32
+ /**
33
+ *
34
+ */
35
+ public function frontendUpdate()
36
+ {
37
+ global $post;
38
+
39
+ // Check nonce
40
+ $nonceName = self::NONCE_FIELD_NAME;
41
+ $nonceAction = self::NONCE_ACTION_NAME;
42
+
43
+ $updateAction = isset($_POST['wpacu_update_asset_frontend']) ?
44
+ $_POST['wpacu_update_asset_frontend'] : '';
45
+
46
+ if (! isset($_POST[$nonceName]) || $updateAction != 1 || ! Main::instance()->frontendShow) {
47
+ return;
48
+ }
49
+
50
+ // only for admins
51
+ if (! current_user_can('manage_options')) {
52
+ return;
53
+ }
54
+
55
+ if (! wp_verify_nonce($_POST[$nonceName], $nonceAction)) {
56
+ $postUrlAnchor = get_permalink($post->ID).'#wpacu_wrap_assets';
57
+ wp_die(
58
+ sprintf(
59
+ __('The nonce expired or is not correct, thus the request was not processed. %sPlease retry%s.', WPACU_PLUGIN_NAME),
60
+ '<a href="'.$postUrlAnchor.'">',
61
+ '</a>'
62
+ ),
63
+ __('Nonce Expired', WPACU_PLUGIN_NAME)
64
+ );
65
+ }
66
+
67
+ if (is_front_page()) {
68
+ $wpacuNoLoadAssets = isset($_POST[WPACU_PLUGIN_NAME])
69
+ ? $_POST[WPACU_PLUGIN_NAME] : array();
70
+
71
+ $this->updateFrontPage($wpacuNoLoadAssets);
72
+ } else {
73
+ $this->savePost($post->ID, $post);
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Save post metadata when a post is saved.
79
+ *
80
+ * @param $postId
81
+ * @param array $post
82
+ */
83
+ public function savePost($postId, $post = array())
84
+ {
85
+ if (empty($post)) {
86
+ global $post;
87
+ }
88
+
89
+ if (! isset($post->ID)) {
90
+ return;
91
+ }
92
+
93
+ // Has to be a public post type
94
+ $obj = get_post_type_object($post->post_type);
95
+
96
+ if ($obj->public < 1) {
97
+ return;
98
+ }
99
+
100
+ // only for admins
101
+ if (! current_user_can('manage_options')) {
102
+ return;
103
+ }
104
+
105
+ $wpacuNoLoadAssets = isset($_POST[WPACU_PLUGIN_NAME])
106
+ ? $_POST[WPACU_PLUGIN_NAME] : array();
107
+
108
+ if (is_array($wpacuNoLoadAssets)) {
109
+ global $wpdb;
110
+
111
+ $noUpdate = false;
112
+
113
+ // Is the list empty?
114
+ if (empty($wpacuNoLoadAssets)) {
115
+ // Remove any row with no results
116
+ $wpdb->delete(
117
+ $wpdb->postmeta,
118
+ array('post_id' => $postId, 'meta_key' => '_' . WPACU_PLUGIN_NAME . '_no_load')
119
+ );
120
+ $noUpdate = true;
121
+ }
122
+
123
+ if (! $noUpdate) {
124
+ $jsonNoAssetsLoadList = json_encode($wpacuNoLoadAssets);
125
+
126
+ if (! add_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_no_load', $jsonNoAssetsLoadList, true)) {
127
+ update_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_no_load', $jsonNoAssetsLoadList);
128
+ }
129
+ }
130
+ }
131
+
132
+ // If globally disabled, make exception to load for submitted assets
133
+ $this->saveLoadExceptions('post', $postId);
134
+
135
+ // Any global (all pages / everywhere) unloads or removed?
136
+ $this->saveToEverywhereUnloads();
137
+ $this->removeEverywhereUnloads();
138
+
139
+ // Any bulk unloads or removed? (e.g. all pages of a certain post type)
140
+ $this->saveToBulkUnloads();
141
+ $this->removeBulkUnloads();
142
+ }
143
+
144
+ /**
145
+ * @param $wpacuNoLoadAssets
146
+ */
147
+ public function updateFrontPage($wpacuNoLoadAssets)
148
+ {
149
+ if (! is_array($wpacuNoLoadAssets)) {
150
+ return; // only arrays (empty or not) should be used
151
+ }
152
+
153
+ $jsonNoAssetsLoadList = json_encode($wpacuNoLoadAssets);
154
+
155
+ if (! update_option(WPACU_PLUGIN_NAME . '_front_page_no_load', $jsonNoAssetsLoadList)) {
156
+ add_option(WPACU_PLUGIN_NAME . '_front_page_no_load', $jsonNoAssetsLoadList);
157
+ }
158
+
159
+ // If globally disabled, make exception to load for submitted assets
160
+ $this->saveLoadExceptions('front_page');
161
+
162
+ // Any global unloads or removed?
163
+ $this->saveToEverywhereUnloads();
164
+ $this->removeEverywhereUnloads();
165
+ }
166
+
167
+ /**
168
+ * @param string $type
169
+ * @param string $postId
170
+ * @return bool|void
171
+ */
172
+ public function saveLoadExceptions($type = 'post', $postId = '')
173
+ {
174
+ if ($type == 'post' && !$postId) {
175
+ // $postId needs to have a value if $type is a 'post' type
176
+ return false;
177
+ }
178
+
179
+ if (! in_array($type, array('post', 'front_page'))) {
180
+ // Invalid request
181
+ return false;
182
+ }
183
+
184
+ // Any global upload options
185
+ $isPostOptionStyles = (isset($_POST['wpacu_styles_load_it']) && ! empty($_POST['wpacu_styles_load_it']));
186
+ $isPostOptionScripts = (isset($_POST['wpacu_scripts_load_it']) && ! empty($_POST['wpacu_scripts_load_it']));
187
+
188
+ $loadExceptionsStyles = $loadExceptionsScripts = array();
189
+
190
+ // Clear existing list first
191
+ if ($type == 'post') {
192
+ delete_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions');
193
+ } elseif ($type == 'front_page') {
194
+ delete_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions');
195
+ }
196
+
197
+ if (! $isPostOptionStyles && ! $isPostOptionScripts) {
198
+ return false;
199
+ }
200
+
201
+ // Load Exception
202
+ if (isset($_POST['wpacu_styles_load_it']) && ! empty($_POST['wpacu_styles_load_it'])) {
203
+ foreach ($_POST['wpacu_styles_load_it'] as $wpacuHandle) {
204
+ // Do not append it if the global unload is removed
205
+ if (isset($_POST['wpacu_options_styles'][$wpacuHandle])
206
+ && $_POST['wpacu_options_styles'][$wpacuHandle] == 'remove') {
207
+ continue;
208
+ }
209
+ $loadExceptionsStyles[] = $wpacuHandle;
210
+ }
211
+ }
212
+
213
+ if (! empty($_POST['wpacu_scripts_load_it'])) {
214
+ foreach ($_POST['wpacu_scripts_load_it'] as $wpacuHandle) {
215
+ // Do not append it if the global unload is removed
216
+ if (isset($_POST['wpacu_options_scripts'][$wpacuHandle])
217
+ && $_POST['wpacu_options_scripts'][$wpacuHandle] == 'remove') {
218
+ continue;
219
+ }
220
+ $loadExceptionsScripts[] = $wpacuHandle;
221
+ }
222
+ }
223
+
224
+ if (! empty($loadExceptionsStyles) || ! empty($loadExceptionsScripts)) {
225
+ // Default
226
+ $list = array('styles' => array(), 'scripts' => array());
227
+
228
+ // Build list
229
+ if (! empty($loadExceptionsStyles)) {
230
+ foreach ($loadExceptionsStyles as $postHandle) {
231
+ $list['styles'][] = $postHandle;
232
+ }
233
+ }
234
+
235
+ if (! empty($loadExceptionsScripts)) {
236
+ foreach ($loadExceptionsScripts as $postHandle) {
237
+ $list['scripts'][] = $postHandle;
238
+ }
239
+ }
240
+
241
+ if (is_array($list['styles'])) {
242
+ $list['styles'] = array_unique($list['styles']);
243
+ }
244
+
245
+ if (is_array($list['scripts'])) {
246
+ $list['scripts'] = array_unique($list['scripts']);
247
+ }
248
+
249
+ $jsonLoadExceptions = json_encode($list);
250
+
251
+ if ($type == 'post') {
252
+ if (! add_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions, true)) {
253
+ update_post_meta($postId, '_' . WPACU_PLUGIN_NAME . '_load_exceptions', $jsonLoadExceptions);
254
+ }
255
+ } elseif ($type == 'front_page') {
256
+ update_option(WPACU_PLUGIN_NAME . '_front_page_load_exceptions', $jsonLoadExceptions);
257
+ }
258
+ }
259
+ }
260
+
261
+ /**
262
+ *
263
+ */
264
+ public function saveToEverywhereUnloads()
265
+ {
266
+ $postStyles = (isset($_POST['wpacu_global_unload_styles']) && is_array($_POST['wpacu_global_unload_styles']))
267
+ ? $_POST['wpacu_global_unload_styles'] : array();
268
+
269
+ $postScripts = (isset($_POST['wpacu_global_unload_scripts']) && is_array($_POST['wpacu_global_unload_scripts']))
270
+ ? $_POST['wpacu_global_unload_scripts'] : array();
271
+
272
+ // Is there any entry already in JSON format?
273
+ $existingListJson = get_option(WPACU_PLUGIN_NAME.'_global_unload');
274
+
275
+ // Default list as array
276
+ $existingListEmpty = array('styles' => array(), 'scripts' => array());
277
+
278
+ if (! $existingListJson) {
279
+ $existingList = $existingListEmpty;
280
+ } else {
281
+ $existingList = json_decode($existingListJson, true);
282
+
283
+ if (json_last_error() != JSON_ERROR_NONE) {
284
+ $existingList = $existingListEmpty;
285
+ }
286
+ }
287
+
288
+ // Append to the list anything from the POST (if any)
289
+ if (! empty($postStyles)) {
290
+ foreach ($postStyles as $postStyleHandle) {
291
+ $existingList['styles'][] = $postStyleHandle;
292
+ }
293
+ }
294
+
295
+ if (! empty($postScripts)) {
296
+ foreach ($postScripts as $postScriptHandle) {
297
+ $existingList['scripts'][] = $postScriptHandle;
298
+ }
299
+ }
300
+
301
+ // Make sure all entries are unique (no handle duplicates)
302
+ $existingList['styles'] = array_unique($existingList['styles']);
303
+ $existingList['scripts'] = array_unique($existingList['scripts']);
304
+
305
+ update_option(
306
+ WPACU_PLUGIN_NAME.'_global_unload',
307
+ json_encode($existingList)
308
+ );
309
+ }
310
+
311
+ /**
312
+ * @return bool
313
+ */
314
+ public function removeEverywhereUnloads()
315
+ {
316
+ $stylesList = isset($_POST['wpacu_options_styles']) ? $_POST['wpacu_options_styles'] : array();
317
+ $scriptsList = isset($_POST['wpacu_options_scripts']) ? $_POST['wpacu_options_scripts'] : array();
318
+
319
+ $removeStylesList = $removeScriptsList = array();
320
+
321
+ $isUpdated = false;
322
+
323
+ if (! empty($stylesList)) {
324
+ foreach ($stylesList as $handle => $value) {
325
+ if ($value == 'remove') {
326
+ $removeStylesList[] = $handle;
327
+ }
328
+ }
329
+ }
330
+
331
+ if (! empty($scriptsList)) {
332
+ foreach ($scriptsList as $handle => $value) {
333
+ if ($value == 'remove') {
334
+ $removeScriptsList[] = $handle;
335
+ }
336
+ }
337
+ }
338
+
339
+ $existingListJson = get_option(WPACU_PLUGIN_NAME.'_global_unload');
340
+
341
+ if (! $existingListJson) {
342
+ return false;
343
+ }
344
+
345
+ $existingList = json_decode($existingListJson, true);
346
+
347
+ if (json_last_error() == JSON_ERROR_NONE) {
348
+ foreach (array('styles', 'scripts') as $assetType) {
349
+ if ($assetType === 'styles') {
350
+ $list = $removeStylesList;
351
+ } elseif ($assetType === 'scripts') {
352
+ $list = $removeScriptsList;
353
+ }
354
+
355
+ if (empty($list)) {
356
+ continue;
357
+ }
358
+
359
+ foreach ($list as $handle) {
360
+ if ($handleKey = array_search($handle, $existingList[$assetType])) {
361
+ unset($existingList[$assetType][$handleKey]);
362
+ $isUpdated = true;
363
+ }
364
+ }
365
+ }
366
+
367
+ if ($isUpdated) {
368
+ update_option(
369
+ WPACU_PLUGIN_NAME . '_global_unload',
370
+ json_encode($existingList)
371
+ );
372
+ }
373
+ }
374
+
375
+ return $isUpdated;
376
+ }
377
+
378
+ /**
379
+ *
380
+ */
381
+ public function saveToBulkUnloads()
382
+ {
383
+ global $post;
384
+
385
+ $postType = $post->post_type;
386
+
387
+ $postStyles = (isset($_POST['wpacu_bulk_unload_styles']) && is_array($_POST['wpacu_bulk_unload_styles']))
388
+ ? $_POST['wpacu_bulk_unload_styles'] : array();
389
+
390
+ $postScripts = (isset($_POST['wpacu_bulk_unload_scripts']) && is_array($_POST['wpacu_bulk_unload_scripts']))
391
+ ? $_POST['wpacu_bulk_unload_scripts'] : array();
392
+
393
+ // Is there any entry already in JSON format?
394
+ $existingListJson = get_option(WPACU_PLUGIN_NAME.'_bulk_unload');
395
+
396
+ // Default list as array
397
+ $existingListEmpty = array(
398
+ 'styles' => array('post_type' => array($postType => array())),
399
+ 'scripts' => array('post_type' => array($postType => array()))
400
+ );
401
+
402
+ if (! $existingListJson) {
403
+ $existingList = $existingListEmpty;
404
+ } else {
405
+ $existingList = json_decode($existingListJson, true);
406
+
407
+ if (json_last_error() != JSON_ERROR_NONE) {
408
+ $existingList = $existingListEmpty;
409
+ }
410
+ }
411
+
412
+ // Append to the list anything from the POST (if any)
413
+ // Make sure all entries are unique (no handle duplicates)
414
+ $list = array();
415
+
416
+ foreach (array('styles', 'scripts') as $assetType) {
417
+ if ($assetType === 'styles') {
418
+ $list = $postStyles;
419
+ } elseif ($assetType === 'scripts') {
420
+ $list = $postScripts;
421
+ }
422
+
423
+ if (empty($list)) {
424
+ continue;
425
+ }
426
+
427
+ foreach ($list as $bulkType => $values) {
428
+ if (empty($values)) {
429
+ continue;
430
+ }
431
+
432
+ if ($bulkType === 'post_type') {
433
+ foreach ($values as $postType => $handles) {
434
+ $existingList[$assetType]['post_type'][$postType] = array_unique($handles);
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ update_option(
441
+ WPACU_PLUGIN_NAME.'_bulk_unload',
442
+ json_encode($existingList)
443
+ );
444
+ }
445
+
446
+ /**
447
+ * @param string $postType
448
+ * @return bool
449
+ */
450
+ public function removeBulkUnloads($postType = '')
451
+ {
452
+ if (! $postType) {
453
+ global $post;
454
+
455
+ // At this time (12 Nov 2016) post type unload is the only option in bulk unloads
456
+ $postType = $post->post_type;
457
+ }
458
+
459
+ $stylesList = isset($_POST['wpacu_options_post_type_styles'])
460
+ ? $_POST['wpacu_options_post_type_styles'] : array();
461
+
462
+ $scriptsList = isset($_POST['wpacu_options_post_type_scripts'])
463
+ ? $_POST['wpacu_options_post_type_scripts'] : array();
464
+
465
+ $removeStylesList = $removeScriptsList = array();
466
+
467
+ $isUpdated = false;
468
+
469
+ if (! empty($stylesList)) {
470
+ foreach ($stylesList as $handle => $value) {
471
+ if ($value == 'remove') {
472
+ $removeStylesList[] = $handle;
473
+ }
474
+ }
475
+ }
476
+
477
+ if (! empty($scriptsList)) {
478
+ foreach ($scriptsList as $handle => $value) {
479
+ if ($value == 'remove') {
480
+ $removeScriptsList[] = $handle;
481
+ }
482
+ }
483
+ }
484
+
485
+ $existingListJson = get_option(WPACU_PLUGIN_NAME.'_bulk_unload');
486
+
487
+ if (! $existingListJson) {
488
+ return false;
489
+ }
490
+
491
+ $existingList = json_decode($existingListJson, true);
492
+
493
+ if (json_last_error() == JSON_ERROR_NONE) {
494
+ $list = array();
495
+
496
+ foreach (array('styles', 'scripts') as $assetType) {
497
+ if ($assetType === 'styles') {
498
+ $list = $removeStylesList;
499
+ } elseif ($assetType === 'scripts') {
500
+ $list = $removeScriptsList;
501
+ }
502
+
503
+ if (empty($list)) {
504
+ continue;
505
+ }
506
+
507
+ foreach ($existingList[$assetType]['post_type'][$postType] as $handleKey => $handle) {
508
+ if (in_array($handle, $list)) {
509
+ unset($existingList[$assetType]['post_type'][$postType][$handleKey]);
510
+ $isUpdated = true;
511
+ }
512
+ }
513
+ }
514
+
515
+ update_option(
516
+ WPACU_PLUGIN_NAME.'_bulk_unload',
517
+ json_encode($existingList)
518
+ );
519
+ }
520
+
521
+ return $isUpdated;
522
+ }
523
+ }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: speed, pagespeed, dequeue style, dequeue script, unload style, unload scri
4
  Donate link: http://www.gabelivan.com/donate/
5
  Requires at least: 4.0
6
  Tested up to: 4.6.1
7
- Stable tag: 1.2.2
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
@@ -92,6 +92,13 @@ If that's the case, then it's advisable to consult with a developer (ideally the
92
  4. Scripts (.JS) are selected for site-wide unload
93
 
94
  == Changelog ==
 
 
 
 
 
 
 
95
  = 1.2.2 =
96
  * Bug Fix: Sometimes scripts in the footer were not detected for unloading
97
 
4
  Donate link: http://www.gabelivan.com/donate/
5
  Requires at least: 4.0
6
  Tested up to: 4.6.1
7
+ Stable tag: 1.2.4
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl.html
10
 
92
  4. Scripts (.JS) are selected for site-wide unload
93
 
94
  == Changelog ==
95
+ = 1.2.4 =
96
+ * Bug Fix: Remove "Unload everywhere" rule had to be updated to work no matter what key is assigned to the handle in the array resulting from the JSON
97
+
98
+ = 1.2.3 =
99
+ * Assets can now be disabled for all the pages belonging to a specific post type
100
+ * The list of assets disabled globally (everywhere, for a specific post type etc.) can be managed in a single page too
101
+
102
  = 1.2.2 =
103
  * Bug Fix: Sometimes scripts in the footer were not detected for unloading
104
 
templates/meta-box-loaded.php CHANGED
@@ -10,13 +10,19 @@ if (! isset($data)) {
10
  <div class="wpacu_verified">
11
  <strong>Verified Page:</strong> <a target="_blank" href="<?php echo $data['fetch_url']; ?>"><span><?php echo $data['fetch_url']; ?></span></a>
12
  </div>
13
-
 
 
 
 
 
 
14
  <h3><?php _e('Styles (.css files)', WPACU_PLUGIN_NAME); ?></h3>
15
  <?php
16
  if (! empty($data['all']['styles'])) {
17
  ?>
18
  <p><?php echo sprintf(__('The following styles are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to leave them enabled (unchecked) and consult with a developer about unloading the assets.', WPACU_PLUGIN_NAME), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
19
- <p><?php echo __('"Load in on this page (make exception)" will take effect when "Unload everywhere" is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_NAME); ?></p>
20
  <?php
21
  if ($data['core_styles_loaded']) {
22
  ?>
@@ -40,13 +46,19 @@ if (! empty($data['all']['styles'])) {
40
  $class = ($active) ? 'wpacu_not_load' : '';
41
  $checked = ($active) ? 'checked="checked"' : '';
42
 
43
- $globalUnloaded = $isLoadException = false;
 
 
 
 
 
44
 
45
- // mark it as unloaded - global
46
- if (in_array($obj->handle, $data['global_unload']['styles']) && !$class) {
47
- $globalUnloaded = true;
48
- $checked = 'checked="checked"';
49
 
 
50
  if (in_array($obj->handle, $data['load_exceptions']['styles'])) {
51
  $isLoadException = true;
52
  } else {
@@ -72,16 +84,20 @@ if (! empty($data['all']['styles'])) {
72
  ?>
73
  </p>
74
 
 
75
  <?php
 
76
  if ($globalUnloaded) {
77
- ?>
78
  <p><strong style="color: #d54e21;">This asset is unloaded everywhere</strong></p>
 
79
  <?php
80
  }
81
  ?>
82
 
83
  <ul class="wpacu_asset_options">
84
  <?php
 
85
  if ($globalUnloaded) {
86
  ?>
87
  <li>
@@ -110,11 +126,77 @@ if (! empty($data['all']['styles'])) {
110
  class="wpacu_global_unload wpacu_global_style"
111
  id="wpacu_global_unload_style_<?php echo $obj->handle; ?>" type="checkbox"
112
  name="wpacu_global_unload_styles[]" value="<?php echo $obj->handle; ?>"/>
113
- &nbsp;Unload Everywhere</label>
114
  </li>
115
  <?php
116
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  ?>
 
 
 
 
 
 
 
118
  <li id="wpacu_load_it_option_style_<?php echo $obj->handle; ?>">
119
  <label><input data-handle="<?php echo $obj->handle; ?>"
120
  id="wpacu_style_load_it_<?php echo $obj->handle; ?>"
@@ -123,7 +205,7 @@ if (! empty($data['all']['styles'])) {
123
  <?php if ($isLoadException) { ?> checked="checked" <?php } ?>
124
  name="wpacu_styles_load_it[]"
125
  value="<?php echo $obj->handle; ?>"/>
126
- Load it on this page (make exception<?php if (! $globalUnloaded) { echo ' IF unloaded everywhere is chosen'; } ?>)</label>
127
  </li>
128
  </ul>
129
  <?php
@@ -158,13 +240,23 @@ if (! empty($data['all']['styles'])) {
158
  } else {
159
  echo __('It looks like there are no public .css files loaded or the ones visible do not follow <a href="https://codex.wordpress.org/Function_Reference/wp_enqueue_style">the WordPress way of enqueuing styles</a>.', WPACU_PLUGIN_NAME);
160
  }
 
 
 
 
 
 
 
 
 
 
161
  ?>
162
  <h3><?php _e('Scripts (.js files)', WPACU_PLUGIN_NAME); ?></h3>
163
  <?php
164
  if (! empty($data['all']['scripts'])) {
165
  ?>
166
  <p><?php echo sprintf(__('The following scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to leave them enabled and consult with a developer about unloading the assets.', WPACU_PLUGIN_NAME), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
167
- <p><?php echo __('"Load in on this page (make exception)" will take effect when "Unload everywhere" is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_NAME); ?></p>
168
  <?php
169
  if ($data['core_scripts_loaded']) {
170
  ?>
@@ -188,13 +280,19 @@ if (! empty($data['all']['scripts'])) {
188
  $class = ($active) ? 'wpacu_not_load' : '';
189
  $checked = ($active) ? 'checked="checked"' : '';
190
 
191
- $globalUnloaded = $isLoadException = false;
192
 
193
- // mark it as unloaded - global
194
  if (in_array($obj->handle, $data['global_unload']['scripts']) && !$class) {
195
- $globalUnloaded = true;
196
- $checked = 'checked="checked"';
197
 
 
 
 
 
 
 
198
  if (in_array($obj->handle, $data['load_exceptions']['scripts'])) {
199
  $isLoadException = true;
200
  } else {
@@ -219,20 +317,26 @@ if (! empty($data['all']['scripts'])) {
219
  }
220
  ?>
221
  </p>
222
- <?php
223
- if ($globalUnloaded) {
224
- ?>
225
- <p><strong style="color: #d54e21;">This asset is unloaded everywhere</strong></p>
226
- <?php } ?>
227
 
 
 
 
 
 
 
 
 
 
 
228
  <ul class="wpacu_asset_options">
229
 
230
  <?php
 
231
  if ($globalUnloaded) {
232
- ?>
233
  <li>
234
  <label><input data-handle="<?php echo $obj->handle; ?>"
235
- class="wpacu_global_option wpacu_script"
236
  type="radio"
237
  name="wpacu_options_scripts[<?php echo $obj->handle; ?>]"
238
  checked="checked"
@@ -242,7 +346,7 @@ if (! empty($data['all']['scripts'])) {
242
 
243
  <li>
244
  <label><input data-handle="<?php echo $obj->handle; ?>"
245
- class="wpacu_global_option wpacu_script"
246
  type="radio"
247
  name="wpacu_options_scripts[<?php echo $obj->handle; ?>]"
248
  value="remove" />
@@ -258,11 +362,77 @@ if (! empty($data['all']['scripts'])) {
258
  type="checkbox"
259
  name="wpacu_global_unload_scripts[]"
260
  value="<?php echo $obj->handle; ?>"/>
261
- &nbsp;Unload Everywhere</label>
262
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
263
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  }
 
265
  ?>
 
 
 
 
 
 
266
  <li id="wpacu_load_it_option_script_<?php echo $obj->handle; ?>">
267
  <label><input data-handle="<?php echo $obj->handle; ?>"
268
  id="wpacu_script_load_it_<?php echo $obj->handle; ?>"
@@ -271,7 +441,7 @@ if (! empty($data['all']['scripts'])) {
271
  name="wpacu_scripts_load_it[]"
272
  <?php if ($isLoadException) { ?> checked="checked" <?php } ?>
273
  value="<?php echo $obj->handle; ?>" />
274
- Load it on this page (make exception<?php if (! $globalUnloaded) { echo ' IF unloaded everywhere is chosen'; } ?>)</label>
275
  </li>
276
  </ul>
277
  <?php
@@ -294,7 +464,7 @@ if (! empty($data['all']['scripts'])) {
294
  }
295
 
296
  if (isset($obj->extra->data) && ! empty($obj->extra->data)) { ?>
297
- <p><?php _e('Inline:', WPACU_PLUGIN_NAME); ?> <em><?php echo $obj->extra->data; ?></em></p>
298
  <?php
299
  }
300
 
@@ -315,3 +485,8 @@ if (! empty($data['all']['scripts'])) {
315
  } else {
316
  echo __('It looks like there are no public .js files loaded or the ones visible do not follow <a href="https://codex.wordpress.org/Function_Reference/wp_enqueue_script">the WordPress way of enqueuing scripts</a>.', WPACU_PLUGIN_NAME);
317
  }
 
 
 
 
 
10
  <div class="wpacu_verified">
11
  <strong>Verified Page:</strong> <a target="_blank" href="<?php echo $data['fetch_url']; ?>"><span><?php echo $data['fetch_url']; ?></span></a>
12
  </div>
13
+ <?php
14
+ /*
15
+ * --------------------
16
+ * [START] STYLES LIST
17
+ * --------------------
18
+ */
19
+ ?>
20
  <h3><?php _e('Styles (.css files)', WPACU_PLUGIN_NAME); ?></h3>
21
  <?php
22
  if (! empty($data['all']['styles'])) {
23
  ?>
24
  <p><?php echo sprintf(__('The following styles are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to leave them enabled (unchecked) and consult with a developer about unloading the assets.', WPACU_PLUGIN_NAME), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
25
+ <p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_NAME); ?></p>
26
  <?php
27
  if ($data['core_styles_loaded']) {
28
  ?>
46
  $class = ($active) ? 'wpacu_not_load' : '';
47
  $checked = ($active) ? 'checked="checked"' : '';
48
 
49
+ $globalUnloaded = $postTypeUnloaded = $isLoadException = $isGlobalRule = false;
50
+
51
+ // Mark it as unloaded - Everywhere
52
+ if (in_array($obj->handle, $data['global_unload']['styles'])) {
53
+ $globalUnloaded = $isGlobalRule = true;
54
+ }
55
 
56
+ // Mark it as unloaded - for the Current Post Type
57
+ if (isset($data['post_type_unloaded']['styles']) && in_array($obj->handle, $data['post_type_unloaded']['styles'])) {
58
+ $postTypeUnloaded = $isGlobalRule = true;
59
+ }
60
 
61
+ if ($isGlobalRule) {
62
  if (in_array($obj->handle, $data['load_exceptions']['styles'])) {
63
  $isLoadException = true;
64
  } else {
84
  ?>
85
  </p>
86
 
87
+ <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
88
  <?php
89
+ // Unloaded Everywhere
90
  if ($globalUnloaded) {
91
+ ?>
92
  <p><strong style="color: #d54e21;">This asset is unloaded everywhere</strong></p>
93
+ <div class="clear"></div>
94
  <?php
95
  }
96
  ?>
97
 
98
  <ul class="wpacu_asset_options">
99
  <?php
100
+ // [START] UNLOAD EVERYWHERE
101
  if ($globalUnloaded) {
102
  ?>
103
  <li>
126
  class="wpacu_global_unload wpacu_global_style"
127
  id="wpacu_global_unload_style_<?php echo $obj->handle; ?>" type="checkbox"
128
  name="wpacu_global_unload_styles[]" value="<?php echo $obj->handle; ?>"/>
129
+ Unload Everywhere</label>
130
  </li>
131
  <?php
132
  }
133
+ // [END] UNLOAD EVERYWHERE
134
+ ?>
135
+ </ul>
136
+ </div>
137
+
138
+ <?php if ($globalUnloaded || $data['post_type']) { ?>
139
+ <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
140
+ <?php } ?>
141
+
142
+ <?php
143
+ // Unloaded On All Pages Belonging to the page's Post Type
144
+ if ($postTypeUnloaded) {
145
+ ?>
146
+ <p><strong style="color: #d54e21;">This asset is unloaded on all <u><?php echo $data['post_type']; ?></u> post types.</strong></p>
147
+ <div class="clear"></div>
148
+ <?php
149
+ }
150
+ ?>
151
+
152
+ <ul class="wpacu_asset_options">
153
+ <?php
154
+ if ($data['post_type']) {
155
+ // [START] ALL PAGES HAVING THE SAME POST TYPE
156
+ if ($postTypeUnloaded) {
157
+ ?>
158
+ <li>
159
+ <label><input data-handle="<?php echo $obj->handle; ?>"
160
+ class="wpacu_bulk_option wpacu_style"
161
+ type="radio"
162
+ name="wpacu_options_post_type_styles[<?php echo $obj->handle; ?>]"
163
+ checked="checked"
164
+ value="default"/>
165
+ Keep rule</label>
166
+ </li>
167
+
168
+ <li>
169
+ <label><input data-handle="<?php echo $obj->handle; ?>"
170
+ class="wpacu_bulk_option wpacu_style"
171
+ type="radio"
172
+ name="wpacu_options_post_type_styles[<?php echo $obj->handle; ?>]"
173
+ value="remove"/>
174
+ Remove rule</label>
175
+ </li>
176
+ <?php
177
+ } else {
178
+ ?>
179
+ <li>
180
+ <label><input data-handle="<?php echo $obj->handle; ?>"
181
+ class="wpacu_post_type_unload wpacu_post_type_style"
182
+ id="wpacu_bulk_unload_post_type_style_<?php echo $obj->handle; ?>"
183
+ type="checkbox"
184
+ name="wpacu_bulk_unload_styles[post_type][<?php echo $data['post_type']; ?>][]"
185
+ value="<?php echo $obj->handle; ?>"/>
186
+ Unload on All Pages of <strong><?php echo $data['post_type']; ?></strong> post type</label>
187
+ </li>
188
+ <?php
189
+ }
190
+ }
191
+ // [END] ALL PAGES HAVING THE SAME POST TYPE
192
  ?>
193
+ </ul>
194
+
195
+ <?php if ($globalUnloaded || $data['post_type']) { ?>
196
+ </div>
197
+ <?php } ?>
198
+
199
+ <ul class="wpacu_asset_options">
200
  <li id="wpacu_load_it_option_style_<?php echo $obj->handle; ?>">
201
  <label><input data-handle="<?php echo $obj->handle; ?>"
202
  id="wpacu_style_load_it_<?php echo $obj->handle; ?>"
205
  <?php if ($isLoadException) { ?> checked="checked" <?php } ?>
206
  name="wpacu_styles_load_it[]"
207
  value="<?php echo $obj->handle; ?>"/>
208
+ Load it on this page (make exception<?php if (! $isGlobalRule) { echo ' IF any unload rule is applied'; } ?>)</label>
209
  </li>
210
  </ul>
211
  <?php
240
  } else {
241
  echo __('It looks like there are no public .css files loaded or the ones visible do not follow <a href="https://codex.wordpress.org/Function_Reference/wp_enqueue_style">the WordPress way of enqueuing styles</a>.', WPACU_PLUGIN_NAME);
242
  }
243
+ /* -------------------
244
+ * [END] STYLES LIST
245
+ * -------------------
246
+ */
247
+
248
+ /*
249
+ * ---------------------
250
+ * [START] SCRIPTS LIST
251
+ * ---------------------
252
+ */
253
  ?>
254
  <h3><?php _e('Scripts (.js files)', WPACU_PLUGIN_NAME); ?></h3>
255
  <?php
256
  if (! empty($data['all']['scripts'])) {
257
  ?>
258
  <p><?php echo sprintf(__('The following scripts are loading on this page. Please select the ones that are %sNOT NEEDED%s. If you are not sure which ones to unload, it is better to leave them enabled and consult with a developer about unloading the assets.', WPACU_PLUGIN_NAME), '<span style="color: #CC0000;"><strong>', '</strong></span>'); ?></p>
259
+ <p><?php echo __('"Load in on this page (make exception)" will take effect when a bulk unload rule is used. Otherwise, the asset will load anyway unless you select it for unload.', WPACU_PLUGIN_NAME); ?></p>
260
  <?php
261
  if ($data['core_scripts_loaded']) {
262
  ?>
280
  $class = ($active) ? 'wpacu_not_load' : '';
281
  $checked = ($active) ? 'checked="checked"' : '';
282
 
283
+ $globalUnloaded = $postTypeUnloaded = $isLoadException = $isGlobalRule = false;
284
 
285
+ // Mark it as unloaded - Everywhere
286
  if (in_array($obj->handle, $data['global_unload']['scripts']) && !$class) {
287
+ $globalUnloaded = $isGlobalRule = true;
288
+ }
289
 
290
+ // Mark it as unloaded - for the Current Post Type
291
+ if (isset($data['post_type_unloaded']['scripts']) && in_array($obj->handle, $data['post_type_unloaded']['scripts']) && !$class) {
292
+ $postTypeUnloaded = $isGlobalRule = true;
293
+ }
294
+
295
+ if ($isGlobalRule) {
296
  if (in_array($obj->handle, $data['load_exceptions']['scripts'])) {
297
  $isLoadException = true;
298
  } else {
317
  }
318
  ?>
319
  </p>
 
 
 
 
 
320
 
321
+ <?php
322
+ // Unloaded Everywhere
323
+ if ($globalUnloaded) {
324
+ ?>
325
+ <p><strong style="color: #d54e21;">This asset is unloaded everywhere</strong></p>
326
+ <?php
327
+ }
328
+ ?>
329
+
330
+ <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
331
  <ul class="wpacu_asset_options">
332
 
333
  <?php
334
+ // [START] UNLOAD EVERYWHERE
335
  if ($globalUnloaded) {
336
+ ?>
337
  <li>
338
  <label><input data-handle="<?php echo $obj->handle; ?>"
339
+ class="wpacu_bulk_option wpacu_script"
340
  type="radio"
341
  name="wpacu_options_scripts[<?php echo $obj->handle; ?>]"
342
  checked="checked"
346
 
347
  <li>
348
  <label><input data-handle="<?php echo $obj->handle; ?>"
349
+ class="wpacu_bulk_option wpacu_script"
350
  type="radio"
351
  name="wpacu_options_scripts[<?php echo $obj->handle; ?>]"
352
  value="remove" />
362
  type="checkbox"
363
  name="wpacu_global_unload_scripts[]"
364
  value="<?php echo $obj->handle; ?>"/>
365
+ Unload Everywhere</label>
366
  </li>
367
+ <?php
368
+ }
369
+ // [END] UNLOAD EVERYWHERE
370
+ ?>
371
+
372
+ </ul>
373
+ </div>
374
+
375
+ <?php if ($globalUnloaded || $data['post_type']) { ?>
376
+ <div style="padding: 5px 10px; margin: 15px 0; background: white; border: 1px solid #eee; border-radius: 5px;">
377
+ <?php } ?>
378
+
379
  <?php
380
+ // Unloaded On All Pages Belonging to the page's Post Type
381
+ if ($postTypeUnloaded) {
382
+ ?>
383
+ <p><strong style="color: #d54e21;">This asset is unloaded on all <u><?php echo $data['post_type']; ?></u> post types.</strong></p>
384
+ <div class="clear"></div>
385
+ <?php
386
+ }
387
+ ?>
388
+
389
+ <ul class="wpacu_asset_options">
390
+ <?php
391
+ if ($data['post_type']) {
392
+ // [START] ALL PAGES HAVING THE SAME POST TYPE
393
+ if ($postTypeUnloaded) {
394
+ ?>
395
+ <li>
396
+ <label><input data-handle="<?php echo $obj->handle; ?>"
397
+ class="wpacu_post_type_option wpacu_post_type_script"
398
+ type="radio"
399
+ name="wpacu_options_post_type_scripts[<?php echo $obj->handle; ?>]"
400
+ checked="checked"
401
+ value="default"/>
402
+ Keep rule</label>
403
+ </li>
404
+
405
+ <li>
406
+ <label><input data-handle="<?php echo $obj->handle; ?>"
407
+ class="wpacu_post_type_option wpacu_post_type_script"
408
+ type="radio"
409
+ name="wpacu_options_post_type_scripts[<?php echo $obj->handle; ?>]"
410
+ value="remove"/>
411
+ Remove rule</label>
412
+ </li>
413
+ <?php
414
+ } else {
415
+ ?>
416
+ <li>
417
+ <label><input data-handle="<?php echo $obj->handle; ?>"
418
+ class="wpacu_post_type_unload wpacu_post_type_script"
419
+ id="wpacu_global_unload_post_type_script_<?php echo $obj->handle; ?>"
420
+ type="checkbox"
421
+ name="wpacu_bulk_unload_scripts[post_type][<?php echo $data['post_type']; ?>][]"
422
+ value="<?php echo $obj->handle; ?>"/>
423
+ Unload on All Pages of <strong><?php echo $data['post_type']; ?></strong> post type</label>
424
+ </li>
425
+ <?php
426
+ }
427
  }
428
+ // [END] ALL PAGES HAVING THE SAME POST TYPE
429
  ?>
430
+ </ul>
431
+ <?php if ($globalUnloaded || $data['post_type']) { ?>
432
+ </div>
433
+ <?php } ?>
434
+
435
+ <ul class="wpacu_asset_options">
436
  <li id="wpacu_load_it_option_script_<?php echo $obj->handle; ?>">
437
  <label><input data-handle="<?php echo $obj->handle; ?>"
438
  id="wpacu_script_load_it_<?php echo $obj->handle; ?>"
441
  name="wpacu_scripts_load_it[]"
442
  <?php if ($isLoadException) { ?> checked="checked" <?php } ?>
443
  value="<?php echo $obj->handle; ?>" />
444
+ Load it on this page (make exception<?php if (! $isGlobalRule) { echo ' IF any unload rule is applied'; } ?>)</label>
445
  </li>
446
  </ul>
447
  <?php
464
  }
465
 
466
  if (isset($obj->extra->data) && ! empty($obj->extra->data)) { ?>
467
+ <p><?php _e('Inline:', WPACU_PLUGIN_NAME); ?> <em><?php echo strip_tags($obj->extra->data); ?></em></p>
468
  <?php
469
  }
470
 
485
  } else {
486
  echo __('It looks like there are no public .js files loaded or the ones visible do not follow <a href="https://codex.wordpress.org/Function_Reference/wp_enqueue_script">the WordPress way of enqueuing scripts</a>.', WPACU_PLUGIN_NAME);
487
  }
488
+ /*
489
+ * -------------------
490
+ * [END] SCRIPTS LIST
491
+ * -------------------
492
+ */
templates/settings-globals.php ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * No direct access to this file
4
+ */
5
+ if (! isset($data)) {
6
+ exit;
7
+ }
8
+ ?>
9
+ <h1><?php _e('WP Asset Clean Up', WPACU_PLUGIN_NAME); ?></h1>
10
+ <h2><?php _e('Global Rules', WPACU_PLUGIN_NAME); ?></h2>
11
+
12
+ <nav class="nav-tab-wrapper">
13
+ <a href="admin.php?page=wpassetcleanup_globals" class="nav-tab <?php if ($data['for'] === 'everywhere') { ?>nav-tab-active<?php } ?>">Everywhere</a>
14
+ <a href="admin.php?page=wpassetcleanup_globals&wpacu_for=post_types" class="nav-tab <?php if ($data['for'] === 'post_types') { ?>nav-tab-active<?php } ?>">Post Types</a>
15
+ </nav>
16
+
17
+ <div class="clear"></div>
18
+
19
+ <?php
20
+ if ($data['for'] === 'post_types') {
21
+ ?>
22
+ <div style="margin: 15px 0;">
23
+ <form id="wpacu_post_type_form" method="get" action="admin.php">
24
+ <input type="hidden" name="page" value="wpassetcleanup_globals" />
25
+ <input type="hidden" name="wpacu_for" value="post_types" />
26
+
27
+ <div style="margin: 0 0 10px 0;">Select the post type for which you want to see the unloaded scripts &amp; styles:</div>
28
+ <select id="wpacu_post_type_select" name="wpacu_post_type">
29
+ <?php foreach ($data['post_types_list'] as $postType) { ?>
30
+ <option <?php if ($data['post_type'] === $postType) { echo 'selected="selected"'; } ?> value="<?php echo $postType; ?>"><?php echo $postType; ?></option>
31
+ <?php } ?>
32
+ </select>
33
+ </form>
34
+ </div>
35
+ <?php
36
+ }
37
+ ?>
38
+
39
+ <form action="" method="post">
40
+ <?php
41
+ if ($data['for'] === 'everywhere') {
42
+ ?>
43
+ <div class="clear"></div>
44
+
45
+ <div class="alert">
46
+ <p>This is the list of the assets that are <strong>globally unloaded</strong> on all pages (including home page).</p>
47
+ <p>If you want to remove this rule and have them loading, use the "Remove rule" checkbox.</p>
48
+ <p style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">This list fills once you select "<em>Unload everywhere</em>" when you edit posts/pages for the assets that you want to prevent from loading on every page.</p>
49
+ </div>
50
+
51
+ <div class="clear"></div>
52
+
53
+ <div style="padding: 0 10px 0 0;">
54
+ <h3>Styles</h3>
55
+ <?php
56
+ if (! empty($data['values']['styles'])) {
57
+ ?>
58
+ <table class="wp-list-table widefat fixed striped">
59
+ <tr>
60
+ <td><strong>Handle</strong></td>
61
+ <td><strong>Actions</strong></td>
62
+ </tr>
63
+ <?php
64
+ foreach ($data['values']['styles'] as $handle) {
65
+ ?>
66
+ <tr class="wpacu_global_rule_row">
67
+ <td><strong><span style="color: green;"><?php echo $handle; ?></span></strong></td>
68
+ <td>
69
+ <label><input type="checkbox"
70
+ class="wpacu_remove_rule"
71
+ name="wpacu_options_styles[<?php echo $handle; ?>]"
72
+ value="remove" /> Remove rule</label>
73
+ </td>
74
+ </tr>
75
+ <?php
76
+ }
77
+ ?>
78
+ </table>
79
+ <?php
80
+ } else {
81
+ ?>
82
+ <p>There are no unloaded styles for your selection.</p>
83
+ <?php
84
+ }
85
+ ?>
86
+
87
+ <h3>Scripts</h3>
88
+ <?php
89
+ if (! empty($data['values']['scripts'])) {
90
+ ?>
91
+ <table class="wp-list-table widefat fixed striped">
92
+ <tr>
93
+ <td><strong>Handle</strong></td>
94
+ <td><strong>Actions</strong></td>
95
+ </tr>
96
+ <?php
97
+ foreach ($data['values']['scripts'] as $handle) {
98
+ ?>
99
+ <tr class="wpacu_global_rule_row">
100
+ <td><strong><span style="color: green;"><?php echo $handle; ?></span></strong></td>
101
+ <td>
102
+ <label><input type="checkbox"
103
+ class="wpacu_remove_rule"
104
+ name="wpacu_options_scripts[<?php echo $handle; ?>]"
105
+ value="remove" /> Remove rule</label>
106
+ </td>
107
+ </tr>
108
+ <?php
109
+ }
110
+ ?>
111
+ </table>
112
+ <?php
113
+ } else {
114
+ ?>
115
+ <p>There are no unloaded scripts for your selection.</p>
116
+ <?php
117
+ }
118
+ ?>
119
+ </div>
120
+ <?php
121
+ } elseif ($data['for'] === 'post_types') {
122
+ ?>
123
+ <div class="clear"></div>
124
+
125
+ <div class="alert">
126
+ <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>
127
+ <p>If you want to remove this rule, use the "Remove rule" checkbox.</p>
128
+ <p style="margin: 0; background: white; padding: 10px; border: 1px solid #ccc; width: auto; display: inline-block;">This list fills once you select "<em>Unload on All Pages of <strong><?php echo $data['post_type']; ?></strong> post type</em>" when you edit posts/pages for the assets that you want to prevent from loading.</p>
129
+ </div>
130
+
131
+ <div class="clear"></div>
132
+
133
+ <div style="padding: 0 10px 0 0;">
134
+ <h3>Styles</h3>
135
+ <?php
136
+ if (! empty($data['values']['styles'])) {
137
+ ?>
138
+ <table class="wp-list-table widefat fixed striped">
139
+ <tr>
140
+ <td><strong>Handle</strong></td>
141
+ <td><strong>Actions</strong></td>
142
+ </tr>
143
+ <?php
144
+ foreach ($data['values']['styles'] as $handle) {
145
+ ?>
146
+ <tr class="wpacu_global_rule_row">
147
+ <td><strong><span style="color: green;"><?php echo $handle; ?></span></strong></td>
148
+ <td>
149
+ <label><input type="checkbox"
150
+ class="wpacu_remove_rule"
151
+ name="wpacu_options_post_type_styles[<?php echo $handle; ?>]"
152
+ value="remove" /> Remove rule</label>
153
+ </td>
154
+ </tr>
155
+ <?php
156
+ }
157
+ ?>
158
+ </table>
159
+ <?php
160
+ } else {
161
+ ?>
162
+ <p>There are no unloaded styles for your selection.</p>
163
+ <?php
164
+ }
165
+ ?>
166
+
167
+ <h3>Scripts</h3>
168
+ <?php
169
+ if (! empty($data['values']['scripts'])) {
170
+ ?>
171
+ <table class="wp-list-table widefat fixed striped">
172
+ <tr>
173
+ <td><strong>Handle</strong></td>
174
+ <td><strong>Actions</strong></td>
175
+ </tr>
176
+ <?php
177
+ foreach ($data['values']['scripts'] as $handle) {
178
+ ?>
179
+ <tr class="wpacu_global_rule_row">
180
+ <td><strong><span style="color: green;"><?php echo $handle; ?></span></strong></td>
181
+ <td>
182
+ <label><input type="checkbox"
183
+ class="wpacu_remove_rule"
184
+ name="wpacu_options_post_type_scripts[<?php echo $handle; ?>]"
185
+ value="remove" /> Remove rule</label>
186
+ </td>
187
+ </tr>
188
+ <?php
189
+ }
190
+ ?>
191
+ </table>
192
+ <?php
193
+ } else {
194
+ ?>
195
+ <p>There are no unloaded scripts for your selection.</p>
196
+ <?php
197
+ }
198
+ ?>
199
+ </div>
200
+ <?php
201
+ }
202
+
203
+ $noAssetsToRemove = (empty($data['values']['styles']) && empty($data['values']['scripts']));
204
+ ?>
205
+ <?php wp_nonce_field($data['nonce_action'], $data['nonce_name']); ?>
206
+
207
+ <input type="hidden" name="wpacu_for" value="<?php echo $data['for']; ?>" />
208
+ <input type="hidden" name="wpacu_update" value="1" />
209
+
210
+ <?php
211
+ if ($data['post_type']) {
212
+ ?>
213
+ <input type="hidden" name="wpacu_post_type" value="<?php echo $data['post_type']; ?>" />
214
+ <?php
215
+ }
216
+ ?>
217
+
218
+ <div class="clear"></div>
219
+
220
+ <p class="submit">
221
+ <input type="submit"
222
+ name="submit"
223
+ id="submit"
224
+ <?php if ($noAssetsToRemove) { ?>
225
+ disabled="disabled"
226
+ <?php } ?>
227
+ class="button button-primary"
228
+ value="<?php esc_attr_e('Update', WPACU_PLUGIN_NAME); ?>" />
229
+ <?php
230
+ if ($noAssetsToRemove) {
231
+ ?>
232
+ &nbsp;<small>Note: There are no unloaded assets (scripts &amp; styles) to be managed</small>
233
+ <?php
234
+ }
235
+ ?>
236
+ </p>
237
+ </form>
wpacu-load.php CHANGED
@@ -12,19 +12,19 @@ define('WPACU_PLUGIN_URL', plugins_url('', WPACU_PLUGIN_FILE));
12
  // Autoload Classes
13
  function includeWpAssetCleanUpClassesAutoload($class)
14
  {
15
- $classes = array(
16
- 'WpAssetCleanUp\ClassLoader' => 'ClassLoader',
17
- 'WpAssetCleanUp\HomePage' => 'HomePage',
18
- 'WpAssetCleanUp\Main' => 'Main',
19
- 'WpAssetCleanUp\Menu' => 'Menu',
20
- 'WpAssetCleanUp\Settings' => 'Settings'
21
- );
22
-
23
- if (! isset($classes[$class])) {
24
  return;
25
  }
26
 
27
- $pathToClass = WPACU_PLUGIN_CLASSES_PATH.$classes[$class].'.php';
 
 
 
 
 
28
 
29
  if (file_exists($pathToClass)) {
30
  include_once $pathToClass;
@@ -36,6 +36,12 @@ spl_autoload_register('includeWpAssetCleanUpClassesAutoload');
36
  // Main Class
37
  WpAssetCleanUp\Main::instance();
38
 
 
 
 
 
 
 
39
  // Settings
40
  new WpAssetCleanUp\Settings;
41
 
12
  // Autoload Classes
13
  function includeWpAssetCleanUpClassesAutoload($class)
14
  {
15
+ $namespace = 'WpAssetCleanUp';
16
+
17
+ // continue only if the namespace is within $class
18
+ if (strpos($class, $namespace) === false) {
 
 
 
 
 
19
  return;
20
  }
21
 
22
+ $classFilter = str_replace($namespace.'\\', '', $class);
23
+
24
+ // Can be directories such as "Helpers"
25
+ $classFilter = str_replace('\\', '/', $classFilter);
26
+
27
+ $pathToClass = WPACU_PLUGIN_CLASSES_PATH.$classFilter.'.php';
28
 
29
  if (file_exists($pathToClass)) {
30
  include_once $pathToClass;
36
  // Main Class
37
  WpAssetCleanUp\Main::instance();
38
 
39
+ // Plugin's Assets (used only when you're logged in)
40
+ new \WpAssetCleanUp\OwnAssets;
41
+
42
+ // Add / Update / Remove Settings
43
+ (new WpAssetCleanUp\Update)->init();
44
+
45
  // Settings
46
  new WpAssetCleanUp\Settings;
47
 
wpacu.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  * Plugin Name: WP Asset Clean Up
4
  * Plugin URI: http://www.bitrepository.com/remove-unused-scripts-styles-wordpress-pages.html
5
- * Version: 1.2.2
6
  * Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages that you don't need
7
  * Author: Gabriel Livan
8
  * Author URI: http://www.gabelivan.com/
2
  /*
3
  * Plugin Name: WP Asset Clean Up
4
  * Plugin URI: http://www.bitrepository.com/remove-unused-scripts-styles-wordpress-pages.html
5
+ * Version: 1.2.4
6
  * Description: Prevent Chosen Scripts & Styles from loading in Posts/Pages that you don't need
7
  * Author: Gabriel Livan
8
  * Author URI: http://www.gabelivan.com/