Version Description
- 2021-01-30
- added flyout menu
- added monthly price
Download this release
Release Info
Developer | WebFactory |
Plugin | 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 +14 -7
- assets/js/sticky-anything-admin.js +1 -1
- readme.txt +11 -6
- sticky-menu-or-anything.php +16 -82
- wf-flyout/config.php +19 -0
- wf-flyout/icons/sticky.png +0 -0
- wf-flyout/icons/ucp.png +0 -0
- wf-flyout/icons/wp-reset.png +0 -0
- wf-flyout/wf-flyout.css +200 -0
- wf-flyout/wf-flyout.js +24 -0
- wf-flyout/wf-flyout.php +167 -0
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:
|
318 |
}
|
319 |
|
320 |
.pro-feature:hover {
|
321 |
background-color: #ffde66;
|
322 |
padding: 2px;
|
323 |
color: #333;
|
324 |
-
text-decoration:
|
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:
|
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
|
352 |
background-color: #ffde66;
|
353 |
}
|
354 |
|
@@ -357,8 +364,8 @@
|
|
357 |
}
|
358 |
|
359 |
#sticky-table {
|
360 |
-
width:
|
361 |
-
margin: 10px
|
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:
|
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.
|
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-
|
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-
|
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-
|
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-
|
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-
|
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.
|
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 |
-
|
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-
|
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
|
747 |
$out .= '</tr>';
|
748 |
|
749 |
$out .= '</table>';
|
750 |
|
751 |
-
$out .= '<div class="center footer"><b>100% No-Risk Money Back Guarantee!</b
|
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
|