Sticky Menu (or Anything!) on Scroll - Version 2.29

Version Description

  • 2021-01-30
  • added flyout menu
  • added monthly price
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Sticky Menu (or Anything!) on Scroll
Version 2.29
Comparing to
See all releases

Code changes from version 2.28 to 2.29

assets/css/sticky-anything-admin.css CHANGED
@@ -309,19 +309,23 @@
309
  font-weight: normal;
310
  }
311
 
 
 
 
 
312
  .pro-feature {
313
  background-color: #ffde66aa;
314
  padding: 2px;
315
  line-height: 2.2;
316
  color: #333;
317
- text-decoration: none;
318
  }
319
 
320
  .pro-feature:hover {
321
  background-color: #ffde66;
322
  padding: 2px;
323
  color: #333;
324
- text-decoration: none;
325
  }
326
 
327
  .center {
@@ -336,19 +340,22 @@
336
  .sticky-pro-dialog .logo b {
337
  font-size: 18px;
338
  font-weight: 600;
339
- margin-top: 20px;
340
  display: inline-block;
341
- margin: 10px 0 0 0;
342
  line-height: 1.3;
343
  }
344
 
 
 
 
 
345
  .sticky-pro-dialog .logo i {
346
  color: #b93c24;
347
  font-style: normal;
348
  }
349
 
350
  .sticky-pro-dialog .footer {
351
- padding: 15px 10px;
352
  background-color: #ffde66;
353
  }
354
 
@@ -357,8 +364,8 @@
357
  }
358
 
359
  #sticky-table {
360
- width: 100%;
361
- margin: 10px 0 0 0;
362
  border-collapse: collapse;
363
  }
364
 
309
  font-weight: normal;
310
  }
311
 
312
+ .settings_page_stickyanythingmenu a.button-buy small {
313
+ font-weight: normal;
314
+ }
315
+
316
  .pro-feature {
317
  background-color: #ffde66aa;
318
  padding: 2px;
319
  line-height: 2.2;
320
  color: #333;
321
+ text-decoration: underline;
322
  }
323
 
324
  .pro-feature:hover {
325
  background-color: #ffde66;
326
  padding: 2px;
327
  color: #333;
328
+ text-decoration: underline;
329
  }
330
 
331
  .center {
340
  .sticky-pro-dialog .logo b {
341
  font-size: 18px;
342
  font-weight: 600;
 
343
  display: inline-block;
344
+ margin: 15px;
345
  line-height: 1.3;
346
  }
347
 
348
+ .sticky-pro-dialog .logo b a {
349
+ color: black;
350
+ }
351
+
352
  .sticky-pro-dialog .logo i {
353
  color: #b93c24;
354
  font-style: normal;
355
  }
356
 
357
  .sticky-pro-dialog .footer {
358
+ padding: 15px 70px;
359
  background-color: #ffde66;
360
  }
361
 
364
  }
365
 
366
  #sticky-table {
367
+ width: 95%;
368
+ margin: 10px auto 0 auto;
369
  border-collapse: collapse;
370
  }
371
 
assets/js/sticky-anything-admin.js CHANGED
@@ -84,7 +84,7 @@ jQuery(function ($) {
84
  dialogClass: 'wp-dialog sticky-pro-dialog',
85
  modal: true,
86
  resizable: false,
87
- width: 750,
88
  height: 'auto',
89
  show: 'fade',
90
  hide: 'fade',
84
  dialogClass: 'wp-dialog sticky-pro-dialog',
85
  modal: true,
86
  resizable: false,
87
+ width: 800,
88
  height: 'auto',
89
  show: 'fade',
90
  hide: 'fade',
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: sticky header, sticky menu, sticky, header, sticky widget, floating menu,
4
  Plugin URI: https://wpsticky.com/
5
  Requires at least: 3.6
6
  Tested up to: 5.6
7
- Stable tag: 2.28
8
  Requires PHP: 5.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -13,16 +13,16 @@ Sticky Menu or Sticky Header lets you stick any element at the top of the screen
13
 
14
  == Description ==
15
 
16
- The <a href="https://wpsticky.com/?ref=wp-org-readme&utm_content=wp-sticky">WP Sticky</a> Menu (or Sticky Header) On Scroll plugin allows you to **make any element on your pages "sticky"** as soon as it hits the top of the page when you scroll down. Although this is commonly used to keep menus at the top of your page to create floating menus, the plugin allows you to make any element sticky. Make a sticky header, stick menu, sticky widget, sticky logo, sticky call to action or a floating menu.
17
 
18
- You just need to know how to pick the right selector for the element you want to make sticky, and you need to be sure it's a unique selector. Sometimes a simple selector like "nav", "#main-menu", ".menu-main-menu-1" is enough. Other times you will have to be more detailed and use a more specific selector such as "header > ul:first-child" or "nav.top .menu-header ul.main". If you don't like messing with any code check out out the visual element picker in <a href="https://wpsticky.com/?ref=wp-org-readme&utm_content=visual-picker">WP Sticky PRO</a>.
19
 
20
  = Features =
21
 
22
- * **Any element can stick**: although common use is for navigation menus, or header the plugin will let you pick any unique element with a name, class or ID to stick at the top of the page once you scroll past it. Use it for sticky widget, sticky sidebar, sticky header, sticky menu, sticky header, sticky call-to-action box, sticky banner ad, etc. Need to make <a href="https://wpsticky.com/?ref=wp-org-readme&utm_content=multiple-elements">multiple elements sticky</a>? Check out WP Sticky PRO.
23
  * **Positioning from top**: optionally, you can add any amount of space between the sticky element and the top of the page, so that the element is not always stuck at the "ceiling" of the page.
24
  * **Enable for certain screen sizes only**: optionally, you can set a minimum and/or maximum screen size where the stickiness should work. This can be handy if you have a responsive site and you don't want your element to be sticky on smaller screens, for example.
25
- * **Enable only on some pages**: sometimes you don't want the element to be sticky on the entire site. <a href="https://wpsticky.com/?ref=wp-org-readme&utm_content=pick-pages">WP Sticky PRO</a> gives you the option to pick posts, pages, categories, tags and CPTs where you don't want the element to be sticky.
26
  * **Push-up element**: optionally, you can pick any other element lower on the page that will push the sticky element up again (for example a sidebar widget).
27
  * **Admin Bar aware**: checks if the current user has an Admin Toolbar at the top of the page. If it has, the sticky element will not obscure it (or be obscured by it).
28
  * **Z-index**: in case there are other elements on the page that obscure or peek through your sticky element, you can add a Z-index easily.
@@ -43,7 +43,7 @@ You just need to know how to pick the right selector for the element you want to
43
  == Frequently Asked Questions ==
44
 
45
  = Can I make multiple elements sticky?
46
- Sure, <a href="https://wpsticky.com/?ref=wp-org-readme">WP Sticky PRO</a> has that option. You can make as many elements sticky as you like and configure settings individually for each element.
47
 
48
  = I selected a class/ID in the settings screen, but the element doesn't stick when I scroll down. Why not? =
49
  First, make sure that if you select the element by its class name, it is preceded by a dot (e.g. ".main-menu"), and if you select it by its ID, that it's preceded by a pound/hash/number sign (e.g. "#main-menu"). Also, make sure there is only ONE element on the page with the selector you're using. If there is none, or more than one element that matches your selector, nothing will happen.
@@ -132,6 +132,11 @@ Please go to the plugin's [support forum on WordPress.org](https://wordpress.org
132
 
133
  == Changelog ==
134
 
 
 
 
 
 
135
  = 2.28 =
136
  * 2021-01-05
137
  * minor bug fixes and improvements
4
  Plugin URI: https://wpsticky.com/
5
  Requires at least: 3.6
6
  Tested up to: 5.6
7
+ Stable tag: 2.29
8
  Requires PHP: 5.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
13
 
14
  == Description ==
15
 
16
+ The <a href="https://wpsticky.com/?ref=wp-org-readme1">WP Sticky</a> Menu (or Sticky Header) On Scroll plugin allows you to **make any element on your pages "sticky"** as soon as it hits the top of the page when you scroll down. Although this is commonly used to keep menus at the top of your page to create floating menus, the plugin allows you to make any element sticky. Make a sticky header, stick menu, sticky widget, sticky logo, sticky call to action or a floating menu.
17
 
18
+ You just need to know how to pick the right selector for the element you want to make sticky, and you need to be sure it's a unique selector. Sometimes a simple selector like "nav", "#main-menu", ".menu-main-menu-1" is enough. Other times you will have to be more detailed and use a more specific selector such as "header > ul:first-child" or "nav.top .menu-header ul.main". If you don't like messing with any code check out out the visual element picker in <a href="https://wpsticky.com/?ref=wp-org-readme2">WP Sticky PRO</a>.
19
 
20
  = Features =
21
 
22
+ * **Any element can stick**: although common use is for navigation menus, or header the plugin will let you pick any unique element with a name, class or ID to stick at the top of the page once you scroll past it. Use it for sticky widget, sticky sidebar, sticky header, sticky menu, sticky header, sticky call-to-action box, sticky banner ad, etc. Need to make <a href="https://wpsticky.com/?ref=wp-org-readme3">multiple elements sticky</a>? Check out WP Sticky PRO.
23
  * **Positioning from top**: optionally, you can add any amount of space between the sticky element and the top of the page, so that the element is not always stuck at the "ceiling" of the page.
24
  * **Enable for certain screen sizes only**: optionally, you can set a minimum and/or maximum screen size where the stickiness should work. This can be handy if you have a responsive site and you don't want your element to be sticky on smaller screens, for example.
25
+ * **Enable only on some pages**: sometimes you don't want the element to be sticky on the entire site. <a href="https://wpsticky.com/?ref=wp-org-readme4">WP Sticky PRO</a> gives you the option to pick posts, pages, categories, tags and CPTs where you don't want the element to be sticky.
26
  * **Push-up element**: optionally, you can pick any other element lower on the page that will push the sticky element up again (for example a sidebar widget).
27
  * **Admin Bar aware**: checks if the current user has an Admin Toolbar at the top of the page. If it has, the sticky element will not obscure it (or be obscured by it).
28
  * **Z-index**: in case there are other elements on the page that obscure or peek through your sticky element, you can add a Z-index easily.
43
  == Frequently Asked Questions ==
44
 
45
  = Can I make multiple elements sticky?
46
+ Sure, <a href="https://wpsticky.com/?ref=wp-org-readme5">WP Sticky PRO</a> has that option. You can make as many elements sticky as you like and configure settings individually for each element.
47
 
48
  = I selected a class/ID in the settings screen, but the element doesn't stick when I scroll down. Why not? =
49
  First, make sure that if you select the element by its class name, it is preceded by a dot (e.g. ".main-menu"), and if you select it by its ID, that it's preceded by a pound/hash/number sign (e.g. "#main-menu"). Also, make sure there is only ONE element on the page with the selector you're using. If there is none, or more than one element that matches your selector, nothing will happen.
132
 
133
  == Changelog ==
134
 
135
+ = 2.29 =
136
+ * 2021-01-30
137
+ * added flyout menu
138
+ * added monthly price
139
+
140
  = 2.28 =
141
  * 2021-01-05
142
  * minor bug fixes and improvements
sticky-menu-or-anything.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: https://wpsticky.com/
5
  Description: Pick any element on the page, and it will stick when it reaches the top of the page when you scroll down. Handy for navigation menus, but can be used for any element on the page.
6
  Author: WebFactory Ltd
7
  Author URI: https://www.webfactoryltd.com/
8
- Version: 2.28
9
  Requires at least: 3.6
10
  Tested up to: 5.6
11
  Requires PHP: 5.2
@@ -13,6 +13,9 @@ Requires PHP: 5.2
13
 
14
  defined('ABSPATH') or die('INSERT COIN');
15
 
 
 
 
16
  /**
17
  * === FUNCTIONS ========================================================================================
18
  */
@@ -682,8 +685,8 @@ function sticky_anything_admin_footer() {
682
 
683
  $plugin_url = plugin_dir_url(__FILE__);
684
 
685
- $out .= '<div class="center logo"><a href="https://wpsticky.com/?ref=sticky-free-popup" target="_blank"><img style="max-height: 100px;" src="' . $plugin_url . 'assets/img/wp-sticky-pro.png' . '" alt="WP Sticky PRO" title="WP Sticky PRO"></a><br>
686
- <b>WP Sticky PRO is here!<br>Grab the <i>50% OFF</i> launch DISCOUNT 🚀</b></div>';
687
 
688
  $out .= '<table id="sticky-table">';
689
  $out .= '<tr>';
@@ -700,10 +703,16 @@ function sticky_anything_admin_footer() {
700
 
701
  $out .= '<tr>';
702
  $out .= '<td><span class="dashicons dashicons-no"></span>Install on Client Sites</td>';
703
- $out .= '<td><span class="dashicons dashicons-no"></span>Install on Client Sites</td>';
704
  $out .= '<td><span class="dashicons dashicons-yes"></span>Install on Client Sites</td>';
705
  $out .= '</tr>';
706
 
 
 
 
 
 
 
707
  $out .= '<tr>';
708
  $out .= '<td><span class="dashicons dashicons-yes"></span>One Time Payment</td>';
709
  $out .= '<td><span class="dashicons dashicons-yes"></span>One Time Payment</td>';
@@ -741,91 +750,18 @@ function sticky_anything_admin_footer() {
741
  $out .= '</tr>';
742
 
743
  $out .= '<tr>';
744
- $out .= '<td><span>20% discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=single-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=single-launch&ref=pricing-table" target="_blank">BUY NOW <del>$49</del> $39</a></td>';
745
  $out .= '<td><span>25% discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=team-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=team-launch&ref=pricing-table" target="_blank">BUY NOW <del>$79</del> $59</a></td>';
746
- $out .= '<td><span>50% discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=agency-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=agency-launch&ref=pricing-table" target="_blank">BUY NOW <del>$199</del> $99</a></td>';
747
  $out .= '</tr>';
748
 
749
  $out .= '</table>';
750
 
751
- $out .= '<div class="center footer"><b>100% No-Risk Money Back Guarantee!</b>. If you don\'t like the plugin over the next 7 days, we will happily refund 100% of your money. No questions asked!</div>';
752
 
753
  echo $out;
754
  } // sticky_anything_admin_footer
755
 
756
- /**
757
- * Helper function for adding plugins to featured list
758
- *
759
- * @return array
760
- */
761
- function sticky_featured_plugins_tab($args)
762
- {
763
- add_filter('plugins_api_result', 'sticky_plugins_api_result', 10, 3);
764
-
765
- return $args;
766
- } // sticky_featured_plugins_tab
767
-
768
-
769
- /**
770
- * Add single plugin to featured list
771
- *
772
- * @return object
773
- */
774
- function sticky_add_plugin_featured($plugin_slug, $res)
775
- {
776
- // check if plugin is already on the list
777
- if (!empty($res->plugins) && is_array($res->plugins)) {
778
- foreach ($res->plugins as $plugin) {
779
- if (is_object($plugin) && !empty($plugin->slug) && $plugin->slug == $plugin_slug) {
780
- return $res;
781
- }
782
- } // foreach
783
- }
784
-
785
- $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug);
786
-
787
- if (!$plugin_info) {
788
- $plugin_info = plugins_api('plugin_information', array(
789
- 'slug' => $plugin_slug,
790
- 'is_ssl' => is_ssl(),
791
- 'fields' => array(
792
- 'banners' => true,
793
- 'reviews' => true,
794
- 'downloaded' => true,
795
- 'active_installs' => true,
796
- 'icons' => true,
797
- 'short_description' => true,
798
- )
799
- ));
800
- if (!is_wp_error($plugin_info)) {
801
- set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7);
802
- }
803
- }
804
-
805
- if (!empty($res->plugins) && is_array($res->plugins) && $plugin_info && is_object($plugin_info)) {
806
- array_unshift($res->plugins, $plugin_info);
807
- }
808
-
809
- return $res;
810
- } // sticky_add_plugin_featured
811
-
812
-
813
- /**
814
- * Add plugins to featured plugins list
815
- *
816
- * @return object
817
- */
818
- function sticky_plugins_api_result($res, $action, $args)
819
- {
820
- remove_filter('plugins_api_result', 'sticky_plugins_api_result', 10, 3);
821
-
822
- $res = sticky_add_plugin_featured('wp-external-links', $res);
823
- $res = sticky_add_plugin_featured('eps-301-redirects', $res);
824
- $res = sticky_add_plugin_featured('simple-author-box', $res);
825
-
826
- return $res;
827
- } // sticky_plugins_api_result
828
-
829
 
830
  function sticky_hide_review_notification() {
831
  if (false == wp_verify_nonce(@$_GET['_wpnonce'], 'sticky_hide_review_notification')) {
@@ -921,7 +857,5 @@ add_action('admin_footer', 'sticky_anything_admin_footer');
921
  add_action('admin_enqueue_scripts', 'sticky_anything_styles' );
922
  add_filter("plugin_action_links_$plugin", 'sticky_anything_settings_link' );
923
  add_filter('plugin_row_meta', 'sticky_plugin_meta_links', 10, 2);
924
- add_filter('install_plugins_table_api_args_featured', 'sticky_featured_plugins_tab');
925
- add_filter('install_plugins_table_api_args_recommended', 'sticky_featured_plugins_tab');
926
  add_action('admin_action_sticky_hide_review_notification', 'sticky_hide_review_notification');
927
  add_action('wp_ajax_sticky_dismiss_notice', 'sticky_ajax_dismiss_notice');
5
  Description: Pick any element on the page, and it will stick when it reaches the top of the page when you scroll down. Handy for navigation menus, but can be used for any element on the page.
6
  Author: WebFactory Ltd
7
  Author URI: https://www.webfactoryltd.com/
8
+ Version: 2.29
9
  Requires at least: 3.6
10
  Tested up to: 5.6
11
  Requires PHP: 5.2
13
 
14
  defined('ABSPATH') or die('INSERT COIN');
15
 
16
+ require_once dirname(__FILE__) . '/wf-flyout/wf-flyout.php';
17
+ new wf_flyout(__FILE__);
18
+
19
  /**
20
  * === FUNCTIONS ========================================================================================
21
  */
685
 
686
  $plugin_url = plugin_dir_url(__FILE__);
687
 
688
+ //$out .= '<div class="center logo"><a href="https://wpsticky.com/?ref=sticky-free-popup" target="_blank"><img style="max-height: 100px;" src="' . $plugin_url . 'assets/img/wp-sticky-pro.png' . '" alt="WP Sticky PRO" title="WP Sticky PRO"></a><br>
689
+ $out .= '<div class="center logo"><b><a href="https://wpsticky.com/?ref=sticky-free-popup" target="_blank">WP Sticky PRO</a> is here!<br>Grab the <i>50% OFF</i> launch DISCOUNT 🚀</b></div>';
690
 
691
  $out .= '<table id="sticky-table">';
692
  $out .= '<tr>';
703
 
704
  $out .= '<tr>';
705
  $out .= '<td><span class="dashicons dashicons-no"></span>Install on Client Sites</td>';
706
+ $out .= '<td><span class="dashicons dashicons-yes"></span>Install on Client Sites</td>';
707
  $out .= '<td><span class="dashicons dashicons-yes"></span>Install on Client Sites</td>';
708
  $out .= '</tr>';
709
 
710
+ $out .= '<tr>';
711
+ $out .= '<td><span class="dashicons dashicons-no"></span>White-Label Mode</td>';
712
+ $out .= '<td><span class="dashicons dashicons-no"></span>White-Label Mode</td>';
713
+ $out .= '<td><span class="dashicons dashicons-yes"></span>White-Label Mode</td>';
714
+ $out .= '</tr>';
715
+
716
  $out .= '<tr>';
717
  $out .= '<td><span class="dashicons dashicons-yes"></span>One Time Payment</td>';
718
  $out .= '<td><span class="dashicons dashicons-yes"></span>One Time Payment</td>';
750
  $out .= '</tr>';
751
 
752
  $out .= '<tr>';
753
+ $out .= '<td><span>20% discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=single-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=single-launch&ref=pricing-table" target="_blank">BUY NOW <del>$49</del> $39</a><br>-or-<br><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=single-monthly&ref=pricing-table" href="https://wpsticky.com/buy/?product=single-monthly&ref=pricing-table" target="_blank">ONLY $5.99 <small>/month</small></a></td>';
754
  $out .= '<td><span>25% discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=team-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=team-launch&ref=pricing-table" target="_blank">BUY NOW <del>$79</del> $59</a></td>';
755
+ $out .= '<td><span>$100 discount</span><a class="button button-buy" data-href-org="https://wpsticky.com/buy/?product=agency-launch&ref=pricing-table" href="https://wpsticky.com/buy/?product=agency-launch&ref=pricing-table" target="_blank">BUY NOW <del>$199</del> $99</a></td>';
756
  $out .= '</tr>';
757
 
758
  $out .= '</table>';
759
 
760
+ $out .= '<div class="center footer"><b>100% No-Risk Money Back Guarantee!</b> If you don\'t like the plugin over the next 7 days, we will happily refund 100% of your money. No questions asked!</div></div>';
761
 
762
  echo $out;
763
  } // sticky_anything_admin_footer
764
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
765
 
766
  function sticky_hide_review_notification() {
767
  if (false == wp_verify_nonce(@$_GET['_wpnonce'], 'sticky_hide_review_notification')) {
857
  add_action('admin_enqueue_scripts', 'sticky_anything_styles' );
858
  add_filter("plugin_action_links_$plugin", 'sticky_anything_settings_link' );
859
  add_filter('plugin_row_meta', 'sticky_plugin_meta_links', 10, 2);
 
 
860
  add_action('admin_action_sticky_hide_review_notification', 'sticky_hide_review_notification');
861
  add_action('wp_ajax_sticky_dismiss_notice', 'sticky_ajax_dismiss_notice');
wf-flyout/config.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $config = array();
3
+
4
+ $config['plugin_screen'] = 'settings_page_stickyanythingmenu';
5
+ $config['icon_border'] = '1px solid #00000099';
6
+ $config['icon_right'] = '35px';
7
+ $config['icon_bottom'] = '35px';
8
+ $config['icon_image'] = 'sticky.png';
9
+ $config['icon_padding'] = '6px';
10
+ $config['icon_size'] = '55px';
11
+ $config['menu_accent_color'] = '#dd3036';
12
+ $config['custom_css'] = '#wf-flyout .wff-menu-item .dashicons.dashicons-universal-access { font-size: 30px; padding: 0px 10px 0px 0; } #wf-flyout .ucp-icon .wff-icon img { max-width: 70%; } #wf-flyout .ucp-icon .wff-icon { line-height: 57px; }';
13
+
14
+ $config['menu_items'] = array(
15
+ array('href' => 'https://wpreset.com/?ref=wff-sticky', 'target' => '_blank', 'label' => 'Get WP Reset PRO with 50% off', 'icon' => 'wp-reset.png'),
16
+ array('href' => 'https://underconstructionpage.com/?ref=wff-sticky&coupon=welcome', 'target' => '_blank', 'label' => 'Create the perfect Under Construction Page', 'icon' => 'ucp.png', 'class' => 'ucp-icon'),
17
+ array('href' => 'https://wordpress.org/support/plugin/sticky-menu-or-anything-on-scroll/reviews/?filter=5#new-post', 'target' => '_blank', 'label' => 'Rate the Plugin', 'icon' => 'dashicons-thumbs-up'),
18
+ array('href' => 'https://wordpress.org/support/plugin/sticky-menu-or-anything-on-scroll/#new-post', 'target' => '_blank', 'label' => 'Get Support', 'icon' => 'dashicons-sos'),
19
+ );
wf-flyout/icons/sticky.png ADDED
Binary file
wf-flyout/icons/ucp.png ADDED
Binary file
wf-flyout/icons/wp-reset.png ADDED
Binary file
wf-flyout/wf-flyout.css ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Universal fly-out menu for WebFactory plugins
3
+ * (c) WebFactory Ltd, 2021
4
+ */
5
+
6
+ #wf-flyout {
7
+ position: fixed;
8
+ z-index: 100049;
9
+ transition: all 0.3s ease-in-out;
10
+ right: 40px;
11
+ bottom: 40px;
12
+ opacity: 1;
13
+ }
14
+
15
+ #wff-overlay {
16
+ background: #000;
17
+ opacity: 0.4;
18
+ filter: alpha(opacity=40);
19
+ position: fixed;
20
+ top: 0;
21
+ right: 0;
22
+ bottom: 0;
23
+ left: 0;
24
+ display: none;
25
+ z-index: 100049;
26
+ }
27
+
28
+ #wf-flyout a:focus {
29
+ outline: none;
30
+ box-shadow: none;
31
+ }
32
+
33
+ #wf-flyout #wff-button {
34
+ display: block;
35
+ }
36
+
37
+ #wf-flyout #wff-image-wrapper {
38
+ border: 3px solid #000000;
39
+ border-radius: 50%;
40
+ padding: 0;
41
+ display: block;
42
+ overflow: hidden;
43
+ background: #ffffff;
44
+ box-shadow: 0 3px 20px rgba(0, 0, 0, 0.2);
45
+ }
46
+
47
+ #wf-flyout #wff-button img {
48
+ width: 55px;
49
+ height: 55px;
50
+ display: block;
51
+ overflow: hidden;
52
+ padding: 2px;
53
+ background: #ffffff;
54
+ box-sizing: border-box;
55
+ }
56
+
57
+ #wf-flyout #wff-button:hover #wff-image-wrapper {
58
+ box-shadow: 0 3px 30px rgba(0, 0, 0, 0.25);
59
+ }
60
+
61
+ #wf-flyout:not(.opened) #wff-button:hover .wff-label {
62
+ opacity: 1;
63
+ margin-right: 0;
64
+ }
65
+
66
+ #wf-flyout .wff-label {
67
+ position: absolute;
68
+ display: block;
69
+ top: 50%;
70
+ right: calc(100% + 25px);
71
+ transform: translateY(-50%) scale(1);
72
+ -moz-transform: translateY(-50%);
73
+ -webkit-transform: translateY(-50%);
74
+ color: #fff;
75
+ background: #444 0 0 no-repeat padding-box;
76
+ font-size: 14px;
77
+ white-space: nowrap;
78
+ padding: 5px 10px;
79
+ height: auto !important;
80
+ line-height: initial;
81
+ transition: all 0.2s ease-out;
82
+ border-radius: 3px;
83
+ -moz-border-radius: 3px;
84
+ -webkit-border-radius: 3px;
85
+ opacity: 0;
86
+ margin-right: -50px;
87
+ }
88
+
89
+ #wf-flyout .wff-icon {
90
+ width: 40px;
91
+ height: 40px;
92
+ vertical-align: middle;
93
+ line-height: 60px;
94
+ text-align: center;
95
+ }
96
+
97
+ #wf-flyout .wff-icon img {
98
+ max-width: 80%;
99
+ filter: brightness(100);
100
+ }
101
+
102
+ #wf-flyout .wff-label.visible {
103
+ opacity: 1;
104
+ }
105
+
106
+ #wf-flyout .wff-menu-item {
107
+ position: absolute;
108
+ left: 10px;
109
+ width: 40px;
110
+ height: 40px;
111
+ opacity: 0;
112
+ visibility: hidden;
113
+ transform: scale(0);
114
+ border-radius: 50%;
115
+ box-shadow: 0 3px 20px rgba(0, 0, 0, 0.2);
116
+ background: #0071a1;
117
+ text-align: center;
118
+ vertical-align: middle;
119
+ text-decoration: none;
120
+ transition-timing-function: ease-in-out;
121
+ }
122
+
123
+ #wf-flyout .wff-menu-item.accent {
124
+ background: #ca4a1f;
125
+ }
126
+
127
+ #wf-flyout.opened .wff-menu-item {
128
+ opacity: 1;
129
+ visibility: visible;
130
+ transform: scale(1);
131
+ }
132
+
133
+ #wf-flyout .wff-menu-item:hover {
134
+ box-shadow: 0 3px 30px rgba(0, 0, 0, 0.25);
135
+ }
136
+
137
+ #wf-flyout .wff-menu-item:hover .wff-label {
138
+ right: calc(100% + 55px);
139
+ }
140
+
141
+ #wf-flyout .wff-menu-item .wff-label {
142
+ right: calc(100% + 70px);
143
+ }
144
+
145
+ #wf-flyout .wff-menu-item .dashicons {
146
+ line-height: 41px;
147
+ font-size: 23px;
148
+ color: #fff;
149
+ padding: 0px 3px 0px 0;
150
+ }
151
+
152
+ .wff-menu-item-1 {
153
+ bottom: 75px;
154
+ transition: transform 0.2s 30ms, background-color 0.2s;
155
+ }
156
+
157
+ .wff-menu-item-2 {
158
+ bottom: 130px;
159
+ transition: transform 0.2s 70ms, background-color 0.2s;
160
+ }
161
+
162
+ .wff-menu-item-3 {
163
+ bottom: 185px;
164
+ transition: transform 0.2s 110ms, background-color 0.2s;
165
+ }
166
+
167
+ .wff-menu-item-4 {
168
+ bottom: 240px;
169
+ transition: transform 0.2s 150ms, background-color 0.2s;
170
+ }
171
+
172
+ .wff-menu-item-5 {
173
+ bottom: 295px;
174
+ transition: transform 0.2s 190ms, background-color 0.2s;
175
+ }
176
+
177
+ .wff-menu-item-6 {
178
+ bottom: 350px;
179
+ transition: transform 0.2s 230ms, background-color 0.2s;
180
+ }
181
+
182
+ .wff-menu-item-7 {
183
+ bottom: 405px;
184
+ transition: transform 0.2s 270ms, background-color 0.2s;
185
+ }
186
+
187
+ .wff-menu-item-8 {
188
+ bottom: 460px;
189
+ transition: transform 0.2s 310ms, background-color 0.2s;
190
+ }
191
+
192
+ .wff-menu-item-9 {
193
+ bottom: 515px;
194
+ transition: transform 0.2s 350ms, background-color 0.2s;
195
+ }
196
+
197
+ .wff-menu-item-10 {
198
+ bottom: 570px;
199
+ transition: transform 0.2s 390ms, background-color 0.2s;
200
+ }
wf-flyout/wf-flyout.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Universal fly-out menu for WebFactory plugins
3
+ * (c) WebFactory Ltd, 2021
4
+ */
5
+
6
+ jQuery(document).ready(function ($) {
7
+ $('#wff-button').on('click', function (e) {
8
+ e.preventDefault();
9
+
10
+ $('#wf-flyout').toggleClass('opened');
11
+ $('#wff-overlay').toggle();
12
+
13
+ return false;
14
+ }); // open/close menu
15
+
16
+ $('#wff-overlay').on('click', function (e) {
17
+ e.preventDefault();
18
+
19
+ $(this).hide();
20
+ $('#wf-flyout').removeClass('opened');
21
+
22
+ return false;
23
+ }); // click on overlay - hide menu
24
+ }); // jQuery ready
wf-flyout/wf-flyout.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Universal fly-out menu for WebFactory plugins
5
+ * (c) WebFactory Ltd, 2021
6
+ */
7
+
8
+
9
+ if (false == class_exists('wf_flyout')) {
10
+ class wf_flyout
11
+ {
12
+ var $ver = 1.0;
13
+ var $plugin_file = '';
14
+ var $plugin_slug = '';
15
+ var $config = array();
16
+
17
+
18
+ function __construct($plugin_file)
19
+ {
20
+ $this->plugin_file = $plugin_file;
21
+ $this->plugin_slug = basename(dirname($plugin_file));
22
+ $this->load_config();
23
+
24
+ if (!is_admin()) {
25
+ return;
26
+ } else {
27
+ add_action('admin_init', array($this, 'init'));
28
+ }
29
+ } // __construct
30
+
31
+
32
+ function load_config()
33
+ {
34
+ $config = array();
35
+ require_once plugin_dir_path($this->plugin_file) . 'wf-flyout/config.php';
36
+
37
+ $defaults = array(
38
+ 'plugin_screen' => '',
39
+ 'icon_border' => '#0000ff',
40
+ 'icon_right' => '40px',
41
+ 'icon_bottom' => '40px',
42
+ 'icon_image' => '',
43
+ 'icon_padding' => '2px',
44
+ 'icon_size' => '55px',
45
+ 'menu_accent_color' => '#ca4a1f',
46
+ 'custom_css' => '',
47
+ 'menu_items' => array(),
48
+ );
49
+
50
+ $config = array_merge($defaults, $config);
51
+ if (!is_array($config['plugin_screen'])) {
52
+ $config['plugin_screen'] = array($config['plugin_screen']);
53
+ }
54
+
55
+ $this->config = $config;
56
+ } // load_config
57
+
58
+
59
+ function is_plugin_screen()
60
+ {
61
+ $screen = get_current_screen();
62
+
63
+ if (in_array($screen->id, $this->config['plugin_screen'])) {
64
+ return true;
65
+ } else {
66
+ return false;
67
+ }
68
+ } // is_plugin_screen
69
+
70
+
71
+ function init()
72
+ {
73
+ add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
74
+ add_action('admin_head', array($this, 'admin_head'));
75
+ add_action('admin_footer', array($this, 'admin_footer'));
76
+ } // init
77
+
78
+
79
+ function admin_enqueue_scripts()
80
+ {
81
+ if (false === $this->is_plugin_screen()) {
82
+ return;
83
+ }
84
+
85
+ wp_enqueue_style('wf_flyout', plugin_dir_url($this->plugin_file) . 'wf-flyout/wf-flyout.css', array(), $this->ver);
86
+ wp_enqueue_script('wf_flyout', plugin_dir_url($this->plugin_file) . 'wf-flyout/wf-flyout.js', array(), $this->ver, true);;
87
+ } // admin_enqueue_scripts
88
+
89
+
90
+ function admin_head()
91
+ {
92
+ if (false === $this->is_plugin_screen()) {
93
+ return;
94
+ }
95
+
96
+ $out = '<style type="text/css">';
97
+ $out .= '#wf-flyout {
98
+ right: ' . $this->config['icon_right'] . ';
99
+ bottom: ' . $this->config['icon_bottom'] . ';
100
+ }';
101
+ $out .= '#wf-flyout #wff-image-wrapper {
102
+ border: ' . $this->config['icon_border'] . ';
103
+ }';
104
+ $out .= '#wf-flyout #wff-button img {
105
+ padding: ' . $this->config['icon_padding'] . ';
106
+ width: ' . $this->config['icon_size'] . ';
107
+ height: ' . $this->config['icon_size'] . ';
108
+ }';
109
+ $out .= '#wf-flyout .wff-menu-item.accent {
110
+ background: ' . $this->config['menu_accent_color'] . ';
111
+ }';
112
+ $out .= $this->config['custom_css'];
113
+ $out .= '</style>';
114
+
115
+ echo $out;
116
+ } // admin_head
117
+
118
+
119
+ function admin_footer()
120
+ {
121
+ if (false === $this->is_plugin_screen()) {
122
+ return;
123
+ }
124
+
125
+ $out = '';
126
+ $icons_url = plugin_dir_url($this->plugin_file) . 'wf-flyout/icons/';
127
+ $default_link_item = array('class' => '', 'href' => '#', 'target' => '_blank', 'label' => '', 'icon' => '');
128
+
129
+ $out .= '<div id="wff-overlay"></div>';
130
+
131
+ $out .= '<div id="wf-flyout">';
132
+
133
+ $out .= '<a href="#" id="wff-button">';
134
+ $out .= '<span class="wff-label">Open Quick Links</span>';
135
+ $out .= '<span id="wff-image-wrapper">';
136
+ $out .= '<img src="' . $icons_url . $this->config['icon_image'] . '" alt="Open Quick Links" title="Open Quick Links">';
137
+ $out .= '</span>';
138
+ $out .= '</a>';
139
+
140
+ $out .= '<div id="wff-menu">';
141
+ $i = 0;
142
+ foreach (array_reverse($this->config['menu_items']) as $item) {
143
+ $i++;
144
+ $item = array_merge($default_link_item, $item);
145
+
146
+ if (!empty($item['icon']) && substr($item['icon'], 0, 9) != 'dashicons') {
147
+ $item['class'] .= ' wff-custom-icon';
148
+ $item['class'] = trim($item['class']);
149
+ }
150
+
151
+ $out .= '<a href="' . $item['href'] . '" class="wff-menu-item wff-menu-item-' . $i . ' ' . $item['class'] . '" target="_blank">';
152
+ $out .= '<span class="wff-label visible">' . $item['label'] . '</span>';
153
+ if (substr($item['icon'], 0, 9) == 'dashicons') {
154
+ $out .= '<span class="dashicons ' . $item['icon'] . '"></span>';
155
+ } elseif (!empty($item['icon'])) {
156
+ $out .= '<span class="wff-icon"><img src="' . $icons_url . $item['icon'] . '"></span>';
157
+ }
158
+ $out .= '</a>';
159
+ } // foreach
160
+ $out .= '</div>'; // #wff-menu
161
+
162
+ $out .= '</div>'; // #wf-flyout
163
+
164
+ echo $out;
165
+ } // admin_footer
166
+ } // wf_flyout
167
+ } // if class exists