OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy. - Version 4.6.0

Version Description

| February 16th, 2022 = * Fixed: Loading spinner wasn't center aligned. * Added: Force Optimization Mode Task Manager. - Offers an easy overview of downloaded stylesheets and where they're stored, - Indicates stale cache files. * Added: Clearer explanation of when to use Scan Posts/Pages VS Force Optimization Mode. * Fixed: Cache handles weren't removed when cache directory was emptied. * Fixed: Tooltip in Manage Optimized Fonts section wasn't aligned properly. * Renamed: Manual Optimization Mode to Force and Automatic to Scan Posts/Pages.

Download this release

Release Info

Developer DaanvandenBergh
Plugin Icon 128x128 OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy.
Version 4.6.0
Comparing to
See all releases

Code changes from version 4.5.19 to 4.6.0

assets/css/omgf-admin.css CHANGED
@@ -44,6 +44,114 @@
44
  margin-right: 0.25em;
45
  line-height: 1.15em;
46
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  .omgf-optimize-fonts-container {
48
  text-align: center;
49
  padding: 25px 50px;
@@ -74,7 +182,7 @@
74
  .omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip {
75
  position: relative;
76
  font-size: 16px;
77
- line-height: 25px;
78
  }
79
  .omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text {
80
  visibility: hidden;
@@ -208,8 +316,8 @@
208
  top: 50%;
209
  left: 50%;
210
  position: absolute;
211
- -ms-transform: translate(0, -70%);
212
- transform: translate(0, -70%);
213
  }
214
  /**
215
  * Welcome Block
44
  margin-right: 0.25em;
45
  line-height: 1.15em;
46
  }
47
+ .omgf form {
48
+ max-width: 1350px;
49
+ }
50
+ .omgf form .dashicons {
51
+ line-height: 15px;
52
+ }
53
+ .omgf form .omgf-manual-optimization-mode .pro-con-container,
54
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container {
55
+ display: flex;
56
+ justify-content: center;
57
+ }
58
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros,
59
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros,
60
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons,
61
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons {
62
+ width: 50%;
63
+ }
64
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list,
65
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list,
66
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list,
67
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list,
68
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list,
69
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list,
70
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list,
71
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list {
72
+ list-style: none;
73
+ margin-left: 0;
74
+ padding-left: 0;
75
+ }
76
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li,
77
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li,
78
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li,
79
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li,
80
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li,
81
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li,
82
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li,
83
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li {
84
+ padding-left: 1.5em;
85
+ text-indent: -2em;
86
+ line-height: 18px;
87
+ }
88
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li:before,
89
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li:before,
90
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li:before,
91
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li:before,
92
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li:before,
93
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li:before,
94
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li:before,
95
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li:before {
96
+ font-family: 'dashicons';
97
+ font-size: 18px;
98
+ vertical-align: middle;
99
+ margin-right: 0.5em;
100
+ }
101
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li:before,
102
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li:before,
103
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li:before,
104
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li:before {
105
+ content: "\f147";
106
+ color: #2ECC40;
107
+ }
108
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li:before,
109
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li:before,
110
+ .omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li:before,
111
+ .omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li:before {
112
+ content: "\f158";
113
+ color: #FF4136;
114
+ }
115
+ .omgf form .omgf-manual-optimization-mode .status,
116
+ .omgf form .omgf-automatic-optimization-mode .status {
117
+ padding-left: 0;
118
+ line-height: 1;
119
+ }
120
+ .omgf form .omgf-manual-optimization-mode .status ul,
121
+ .omgf form .omgf-automatic-optimization-mode .status ul {
122
+ margin-top: 5px;
123
+ list-style: none;
124
+ margin-left: 0;
125
+ padding-left: 0;
126
+ }
127
+ .omgf form .omgf-manual-optimization-mode .status ul li,
128
+ .omgf form .omgf-automatic-optimization-mode .status ul li {
129
+ padding-left: 1.5em;
130
+ text-indent: -2em;
131
+ line-height: 18px;
132
+ }
133
+ .omgf form .omgf-manual-optimization-mode .status ul li:before,
134
+ .omgf form .omgf-automatic-optimization-mode .status ul li:before {
135
+ font-family: 'dashicons';
136
+ font-size: 18px;
137
+ vertical-align: middle;
138
+ margin-right: 0.5em;
139
+ }
140
+ .omgf form .omgf-manual-optimization-mode .status ul li.stale:before,
141
+ .omgf form .omgf-automatic-optimization-mode .status ul li.stale:before {
142
+ content: "\f534";
143
+ color: #FF851B;
144
+ }
145
+ .omgf form .omgf-manual-optimization-mode .status ul li.found:before,
146
+ .omgf form .omgf-automatic-optimization-mode .status ul li.found:before {
147
+ content: "\f147";
148
+ color: #2ECC40;
149
+ }
150
+ .omgf form .omgf-manual-optimization-mode .status ul li.not-found:before,
151
+ .omgf form .omgf-automatic-optimization-mode .status ul li.not-found:before {
152
+ content: "\f158";
153
+ color: #FF4136;
154
+ }
155
  .omgf-optimize-fonts-container {
156
  text-align: center;
157
  padding: 25px 50px;
182
  .omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip {
183
  position: relative;
184
  font-size: 16px;
185
+ line-height: 16px;
186
  }
187
  .omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text {
188
  visibility: hidden;
316
  top: 50%;
317
  left: 50%;
318
  position: absolute;
319
+ -ms-transform: translateX(-50%);
320
+ transform: translateX(-50%);
321
  }
322
  /**
323
  * Welcome Block
assets/css/omgf-admin.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["omgf-admin.less"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["omgf-admin.less"],"names":[],"mappings":"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"}
assets/css/omgf-admin.less CHANGED
@@ -52,6 +52,102 @@
52
  }
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  .omgf-optimize-fonts-container {
56
  text-align: center;
57
  padding: 25px 50px;
@@ -84,7 +180,7 @@
84
  .tooltip {
85
  position: relative;
86
  font-size: 16px;
87
- line-height: 25px;
88
 
89
  .tooltip-text {
90
  visibility: hidden;
@@ -265,8 +361,8 @@
265
  top: 50%;
266
  left: 50%;
267
  position: absolute;
268
- -ms-transform: translate(0, -70%);
269
- transform: translate(0, -70%);
270
  }
271
  }
272
 
52
  }
53
  }
54
 
55
+ .omgf form {
56
+ max-width: 1350px;
57
+
58
+ .dashicons {
59
+ line-height: 15px;
60
+
61
+ }
62
+
63
+ .omgf-manual-optimization-mode,
64
+ .omgf-automatic-optimization-mode {
65
+ .pro-con-container {
66
+ display: flex;
67
+ justify-content: center;
68
+
69
+ .pros, .cons {
70
+ width: 50%;
71
+
72
+ .pros-list,
73
+ .cons-list {
74
+ list-style: none;
75
+ margin-left: 0;
76
+ padding-left: 0;
77
+
78
+ li {
79
+ padding-left: 1.5em;
80
+ text-indent: -2em;
81
+ line-height: 18px;
82
+ }
83
+
84
+ li:before {
85
+ font-family: 'dashicons';
86
+ font-size: 18px;
87
+ vertical-align: middle;
88
+ margin-right: .5em;
89
+ }
90
+ }
91
+
92
+ .pros-list {
93
+ li:before {
94
+ content: "\f147";
95
+ color: #2ECC40;
96
+ }
97
+ }
98
+
99
+ .cons-list {
100
+ li:before {
101
+ content: "\f158";
102
+ color: #FF4136;
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ .status {
109
+ padding-left: 0;
110
+ line-height: 1;
111
+
112
+ ul {
113
+ margin-top: 5px;
114
+ list-style: none;
115
+ margin-left: 0;
116
+ padding-left: 0;
117
+
118
+ li {
119
+ padding-left: 1.5em;
120
+ text-indent: -2em;
121
+ line-height: 18px;
122
+
123
+ &:before {
124
+ font-family: 'dashicons';
125
+ font-size: 18px;
126
+ vertical-align: middle;
127
+ margin-right: .5em;
128
+ }
129
+
130
+ &.stale:before {
131
+ content: "\f534";
132
+ color: #FF851B;
133
+ }
134
+
135
+ &.found:before {
136
+ content: "\f147";
137
+ color: #2ECC40;
138
+ }
139
+
140
+ &.not-found:before {
141
+ content: "\f158";
142
+ color: #FF4136;
143
+ }
144
+ }
145
+
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
  .omgf-optimize-fonts-container {
152
  text-align: center;
153
  padding: 25px 50px;
180
  .tooltip {
181
  position: relative;
182
  font-size: 16px;
183
+ line-height: 16px;
184
 
185
  .tooltip-text {
186
  visibility: hidden;
361
  top: 50%;
362
  left: 50%;
363
  position: absolute;
364
+ -ms-transform: translateX(-50%);
365
+ transform: translateX(-50%);
366
  }
367
  }
368
 
assets/css/omgf-admin.min.css CHANGED
@@ -1 +1 @@
1
- .omgf .button-cancel{color:#a00;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0;border-radius:3px;white-space:nowrap;padding:1px 10px!important}.omgf .button-cancel:hover{cursor:pointer;background:#d54e21;color:#fff;border-color:#d54e21}.omgf-nav{padding:1em 0 1.5em}.omgf-nav a{cursor:pointer}.omgf-nav .dashicons-before:before{margin-right:.25em;line-height:1.15em}.omgf-optimize-fonts-container{text-align:center;padding:25px 50px;max-width:1024px;margin:20px auto 0 220px;overflow:visible;position:relative}.omgf-optimize-fonts-container .option-title{position:absolute;left:-220px;top:0;font-weight:600;font-size:14px;color:#1d2327}.omgf-optimize-fonts-container h3{font-size:1.3em;margin-top:0}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage{text-align:left}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table{width:100%;border-collapse:collapse}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip{position:relative;font-size:16px;line-height:25px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text{visibility:hidden;position:absolute;top:100%;left:100%;z-index:10000;background-color:rgba(0,0,0,.75);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:.8em;color:#fff;line-height:1.5;width:250px;padding:10px;margin-left:-125px;border-radius:3px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text .illustration{margin-top:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip:hover .tooltip-text{visibility:visible}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table thead th{width:13%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody{border:1px solid #ccd0d4}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody th{padding:5px 0 0 10px;width:40%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td{padding-bottom:5px;width:13%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td .unload-mass-action{font-size:.9em}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td .family{padding:0 10px 0;font-weight:600}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody tr:last-child td{padding-bottom:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros{margin-right:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-cons,.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros{text-align:left;width:48%;display:inline-block;vertical-align:top}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-cons span:before,.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros span:before{vertical-align:-4px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description label{font-size:18px;font-weight:700}.omgf-optimize-fonts-container .omgf-optimize-fonts-description #omgf_manual_optimize_url{font-size:18px;padding:0 15px;margin-left:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-tooltip{padding:0 15px 5px}.omgf-optimize-fonts-container p,.omgf-optimize-fonts-container ul{text-align:justify}#omgf-help-form .postbox{padding:0 15px 5px}#omgf-help-form .postbox .column-container{display:flex;flex-flow:row wrap;justify-content:space-between}#omgf-help-form .postbox .column-container .column ul li{margin-bottom:10px}#omgf-help-form .postbox .column-container .column ul li:last-child{margin-bottom:none}#omgf-help-form .postbox .column-container .column ul li a{text-decoration:none;line-height:1.45}#omgf-help-form .postbox .column-container .column ul li a i.dashicons{margin-right:5px;color:#646970}#omgf-help-form .postbox .column-container .column.last{margin-right:45px}#omgf-help-form .postbox .column-container .column.last .signature{text-align:center}#omgf-help-form .postbox .column-container .column.last .signature .dashicons-heart{color:#ff4136}@media only screen and (max-width:782px){.omgf-optimize-fonts-container{margin:20px 0}.omgf-optimize-fonts-container .option-title{position:relative;left:initial;top:initial}}.omgf-loading{position:fixed;background-color:rgba(255,255,255,.6);width:100%;height:100%;top:0;text-align:center}.omgf-loading .spinner{top:50%;left:50%;position:absolute;-ms-transform:translate(0,-70%);transform:translate(0,-70%)}#footer-thankyou a{vertical-align:-.65em}#footer-thankyou .dashicons.ffwp-heart{vertical-align:middle}#footer-thankyou .dashicons.ffwp-heart:before{color:#ff4136}#footer-thankyou .signature-image{width:96px}
1
+ .omgf .button-cancel{color:#a00;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0;border-radius:3px;white-space:nowrap;padding:1px 10px!important}.omgf .button-cancel:hover{cursor:pointer;background:#d54e21;color:#fff;border-color:#d54e21}.omgf-nav{padding:1em 0 1.5em}.omgf-nav a{cursor:pointer}.omgf-nav .dashicons-before:before{margin-right:.25em;line-height:1.15em}.omgf form{max-width:1350px}.omgf form .dashicons{line-height:15px}.omgf form .omgf-automatic-optimization-mode .pro-con-container,.omgf form .omgf-manual-optimization-mode .pro-con-container{display:flex;justify-content:center}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros{width:50%}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list,.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list{list-style:none;margin-left:0;padding-left:0}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li,.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li{padding-left:1.5em;text-indent:-2em;line-height:18px}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li:before,.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li:before,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li:before,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li:before{font-family:dashicons;font-size:18px;vertical-align:middle;margin-right:.5em}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .pros-list li:before,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .pros-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .pros-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .pros-list li:before{content:"\f147";color:#2ecc40}.omgf form .omgf-automatic-optimization-mode .pro-con-container .cons .cons-list li:before,.omgf form .omgf-automatic-optimization-mode .pro-con-container .pros .cons-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .cons .cons-list li:before,.omgf form .omgf-manual-optimization-mode .pro-con-container .pros .cons-list li:before{content:"\f158";color:#ff4136}.omgf form .omgf-automatic-optimization-mode .status,.omgf form .omgf-manual-optimization-mode .status{padding-left:0;line-height:1}.omgf form .omgf-automatic-optimization-mode .status ul,.omgf form .omgf-manual-optimization-mode .status ul{margin-top:5px;list-style:none;margin-left:0;padding-left:0}.omgf form .omgf-automatic-optimization-mode .status ul li,.omgf form .omgf-manual-optimization-mode .status ul li{padding-left:1.5em;text-indent:-2em;line-height:18px}.omgf form .omgf-automatic-optimization-mode .status ul li:before,.omgf form .omgf-manual-optimization-mode .status ul li:before{font-family:dashicons;font-size:18px;vertical-align:middle;margin-right:.5em}.omgf form .omgf-automatic-optimization-mode .status ul li.stale:before,.omgf form .omgf-manual-optimization-mode .status ul li.stale:before{content:"\f534";color:#ff851b}.omgf form .omgf-automatic-optimization-mode .status ul li.found:before,.omgf form .omgf-manual-optimization-mode .status ul li.found:before{content:"\f147";color:#2ecc40}.omgf form .omgf-automatic-optimization-mode .status ul li.not-found:before,.omgf form .omgf-manual-optimization-mode .status ul li.not-found:before{content:"\f158";color:#ff4136}.omgf-optimize-fonts-container{text-align:center;padding:25px 50px;max-width:1024px;margin:20px auto 0 220px;overflow:visible;position:relative}.omgf-optimize-fonts-container .option-title{position:absolute;left:-220px;top:0;font-weight:600;font-size:14px;color:#1d2327}.omgf-optimize-fonts-container h3{font-size:1.3em;margin-top:0}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage{text-align:left}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table{width:100%;border-collapse:collapse}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip{position:relative;font-size:16px;line-height:16px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text{visibility:hidden;position:absolute;top:100%;left:100%;z-index:10000;background-color:rgba(0,0,0,.75);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:.8em;color:#fff;line-height:1.5;width:250px;padding:10px;margin-left:-125px;border-radius:3px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip .tooltip-text .illustration{margin-top:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table .tooltip:hover .tooltip-text{visibility:visible}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table thead th{width:13%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody{border:1px solid #ccd0d4}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody th{padding:5px 0 0 10px;width:40%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td{padding-bottom:5px;width:13%}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td .unload-mass-action{font-size:.9em}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody td .family{padding:0 10px 0;font-weight:600}.omgf-optimize-fonts-container .omgf-optimize-fonts-manage table tbody tr:last-child td{padding-bottom:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros{margin-right:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-cons,.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros{text-align:left;width:48%;display:inline-block;vertical-align:top}.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-cons span:before,.omgf-optimize-fonts-container .omgf-optimize-fonts-description .omgf-optimize-fonts-pros span:before{vertical-align:-4px}.omgf-optimize-fonts-container .omgf-optimize-fonts-description label{font-size:18px;font-weight:700}.omgf-optimize-fonts-container .omgf-optimize-fonts-description #omgf_manual_optimize_url{font-size:18px;padding:0 15px;margin-left:10px}.omgf-optimize-fonts-container .omgf-optimize-fonts-tooltip{padding:0 15px 5px}.omgf-optimize-fonts-container p,.omgf-optimize-fonts-container ul{text-align:justify}#omgf-help-form .postbox{padding:0 15px 5px}#omgf-help-form .postbox .column-container{display:flex;flex-flow:row wrap;justify-content:space-between}#omgf-help-form .postbox .column-container .column ul li{margin-bottom:10px}#omgf-help-form .postbox .column-container .column ul li:last-child{margin-bottom:none}#omgf-help-form .postbox .column-container .column ul li a{text-decoration:none;line-height:1.45}#omgf-help-form .postbox .column-container .column ul li a i.dashicons{margin-right:5px;color:#646970}#omgf-help-form .postbox .column-container .column.last{margin-right:45px}#omgf-help-form .postbox .column-container .column.last .signature{text-align:center}#omgf-help-form .postbox .column-container .column.last .signature .dashicons-heart{color:#ff4136}@media only screen and (max-width:782px){.omgf-optimize-fonts-container{margin:20px 0}.omgf-optimize-fonts-container .option-title{position:relative;left:initial;top:initial}}.omgf-loading{position:fixed;background-color:rgba(255,255,255,.6);width:100%;height:100%;top:0;text-align:center}.omgf-loading .spinner{top:50%;left:50%;position:absolute;-ms-transform:translateX(-50%);transform:translateX(-50%)}#footer-thankyou a{vertical-align:-.65em}#footer-thankyou .dashicons.ffwp-heart{vertical-align:middle}#footer-thankyou .dashicons.ffwp-heart:before{color:#ff4136}#footer-thankyou .signature-image{width:96px}
assets/js/omgf-admin.js CHANGED
@@ -29,6 +29,9 @@ jQuery(document).ready(function ($) {
29
  init: function () {
30
  // Settings
31
  $('input[name="omgf_optimization_mode"]').on('click', this.toggle_optimization_mode_content);
 
 
 
32
  $('.omgf-optimize-fonts-manage .unload').on('change', this.unload_stylesheets);
33
  $('.omgf-optimize-fonts-manage .unload, .omgf-optimize-fonts-manage .fallback-font-stack select').on('change', this.generate_cache_key);
34
  $('.omgf-optimize-fonts-manage .unload').on('change', this.toggle_preload);
@@ -77,6 +80,16 @@ jQuery(document).ready(function ($) {
77
  }
78
  },
79
 
 
 
 
 
 
 
 
 
 
 
80
  /**
81
  * Populates the omgf_unload_stylesheets hidden field.
82
  */
29
  init: function () {
30
  // Settings
31
  $('input[name="omgf_optimization_mode"]').on('click', this.toggle_optimization_mode_content);
32
+ $('input[name="omgf_optimization_mode"]').on('change', this.toggle_manual_optimization_mode_section);
33
+ $('#omgf-save-optimize').on('click', function () { $('#omgf-optimize-settings-form #submit').click(); });
34
+ $('#omgf-stale-cache').on('click', function () { $('#omgf-empty').click(); });
35
  $('.omgf-optimize-fonts-manage .unload').on('change', this.unload_stylesheets);
36
  $('.omgf-optimize-fonts-manage .unload, .omgf-optimize-fonts-manage .fallback-font-stack select').on('change', this.generate_cache_key);
37
  $('.omgf-optimize-fonts-manage .unload').on('change', this.toggle_preload);
80
  }
81
  },
82
 
83
+ toggle_manual_optimization_mode_section: function () {
84
+ var section = $('.omgf-manual-optimization-mode');
85
+
86
+ if (this.value == 'manual') {
87
+ section.show();
88
+ } else {
89
+ section.hide();
90
+ }
91
+ },
92
+
93
  /**
94
  * Populates the omgf_unload_stylesheets hidden field.
95
  */
host-webfonts-local.php CHANGED
@@ -2,9 +2,9 @@
2
 
3
  /**
4
  * Plugin Name: OMGF
5
- * Plugin URI: https://daan.dev/wordpress-plugins/host-google-fonts-locally
6
- * Description: Minimize DNS requests, leverage browser cache and speed up WordPress by saving Google Fonts to your server and removing external Google Fonts requests.
7
- * Version: 4.5.19
8
  * Author: Daan from FFW.Press
9
  * Author URI: https://ffw.press
10
  * License: GPL2v2 or later
@@ -19,7 +19,7 @@ defined('ABSPATH') || exit;
19
  define('OMGF_PLUGIN_DIR', plugin_dir_path(__FILE__));
20
  define('OMGF_PLUGIN_FILE', __FILE__);
21
  define('OMGF_PLUGIN_BASENAME', plugin_basename(OMGF_PLUGIN_FILE));
22
- define('OMGF_STATIC_VERSION', '4.5.11');
23
  define('OMGF_DB_VERSION', '4.5.1');
24
 
25
  /**
2
 
3
  /**
4
  * Plugin Name: OMGF
5
+ * Plugin URI: https://ffw.press/wordpress/omgf/
6
+ * Description: Increase GDPR compliance, reduce DNS requests and leverage browser cache by automatically downloading Google Fonts to your server.
7
+ * Version: 4.6.0
8
  * Author: Daan from FFW.Press
9
  * Author URI: https://ffw.press
10
  * License: GPL2v2 or later
19
  define('OMGF_PLUGIN_DIR', plugin_dir_path(__FILE__));
20
  define('OMGF_PLUGIN_FILE', __FILE__);
21
  define('OMGF_PLUGIN_BASENAME', plugin_basename(OMGF_PLUGIN_FILE));
22
+ define('OMGF_STATIC_VERSION', '4.6.0');
23
  define('OMGF_DB_VERSION', '4.5.1');
24
 
25
  /**
includes/admin/class-settings.php CHANGED
@@ -38,8 +38,8 @@ class OMGF_Admin_Settings extends OMGF_Admin
38
  * Option Values
39
  */
40
  const OMGF_OPTIMIZATION_MODE = [
41
- 'manual' => 'Manual (default)',
42
- 'auto' => 'Automatic (Pro)'
43
  ];
44
  const OMGF_FONT_PROCESSING_OPTIONS = [
45
  'replace' => 'Replace (default)',
38
  * Option Values
39
  */
40
  const OMGF_OPTIMIZATION_MODE = [
41
+ 'manual' => 'Force (default)',
42
+ 'auto' => 'Scan Posts/Pages (Pro)'
43
  ];
44
  const OMGF_FONT_PROCESSING_OPTIONS = [
45
  'replace' => 'Replace (default)',
includes/admin/settings/class-optimize.php CHANGED
@@ -33,10 +33,19 @@ class OMGF_Admin_Settings_Optimize extends OMGF_Admin_Settings_Builder
33
  $this->title = __('Optimize Google Fonts', $this->plugin_text_domain);
34
 
35
  add_filter('omgf_optimize_settings_content', [$this, 'do_title'], 10);
36
- add_filter('omgf_optimize_settings_content', [$this, 'do_description'], 15);
37
 
38
  add_filter('omgf_optimize_settings_content', [$this, 'do_before'], 20);
39
- add_filter('omgf_optimize_settings_content', [$this, 'do_optimization_mode'], 30);
 
 
 
 
 
 
 
 
 
40
  add_filter('omgf_optimize_settings_content', [$this, 'do_promo_combine_requests'], 40);
41
  add_filter('omgf_optimize_settings_content', [$this, 'do_display_option'], 50);
42
  add_filter('omgf_optimize_settings_content', [$this, 'do_promo_force_font_display'], 60);
@@ -79,10 +88,89 @@ class OMGF_Admin_Settings_Optimize extends OMGF_Admin_Settings_Builder
79
  OMGF_Admin_Settings::OMGF_OPTIMIZATION_MODE,
80
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZATION_MODE,
81
  OMGF_OPTIMIZATION_MODE,
82
- __('<strong>Manual</strong> processing mode is best suited for configurations, which use a fixed number of fonts across the entire site. When in manual mode, the generated stylesheet is forced throughout the entire site. <strong>Automatic</strong> processing mode is best suited for configurations using e.g. page builders, which load different fonts on certain pages.', $this->plugin_text_domain)
83
  );
84
  }
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  /**
87
  *
88
  */
@@ -300,25 +388,6 @@ class OMGF_Admin_Settings_Optimize extends OMGF_Admin_Settings_Builder
300
  {
301
  ?>
302
  <div class="omgf-optimize-fonts-manual" <?= OMGF_OPTIMIZATION_MODE == 'manual' ? '' : 'style="display: none;"'; ?>>
303
- <p>
304
- <?= sprintf(__("You've chosen to <strong>optimize your Google Fonts manually</strong>. OMGF will <u>not</u> run automatically and will <strong>%s</strong> the requested Google Fonts throughout your website that were captured on the post/page you defined. A Cross-Browser compatible stylesheet will be generated for all requested Google Fonts.", $this->plugin_text_domain), OMGF_FONT_PROCESSING); ?>
305
- </p>
306
- <div class="omgf-optimize-fonts-pros">
307
- <h3>
308
- <span class="dashicons-before dashicons-yes"></span> <?= __('Pros:', $this->plugin_text_domain); ?>
309
- </h3>
310
- <ul>
311
- <li><?= __('Force one stylesheet to be used throughout the site.', $this->plugin_text_domain); ?></li>
312
- </ul>
313
- </div>
314
- <div class="omgf-optimize-fonts-cons">
315
- <h3>
316
- <span class="dashicons-before dashicons-no"></span> <?= __('Cons', $this->plugin_text_domain); ?>
317
- </h3>
318
- <ul>
319
- <li><?= __('A font that is only used on a few pages might be lost if one of those URLs isn\'t scanned for fonts.', $this->plugin_text_domain); ?></li>
320
- </ul>
321
- </div>
322
  <p>
323
  <?= __('Enter the URL of the post/page you\'d like to scan for Google Fonts. The detected and optimized stylesheets will be applied on all pages where they\'re used.', $this->plugin_text_domain); ?>
324
  </p>
@@ -343,29 +412,10 @@ class OMGF_Admin_Settings_Optimize extends OMGF_Admin_Settings_Builder
343
  {
344
  ?>
345
  <div class="omgf-optimize-fonts-automatic" <?= OMGF_OPTIMIZATION_MODE == 'auto' ? '' : 'style="display: none;"'; ?>>
346
- <p>
347
- <?= sprintf(__("You've chosen to <strong>optimize your Google Fonts automatically</strong>. OMGF will run silently in the background and <strong>%s</strong> all requested Google Fonts. If the captured stylesheet doesn't exist yet, a call is sent to OMGF's Download API to download the font files and generate a Cross-Browser compatible stylesheet.", $this->plugin_text_domain), OMGF_FONT_PROCESSING); ?>
348
- </p>
349
- <div class="omgf-optimize-fonts-pros">
350
- <h3>
351
- <span class="dashicons-before dashicons-yes"></span> <?= __('Pros:', $this->plugin_text_domain); ?>
352
- </h3>
353
- <ul>
354
- <li><?= __('No maintenance.', $this->plugin_text_domain); ?></li>
355
- </ul>
356
- </div>
357
- <div class="omgf-optimize-fonts-cons">
358
- <h3>
359
- <span class="dashicons-before dashicons-no"></span> <?= __('Cons', $this->plugin_text_domain); ?>
360
- </h3>
361
- <ul>
362
- <li><?= __("The first time an unoptimized Google Fonts stylesheet is found, the API will be triggered in the frontend, which might cause the page to load slower than usual. All subsequent pageviews for that page (and all pages using that same stylesheet will load just as fast as when Manual mode is used.", $this->plugin_text_domain); ?></li>
363
- </ul>
364
- </div>
365
  <div class="omgf-optimize-fonts-tooltip">
366
  <p>
367
  <span class="dashicons-before dashicons-info-outline"></span>
368
- <em><?= __("After saving your changes, this section will be populated with all captured fonts, font styles and available options as your site's frontend is visited by you or others. You will be able to manage your fonts at a later point.", $this->plugin_text_domain); ?></em>
369
  </p>
370
  </div>
371
  </div>
33
  $this->title = __('Optimize Google Fonts', $this->plugin_text_domain);
34
 
35
  add_filter('omgf_optimize_settings_content', [$this, 'do_title'], 10);
36
+ add_filter('omgf_optimize_settings_content', [$this, 'do_description'], 11);
37
 
38
  add_filter('omgf_optimize_settings_content', [$this, 'do_before'], 20);
39
+ add_filter('omgf_optimize_settings_content', [$this, 'do_optimization_mode'], 21);
40
+ add_filter('omgf_optimize_settings_content', [$this, 'do_after'], 22);
41
+
42
+ add_filter('omgf_optimize_settings_content', [$this, 'open_manual_optimization_mode'], 23);
43
+ add_filter('omgf_optimize_settings_content', [$this, 'do_before'], 24);
44
+ add_filter('omgf_optimize_settings_content', [$this, 'manual_optimization_status'], 25);
45
+ add_filter('omgf_optimize_settings_content', [$this, 'do_after'], 26);
46
+ add_filter('omgf_optimize_settings_content', [$this, 'close_manual_optimization_mode'], 27);
47
+
48
+ add_filter('omgf_optimize_settings_content', [$this, 'do_before'], 30);
49
  add_filter('omgf_optimize_settings_content', [$this, 'do_promo_combine_requests'], 40);
50
  add_filter('omgf_optimize_settings_content', [$this, 'do_display_option'], 50);
51
  add_filter('omgf_optimize_settings_content', [$this, 'do_promo_force_font_display'], 60);
88
  OMGF_Admin_Settings::OMGF_OPTIMIZATION_MODE,
89
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZATION_MODE,
90
  OMGF_OPTIMIZATION_MODE,
91
+ __('<strong>Force</strong> will apply a single stylesheet to all of your posts/pages. <strong>Scan Posts/Pages</strong> will go through each page one by one and compile separate stylesheets for each different Google Fonts configuration.', $this->plugin_text_domain)
92
  );
93
  }
94
 
95
+ /**
96
+ * Opens the Force info screen container.
97
+ *
98
+ * @return void
99
+ */
100
+ public function open_manual_optimization_mode()
101
+ {
102
+ ?>
103
+ <div class="omgf-manual-optimization-mode postbox" style="padding: 0 15px 5px; <?= OMGF_OPTIMIZATION_MODE == 'manual' ? '' : 'display: none;'; ?>">
104
+ <h3><?= __('Optimization Mode: Force — Task Manager', $this->plugin_text_domain); ?></h3>
105
+ <p class="description">
106
+ <?= __('Are you using a regular theme (and a page builder) and are the same Google Fonts loading throughout all your posts/pages? Then <strong>Force</strong> is right for you.', $this->plugin_text_domain); ?>
107
+ </p>
108
+ <div class="pro-con-container">
109
+ <div class="pros">
110
+ <h4><?= __('Pros', $this->plugin_text_domain); ?></h4>
111
+ <ul class="pros-list">
112
+ <li><?= __('Fast. Immediate results.', $this->plugin_text_domain); ?></li>
113
+ <li><?= __('One (or a few) stylesheets to manage.', $this->plugin_text_domain); ?></li>
114
+ <li><?= __('Compatible with multilanguage plugins, e.g. WPML or Polylang.', $this->plugin_text_domain); ?></li>
115
+ </ul>
116
+ </div>
117
+ <div class="cons">
118
+ <h4><?= __('Cons', $this->plugin_text_domain); ?></h4>
119
+ <ul class="cons-list">
120
+ <li><?= __('Might miss a font, when using a page builder and a unique font is used on a few separate pages.', $this->plugin_text_domain); ?></li>
121
+ </ul>
122
+ </div>
123
+ </div>
124
+ <?php
125
+ }
126
+
127
+ public function manual_optimization_status()
128
+ {
129
+ $stylesheets = OMGF::optimized_fonts();
130
+ ?>
131
+ <tr valign="top">
132
+ <th scope="row"><?= __('Stylesheet Status', $this->plugin_text_domain); ?></th>
133
+ <td class="status">
134
+ <?php if (!empty($stylesheets)) : ?>
135
+ <ul>
136
+ <?php foreach ($stylesheets as $handle => $contents) : ?>
137
+ <?php
138
+ $cache_key = OMGF::get_cache_key($handle);
139
+
140
+ if (!$cache_key) {
141
+ $cache_key = $handle;
142
+ }
143
+
144
+ $downloaded = file_exists(OMGF_FONTS_DIR . "/$cache_key/$cache_key.css");
145
+ $stale = function_exists('omgf_pro_init') && strpos($cache_key, 'pro-merged') === false;
146
+ ?>
147
+ <li class="<?= $stale ? 'stale' : ($downloaded ? 'found' : 'not-found'); ?>">
148
+ <strong><?= $handle; ?></strong> <?php if (!$stale) : ?><em>(<?= sprintf(__('stored in %s', $this->plugin_text_domain), str_replace(ABSPATH, '', OMGF_FONTS_DIR . "/$cache_key")); ?>)</em><?php elseif ($stale) : ?><em>(<?= __('Stale cache item. <a id="omgf-stale-cache" href="#">Empty cache</a> and run optimization again.', $this->plugin_text_domain); ?>)</em><?php endif; ?>
149
+ </li>
150
+ <?php endforeach; ?>
151
+ </ul>
152
+ <?php else : ?>
153
+ <p>
154
+ <?= __('No stylesheets found. <a href="#" id="omgf-save-optimize">Run optimization</a>?', $this->plugin_text_domain); ?>
155
+ </p>
156
+ <?php endif; ?>
157
+ </td>
158
+ </tr>
159
+ <?php
160
+ }
161
+
162
+ /**
163
+ * Close the container.
164
+ *
165
+ * @return void
166
+ */
167
+ public function close_manual_optimization_mode()
168
+ {
169
+ ?>
170
+ </div>
171
+ <?php
172
+ }
173
+
174
  /**
175
  *
176
  */
388
  {
389
  ?>
390
  <div class="omgf-optimize-fonts-manual" <?= OMGF_OPTIMIZATION_MODE == 'manual' ? '' : 'style="display: none;"'; ?>>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  <p>
392
  <?= __('Enter the URL of the post/page you\'d like to scan for Google Fonts. The detected and optimized stylesheets will be applied on all pages where they\'re used.', $this->plugin_text_domain); ?>
393
  </p>
412
  {
413
  ?>
414
  <div class="omgf-optimize-fonts-automatic" <?= OMGF_OPTIMIZATION_MODE == 'auto' ? '' : 'style="display: none;"'; ?>>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  <div class="omgf-optimize-fonts-tooltip">
416
  <p>
417
  <span class="dashicons-before dashicons-info-outline"></span>
418
+ <em><?= __("After saving your changes, this section will be populated with all captured fonts, font styles and available options as the cron task progresses.", $this->plugin_text_domain); ?></em>
419
  </p>
420
  </div>
421
  </div>
includes/class-ajax.php CHANGED
@@ -61,6 +61,7 @@ class OMGF_AJAX
61
  'section' => $section,
62
  'exclude' => [],
63
  'queue' => [
 
64
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZED_FONTS,
65
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_UNLOAD_FONTS,
66
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_PRELOAD_FONTS,
61
  'section' => $section,
62
  'exclude' => [],
63
  'queue' => [
64
+ OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_CACHE_KEYS,
65
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZED_FONTS,
66
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_UNLOAD_FONTS,
67
  OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_PRELOAD_FONTS,
includes/class-omgf.php CHANGED
@@ -51,7 +51,7 @@ class OMGF
51
  define('OMGF_SITE_URL', 'https://daan.dev');
52
  define('OMGF_CURRENT_DB_VERSION', esc_attr(get_option(OMGF_Admin_Settings::OMGF_CURRENT_DB_VERSION)));
53
  define('OMGF_OPTIMIZATION_MODE', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZATION_MODE, 'manual')));
54
- define('OMGF_MANUAL_OPTIMIZE_URL', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_MANUAL_OPTIMIZE_URL, site_url())));
55
  define('OMGF_FONT_PROCESSING', esc_attr(get_option(OMGF_Admin_Settings::OMGF_DETECTION_SETTING_FONT_PROCESSING, 'replace')));
56
  define('OMGF_DISPLAY_OPTION', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_DISPLAY_OPTION, 'swap')) ?: 'swap');
57
  define('OMGF_OPTIMIZE_EDIT_ROLES', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZE_EDIT_ROLES, 'on')));
51
  define('OMGF_SITE_URL', 'https://daan.dev');
52
  define('OMGF_CURRENT_DB_VERSION', esc_attr(get_option(OMGF_Admin_Settings::OMGF_CURRENT_DB_VERSION)));
53
  define('OMGF_OPTIMIZATION_MODE', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZATION_MODE, 'manual')));
54
+ define('OMGF_MANUAL_OPTIMIZE_URL', esc_url(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_MANUAL_OPTIMIZE_URL, get_site_url()) ?: get_site_url()));
55
  define('OMGF_FONT_PROCESSING', esc_attr(get_option(OMGF_Admin_Settings::OMGF_DETECTION_SETTING_FONT_PROCESSING, 'replace')));
56
  define('OMGF_DISPLAY_OPTION', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_DISPLAY_OPTION, 'swap')) ?: 'swap');
57
  define('OMGF_OPTIMIZE_EDIT_ROLES', esc_attr(get_option(OMGF_Admin_Settings::OMGF_OPTIMIZE_SETTING_OPTIMIZE_EDIT_ROLES, 'on')));
includes/class-optimize.php CHANGED
@@ -84,7 +84,7 @@ class OMGF_Optimize
84
  }
85
 
86
  /**
87
- * Run Manual mode.
88
  *
89
  * @return void
90
  */
84
  }
85
 
86
  /**
87
+ * Run Force mode.
88
  *
89
  * @return void
90
  */
includes/optimization-mode/class-manual.php CHANGED
@@ -32,7 +32,7 @@ class OMGF_OptimizationMode_Manual
32
  }
33
 
34
  /**
35
- * Run Manual mode.
36
  *
37
  * @return void
38
  */
32
  }
33
 
34
  /**
35
+ * Run Force mode.
36
  *
37
  * @return void
38
  */
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: DaanvandenBergh
3
  Tags: google, fonts, gdpr, cache, speed, preload, font-display, webfonts, subsets, remove, minimize, external, requests
4
  Requires at least: 4.6
5
  Tested up to: 5.9
6
- Stable tag: 4.5.19
7
  Requires PHP: 7.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -21,9 +21,9 @@ OMGF is written with performance and user-friendliness in mind. It uses the Goog
21
 
22
  = How Does It Work? =
23
 
24
- After installing the plugin, choose your Optimization Mode: Manual (default) or Automatic (only available in Pro).
25
 
26
- When *Manual* is selected, you can simply configure OMGF to work in the way you want, and run its detection mechanism on an address of your choosing. Tweak the stylesheet(s) as you wish and these will be used throughout your site.
27
 
28
  In *Automatic* (Pro) Mode, OMGF runs silently in the background and captures any requests made to fonts.googleapis.com or fonts.gstatic.com. When a webpage is first loaded, it reroutes these requests to its own Download API and copies the fonts over to your server. Then it generates a stylesheet for your fonts including SVG, EOT, TTF, WOFF and WOFF2 formats to guarantee maximum cross browser compatibility!
29
 
@@ -83,6 +83,16 @@ For the FAQ, [click here](https://docs.ffw.press/category/76-omgf-pro---faq).
83
 
84
  == Changelog ==
85
 
 
 
 
 
 
 
 
 
 
 
86
  = 4.5.19 | February 5th, 2022 =
87
  * Fixed: Use of undefined constant in OMGF_Admin_Settings_Help class.
88
 
@@ -147,8 +157,8 @@ For the FAQ, [click here](https://docs.ffw.press/category/76-omgf-pro---faq).
147
 
148
  = 4.5.6 =
149
  * Fixed: Added Fallback API URL for when Google Fonts Helper is down.
150
- * Enhanced: Added extra error handling in Manual Optimization Mode.
151
- * Fixed: API requests made in Manual Optimization Mode are no longer forced to SSL. It now uses the protocol configured in Settings > General > WordPress URL.
152
  * Fixed: Stylesheet handles containing spaces would prevent Optimize Google Fonts screen from rendering properly.
153
  * Several refactors and code optimizations.
154
 
@@ -268,8 +278,8 @@ For the FAQ, [click here](https://docs.ffw.press/category/76-omgf-pro---faq).
268
  * Added CSS2 (Variable Fonts) compatiblity,
269
  * No more spaces in filenames of downloaded fonts,
270
  * Added Optimize Fonts tab, which resembles the 'Generate Stylesheet' tab from v3, and features,
271
- * Optimization Mode: Manual or Automatic,
272
- * If Manual is selected, the URL can be specified which should be scanned for Google Fonts,
273
  * A complete overview of all detected fonts, grouped by stylesheet,
274
  * Options to preload or unload for each font.
275
  * Move settings to more sensible places and re-grouped them in 3 groups:
3
  Tags: google, fonts, gdpr, cache, speed, preload, font-display, webfonts, subsets, remove, minimize, external, requests
4
  Requires at least: 4.6
5
  Tested up to: 5.9
6
+ Stable tag: 4.6.0
7
  Requires PHP: 7.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
21
 
22
  = How Does It Work? =
23
 
24
+ After installing the plugin, choose your Optimization Mode: Force (default) or Scan Posts/Pages (only available in Pro).
25
 
26
+ When *Force* is selected, you can simply configure OMGF to work in the way you want, and run its detection mechanism on an address of your choosing. Tweak the stylesheet(s) as you wish and these will be used throughout your site.
27
 
28
  In *Automatic* (Pro) Mode, OMGF runs silently in the background and captures any requests made to fonts.googleapis.com or fonts.gstatic.com. When a webpage is first loaded, it reroutes these requests to its own Download API and copies the fonts over to your server. Then it generates a stylesheet for your fonts including SVG, EOT, TTF, WOFF and WOFF2 formats to guarantee maximum cross browser compatibility!
29
 
83
 
84
  == Changelog ==
85
 
86
+ = 4.6.0 | February 16th, 2022 =
87
+ * Fixed: Loading spinner wasn't center aligned.
88
+ * Added: Force Optimization Mode Task Manager.
89
+ - Offers an easy overview of downloaded stylesheets and where they're stored,
90
+ - Indicates stale cache files.
91
+ * Added: Clearer explanation of when to use Scan Posts/Pages VS Force Optimization Mode.
92
+ * Fixed: Cache handles weren't removed when cache directory was emptied.
93
+ * Fixed: Tooltip in Manage Optimized Fonts section wasn't aligned properly.
94
+ * Renamed: Manual Optimization Mode to Force and Automatic to Scan Posts/Pages.
95
+
96
  = 4.5.19 | February 5th, 2022 =
97
  * Fixed: Use of undefined constant in OMGF_Admin_Settings_Help class.
98
 
157
 
158
  = 4.5.6 =
159
  * Fixed: Added Fallback API URL for when Google Fonts Helper is down.
160
+ * Enhanced: Added extra error handling in Force Optimization Mode.
161
+ * Fixed: API requests made in Force Optimization Mode are no longer forced to SSL. It now uses the protocol configured in Settings > General > WordPress URL.
162
  * Fixed: Stylesheet handles containing spaces would prevent Optimize Google Fonts screen from rendering properly.
163
  * Several refactors and code optimizations.
164
 
278
  * Added CSS2 (Variable Fonts) compatiblity,
279
  * No more spaces in filenames of downloaded fonts,
280
  * Added Optimize Fonts tab, which resembles the 'Generate Stylesheet' tab from v3, and features,
281
+ * Optimization Mode: Force or Scan Posts/Pages,
282
+ * If Force is selected, the URL can be specified which should be scanned for Google Fonts,
283
  * A complete overview of all detected fonts, grouped by stylesheet,
284
  * Options to preload or unload for each font.
285
  * Move settings to more sensible places and re-grouped them in 3 groups: