* @copyright Copyright (c) 2020 Samuel Marshall / JCH Optimize
* @license GNU/GPLv3, or later. See LICENSE file
*
* If LICENSE file missing, see .
*/
namespace JchOptimize\WordPress\Admin\Settings;
use JchOptimize\Core\FeatureHelpers\ResponsiveImages;
use function __;
use function array_keys;
abstract class FieldCallbacks
{
## General Tab
/*
General Section
*/
public static function pro_downloadid(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function debug(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function order_plugin(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function disable_logged_in_users(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
/*
Elements Above Fold
*/
public static function elements_above_fold_home(): void
{
ControlRenderer::render('text', __FUNCTION__, '300');
}
public static function elements_above_fold(): void
{
ControlRenderer::render('text', __FUNCTION__, '300');
}
public static function elements_above_fold_per_page(): void
{
$subfields = [
[
'name' => 'elements',
'type' => 'text',
/*'header' => 'Number of elements',*/
'defaultValue' => '300',
'class' => 'small-text bg-white'
]
];
ControlRenderer::render('multiselectjs', __FUNCTION__, [], 'url', 'file', 'url', $subfields);
}
public static function elements_above_fold_marker(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Exclude Menu Urls Section
*/
public static function menuexcludedurl(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'url', 'file');
}
/*
Cache Storage Section
*/
public static function pro_cache_storage_adapter(): void
{
$options = [
'filesystem' => __('Filesystem', 'jch-optimize'),
'apcu' => __('APCu', 'jch-optimize'),
'memcached' => __('Memcached', 'jch-optimize'),
'redis' => __('Redis', 'jch-optimize')
];
$class = CacheStorageSupport::class;
$conditions = [
'apcu' => [$class, 'isApcuSupported'],
'memcached' => [$class, 'isMemcachedSupported'],
'redis' => [$class, 'isRedisSupported']
];
ControlRenderer::render('select.pro', __FUNCTION__, 'filesystem', $options, '', $conditions);
}
public static function cache_lifetime(): void
{
$aOptions = [
'1800' => __('30 min', 'jch-optimize'),
'3600' => __('1 hour', 'jch-optimize'),
'10800' => __('3 hours', 'jch-optimize'),
'21600' => __('6 hours', 'jch-optimize'),
'43200' => __('12 hours', 'jch-optimize'),
'86400' => __('1 day', 'jch-optimize'),
'172800' => __('2 days', 'jch-optimize'),
'604800' => __('7 days', 'jch-optimize'),
'1209600' => __('2 weeks', 'jch-optimize')
];
ControlRenderer::render('select', __FUNCTION__, '1800', $aOptions);
}
public static function memcached_server_host(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '127.0.0.1');
}
public static function memcached_server_port(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '11211');
}
public static function redis_server_host(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '127.0.0.1');
}
public static function redis_server_port(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '6379');
}
public static function redis_server_password(): void
{
ControlRenderer::render('input.pro', __FUNCTION__, '', 'password');
}
public static function redis_server_database(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '0');
}
public static function delete_expiry(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
/*
Recache Section
*/
public static function recache_base_url(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function recache_crawl_limit(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '100');
}
public static function recache_concurrency(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '10');
}
public static function recache_max_depth(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '3');
}
public static function recache_delete_cache(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function recache_frequency(): void
{
$options = [
'0' => __('Disabled', 'jch-optimize'),
'1' => __('On save only', 'jch-optimize'),
'hourly' => __('Hourly', 'jch-optimize'),
'twicedaily' => __('Twice Daily', 'jch-optimize'),
'daily' => __('Daily', 'jch-optimize'),
];
ControlRenderer::render('select.pro', __FUNCTION__, '1', $options);
}
## Combine Files tab
/*
Combine CSS/Js Section
*/
public static function combine_files_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function combine_files(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function smart_combine(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function try_catch(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function html_minify_level(): void
{
$aOptions = [
'0' => __('Basic', 'jch-optimize'),
'1' => __('Advanced', 'jch-optimize'),
'2' => __('Ultra', 'jch-optimize')
];
ControlRenderer::render('select', __FUNCTION__, '0', $aOptions);
}
public static function htaccess(): void
{
$aOptions = [
'2' => __('Static css and js files', 'jch-optimize'),
'0' => __('PHP file with query', 'jch-optimize'),
'1' => __('PHP using url re-write', 'jch-optimize'),
'3' => __('PHP using url re-write (Without Options +FollowSymLinks)', 'jch-optimize'),
];
ControlRenderer::render('select', __FUNCTION__, '2', $aOptions);
}
/*
Combine Files Automatic Section
*/
public static function gzip(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function html_minify(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function includeAllExtensions(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function phpAndExternal(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
## CSS Tab
/*
CSS Automatic Settings Section
*/
public static function css(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function css_minify(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function replaceImports(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function inlineStyle(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Exclude CSS Files section
*/
public static function excludeCss(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'css', 'file');
}
public static function excludeCssComponents(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'css', 'extension');
}
public static function excludeStyles(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'css', 'style');
}
public static function excludeAllStyles(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Remove CSS Files section
*/
public static function remove_css(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'css', 'file');
}
/*
Custom CSS section
*/
public static function custom_css_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function custom_css(): void
{
ControlRenderer::render('textarea', __FUNCTION__, '');
}
public static function mobile_css(): void
{
ControlRenderer::render('textarea', __FUNCTION__, '');
}
public static function desktop_css(): void
{
ControlRenderer::render('textarea', __FUNCTION__, '');
}
/*
Optimize CSS Delivery Section
*/
public static function optimizeCssDelivery_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function pro_reduce_unused_css(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_dynamic_selectors(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'selectors', 'style');
}
public static function dynamic_css_selectors(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'selectors', 'style');
}
public static function critical_css_configure_helper(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
## JavaScript Tab
/*
JavaScript Automatic Settings Section
*/
public static function javascript(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function js_minify(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function inlineScripts(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function bottom_js(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function loadAsynchronous(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Exclude JavaScript Files
*/
public static function excludeJs_peo(): void
{
$subfields = [
['name' => 'ieo', 'type' => 'checkbox', 'header' => 'Ignore execution order',],
['name' => 'dontmove', 'type' => 'checkbox', 'header' => 'Don\'t move to bottom',]
];
ControlRenderer::render('multiselectjs', __FUNCTION__, [], 'js', 'file', 'url', $subfields);
}
public static function excludeJsComponents_peo(): void
{
$subfields = [
['name' => 'ieo', 'type' => 'checkbox', 'header' => 'Ignore execution order',],
['name' => 'dontmove', 'type' => 'checkbox', 'header' => 'Don\'t move to bottom',]
];
ControlRenderer::render('multiselectjs', __FUNCTION__, [], 'js', 'extension', 'url', $subfields);
}
public static function excludeScripts_peo(): void
{
$subfields = [
['name' => 'ieo', 'type' => 'checkbox', 'header' => 'Ignore execution order',],
['name' => 'dontmove', 'type' => 'checkbox', 'header' => 'Don\'t move to bottom',]
];
ControlRenderer::render('multiselectjs', __FUNCTION__, [], 'js', 'script', 'script', $subfields);
}
public static function excludeAllScripts(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Remove JavaScript Files Section
*/
public static function remove_js(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'js', 'file');
}
/*
Reduce Unused JavaScript Section
*/
public static function pro_reduce_unused_js_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_criticalJs(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'criticaljs', 'file');
}
public static function pro_criticalScripts(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'js', 'script');
}
public static function pro_criticalModules(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'modules', 'file');
}
public static function pro_criticalModulesScripts(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'modulesScripts', 'script');
}
public static function critical_js_configure_helper(): void
{
ControlRenderer::render('criticaljsmodalbutton.pro', __FUNCTION__, '');
}
## Page Cache Tab
/*
Page Cache Section
*/
public static function cache_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function pro_cache_platform(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function page_cache_exclude_form_users(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function page_cache_browser_caching(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function page_cache_lifetime(): void
{
$aOptions = [
'900' => __('15 min', 'jch-optimize'),
'1800' => __('30 min', 'jch-optimize'),
'3600' => __('1 hour', 'jch-optimize'),
'10800' => __('3 hours', 'jch-optimize'),
'21600' => __('6 hours', 'jch-optimize'),
'43200' => __('12 hours', 'jch-optimize'),
'86400' => __('1 day', 'jch-optimize'),
'172800' => __('2 days', 'jch-optimize'),
'604800' => __('1 week', 'jch-optimize')
];
ControlRenderer::render('select', __FUNCTION__, '900', $aOptions);
}
public static function cache_exclude(): void
{
//We're using class as the last argument to be able to include '?' in the multiselect box
ControlRenderer::render('multiselect', __FUNCTION__, [], 'url', 'class');
}
public static function page_cache_ignore_query_values(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'url', 'class');
}
public static function pro_capture_cache_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
/*
Cloudflare Cache Purge Section
*/
public static function cf_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function cf_api_token(): void
{
ControlRenderer::render('verifycftoken.pro', __FUNCTION__, '');
}
public static function cf_zone_id(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function cf_mode_switcher_integration(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
## Media Tab
/*
Add Image Attributes Section
*/
public static function img_attributes_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Sprite Generator Section
*/
public static function csg_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function csg_direction(): void
{
$aOptions = [
'vertical' => __('vertical', 'jch-optimize'),
'horizontal' => __('horizontal', 'jch-optimize')
];
ControlRenderer::render('select', __FUNCTION__, 'vertical', $aOptions);
}
public static function csg_wrap_images(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function csg_exclude_images(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'images', 'file');
}
public static function csg_include_images(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'images', 'file');
}
/*
Lazy Load Images Section
*/
public static function lazyload_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function pro_lazyload_iframe(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_lazyload_audiovideo(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_lazyload_bgimages(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function excludeLazyLoad(): void
{
ControlRenderer::render('multiselect', __FUNCTION__, [], 'lazyload', 'file');
}
public static function pro_excludeLazyLoadFolders(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'folder');
}
public static function pro_excludeLazyLoadClass(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'class');
}
public static function includeLazyLoad(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'file');
}
public static function includeLazyLoadFolders(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'folder');
}
public static function includeLazyLoadClass(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'class');
}
## Preloads Tab
/*
HTTP/2 Preload
*/
public static function http2_push_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function pro_http2_preload_modules(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function pro_http2_file_types(): void
{
$aOptions = [
'style' => 'style',
'script' => 'script',
'font' => 'font',
'image' => 'image'
];
ControlRenderer::render('checkboxes', __FUNCTION__, array_keys($aOptions), $aOptions);
}
public static function pro_http2_include(): void
{
$subfields = [
[
'name' => 'crossorigin',
'type' => 'select',
'header' => 'Crossorigin',
'options' => [
['value' => '', 'text' => '- None -'],
['value' => 'anonymous', 'text' => 'anonymous'],
['value' => 'use-credentials', 'text' => 'use-credentials'],
],
'legacy' => ['anonymous', 'use-credentials'],
'class' => 'bg-white'
]
/* ['name' => 'anonymous', 'type' => 'checkbox', 'header' => 'Crossorigin: \'anonymous\''],
['name' => 'use-credentials', 'type' => 'checkbox', 'header' => '\'use-credentials\''] */
];
ControlRenderer::render(
'multiselectjs.pro',
__FUNCTION__,
[],
'http2',
'file',
'url',
$subfields,
'only-one'
);
}
public static function pro_http2_exclude(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'http2', 'file');
}
/*
Largest Contentful Paint Images
*/
public static function pro_lcp_images_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_lcp_images(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'file');
}
public static function pro_lcp_identifiers(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'file');
}
public static function lcp_images_mobile(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'file');
}
public static function lcp_images_desktop(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'lazyload', 'file');
}
/*
Optimize Fonts Section
*/
public static function pro_optimizeFonts_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_force_swap_policy(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function pro_optimize_font_files(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'css', 'file');
}
/*
Preconnect Third-party
*/
public static function pro_preconnect_domains_enable(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_preconnect_domains(): void
{
$subfields = [
[
'name' => 'crossorigin',
'type' => 'select',
'header' => 'Crossorigin',
'options' => [
['value' => '', 'text' => '- None -'],
['value' => 'anonymous', 'text' => 'anonymous'],
['value' => 'use-credentials', 'text' => 'use-credentials'],
],
'legacy' => ['anonymous', 'use-credentials'],
'class' => 'bg-white'
],
/* ['name' => 'anonymous', 'type' => 'checkbox', 'header' => 'Crossorigin: \'anonymous\''],
['name' => 'use-credentials', 'type' => 'checkbox', 'header' => '\'use-credentials\'']*/
];
ControlRenderer::render(
'multiselectjs.pro',
__FUNCTION__,
[],
'origin',
'origin',
'url',
$subfields,
'only-one'
);
}
public static function dns_prefetch_domains(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'origin', 'origin');
}
## CDN Tab
/*
CDN Section
*/
public static function cookielessdomain_enable(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
public static function cdn_scheme(): void
{
$aOptions = [
'0' => __('scheme relative', 'jch-optimize'),
'1' => __('http', 'jch-optimize'),
'2' => __('https', 'jch-optimize')
];
ControlRenderer::render('select', __FUNCTION__, '0', $aOptions);
}
public static function cookielessdomain(): void
{
ControlRenderer::render('text', __FUNCTION__, '');
}
public static function staticfiles(): void
{
ControlRenderer::render('checkboxes', __FUNCTION__, array_keys(self::staticFilesArray()), self::staticFilesArray());
}
/**
* @return array
*/
private static function staticFilesArray(): array
{
return [
'css' => 'css',
'png' => 'png',
'gif' => 'gif',
'ico' => 'ico',
'pdf' => 'pdf',
'js' => 'js',
'jpe?g' => 'jp(e)g',
'bmp' => 'bmp',
'webp' => 'webp',
'svg' => 'svg'
];
}
public static function pro_customcdnextensions(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'url', 'file');
}
public static function pro_cookielessdomain_2(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function pro_staticfiles_2(): void
{
ControlRenderer::render('checkboxes.pro', __FUNCTION__, array_keys(self::staticFilesArray()), self::staticFilesArray());
}
public static function pro_cookielessdomain_3(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function pro_staticfiles_3(): void
{
ControlRenderer::render('checkboxes.pro', __FUNCTION__, array_keys(self::staticFilesArray()), self::staticFilesArray());
}
## Optimize Images Tab
/*
Global Options Section
*/
public static function ignore_optimized(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
/*
Next Generation Images Section
*/
public static function pro_next_gen_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function gen_avif_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function load_avif_webp_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_web_old_browsers(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_load_webp_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function load_avif_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
/*
Responsive Image Section
*/
public static function pro_gen_responsive_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '1');
}
public static function pro_load_responsive_images(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function cropgravity(): void
{
if (JCH_PRO) {
$subfields = [
[
'name' => 'gravity',
'type' => 'select',
'header' => 'Position',
'options' => [
['value' => 'West', 'text' => 'Left', 'selected' => false],
['value' => 'Center', 'text' => 'Center', 'selected' => true],
['value' => 'East', 'text' => 'Right', 'selected' => false],
],
'class' => 'bg-white'
],
[
'name' => 'cropwidth',
'type' => 'text',
'header' => 'Width (px)',
'defaultValue' => ResponsiveImages::$breakpoints[0],
'class' => 'small-text bg-white'
]
];
} else {
$subfields = [];
}
ControlRenderer::render(
'multiselectjs.pro',
__FUNCTION__,
[],
'lazyload',
'file',
'url',
$subfields
);
}
/*
Optimization Configuration Section
*/
public static function lossy(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
public static function save_metadata(): void
{
ControlRenderer::render('switch', __FUNCTION__, '0');
}
/*
Upload Setting Section
*/
public static function pro_api_concurrency(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '2');
}
public static function pro_api_num_files(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '');
}
public static function pro_api_max_size(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '2M');
}
public static function api_connection_timeout(): void
{
ControlRenderer::render('text.pro', __FUNCTION__, '30');
}
/*
Optimize Images By URLs Section
*/
public static function pro_api_resize_mode(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
/*
Optimize Images By Folders Section
*/
public static function recursive(): void
{
ControlRenderer::render('switch', __FUNCTION__, '1');
}
## Miscellaneous Tab
/*
Reduce DOM Section
*/
public static function pro_reduce_dom(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
public static function pro_html_sections(): void
{
$options = [
'header' => 'header',
'nav' => 'nav',
'main' => 'main',
'article' => 'article',
'section' => 'section',
'aside' => 'aside',
'footer' => 'footer',
];
ControlRenderer::render('checkboxes.pro', __FUNCTION__, array_keys($options), $options);
}
public static function reduce_dom_identifiers(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'reducedom', 'class');
}
public static function reduce_dom_exclude_identifiers(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'reducedom', 'class');
}
public static function reduce_dom_above_fold_identifiers(): void
{
ControlRenderer::render('multiselect.pro', __FUNCTION__, [], 'reducedom', 'class');
}
/*
Mode Switcher Menu Section
*/
public static function pro_disableModeSwitcher(): void
{
ControlRenderer::render('switch.pro', __FUNCTION__, '0');
}
}