two_critical_css.php
293 lines
| 1 | <?php |
| 2 | |
| 3 | use TenWebOptimizer\OptimizerUtils; |
| 4 | |
| 5 | $two_critical_status = $TwoSettings->get_settings('two_critical_status'); |
| 6 | $two_critical_remove = $TwoSettings->get_settings('two_critical_remove'); |
| 7 | $two_critical_font_status = $TwoSettings->get_settings('two_critical_font_status'); |
| 8 | $two_font_actions = $TwoSettings->get_settings('two_font_actions'); |
| 9 | $two_critical_pages = OptimizerUtils::getCriticalPages(); |
| 10 | $two_critical_sizes = $TwoSettings->get_settings('two_critical_sizes'); |
| 11 | $two_critical_url_args = $TwoSettings->get_settings('two_critical_url_args'); |
| 12 | $two_critical_blocked = get_option('two_critical_blocked'); |
| 13 | $two_critical_blocked_class = 'two_critical_blocked'; |
| 14 | $critical_flag = \TenWebWpTransients\OptimizerTransients::get('two_critical_flag'); |
| 15 | $no_optimize_pages_list = get_option('no_optimize_pages'); |
| 16 | $two_critical_default_settings = get_option('two_critical_default_settings'); |
| 17 | |
| 18 | if ($two_critical_blocked) { |
| 19 | $two_critical_blocked_class = ''; |
| 20 | } |
| 21 | |
| 22 | $two_uncritical_load_types = $TwoSettings->critical_options['uncritical_load_types']; |
| 23 | $two_critical_wait_until = $TwoSettings->critical_options['critical_wait_until']; |
| 24 | |
| 25 | if (!is_array($two_critical_pages)) { |
| 26 | $two_critical_pages = []; |
| 27 | } |
| 28 | |
| 29 | if (!is_array($two_critical_sizes)) { |
| 30 | $two_critical_sizes = []; |
| 31 | } |
| 32 | $critical_checked = ''; |
| 33 | $hide_critical = "style='display:none;'"; |
| 34 | |
| 35 | if ($two_critical_status === 'true') { |
| 36 | $critical_checked = 'checked'; |
| 37 | $hide_critical = ''; |
| 38 | } |
| 39 | $critical_remove_checked = ($two_critical_remove == 'true') ? 'checked' : ''; |
| 40 | $critical_font_checked = ($two_critical_font_status == 'true') ? 'checked' : ''; |
| 41 | |
| 42 | ?> |
| 43 | <div class="two_settings_tab two_tab_critical_css"> |
| 44 | <?php if ((int) $critical_flag > 0) { ?> |
| 45 | <?php echo 'Count of CSS Generation function calls(API might not be called): ' . esc_html($critical_flag); ?> |
| 46 | <?php }?> |
| 47 | <div class="two_settings_option two_critical"> |
| 48 | <input <?php echo esc_html($critical_checked); ?> type="checkbox" name="two_critical" id="two_critical"> |
| 49 | <label for="two_critical" |
| 50 | class="wd-label"><?php _e(esc_html($TwoSettings->settings_names['two_critical_status']['title']), 'tenweb-speed-optimizer'); ?></label> |
| 51 | <p class="description"><?php _e(esc_html($TwoSettings->settings_names['two_critical_status']['description']), 'tenweb-speed-optimizer'); ?></p> |
| 52 | </div> |
| 53 | <div class="two_settings_option two_critical_remove"> |
| 54 | <input <?php echo esc_html($critical_remove_checked); ?> type="checkbox" name="two_critical_remove" id="two_critical_remove"> |
| 55 | <label for="two_critical_remove" |
| 56 | class="wd-label"><?php _e('Remove Critical css', 'tenweb-speed-optimizer'); ?></label> |
| 57 | <p class="description"><?php _e('Enable this option to remove critical css after css load', 'tenweb-speed-optimizer'); ?></p> |
| 58 | </div> |
| 59 | <div class="two_settings_option two_critical_font"> |
| 60 | <input <?php echo esc_html($critical_font_checked); ?> type="checkbox" name="two_critical_font" id="two_critical_font"> |
| 61 | <label for="two_critical_font" |
| 62 | class="wd-label"><?php _e('Critical fonts', 'tenweb-speed-optimizer'); ?></label> |
| 63 | <p class="description"><?php _e('Enable this option for critical fonts', 'tenweb-speed-optimizer'); ?></p> |
| 64 | </div> |
| 65 | <div id="two_critical_options" <?php echo esc_html($hide_critical); ?>> |
| 66 | <div class="two_settings_option two_font_actions"> |
| 67 | <select name="two_font_actions" id="two_font_actions"> |
| 68 | <option <?php echo ($two_font_actions === 'default') ? 'selected' : ''; ?> value="default">Default</option> |
| 69 | <option <?php echo ($two_font_actions === 'not_load') ? 'selected' : ''; ?> value="not_load">Not load uncritical fonts</option> |
| 70 | <option <?php echo ($two_font_actions === 'exclude_uncritical_fonts') ? 'selected' : ''; ?> value="exclude_uncritical_fonts">Exclude uncritical fonts from delay</option> |
| 71 | </select> |
| 72 | <label for="two_font_actions" |
| 73 | class="wd-label"><?php _e('Font actions', 'tenweb-speed-optimizer'); ?></label> |
| 74 | <p class="description"><?php _e(' |
| 75 | Default - Critical Fonts are injected in style tag, uncritical fonts connect later, could be duplicates |
| 76 | <br> |
| 77 | Not load uncritical fonts - Critical fonts are the only injected fonts |
| 78 | <br> |
| 79 | Exclude uncritical fonts from delay - Critical fonts are injected in style tag and removed from uncritical css', 'tenweb-speed-optimizer'); ?></p> |
| 80 | </div> |
| 81 | <div class="two_settings_option two_page_for_critical"> |
| 82 | <label for="two_page_for_critical" class="wd-label"><?php _e('Select page to generate critical CSS', 'tenweb-speed-optimizer'); ?></label> |
| 83 | <select name="two_page_for_critical" id="two_page_for_critical"> |
| 84 | </select> |
| 85 | <button class="two_add_critical_css_row button button-primary"><?php _e('ADD'); ?></button> |
| 86 | </div> |
| 87 | <div class="two_settings_option two_page_for_critical"> |
| 88 | <label class="wd-label" for="two_critical_url_args"><?php _e('URL query arguments:', 'tenweb-speed-optimizer'); ?></label> |
| 89 | <input type="text" id="two_critical_url_args" value="<?php echo esc_attr($two_critical_url_args); ?>" style="width:300px"> |
| 90 | </div> |
| 91 | <div class="two_critical_error <?php echo esc_attr($two_critical_blocked_class); ?> notice notice-error"> |
| 92 | <h2>Critical CSS Generation is blocked</h2> |
| 93 | <p>One of your services is blocking our IP, please contact our support team.</p> |
| 94 | </div> |
| 95 | <div class="two_critical_tables two_page_for_critical"> |
| 96 | <div class="two_critical_pages"> |
| 97 | <table id="two_critical_pages" class="display" style="width:100%"> |
| 98 | <thead> |
| 99 | <tr> |
| 100 | <th>Page name</th> |
| 101 | <th>Size</th> |
| 102 | <th>Load</th> |
| 103 | <th>Wait until</th> |
| 104 | <th>Use uncritical</th> |
| 105 | <th>Update date</th> |
| 106 | <th>Generate/Delete/Clear</th> |
| 107 | </tr> |
| 108 | </thead> |
| 109 | <tbody> |
| 110 | <tr class="two_critical_defaults"> |
| 111 | <?php |
| 112 | $two_default_use_uncritical = $two_critical_default_settings['use_uncritical']; |
| 113 | $two_default_load_type = $two_critical_default_settings['load_type']; |
| 114 | $two_default_wait_until = $two_critical_default_settings['wait_until']; |
| 115 | $two_default_sizes = $two_critical_default_settings['default_sizes']; |
| 116 | ?> |
| 117 | <td>Default settings</td> |
| 118 | <td class="critical_page_sizes_default"> |
| 119 | <select multiple> |
| 120 | <?php foreach ($two_critical_sizes as $uid => $size) { ?> |
| 121 | <option <?php echo in_array($uid, $two_default_sizes) ? 'selected' : ''; ?> data-uid="<?php echo esc_attr($uid); ?>" data-width="<?php echo esc_attr($size['width']); ?>" data-height="<?php echo esc_attr($size['height']); ?>" data-media="<?php echo esc_attr($size['media']); ?>"><?php echo esc_html($size['width']); ?>/<?php echo esc_html($size['height']); ?></option> |
| 122 | <?php }?> |
| 123 | </select> |
| 124 | </td> |
| 125 | <td class="critical_page_load_actions_default"> |
| 126 | <select> |
| 127 | <?php foreach ($two_uncritical_load_types as $key => $val) { ?> |
| 128 | <option <?php echo ($key === $two_default_load_type) ? 'selected' : ''; ?> value="<?php echo esc_attr($key); ?>"><?php echo esc_html($val); ?></option> |
| 129 | <?php }?> |
| 130 | </select> |
| 131 | </td> |
| 132 | <td class="critical_page_wait_until_default"> |
| 133 | <select> |
| 134 | <?php foreach ($two_critical_wait_until as $key => $val) { ?> |
| 135 | <option <?php echo ($key === $two_default_wait_until) ? 'selected' : ''; ?> value="<?php echo esc_attr($key); ?>"><?php echo esc_html($val); ?></option> |
| 136 | <?php }?> |
| 137 | </select> |
| 138 | </td> |
| 139 | <td class="use_uncritical_default"> |
| 140 | <input <?php echo ($two_default_use_uncritical === 'true') ? 'checked' : ''; ?> type="checkbox" name="use_uncritical" > |
| 141 | </td> |
| 142 | <td></td> |
| 143 | <td></td> |
| 144 | </tr> |
| 145 | <?php foreach ($two_critical_pages as $p_id => $critical_page) { |
| 146 | if (!isset($critical_page['id'])) { |
| 147 | continue; |
| 148 | } |
| 149 | $two_generate_icon = 'dashicons-database-add'; |
| 150 | |
| 151 | if (isset($critical_page['status']) && $critical_page['status'] == 'success' && isset($critical_page['critical_css']) && !empty($critical_page['critical_css'])) { |
| 152 | $two_generate_icon = 'dashicons-database-view'; |
| 153 | } |
| 154 | $critical_page_status = 'not_started'; |
| 155 | $critical_page_status_classes = ''; |
| 156 | |
| 157 | if (isset($critical_page['status'])) { |
| 158 | $critical_page_status = $critical_page['status']; |
| 159 | |
| 160 | if ($critical_page_status === 'in_progress') { |
| 161 | $critical_page_status_classes = 'is-active'; |
| 162 | $two_generate_icon .= ' two_disabled'; |
| 163 | } |
| 164 | } |
| 165 | $use_uncritical = ''; |
| 166 | |
| 167 | if (isset($critical_page['use_uncritical']) && $critical_page['use_uncritical'] == 'true') { |
| 168 | $use_uncritical = 'checked'; |
| 169 | } |
| 170 | |
| 171 | if (OptimizerUtils::is_wpml_active()) { |
| 172 | $flag_url = OptimizerUtils::get_wpml_post_flag_url($p_id); |
| 173 | $flag_img = "<img src='" . $flag_url . "' class='two_flag' />"; |
| 174 | } else { |
| 175 | $flag_img = ''; |
| 176 | } ?> |
| 177 | <tr data-page_id="<?php echo esc_attr($p_id); ?>" data-status=""> |
| 178 | <td data-page_url="<?php echo esc_url($critical_page['url']); ?>" data-page_id="<?php echo esc_attr($p_id); ?>" class="critical_page_url"><a href="<?php echo esc_url($critical_page['url']); ?>" target="_blank"><?php echo wp_kses_post($flag_img . $critical_page['title']); ?></a></td> |
| 179 | <td class="critical_page_sizes"> |
| 180 | <select multiple class="two_critical_sizes_select"> |
| 181 | <?php foreach ($two_critical_sizes as $uid => $size) { ?> |
| 182 | <?php |
| 183 | $check_size = ''; |
| 184 | |
| 185 | if (isset($critical_page['sizes']) && is_array($critical_page['sizes'])) { |
| 186 | foreach ($critical_page['sizes'] as $selected_size) { |
| 187 | if (isset($selected_size)) { |
| 188 | if ($size['uid'] === $selected_size || (isset($selected_size['uid']) && $size['uid'] === $selected_size['uid'])) { |
| 189 | $check_size = 'selected'; |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | } |
| 194 | ?> |
| 195 | <option <?php echo esc_html($check_size); ?> data-uid="<?php echo esc_attr($uid); ?>" data-width="<?php echo esc_attr($size['width']); ?>" data-height="<?php echo esc_attr($size['height']); ?>" data-media="<?php echo esc_attr($size['media']); ?>"><?php echo esc_html($size['width']); ?>/<?php echo esc_html($size['height']); ?></option> |
| 196 | <?php } ?> |
| 197 | </select> |
| 198 | </td> |
| 199 | <td class="critical_page_load_actions"> |
| 200 | <select> |
| 201 | <?php foreach ($two_uncritical_load_types as $key => $val) { ?> |
| 202 | <option <?php echo ($key === $critical_page['load_type']) ? 'selected' : ''; ?> value="<?php echo esc_attr($key); ?>"><?php echo esc_html($val); ?></option> |
| 203 | <?php } ?> |
| 204 | </select> |
| 205 | </td> |
| 206 | <td class="critical_page_wait_until"> |
| 207 | <select> |
| 208 | <?php foreach ($two_critical_wait_until as $key => $val) { ?> |
| 209 | <option <?php echo (($key === $critical_page['wait_until'])) ? 'selected' : ''; ?> value="<?php echo esc_attr($key); ?>"><?php echo esc_html($val); ?></option> |
| 210 | <?php } ?> |
| 211 | </select> |
| 212 | </td> |
| 213 | <td class="use_uncritical"> |
| 214 | <input type="checkbox" name="use_uncritical" <?php echo esc_html($use_uncritical); ?>> |
| 215 | </td> |
| 216 | <td> |
| 217 | <span><?php echo (isset($critical_page['critical_date'])) ? esc_html(date('Y-m-d H:i:s', $critical_page['critical_date'])) : ''; // phpcs:ignore ?></span> |
| 218 | </td> |
| 219 | <td> |
| 220 | <span class="two_generate_critical dashicons <?php echo esc_attr($two_generate_icon); ?>"></span> |
| 221 | <span data-page_id="<?php echo esc_attr($p_id); ?>" class="two_delete_critical_page dashicons dashicons-trash"></span> |
| 222 | <span data-page_url="<?php echo esc_url($critical_page['url']); ?>" class="two_clear_cloudflare_cache dashicons dashicons-editor-removeformatting"></span> |
| 223 | <span class="spinner <?php echo esc_attr($critical_page_status_classes); ?>"></span> |
| 224 | <input type="hidden" value="<?php echo esc_attr($critical_page_status); ?>" class="two_critical_page_status"> |
| 225 | </td> |
| 226 | </tr> |
| 227 | <?php |
| 228 | }?> |
| 229 | </tbody> |
| 230 | <tfoot> |
| 231 | <tr> |
| 232 | <th>Page name</th> |
| 233 | <th>Size</th> |
| 234 | <th>Load</th> |
| 235 | <th>Wait until</th> |
| 236 | <th>Use uncritical</th> |
| 237 | <th>Update date</th> |
| 238 | <th>Generate/Delete/Clear</th> |
| 239 | </tr> |
| 240 | </tfoot> |
| 241 | </table> |
| 242 | </div> |
| 243 | <div class="two_critical_sizes"> |
| 244 | <p>Sizes for critical generation</p> |
| 245 | <table id="two_critical_sizes" class="display" style="width:100%"> |
| 246 | <thead> |
| 247 | <tr> |
| 248 | <th>Width</th> |
| 249 | <th>Height</th> |
| 250 | <th>Css media</th> |
| 251 | <th>Delete</th> |
| 252 | </tr> |
| 253 | </thead> |
| 254 | <tbody> |
| 255 | <?php foreach ($two_critical_sizes as $uid => $size) { ?> |
| 256 | <tr class="<?php echo esc_attr($uid); ?>" data-uid="<?php echo esc_attr($uid); ?>"> |
| 257 | <td class="critical_page_width"><?php echo esc_html($size['width']); ?></td> |
| 258 | <td class="critical_page_height"><?php echo esc_html($size['height']); ?></td> |
| 259 | <td class="critical_size_media"><input type="text" name="critical_size_media" class="critical_size_media_input" value="<?php echo isset($size['media']) ? esc_attr($size['media']) : ''; ?>"></td> |
| 260 | <td><span class="two_delete_critical_size dashicons dashicons-trash"></span></td> |
| 261 | </tr> |
| 262 | <?php }?> |
| 263 | </tbody> |
| 264 | <tfoot> |
| 265 | <tr> |
| 266 | <th>Width</th> |
| 267 | <th>Height</th> |
| 268 | <th>Css media</th> |
| 269 | <th>Delete</th> |
| 270 | </tr> |
| 271 | </tfoot> |
| 272 | </table> |
| 273 | </div> |
| 274 | <div class="two-no-optimize-pages" style="margin-top: 40px;"> |
| 275 | <p class="wd-label">Pages in no optimize pages list from Dashboard </p> |
| 276 | <table id="two-no-optimize-pages" class="display" style="width:100%; display: block; |
| 277 | border:1px solid black; |
| 278 | overflow: scroll; |
| 279 | height: 100px;"> |
| 280 | <tbody> |
| 281 | <?php |
| 282 | if (is_array($no_optimize_pages_list)) { |
| 283 | foreach ($no_optimize_pages_list as $page) { // phpcs:ignore ?> |
| 284 | <tr><td><?php echo esc_html($page); ?></td></tr> |
| 285 | <?php } |
| 286 | }?> |
| 287 | </tbody> |
| 288 | </table> |
| 289 | </div> |
| 290 | </div> |
| 291 | </div> |
| 292 | </div> |
| 293 |