���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC PK!4o,',' readme.txtnu[=== LoftLoader === Contributors: loftocean Tags: loader, load, preloader, page preloader, prelader spinner, preloader with custom logo, animated preloader, CSS3 preloader, customize Donate link: Requires at least: 5.0 Tested up to: 6.1 Requires PHP: 5.6 Stable tag: 2.4.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html An easy to use plugin to add an animated preloader to your website with fully customisations. == Description == Small and powerful. LoftLoader helps you to add a beautiful animated preloader to your website, and have full control of its look, without writing any code. [youtube https://www.youtube.com/watch?v=zxiF5hHU1kc] = Features & Options = * Enhanced settings panel with WordPress Customizer. * Pure CSS3 animation. Works in any modern browser. * 5 ending animation effects. * 7 loading animation effects. 2 of them support custom image. * Unlimited background color. Also can change the opacity. * Unlimited loader color. * Can add different loaders for different pages on one site (New feature since v2.0. Only works for “Pages”.). * Responsive & retina ready. * Option to enable/disable the preloader. * Option to enable preloader on site homepage only. * Close button to quit the loading screen. Users can set when to show the close button (range: 5 to 20 seconds), and customize the close button text. * Ready for translation (.pot file included). * Light weight, fast. Coded with SASS. CSS & JS minified. = Online Documentation = To know how to use the plugin, please click the link to check [online documentation](http://loftocean.com/doc/loftloader/). It’s the documentation of Pro version. But you can still find Lite version features details in it. = How to contact us = If you have any questions or encounter a problem while using LoftLoader, please [create a topic in the support forum](https://wordpress.org/support/plugin/loftloader). If you contact us via email, please indicate that your question corresponds to LoftLoader Lite. = To speed along the support request, please follow the steps below = * Update to the latest versions of your WordPress, themes and plugins. * Check [online documentation](http://loftocean.com/doc/loftloader/) and [FAQ](https://wordpress.org/plugins/loftloader/#faq) first. * Test by [following this guide](https://wordpress.org/support/topic/how-to-check-for-conflicts/) to check if it is a conflict with other plugins or themes. * If you still cannot find a solution, please contact us. * When submit your support request, please [follow the guide](https://wordpress.org/support/topic/please-read-before-posting-63/). = Pro Version = LoftLoader Pro is available. [Upgrade to pro version](https://codecanyon.net/item/loftloader-pro-preloader-plugin-for-wordpress/17339671?ref=LoftOcean) and get more stunning features! * Handpick - Turn the preloader on for specific pages or posts. * Hide the preloader for picked post types - products, portfolios, etc. * Option to display the preloader once per visitor session. * Support gradient background color, full background image, and repeating background pattern. * More ending animations. * Loader - 19 types of animations to choose. 6 of them support custom images. * Looping - Animation can be set to loop forever, and some animations can be set to run just once (ends after page has loaded). * Progress - Progress bar, counting percentage, or both. Any color. Position, size & font control. * Message - Enter your custom welcome or loading message to display. Control color, position & font. And supports Random Message feature. * Load Time - Set a minimum load time to prevent the pre-loader from disappearing too fast. * Device Control - Choose to show the loading screen on all devices, or hide on mobile, or show on mobile only. * Option to enable smooth page transition effect. [Check the example](http://demo.loftocean.com/loftloader-transition/). * Choose to save customize styles as inline styles in <head> or as an external .css file. * Option to disable page scrolling while loading. * Can add different loaders for different Pages, Posts and custom post types (such as portfolios, products, etc.) on one site. * Users can choose which elements to detect during the loading process (All elements / Images / Videos / Images & Videos). * Purchase once, free lifetime update with new features. Check some [examples](http://www.loftocean.com/loftloader/example-13/) created by pro version. **Please note**: Although you may find that LoftLoader Lite (the free version) can run on older versions of WordPress (below v4.7), **LoftLoader Pro only supports WordPress v4.7 or higher**. Because the Pro version has more features than the Lite version, including some new features introduced after WordPress 4.7. We always recommend using the latest versions of WordPress to ensure compatibility with your theme and other plugins. == Installation == 1. Install the plugin either via the WordPress.org plugin directory, or by uploading the files to your server (in the /wp-content/plugins/ directory). 2. Activate the LoftLoader plugin through the 'Plugins' menu in WordPress. 3. In the WordPress administration screen, go to Settings > LoftLoader Lite, check the settings there. == Frequently Asked Questions == = No changes on activation/deactivation = - If you have installed any caching plugins then clear the cache. = LoftLoader doesn’t work properly = - If your site is using a cache/performance optimization plugin, it might move all JavaScript on your site into the footer of your page. But the JavaScript of LoftLoader needs to be put in the < head > of a page so it can be executed as soon as possible. Many cache/performance optimization plugins have the “exclude” feature which allows to skip some code/files from being aggregated and minimized. To solve this kind of problem, please exclude files of LoftLoader. == Screenshots == 1. LoftLoader settings panel 2. LoftLoader background settings 3. LoftLoader loader settings 4. Pro version: Settings Panel 5. Pro version: Custom Image Loading 6. Pro version: Gradient Background 7. Pro version: Background Image 8. Pro version: Load Time, Device Control & Smooth Page Transition == Changelog == = 2.4.0 = * New: New ending animation - "No Animation" * Fixed: Compatibility with third party plugin "Disable Blog" * Improved: Compatibility with WordPress 6.1 = 2.3.8 = * New: Option to remove plugin data after deactivating the plugin * Improved: Compatibility with WordPress 5.9 = 2.3.7 = * Improved: Compatibility with WordPress 5.8 = 2.3.6 = * Improved: Added width and height attributes to image elements * Improved: Removed most of non-composited animations = 2.3.5 = * Improved: Compatibility with WordPress 5.6 = 2.3.4 = * Fixed: Potential compatibility issues with some themes in rare cases = 2.3.3 = * Improved: Potential compatibility issues in some rare cases = 2.3.2 = * Improved: Compatibility with WordPress 5.5 = 2.3.1 = * Fixed: The preview area is not displayed when setting the loader = 2.3 = * Improved: Hide loader when opening theme customizer * Improved: Hide loader when editing content with a third-party page builder plugin * Improved: Added a data attribute when the loader is created with Any Page Extension feature (for better debugging) * Fixed: Potential conflicts with Gutenberg when Any Page Extension feature is enabled * Fixed: Minor CSS issues = 2.2.2 = * Improved: Compatibility with lazy loading feature * Improved: The same JS code is loaded no matter how to load LoftLoader JavaScript code (External or Inline) * Fixed: Any page shortcode inherits the global settings as default settings = 2.2.1= * Fixed: Max Load Time did not work when choosing to load LoftLoader JavaScript as inline JavaScript = 2.2.0 * New: Option to set a Maximum Load Time * Improved: Rearranged options in More section * Fixed: Any Page Extension - shortcode did not work on WooCommerce Shop Page = 2.1.12 * Fixed: Minor style issues in LoftLoader Settings panel for WordPress 5.3 * Fixed: Minor CSS issues of Settings Panel UI for RTL sites = 2.1.11 = * Fixed: Compatibility issue with ConveyThis Translate plugin * Fixed: Media Library doesn't show on LoftLoader Settings panel = 2.1.10 = * Fixed: Image moves while loading with Custom Image Loading loader * Changed: Pro version link on settings page = 2.1.9 = * Fixed: Compatibility issue with the pro version of Loftloader when both plugins are activated = 2.1.8 = * Fixed: Compatibility issue with maintenance/coming soon plugins = 2.1.7 = * New: Option to choose how to load LoftLoader’s JavaScript (External or Inline) * Fixed: Gutenberg “Update” button was not clickable after making changes only to Any Page Extension options * Fixed: Minor CSS issues = 2.1.6 = * Improved: Any Page Extension meta box redesigned to fit in Gutenberg Sidebar = 2.1.5 = * Fixed: Description for Close Button doesn’t work for Any Page Extension * Fixed: Minor CSS issues = 2.1.4 = * Fixed: Added CSS for screen reader text in this plugin (the text “close” of the close button is only for screen readers and should not be visible on screens) = 2.1.3 = * New: Add close button and related settings = 2.1.2 = * Fixed: Compatibility issue which affected Customizer > Menu panel. * Fixed: Minor CSS issues of Settings Panel UI for RTL sites = 2.1.1 = * Fixed: Settings Panel UI compatibility issues with WordPress v4.9 = 2.1.0 = * Improved: LoftLoader Customizer panel independence (so it won’t be affected by theme or other plugins’ code) * New: Loader Section - New Loader Animation: Beating * Fixed: Minor CSS issues = 2.0.0 = * Changed: Rewrite the framework, move all settings to wp customize * Added: Any page extension = 1.0.2 = * Fixed: Load before anything bug * Fixed: Wave animation minor bug * Added: Pro version link on settings page = 1.0.1 = * Add support for site homepage only = 1.0.0 = * Initial Public Release == Upgrade Notice == = 1.0.0 = * Initial Public Release PK!qa: $inc/configs/customize-background.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_bg_color', array( 'default' => $loftloader_default_settings['loftloader_bg_color'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'sanitize_hex_color' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_bg_opacity', array( 'default' => $loftloader_default_settings['loftloader_bg_opacity'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'absint' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_bg_animation', array( 'default' => $loftloader_default_settings['loftloader_bg_animation'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_choice' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_background', array( 'title' => esc_html__( 'Background', 'loftloader' ), 'description' => '', 'priority' => 40 ) ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'loftloader_bg_color', array( 'label' => esc_html__( 'Pick Color', 'loftloader' ), 'section' => 'loftloader_background', 'settings' => 'loftloader_bg_color' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Slider_Control( $wp_customize, 'loftloader_bg_opacity', array( 'type' => 'slider', 'label' => esc_html__( 'Opacity', 'loftloader' ), 'input_attrs' => array( 'data-default' => 100, 'data-min' => 0, 'data-max' => 100, 'data-step' => 5 ), 'input_class' => 'loaderbgopacity', 'section' => 'loftloader_background', 'settings' => 'loftloader_bg_opacity' ) ) ); $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'loftloader_bg_animation', array( 'type' => 'select', 'label' => esc_html__( 'Ending Animation', 'loftloader' ), 'description' => esc_html__( 'Hover on preview area to see the result.', 'loftloader' ), 'choices' => array( 'fade' => esc_html__( 'Fade', 'loftloader' ), 'split-h' => esc_html__( 'Slide Left & Right', 'loftloader' ), 'up' => esc_html__( 'Slide Up', 'loftloader' ), 'split-v' => esc_html__( 'Slide Up & Down', 'loftloader' ), 'no-animation' => esc_html__( 'No Animation', 'loftloader' ) ), 'section' => 'loftloader_background', 'settings' => 'loftloader_bg_animation' ) ) ); } PK!Έzzinc/configs/customize-range.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_show_range', array( 'default' => $loftloader_default_settings['loftloader_show_range'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_choice' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_range', array( 'title' => esc_html__( 'Display on', 'loftloader' ), 'description' => '', 'priority' => 20 ) ) ); $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'loftloader_show_range', array( 'type' => 'radio', 'label' => '', 'choices' => array( 'sitewide' => esc_html__( 'Sitewide', 'loftloader' ), 'homepage' => esc_html__( 'Homepage only', 'loftloader' ) ), 'section' => 'loftloader_range', 'settings' => 'loftloader_show_range' ) ) ); }PK! inc/configs/customize-loader.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_loader_type', array( 'default' => $loftloader_default_settings['loftloader_loader_type'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_choice' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_loader_color', array( 'default' => $loftloader_default_settings['loftloader_loader_color'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'sanitize_hex_color' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_custom_img', array( 'default' => $loftloader_default_settings['loftloader_custom_img'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'esc_url_raw' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_img_width', array( 'default' => $loftloader_default_settings['loftloader_img_width'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'absint' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_loader', array( 'title' => esc_html__( 'Loader', 'loftloader' ), 'description' => '', 'priority' => 50 ) ) ); // Controls for section loader $wp_customize->add_control( new LoftLoader_Customize_Animation_Types_Control( $wp_customize, 'loftloader_loader_type', array( 'type' => 'radio', 'label' => esc_html__( 'Loader Animation', 'loftloader' ), 'description' => sprintf( esc_html__( 'Some support custom image.', 'loftloader' ), '', ''), 'choices' => array( 'sun' => array( 'label' => esc_html__( 'Spinning Sun', 'loftloader' ) ), 'circles' => array( 'label' => esc_html__( 'Luminous Circles', 'loftloader' ) ), 'wave' => array( 'label' => esc_html__( 'Wave', 'loftloader' ) ), 'square' => array( 'label' => esc_html__( 'Spinning Square', 'loftloader' ) ), 'frame' => array( 'label' => esc_html__( 'Drawing Frame', 'loftloader' ) ), 'imgloading' => array( 'label' => esc_html__( 'Custom Image Loading', 'loftloader' ) ), 'beating' => array( 'label' => esc_html__( 'Beating', 'loftloader' ) ) ), 'section' => 'loftloader_loader', 'settings' => 'loftloader_loader_type' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Color_Control( $wp_customize, 'loftloader_loader_color', array( 'label' => esc_html__( 'Pick Color', 'loftloader' ), 'section' => 'loftloader_loader', 'settings' => 'loftloader_loader_color', 'filter' => true, 'parent_setting_id' => 'loftloader_loader_type', 'show_filter' => array( 'sun', 'circles', 'wave', 'square', 'frame', 'beating' ) ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Image_Control( $wp_customize, 'loftloader_custom_img', array( 'type' => 'image', 'label' => esc_html__( 'Upload Image', 'loftloader' ), 'description' => '', 'section' => 'loftloader_loader', 'settings' => 'loftloader_custom_img', 'filter' => true, 'parent_setting_id' => 'loftloader_loader_type', 'show_filter' => array( 'frame', 'imgloading' ) ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Number_Text_Control( $wp_customize, 'loftloader_img_width', array( 'type' => 'number', 'label' => esc_html__( 'Image Width', 'loftloader' ), 'section' => 'loftloader_loader', 'settings' => 'loftloader_img_width', 'after_text' => 'px', 'input_class' => 'loaderimgwidth', 'input_wrap_class' => 'imgwidth', 'filter' => true, 'parent_setting_id' => 'loftloader_loader_type', 'show_filter' => array( 'imgloading' ) ) ) ); }PK!I' inc/configs/default-settings.phpnu[ 'on', 'loftloader_show_range' => 'sitewide', 'loftloader_bg_color' => '#000000', 'loftloader_bg_opacity' => 95, 'loftloader_bg_animation' => 'fade', 'loftloader_loader_type' => 'sun', 'loftloader_loader_color' => '#248acc', 'loftloader_custom_img' => LOFTLOADER_URI . 'assets/img/loftloader-logo.png', 'loftloader_img_width' => 76, 'loftloader_show_close_timer' => 15, 'loftloader_show_close_tip' => '', 'loftloader_max_load_time' => 0, 'loftloader_inline_js' => '', 'loftloader_enable_any_page' => '', 'loftloader_remove_settings' => '' ); PK!SO<<inc/configs/customize-main.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_main_switch', array( 'default' => $loftloader_default_settings['loftloader_main_switch'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_checkbox' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_switch', array( 'title' => esc_html__('Enable LoftLoader', 'loftloader'), 'type' => 'loftloader_switch', 'priority' => 10, ) ) ); $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'loftloader_main_switch', array( 'type' => 'checkbox', 'label' => esc_html__( 'Enable LoftLoader', 'loftloader' ), 'choices' => array('on' => ''), 'section' => 'loftloader_switch', 'settings' => 'loftloader_main_switch' ) ) ); }PK!*inc/configs/customize-promo.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_promo', array( 'default' => '', 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'sanitize_text_field' ) ) ); $wp_customize->add_section( new WP_Customize_Section( $wp_customize, 'loftloader_promo', array( 'title' => esc_html__( 'Upgrade to Pro', 'loftloader' ), 'description' => '', 'priority' => 100 ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_promo', array( 'type' => 'loftloader-ad', 'label' => '', 'img' => LOFTLOADER_URI . 'assets/img/pro-ad.jpg', 'href' => esc_url( 'https://1.envato.market/EgdPe' ), 'section' => 'loftloader_promo', 'settings' => 'loftloader_promo' ) ) ); } PK! "inc/configs/customize-advanced.phpnu[add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_inline_js', array( 'default' => $loftloader_default_settings['loftloader_inline_js'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_choice' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_enable_any_page', array( 'default' => $loftloader_default_settings['loftloader_enable_any_page'], 'transport' => 'refresh', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_checkbox' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_any_page_generation', array( 'default' => esc_html__( 'Generate', 'loftloader' ), 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'sanitize_text_field' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_customize_advanced', array( 'title' => esc_html__( 'Advanced', 'loftloader' ), 'description' => '', 'priority' => 55 ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_inline_js', array( 'type' => 'radio', 'label' => esc_html__( 'How to Load LoftLoader\'s JavaScript', 'loftloader' ), 'description' => '', 'choices' => array( '' => esc_html__( 'External JavaScript', 'loftloader' ), 'inline' => esc_html__( 'Inline JavaScript', 'loftloader' ) ), 'section' => 'loftloader_customize_advanced', 'settings' => 'loftloader_inline_js' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_enable_any_page', array( 'type' => 'check', 'label' => esc_html__( 'Check to enable Any Page Extension', 'loftloader' ), 'description' => '', 'choices' => array( 'on' => '' ), 'section' => 'loftloader_customize_advanced', 'settings' => 'loftloader_enable_any_page' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_any_page_generation', array( 'type' => 'loftloader-any-page', 'label' => esc_html__( 'Generate LoftLoader Shortcode', 'loftloader' ), 'description' => '', 'section' => 'loftloader_customize_advanced', 'settings' => 'loftloader_any_page_generation', 'filter' => true, 'parent_setting_id' => 'loftloader_enable_any_page', 'show_filter' => array( 'on' ) ) ) ); } PK!add_panel( new WP_Customize_Panel ( $wp_customize, 'loftloader_panel_more', array( 'title' => esc_html__( 'More', 'loftloader' ), 'priority' => 52 ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_section_max_load_time', array( 'title' => esc_html__( 'Maximum Load Time', 'loftloader' ), 'panel' => 'loftloader_panel_more' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_section_close_button', array( 'title' => esc_html__( 'Close Button', 'loftloader' ), 'panel' => 'loftloader_panel_more' ) ) ); $wp_customize->add_section( new LoftLoader_Customize_Section( $wp_customize, 'loftloader_section_remove_settings', array( 'title' => esc_html__( 'Plugin Data', 'loftloader' ), 'panel' => 'loftloader_panel_more' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_max_load_time', array( 'default' => $loftloader_default_settings['loftloader_max_load_time'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_number' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_show_close_timer', array( 'default' => $loftloader_default_settings['loftloader_show_close_timer'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'absint' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_show_close_tip', array( 'default' => $loftloader_default_settings['loftloader_show_close_tip'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'sanitize_text_field' ) ) ); $wp_customize->add_setting( new WP_Customize_Setting( $wp_customize, 'loftloader_remove_settings', array( 'default' => $loftloader_default_settings['loftloader_remove_settings'], 'transport' => 'postMessage', 'type' => 'option', 'sanitize_callback' => 'loftloader_sanitize_checkbox' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_max_load_time', array( 'type' => 'number', 'label' => esc_html__( 'Maximum Load Time', 'loftloader' ), 'note_below' => esc_html__( 'Please enter any number greater than 0 to enable this feature.', 'loftloader' ), 'section' => 'loftloader_section_max_load_time', 'input_attrs' => array( 'min' => '0' ), 'text' => esc_html__( ' second(s)', 'loftloader' ), 'settings' => 'loftloader_max_load_time' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Slider_Control( $wp_customize, 'loftloader_show_close_timer', array( 'type' => 'slider', 'label' => esc_html__( 'Show Close Button after', 'loftloader' ), 'after_text' => 'second(s)', 'input_attrs' => array( 'data-default' => '15', 'data-min' => '5', 'data-max' => '20', 'data-step' => '1' ), 'input_class' => 'loftloader-show-close-timer', 'section' => 'loftloader_section_close_button', 'settings' => 'loftloader_show_close_timer' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_show_close_tip', array( 'type' => 'text', 'label' => esc_html__( 'Description for Close Button', 'loftloader' ), 'section' => 'loftloader_section_close_button', 'settings' => 'loftloader_show_close_tip' ) ) ); $wp_customize->add_control( new LoftLoader_Customize_Control( $wp_customize, 'loftloader_remove_settings', array( 'type' => 'check', 'label' => esc_html__( 'Remove Plugin Data after Deactivating Plugin', 'loftloader' ), 'description' => esc_html__( 'If checked, all settings will be removed after deactivating this plugin.', 'loftocean' ), 'choices' => array( 'on' => '' ), 'section' => 'loftloader_section_remove_settings', 'settings' => 'loftloader_remove_settings' ) ) ); } PK! Kn6n6inc/class-loftloader-front.phpnu[get_settings(); $this->init_cache(); if ( $this->loader_enabled() ) { add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'wp_head', array( $this, 'loader_custom_styles' ), 100 ); add_action( 'wp_footer', array( $this, 'load_inline_js' ), 99 ); add_filter( 'loftloader_modify_html', array( $this, 'show_loader_html' ) ); add_filter( 'body_class', array( $this, 'body_class' ) ); } } /** * Init cache for outputing */ public function init_cache() { // Only for front view if ( ! is_admin() ) { add_action( 'template_redirect', array( $this, 'start_cache' ), 2 ); } } /** * Start cache for outputing */ public function start_cache() { if ( ! wp_doing_ajax() ) { // Start cache the output with callback function ob_start( array( $this, 'modify_html' ) ); } } /** * Will be called when flush cache * * @param string cached string * @return string modified cached string */ public function modify_html( $html ) { if ( $this->site_header_loaded && $this->site_footer_loaded ) { return apply_filters( 'loftloader_modify_html', $html ); } else { return $html; } } /** * @description get the plugin settings */ public function get_settings() { global $loftloader_default_settings; $this->defaults = $loftloader_default_settings; do_action( 'loftloader_settings' ); $this->type = esc_attr( $this->get_loader_setting( 'loftloader_loader_type' ) ); add_action( 'wp_head', array( $this, 'set_header_loaded' ) ); add_action( 'wp_footer', array( $this, 'set_footer_loaded' ) ); } /** * @description enqueue the scripts and styles for front end */ public function enqueue_scripts() { $loadJSStyle = $this->get_loader_setting( 'loftloader_inline_js' ); if ( ! is_customize_preview() && ( 'inline' !== $loadJSStyle ) ) { wp_enqueue_script( 'loftloader-lite-front-main', LOFTLOADER_URI . 'assets/js/loftloader.min.js', array(), LOFTLOADER_ASSET_VERSION, true ); } wp_enqueue_style('loftloader-lite-animation', LOFTLOADER_URI . 'assets/css/loftloader.min.css', array(), LOFTLOADER_ASSET_VERSION); } /** * Load inline JavaScript code if set */ public function load_inline_js() { $loadJSStyle = $this->get_loader_setting( 'loftloader_inline_js' ); if ( ( 'inline' === $loadJSStyle ) && ! is_customize_preview() ) { ?> get_loader_setting( 'loftloader_loader_color' ) ); $bgColor = esc_attr( $this->get_loader_setting( 'loftloader_bg_color' ) ); $bgOpacity = intval( $this->get_loader_setting('loftloader_bg_opacity' ) ) / 100; $styles = $this->generate_style( 'loftloader-lite-custom-bg-color', '#loftloader-wrapper .loader-section {' . PHP_EOL . "\t" . 'background: ' . $bgColor . ';' . PHP_EOL . '}' . PHP_EOL ); $styles .= $this->generate_style( 'loftloader-lite-custom-bg-opacity', '#loftloader-wrapper .loader-section {' . PHP_EOL . "\t" . 'opacity: ' . $bgOpacity . ';' . PHP_EOL . '}' . PHP_EOL ); $css = ''; switch ( $this->type ) { case 'sun': $css = '#loftloader-wrapper.pl-sun #loader {' . PHP_EOL . "\t" . 'color: ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; case 'circles': $css = '#loftloader-wrapper.pl-circles #loader {' . PHP_EOL . "\t" . 'color: ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; case 'wave': $css = '#loftloader-wrapper.pl-wave #loader {' . PHP_EOL . "\t" . 'color: ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; case 'square': $css = '#loftloader-wrapper.pl-square #loader span {' . PHP_EOL . "\t" . 'border: 4px solid ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; case 'frame': $css = '#loftloader-wrapper.pl-frame #loader {' . PHP_EOL . "\t" . 'color: ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; case 'imgloading': $width = absint($this->get_loader_setting('loftloader_img_width')); $image = esc_url($this->get_loader_setting('loftloader_custom_img')); $css = empty($width) ? '' : '#loftloader-wrapper.pl-imgloading #loader {' . PHP_EOL . "\t" . 'width: ' . $width . 'px;' . PHP_EOL . '}' . PHP_EOL; $css .= '#loftloader-wrapper.pl-imgloading #loader span {' . PHP_EOL . "\t" . 'background-size: cover;' . PHP_EOL . "\t" . 'background-image: url(' . $image . ');' . PHP_EOL . '}' . PHP_EOL; break; case 'beating': $css = '#loftloader-wrapper.pl-beating #loader {' . PHP_EOL . "\t" . 'color: ' . $color . ';' . PHP_EOL . '}' . PHP_EOL; break; } $styles .= $this->generate_style( 'loftloader-lite-custom-loader', $css ); echo wp_kses( $styles, array( 'style' => array( 'type' => array(), 'id' => array(), 'media' => array() ) ) ); } /** * @description loftloader html */ public function show_loader_html( $origin ) { if ( ! empty( $origin ) ) { $regexp ='/(]*>)/i'; $split = preg_split( $regexp, $origin, 3, PREG_SPLIT_DELIM_CAPTURE ); if ( is_array( $split ) && ( 3 <= count( $split ) ) ) { $image = esc_url($this->get_loader_setting('loftloader_custom_img')); $ending = esc_attr($this->get_loader_setting('loftloader_bg_animation')); $wrap_class = array( 'pl-' . $this->type ); $html = '
loader_attributes() . '>'; switch( $ending ) { case 'fade': $html .= '
'; break; case 'up': $html .= '
'; break; case 'split-v': $html .= '
'; $html .= '
'; break; case 'no-animation': $html .= '
'; break; default: $html .= '
'; $html .= '
'; } $html .= '
'; if ( ! empty( $image ) ) { // if ( in_array( $this->type, array( 'imgloading' ) ) ) { $html .= $this->get_loader_type_loading_bg_image( $image ); } if ( in_array( $this->type, array( 'frame', 'imgloading' ) ) ) { $html .= $this->get_loader_image( $image, $this->type ); } } $html .= in_array( $this->type, array( 'imgloading' ) ) ? '' : ''; $html .= '
'; if ( ! is_customize_preview() ) { $close_description = $this->get_loader_setting( 'loftloader_show_close_tip' ); $html .= sprintf( '', esc_html__('Close', 'loftloader'), empty($close_description) ? '' : sprintf('%s', $close_description) ); } $html .= '
'; return $split[0] . $split[1] . $html . implode( '', array_slice( $split, 2 ) ); } } return $origin; } /** * Background image for loader type loading with custom image * * @param url image url * @return string html */ private function get_loader_type_loading_bg_image( $image ) { return sprintf( '
', esc_url( $image ) ); } /** * Helper function to add manual loader settings */ private function loader_attributes() { $attrs = ''; $show_close_time = $this->get_loader_setting( 'loftloader_show_close_timer' ); $show_close_time = number_format( $show_close_time, 0, '.', '' ); $attrs .= sprintf( ' data-show-close-time="%s"', esc_js( esc_attr( $show_close_time * 1000 ) ) ); $max_load_time = $this->get_loader_setting( 'loftloader_max_load_time' ); $max_load_time = number_format( $max_load_time, 1, '.', '' ); if ( ! empty( $max_load_time ) ) { $attrs .= sprintf( ' data-max-load-time="%s"', esc_js( esc_attr( $max_load_time * 1000 ) ) ); } return apply_filters( 'loftloader_loader_attributes', $attrs ); } /** * Helper function to test whether show loftloader * @return boolean return true if loftloader enabled and display on current page, otherwise false */ private function loader_enabled() { if ( $this->test_builder() ) { return false; } else { if ( ( $this->get_loader_setting( 'loftloader_main_switch' ) === 'on' ) ) { $range = $this->get_loader_setting( 'loftloader_show_range' ); if ( ( $range === 'sitewide' ) || ( ( $range === 'homepage' ) && is_front_page() ) ) { return true; } else { return false; } } else { return apply_filters( 'loftloader_loader_enabled', false ); } } } /** * Helper function get setting option */ private function get_loader_setting( $setting_id ) { return apply_filters( 'loftloader_get_loader_setting', get_option( $setting_id, $this->defaults[ $setting_id ] ), $setting_id ); } /** * Helper function generate styles */ private function generate_style( $id, $style ) { return ''; } /** * Make the head loaded flag */ public function set_header_loaded() { $this->site_header_loaded = true; } /** * Make the footer loaded flag */ public function set_footer_loaded() { $this->site_footer_loaded = true; } /** * Not show loader in builder and theme customizer */ protected function test_builder() { if ( defined( 'ELEMENTOR_PATH' ) && isset( $_GET['elementor-preview'] ) && ! empty( sanitize_text_field( wp_unslash( $_GET['elementor-preview'] ) ) ) ) { return true; } else if ( class_exists( 'FLBuilderLoader' ) && isset( $_GET['fl_builder'] ) ) { return true; } else if ( defined( 'WPB_VC_VERSION' ) && ( ! empty( $_GET['vc_editable'] ) ) ) { return true; } else if ( is_customize_preview() && ( empty( $_GET['plugin'] ) || ( 'loftloader-lite' != sanitize_text_field( wp_unslash( $_GET['plugin'] ) ) ) ) ) { return true; } return false; } /** * Identify from loftloader lite */ public function body_class( $class ) { array_push( $class, 'loftloader-lite-enabled' ); return $class; } /** * Get loader image */ protected function get_loader_image( $img, $type ) { if ( empty( $img ) ) return ''; $width = 80; $height = 80; $is_frame = ( 'frame' == $type ); $pid = attachment_url_to_postid( $img ); $has_valid_image_attrs = false; $image_attrs = array(); if ( empty( $pid ) ) { $info = getimagesize( $img ); if ( $has_valid_image_attrs = ( ! empty( $info[1] ) ) && ( $info[0] > 1 ) ) { $image_attrs = array( 'width' => $info[0], 'height' => $info[1] ); } } else { $image = wp_get_attachment_image_src( $pid, 'full' ); if ( $has_valid_image_attrs = ( $image[1] > 1 ) ) { $image_attrs = array( 'width' => $image[1], 'height' => $image[2] ); } } if ( $is_frame ) { if ( $has_valid_image_attrs ) { $width = $image_attrs['width']; $height = $image_attrs['height']; } } else { $width = intval( $this->get_loader_setting( 'loftloader_img_width' ) ); $width = ( $width > 0 ) ? $width : 76; $height = $has_valid_image_attrs ? ( $image_attrs['height'] / $image_attrs['width'] * $width ) : $width; } return sprintf( '%1$s', esc_attr__( 'loader image', 'loftloader' ), esc_url( $img ), esc_attr( $width ), esc_attr( intval( $height ) ) ); } } new LoftLoader_Front(); } PK!aH inc/class-loftloader-upgrade.phpnu[version, '<')){ if(version_compare($old_version, '2.0', '<')){ $this->upgrade20(); } $this->update_version(); } } private function upgrade20(){ $default_img = LOFTLOADER_URI . 'assets/img/loftloader-logo.png'; $defaults = array( 'enable' => 'on', 'homepage' => '', 'settings' => array( 'background' => array( 'effect' => 'fade', 'color' => '#000000', 'opacity' => '95%' ), 'animation' => array( 'type' => 'pl-sun', 'color' => '#248acc', 'image' => array( 'url' => $default_img, 'id' => '' ), 'width' => '76' ) ) ); $saved = get_option('loftloader-custom-settings', array()); $options = array_merge($defaults, $saved); $effect = array('fade'=> 'fade', 'slide-up'=> 'up', 'slide-left-right'=> 'split-h', 'slide-up-down'=> 'split-v'); if($options['settings']['animation']['image']['url'] == LOFTLOADER_URI . 'img/loftloader-logo.png'){ $options['settings']['animation']['image']['url'] = $default_img; } update_option('loftloader_main_switch', ($options['enable'] == 'on' ? 'on' : 'off')); update_option('loftloader_show_range', ($options['homepage'] == 'on' ? 'homepage': 'sitewide')); update_option('loftloader_bg_color', $options['settings']['background']['color']); update_option('loftloader_bg_opacity', intval($options['settings']['background']['opacity'])); update_option('loftloader_bg_animation', $effect[$options['settings']['background']['effect']]); update_option('loftloader_loader_type', substr($options['settings']['animation']['type'], 3)); update_option('loftloader_loader_color', $options['settings']['animation']['color']); update_option('loftloader_custom_img', $options['settings']['animation']['image']['url']); update_option('loftloader_img_width', $options['settings']['animation']['width']); } private function update_version(){ update_option('loftloader_lite_version', $this->version); } } new LoftLoader_Upgrade(); } PK!`= = *inc/any-page/class-loftloader-any-page.phpnu[alter_loftloader(); } if ( function_exists( 'register_block_type' ) ) { $this->load_gutenberg_panel(); } } // Load gutenberg file protected function load_gutenberg_panel() { require_once LOFTLOADER_ROOT . 'inc/any-page/gutenberg/class-gutenberg-any-page.php'; } // Register loftloader shortcode meta box public function register_meta_boxes(){ add_meta_box( 'loftloader_any_page_meta', esc_html__( 'LoftLoader Any Page Shortcode', 'loftloader' ), array( $this, 'metabox_callback' ), 'page', 'advanced', 'high', array( '__block_editor_compatible_meta_box' => true, '__back_compat_meta_box' => true ) ); } // Show meta box html public function metabox_callback( $post ) { $shortcode = get_post_meta($post->ID, 'loftloader_page_shortcode', true); ?> post_type, array( 'page' ) ) || empty( $_REQUEST['loftloader_any_page_nonce'] ) || ! empty( $_REQUEST['loftloader_gutenberg_enabled'] ) ) { return $post_id; } if ( current_user_can( 'edit_post', $post_id ) ) { $shortcode = ''; if ( ! empty( $_REQUEST['loftloader_page_shortcode'] ) ) { $shortcode = sanitize_text_field( wp_unslash( $_REQUEST['loftloader_page_shortcode'] ) ); } update_post_meta( $post_id, 'loftloader_page_shortcode', $shortcode ); } return $_post_id; } // Initial LoftLoader Pro Shortcode actions private function alter_loftloader() { require_once LOFTLOADER_ROOT . 'inc/any-page/class-any-page-filter.php'; new LoftLoader_Any_Page_Filter(); } } new LoftLoader_Any_Page(); }PK!)9̨O O &inc/any-page/class-any-page-filter.phpnu[is_customize = isset( $wp_customize ) ? true : false; if ( $this->is_any_page_extension_enabled() ) { $page = $this->get_queried_object(); if ( ( $atts = $this->get_loader_attributes( $page->ID ) ) !== false ) { if ( isset( $atts['loftloader_show_close_tip'] ) ) { $atts['loftloader_show_close_tip'] = base64_decode( $atts['loftloader_show_close_tip'] ); } $this->page_settings = array_intersect_key( $atts, $loftloader_default_settings ); $this->page_enabled = isset( $atts['loftloader_main_switch'] ) && ( $atts['loftloader_main_switch'] === 'on' ); } } } /** * @description helper function to get shortcode attributes */ private function get_loader_attributes( $page_id ) { $loader = get_post_meta( $page_id, 'loftloader_page_shortcode', true ); $loader = trim( $loader ); if ( ! empty( $loader ) ) { $loader = substr( $loader, 1, -1 ); return shortcode_parse_atts( $loader ); } return false; } /** * Helper function to test whether show loftloader * @return boolean return true if loftloader enabled and display on current page, otherwise false */ public function loader_enabled() { return $this->page_enabled; } /** * Helper function get setting option */ public function get_loader_setting( $setting_value, $setting_id ) { return ( $this->page_enabled && !$this->is_customize && isset( $this->page_settings[ $setting_id ] ) ) ? $this->page_settings[ $setting_id ] : $setting_value; } /** * Help function to test if any page extension enabled on current page */ protected function is_any_page_extension_enabled() { $is_fromt_home_page = ( is_front_page() || is_home() ) && ( get_option('show_on_front', false ) == 'page' ); $is_shop_page = $this->is_woocommerce_shop(); return $is_fromt_home_page || $is_shop_page || is_page(); } /** * Get queried page object */ protected function get_queried_object() { if ( $this->is_woocommerce_shop() ) { $page_id = wc_get_page_id( 'shop' ); return get_page( $page_id ); } else { return get_queried_object(); } } /** * Condition function test if is woocommerce shop page */ protected function is_woocommerce_shop() { if ( function_exists( 'is_shop' ) ) { $page_id = wc_get_page_id( 'shop' ); return ! empty( $page_id ) && ( $page_id !== -1 ) && is_shop(); } return false; } /** * Add data to loader wrapper to identify the loader is from any page shortcode */ public function data_attributes( $attr ) { if ( $this->page_enabled ) { $attr .= ' data-any-page-extension="true"'; } return $attr; } } } PK!JJF3inc/any-page/gutenberg/class-gutenberg-any-page.phpnu[ 'string' ); /** * Construct function */ public function __construct() { add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_editor_assets' ) ); $this->register_metas(); } /** * Enqueue editor assets */ public function enqueue_editor_assets() { switch ( $this->get_current_post_type() ) { case 'page': wp_enqueue_script( 'loftloader-gutenberg-any-page-script', LOFTLOADER_URI. 'inc/any-page/gutenberg/plugin.js', array( 'wp-blocks', 'wp-element', 'wp-i18n' ), LOFTLOADER_ASSET_VERSION, true ); break; } } /** * Register metas for gutenberg */ public function register_metas() { foreach( $this->page_meta_list as $id => $type ) { register_meta( 'post', $id, array( 'auth_callback' => array( $this, 'permission_check' ), 'show_in_rest' => true, 'single' => true, 'type' => $type ) ); } } /** * Check permission for meta registration */ public function permission_check( $arg1, $meta_name, $post_id ) { return current_user_can( 'edit_post', $post_id ); } /** * Get current post type * @return mix post type string or boolean false */ protected function get_current_post_type() { global $post; if ( is_admin() && ! empty( $post ) && ! empty( $post->post_type ) ) { return $post->post_type; } else { return false; } } } function loftloader_init_gutenberg_any_page() { new LoftLoader_Gutenberg_Any_Page(); } add_action( 'init', 'loftloader_init_gutenberg_any_page' ); }PK!D inc/any-page/gutenberg/plugin.jsnu[( function( editor, components, i18n, element, $ ) { "use strict"; const __ = i18n.__; const el = element.createElement; const compose = wp.compose.compose; const registerPlugin = wp.plugins.registerPlugin; const { Fragment, Component } = element; const { TextareaControl, PanelBody } = components; const { dispatch, withSelect, withDispatch } = wp.data; const { PluginSidebar, PluginSidebarMoreMenuItem } = wp.editPost; const Icon = el( 'svg', { height: '20px', width: '20px', viewBox: '0 0 17.39 17.39' }, el ( 'polygon', { points: '14.77 11.19 17.3 8.65 14.77 6.12 14.77 2.53 11.19 2.53 8.65 0 6.12 2.53 2.53 2.53 2.53 6.12 0 8.65 2.53 11.19 2.53 14.77 6.12 14.77 8.65 17.3 11.19 14.77 14.77 14.77 14.77 11.19' } ) ); function LoftLoaderPlugin( props ) { return el( Fragment, {}, el( PluginSidebarMoreMenuItem, { target: 'loftloader-any-page' }, __( 'LoftLoader Any Page Shortcode' ) ), el( PluginSidebar, { name: 'loftloader-any-page', title: __( 'LoftLoader Any Page Shortcode' ) }, el( PanelBody, { className: 'loftloader-any-page-sidebar', initialOpen: true }, el( TextareaControl, { label: __( 'Paste LoftLoader shortcode into the box below' ), value: props.meta.loftloader_page_shortcode, onChange: ( value ) => { props.updateValue( { loftloader_page_shortcode: value } ); } } ) ), el( 'input', { type: 'hidden', name: 'loftloader_gutenberg_enabled', value: 'on' } ) ) ); } // Fetch the post meta. const applyWithSelect = withSelect( ( select ) => { const { getEditedPostAttribute } = select( 'core/editor' ); return { meta: getEditedPostAttribute( 'meta' ) }; } ); const applyWithDispatch = withDispatch( ( dispatch ) => { const { editPost } = dispatch( 'core/editor' ); return { updateValue: function( value ) { editPost( { meta: { ...value } } ); } } } ); const render = compose( [ applyWithSelect, applyWithDispatch ] )( LoftLoaderPlugin ); registerPlugin( 'loftloader-any-page', { icon: Icon, render } ); } )( window.wp.editor, window.wp.components, window.wp.i18n, window.wp.element, jQuery );PK!e::"inc/class-loftloader-customize.phpnu[load_default_settings(); if ( loftloader_is_customize() ) { $this->load_customize_controls(); add_action( 'customize_controls_init', array( $this, 'remove_sections' ), 1000 ); add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_scripts' ), 9999 ); add_action( 'customize_preview_init', array( $this, 'preview_scripts' ) ); } } private function load_default_settings() { require_once LOFTLOADER_ROOT . 'inc/configs/default-settings.php'; } public function load_customize_controls() { $config_dir = LOFTLOADER_ROOT . 'inc/configs/'; require_once $config_dir . 'customize-main.php'; require_once $config_dir . 'customize-range.php'; require_once $config_dir . 'customize-background.php'; require_once $config_dir . 'customize-loader.php'; require_once $config_dir . 'customize-promo.php'; require_once $config_dir . 'customize-more.php'; require_once $config_dir . 'customize-advanced.php'; } public function remove_sections() { global $wp_customize; foreach( $wp_customize->containers() as $id => $container ) { if ( $container instanceof WP_Customize_Panel ) { ( strpos( $id, 'loftloader_' ) === false ) ? $wp_customize->remove_panel( $id ) : ''; } else if ( $container instanceof WP_Customize_Section){ ( strpos( $id, 'loftloader_' ) === false ) ? $wp_customize->remove_section( $id ) : ''; } } } public function customize_scripts() { global $wp_scripts, $wp_styles; $js_url = LOFTLOADER_URI . 'assets/js/customize.min.js'; $js_dep = array('jquery', 'wp-color-picker', 'jquery-ui-slider', 'customize-controls', 'media-editor' ); $ui_css = LOFTLOADER_URI . 'assets/css/jquery-ui.css'; $loader_css = LOFTLOADER_URI . 'assets/css/loftloader-settings.min.css'; wp_register_script( 'loftloader-lite-customize', $js_url, $js_dep, LOFTLOADER_ASSET_VERSION ); wp_localize_script( 'loftloader-lite-customize', 'loftloader_lite_i18n', array( 'name' => esc_html__( 'LoftLoader Lite', 'loftloader' ) ) ); // Change the site title in string "You are customizing ..." wp_enqueue_script( 'loftloader-lite-customize' ); wp_enqueue_style( 'loftloader-lite-ui', $ui_css, array(), LOFTLOADER_ASSET_VERSION ); wp_enqueue_style( 'loftloader-lite-customize', $loader_css, array(), LOFTLOADER_ASSET_VERSION ); foreach ( $wp_scripts->registered as $h => $o ) { if ( strpos( $o->src, 'wp-content/themes' ) !== false ) { wp_dequeue_script( $h ); } if ( strpos( $o->src, 'wp-content/plugins/disable-blog/' ) !== false ) { wp_dequeue_script( $h ); } }; foreach ( $wp_styles->registered as $h => $o ) { if ( strpos($o->src, 'wp-content/themes') !== false ) { wp_dequeue_style( $h ); } }; } public function preview_scripts() { $js_url = LOFTLOADER_URI . 'assets/js/preview.min.js'; wp_register_script( 'loftloader-lite-preview', $js_url, array( 'jquery', 'customize-preview' ), LOFTLOADER_ASSET_VERSION, true ); wp_localize_script( 'loftloader-lite-preview', 'loftloader_lite', array( 'preview' => 'on' ) ); wp_enqueue_script( 'loftloader-lite-preview' ); } } new LoftLoader_Customize(); } if ( class_exists( 'WP_Customize_Setting' ) ) { /** * LoftLoader related customization api classes * * @since 2.0.0 */ // LoftLoader base section class, changed the json function to modify the customize action text class LoftLoader_Customize_Section extends WP_Customize_Section { public function json() { $array = parent::json(); $array['customizeAction'] = esc_html__( 'Setting', 'loftloader' ); return $array; } /** * render function for LoftLoader Switch section */ protected function render() { if ( 'loftloader_switch' === $this->type ) : $switch = $this->manager->get_setting('loftloader_main_switch')->value(); $classes = 'accordion-section control-section control-section-' . $this->type; ?>
  • title ); ?> />

    • title ); ?>

      description ) ) : ?>
      description ); ?>
  • filter && ( $this->manager->get_setting($this->parent_setting_id ) instanceof WP_Customize_Setting ) && ! empty( $this->show_filter ) ) { $parent_setting_value = $this->manager->get_setting( $this->parent_setting_id )->value(); return in_array( $parent_setting_value, $this->show_filter ) ? true : false; } return true; } public function render_content() { switch ( $this->type ) { case 'loftloader-ad': if ( ! empty( $this->label ) ) : ?> label ); ?> img ) ) : ?>
    label ) ) : ?> label ); ?> description ) ) : ?> description ); ?> link(); ?> class="button button-primary loftloader-any-page-generate" value="" />

    description ) ) : ?> description ); ?> text ) ) { echo esc_html( $this->text ) . '
    '; } if ( ! empty( $this->note_below ) ) : ?> note_below ); ?>filter && ( $this->manager->get_setting( $this->parent_setting_id ) instanceof WP_Customize_Setting ) && ! empty( $this->show_filter ) ) { $parent_setting_value = $this->manager->get_setting( $this->parent_setting_id )->value(); return in_array( $parent_setting_value, $this->show_filter ) ? true : false; } return true; } } // Modify the image control class to add the display dependency logic. class LoftLoader_Customize_Image_Control extends WP_Customize_Image_Control { public $filter = false; public $parent_setting_id = ''; public $show_filter = array(); public function active_callback() { if ( $this->filter && ( $this->manager->get_setting($this->parent_setting_id ) instanceof WP_Customize_Setting ) && ! empty( $this->show_filter ) ) { $parent_setting_value = $this->manager->get_setting( $this->parent_setting_id )->value(); return in_array( $parent_setting_value, $this->show_filter ) ? true : false; } return true; } } // Add new slider control class with jqueryui slider function class LoftLoader_Customize_Slider_Control extends LoftLoader_Customize_Control { public $input_class = ''; public $after_text = '%'; public function render_content() { if ( empty( $this->input_attrs ) ) { return; } ?>
    input_attrs(); ?> >
    choices ) ) return; if ( ! empty( $this->label ) ) : ?> label ); ?> description ) ) : ?>
    id; foreach ( $this->choices as $value => $attrs ) : $attr = ''; if ( ! empty( $attrs['attr'] ) ) { foreach ( (array)$attrs['attr'] as $attr_name => $attr_value ) { $attr .= ' ' . $attr_name . '="' . $attr_value . '"'; } } $item_id = sanitize_title( $this->id . '-' . $value ); ?>
    manager->get_control( $setting->id )->choices; $choices = array_keys( $choices ); return in_array( $input, $choices ) ? $input : $setting->default; } } if ( ! function_exists( 'loftloader_sanitize_number' ) ) { /** * Check the value is float with 1 decimal * * @param string the value from user * @param object customize setting object * @return string the value from user or the default setting value */ function loftloader_sanitize_number( $value) { if ( ! empty( $value ) ) { $value = floatval( $value ); return number_format( $value, 1, '.', '' ); } return 0; } } } PK!i\ MMlanguages/loftloader.potnu[# Copyright (C) 2022 Loft.Ocean # This file is distributed under the GPLv2. msgid "" msgstr "" "Project-Id-Version: LoftLoader 2.4\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/loftloader\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2022-11-27T07:30:12+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.7.1\n" "X-Domain: loftloader\n" #. Plugin Name of the plugin msgid "LoftLoader" msgstr "" #. Plugin URI of the plugin #. Author URI of the plugin msgid "http://www.loftocean.com/" msgstr "" #. Description of the plugin msgid "An easy to use plugin to add an animated preloader to your website with fully customisations." msgstr "" #. Author of the plugin msgid "Loft.Ocean" msgstr "" #: inc/any-page/class-loftloader-any-page.php:24 msgid "LoftLoader Any Page Shortcode" msgstr "" #: inc/class-loftloader-customize.php:54 #: loftloader.php:87 msgid "LoftLoader Lite" msgstr "" #: inc/class-loftloader-customize.php:97 #: inc/class-loftloader-customize.php:124 msgid "Setting" msgstr "" #: inc/class-loftloader-customize.php:114 msgid "Press return or enter to open this section" msgstr "" #: inc/class-loftloader-customize.php:121 msgid "Back" msgstr "" #: inc/class-loftloader-customize.php:180 #: inc/configs/customize-advanced.php:24 msgid "Generate" msgstr "" #: inc/class-loftloader-customize.php:271 msgid "More info" msgstr "" #: inc/class-loftloader-front.php:221 msgid "Close" msgstr "" #: inc/class-loftloader-front.php:363 msgid "loader image" msgstr "" #: inc/configs/customize-advanced.php:31 msgid "Advanced" msgstr "" #: inc/configs/customize-advanced.php:38 msgid "How to Load LoftLoader's JavaScript" msgstr "" #: inc/configs/customize-advanced.php:41 msgid "External JavaScript" msgstr "" #: inc/configs/customize-advanced.php:42 msgid "Inline JavaScript" msgstr "" #: inc/configs/customize-advanced.php:49 msgid "Check to enable Any Page Extension" msgstr "" #: inc/configs/customize-advanced.php:57 msgid "Generate LoftLoader Shortcode" msgstr "" #: inc/configs/customize-background.php:31 msgid "Background" msgstr "" #: inc/configs/customize-background.php:37 #: inc/configs/customize-loader.php:60 msgid "Pick Color" msgstr "" #: inc/configs/customize-background.php:43 msgid "Opacity" msgstr "" #: inc/configs/customize-background.php:56 msgid "Ending Animation" msgstr "" #: inc/configs/customize-background.php:57 msgid "Hover on preview area to see the result." msgstr "" #: inc/configs/customize-background.php:59 msgid "Fade" msgstr "" #: inc/configs/customize-background.php:60 msgid "Slide Left & Right" msgstr "" #: inc/configs/customize-background.php:61 msgid "Slide Up" msgstr "" #: inc/configs/customize-background.php:62 msgid "Slide Up & Down" msgstr "" #: inc/configs/customize-background.php:63 msgid "No Animation" msgstr "" #: inc/configs/customize-loader.php:37 msgid "Loader" msgstr "" #: inc/configs/customize-loader.php:45 msgid "Loader Animation" msgstr "" #: inc/configs/customize-loader.php:46 msgid "Some support custom image." msgstr "" #: inc/configs/customize-loader.php:48 msgid "Spinning Sun" msgstr "" #: inc/configs/customize-loader.php:49 msgid "Luminous Circles" msgstr "" #: inc/configs/customize-loader.php:50 msgid "Wave" msgstr "" #: inc/configs/customize-loader.php:51 msgid "Spinning Square" msgstr "" #: inc/configs/customize-loader.php:52 msgid "Drawing Frame" msgstr "" #: inc/configs/customize-loader.php:53 msgid "Custom Image Loading" msgstr "" #: inc/configs/customize-loader.php:54 msgid "Beating" msgstr "" #: inc/configs/customize-loader.php:69 msgid "Upload Image" msgstr "" #: inc/configs/customize-loader.php:79 msgid "Image Width" msgstr "" #: inc/configs/customize-main.php:19 #: inc/configs/customize-main.php:26 msgid "Enable LoftLoader" msgstr "" #: inc/configs/customize-more.php:12 msgid "More" msgstr "" #: inc/configs/customize-more.php:17 #: inc/configs/customize-more.php:57 msgid "Maximum Load Time" msgstr "" #: inc/configs/customize-more.php:21 msgid "Close Button" msgstr "" #: inc/configs/customize-more.php:25 msgid "Plugin Data" msgstr "" #: inc/configs/customize-more.php:58 msgid "Please enter any number greater than 0 to enable this feature." msgstr "" #: inc/configs/customize-more.php:61 msgid " second(s)" msgstr "" #: inc/configs/customize-more.php:66 msgid "Show Close Button after" msgstr "" #: inc/configs/customize-more.php:80 msgid "Description for Close Button" msgstr "" #: inc/configs/customize-more.php:87 msgid "Remove Plugin Data after Deactivating Plugin" msgstr "" #: inc/configs/customize-promo.php:17 msgid "Upgrade to Pro" msgstr "" #: inc/configs/customize-range.php:19 msgid "Display on" msgstr "" #: inc/configs/customize-range.php:28 msgid "Sitewide" msgstr "" #: inc/configs/customize-range.php:29 msgid "Homepage only" msgstr "" #: loftloader.php:27 msgid "Access not allowed!" msgstr "" #: loftloader.php:76 msgid "View LoftLoader Settings" msgstr "" #: loftloader.php:76 msgid "Settings" msgstr "" PK!)  assets/js/loftloader.min.jsnu[!function(){function t(){document.body.classList.add("loaded")}var e=document.getElementById("loftloader-wrapper");if(e){if(window.addEventListener("load",function(e){t()}),e.dataset&&e.dataset.showCloseTime){var a=parseInt(e.dataset.showCloseTime,10),n=!1,o=e.getElementsByClassName("loader-close-button");a&&o.length&&(setTimeout(function(){o[0].style.display=""},a),o[0].addEventListener("click",function(e){t()}))}e.dataset.maxLoadTime&&(n=e.dataset.maxLoadTime,(n=parseInt(n,10))&&setTimeout(function(){t()},n))}}(); PK!]NNassets/js/customize.jsnu[/** * Copyright (c) Loft.Ocean * http://www.loftocean.com */ (function(api, $){ $('head').append($('