Version Description
Added new feature: Change the color of each button From now on you can change the color of each floating action button you make. If you want to create a Floating Menu with different button colors, it is now possible!
Added new feature: New animation floating menu We now have a new animation to open the floating menu (multiple floating action). Instead of showing the buttons on the top of each other you can the floating buttons make a 45 degrees circle.
Download this release
Release Info
Developer | buttonizer |
Plugin | Smart Floating / Sticky Buttons – Call, Sharing, Chat Widgets & More – Buttonizer |
Version | 1.0.6 |
Comparing to | |
See all releases |
Code changes from version 1.0.5 to 1.0.6
- buttonizer.php +2 -2
- classes/admin/Buttons.php +55 -25
- classes/admin/General.php +12 -0
- classes/admin/InitializeAdmin.php +1 -1
- classes/admin/PageCategories.php +1 -1
- classes/default/main.php +36 -4
- css/buttonizer.css +168 -42
- css/style.css +75 -0
- js/buttonizer.js +3 -3
- js/dashboard.js +198 -50
- js/wp_media_uploader.js +1 -1
- readme.txt +38 -16
buttonizer.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Buttonizer - Smart Floating Action Button
|
4 |
Plugin URI: https://buttonizer.pro
|
5 |
Description: The Buttonizer is a new way to give a boost to your number of interactions, actions and conversions from your website visitor by adding one or multiple Customizable Smart Floating Button in the corner of your website.
|
6 |
-
Version: 1.0.
|
7 |
Author: Buttonizer
|
8 |
Author URI: https://buttonizer.pro
|
9 |
License: GPL2
|
@@ -31,7 +31,7 @@ Copyright 2017 Buttonizer
|
|
31 |
define('BUTTONIZER_NAME', 'buttonizer');
|
32 |
define('BUTTONIZER_DIR', dirname(__FILE__));
|
33 |
define('BUTTONIZER_PLUGIN_DIR', __FILE__ );
|
34 |
-
define('BUTTONIZER_VERSION','1.0.
|
35 |
|
36 |
# No script kiddies
|
37 |
defined( 'ABSPATH' ) or die('No script kiddies please!');
|
3 |
Plugin Name: Buttonizer - Smart Floating Action Button
|
4 |
Plugin URI: https://buttonizer.pro
|
5 |
Description: The Buttonizer is a new way to give a boost to your number of interactions, actions and conversions from your website visitor by adding one or multiple Customizable Smart Floating Button in the corner of your website.
|
6 |
+
Version: 1.0.6
|
7 |
Author: Buttonizer
|
8 |
Author URI: https://buttonizer.pro
|
9 |
License: GPL2
|
31 |
define('BUTTONIZER_NAME', 'buttonizer');
|
32 |
define('BUTTONIZER_DIR', dirname(__FILE__));
|
33 |
define('BUTTONIZER_PLUGIN_DIR', __FILE__ );
|
34 |
+
define('BUTTONIZER_VERSION','1.0.6');
|
35 |
|
36 |
# No script kiddies
|
37 |
defined( 'ABSPATH' ) or die('No script kiddies please!');
|
classes/admin/Buttons.php
CHANGED
@@ -26,9 +26,12 @@ class Buttons
|
|
26 |
private $aSavedData = array() ;
|
27 |
private $aPageCategories = array() ;
|
28 |
private $aFontAwesome = array() ;
|
29 |
-
|
|
|
|
|
30 |
{
|
31 |
$this->aFontAwesome = $aFontAwesome;
|
|
|
32 |
$this->loadData();
|
33 |
$this->loadButtons();
|
34 |
}
|
@@ -37,6 +40,7 @@ class Buttons
|
|
37 |
{
|
38 |
$this->aSavedData = (array) get_option( 'buttonizer_buttons' );
|
39 |
$this->aPageCategories = (array) get_option( 'buttonizer_page_categories' );
|
|
|
40 |
}
|
41 |
|
42 |
private function loadButtons()
|
@@ -123,12 +127,11 @@ class Buttons
|
|
123 |
<div class="button-data">
|
124 |
<table>
|
125 |
<tr style="display: none;">
|
126 |
-
<td
|
127 |
-
<td width="20%"></td>
|
128 |
<td></td>
|
129 |
</tr>
|
130 |
<tr>
|
131 |
-
<td>
|
132 |
<label for="button_text" class="label-top">
|
133 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This is for internal use only.<br /><br />When using Google Analytics, this will be the title of the event when clicking this button.</span></span>
|
134 |
Button name:
|
@@ -141,10 +144,10 @@ _title]" value="<?php
|
|
141 |
?>
|
142 |
" class="button_title" />
|
143 |
</td>
|
144 |
-
<td class="button-pdr"
|
145 |
<label for="button_icon" class="label-top">
|
146 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This will be the icon of the button. You can choose from the build-in Font Awesome icons.<br /><br />When you want to use your own icon or image, you can click the 'or upload an image' link to use your own icon.</span></span>
|
147 |
-
Button icon:
|
148 |
</label>
|
149 |
<?php
|
150 |
echo $this->buttonGetIcon( $iButtonId ) ;
|
@@ -155,7 +158,6 @@ _title]" value="<?php
|
|
155 |
<tr>
|
156 |
<td> </td>
|
157 |
<td></td>
|
158 |
-
<td></td>
|
159 |
</tr>
|
160 |
|
161 |
<tr>
|
@@ -168,7 +170,7 @@ _title]" value="<?php
|
|
168 |
echo $this->buttonGetText( $iButtonId ) ;
|
169 |
?>
|
170 |
</td>
|
171 |
-
<td
|
172 |
<label for="button_category" class="label-top">
|
173 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>Select a page category. You can add more page rules at the 'Page categories' tab.</span></span>
|
174 |
Button page category:
|
@@ -182,7 +184,6 @@ _title]" value="<?php
|
|
182 |
<tr>
|
183 |
<td> </td>
|
184 |
<td></td>
|
185 |
-
<td></td>
|
186 |
</tr>
|
187 |
|
188 |
<tr class="settings-row">
|
@@ -190,7 +191,7 @@ _title]" value="<?php
|
|
190 |
<i class="fa fa-globe setting-icon"></i> URL or phone-number
|
191 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This is the click-action of your button. You can input a full url (http://myawesomewebsite.com), a URI (/contact), an anchor-link (#anchor) or a phone number. Note that if you input a phone number that you select the option ‘Is phone number’. This will be a direct click-to-call action. Please don’t add a full url without the http:// (like: www.myawesomewebsite.com). </span></span>
|
192 |
</td>
|
193 |
-
<td
|
194 |
echo $this->buttonGetUrl( $iButtonId ) ;
|
195 |
?>
|
196 |
</td>
|
@@ -207,7 +208,6 @@ _title]" value="<?php
|
|
207 |
echo $iButtonId ;
|
208 |
?>
|
209 |
_is_phonenumber"> Yes</label></td>
|
210 |
-
<td></td>
|
211 |
</tr>
|
212 |
|
213 |
<tr class="settings-row setting-new-tab">
|
@@ -221,13 +221,22 @@ _is_phonenumber"> Yes</label></td>
|
|
221 |
echo $iButtonId ;
|
222 |
?>
|
223 |
_url_newtab"> Yes</label></td>
|
224 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
</tr>
|
226 |
|
227 |
<tr>
|
228 |
<td> </td>
|
229 |
<td></td>
|
230 |
-
<td></td>
|
231 |
</tr>
|
232 |
|
233 |
<tr class="settings-row">
|
@@ -241,7 +250,6 @@ _url_newtab"> Yes</label></td>
|
|
241 |
echo $iButtonId ;
|
242 |
?>
|
243 |
_show_on_phone"> Yes</label></td>
|
244 |
-
<td></td>
|
245 |
</tr>
|
246 |
|
247 |
<tr class="settings-row">
|
@@ -255,7 +263,6 @@ _show_on_phone"> Yes</label></td>
|
|
255 |
echo $iButtonId ;
|
256 |
?>
|
257 |
_show_on_desktop"> Yes</label></td>
|
258 |
-
<td></td>
|
259 |
</tr>
|
260 |
|
261 |
<tr class="settings-row">
|
@@ -276,13 +283,11 @@ _show_on_desktop"> Yes</label></td>
|
|
276 |
echo $iButtonId ;
|
277 |
?>
|
278 |
_hide_label"> Yes</label></td>
|
279 |
-
<td></td>
|
280 |
</tr>
|
281 |
|
282 |
<tr>
|
283 |
<td> </td>
|
284 |
<td></td>
|
285 |
-
<td></td>
|
286 |
</tr>
|
287 |
|
288 |
<?php
|
@@ -299,7 +304,6 @@ _hide_label"> Yes</label></td>
|
|
299 |
<i class="fa fa-times-circle-o setting-icon"></i> Show <b>only outside</b> opening hours
|
300 |
</td>
|
301 |
<td><input type="checkbox" class="buttonizer-click-to-pro" readonly=""> <label> Yes</label> <span class="buttonizer-pro-feature">PRO</span></td>
|
302 |
-
<td></td>
|
303 |
</tr>
|
304 |
<?php
|
305 |
?>
|
@@ -324,13 +328,13 @@ _hide_label"> Yes</label></td>
|
|
324 |
// Get button icon
|
325 |
public function buttonGetIcon( $iButtonId = 0 )
|
326 |
{
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
}
|
335 |
|
336 |
// Get button icon
|
@@ -420,5 +424,31 @@ _hide_label"> Yes</label></td>
|
|
420 |
$is_selected = ( isset( $this->aSavedData[$fieldName] ) ? $this->aSavedData[$fieldName] : '' );
|
421 |
return '<input type="checkbox" name="buttonizer_buttons[' . $fieldName . ']" id="' . $fieldName . '" value="1" class="button_isnewtab" ' . (( $is_selected == '1' ? 'checked="checked"' : '' )) . ' />';
|
422 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
|
424 |
}
|
26 |
private $aSavedData = array() ;
|
27 |
private $aPageCategories = array() ;
|
28 |
private $aFontAwesome = array() ;
|
29 |
+
private $oIconManager = array() ;
|
30 |
+
private $aSystemSettings = array() ;
|
31 |
+
public function __construct( $aFontAwesome, $oIconManager )
|
32 |
{
|
33 |
$this->aFontAwesome = $aFontAwesome;
|
34 |
+
$this->oIconManager = $oIconManager;
|
35 |
$this->loadData();
|
36 |
$this->loadButtons();
|
37 |
}
|
40 |
{
|
41 |
$this->aSavedData = (array) get_option( 'buttonizer_buttons' );
|
42 |
$this->aPageCategories = (array) get_option( 'buttonizer_page_categories' );
|
43 |
+
$this->aSystemSettings = (array) get_option( 'buttonizer_general_settings' );
|
44 |
}
|
45 |
|
46 |
private function loadButtons()
|
127 |
<div class="button-data">
|
128 |
<table>
|
129 |
<tr style="display: none;">
|
130 |
+
<td></td>
|
|
|
131 |
<td></td>
|
132 |
</tr>
|
133 |
<tr>
|
134 |
+
<td width="50%">
|
135 |
<label for="button_text" class="label-top">
|
136 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This is for internal use only.<br /><br />When using Google Analytics, this will be the title of the event when clicking this button.</span></span>
|
137 |
Button name:
|
144 |
?>
|
145 |
" class="button_title" />
|
146 |
</td>
|
147 |
+
<td class="button-pdr">
|
148 |
<label for="button_icon" class="label-top">
|
149 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This will be the icon of the button. You can choose from the build-in Font Awesome icons.<br /><br />When you want to use your own icon or image, you can click the 'or upload an image' link to use your own icon.</span></span>
|
150 |
+
Button icon/image:
|
151 |
</label>
|
152 |
<?php
|
153 |
echo $this->buttonGetIcon( $iButtonId ) ;
|
158 |
<tr>
|
159 |
<td> </td>
|
160 |
<td></td>
|
|
|
161 |
</tr>
|
162 |
|
163 |
<tr>
|
170 |
echo $this->buttonGetText( $iButtonId ) ;
|
171 |
?>
|
172 |
</td>
|
173 |
+
<td>
|
174 |
<label for="button_category" class="label-top">
|
175 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>Select a page category. You can add more page rules at the 'Page categories' tab.</span></span>
|
176 |
Button page category:
|
184 |
<tr>
|
185 |
<td> </td>
|
186 |
<td></td>
|
|
|
187 |
</tr>
|
188 |
|
189 |
<tr class="settings-row">
|
191 |
<i class="fa fa-globe setting-icon"></i> URL or phone-number
|
192 |
<span class="info-class"><i class="fa fa-info-circle"></i> <span>This is the click-action of your button. You can input a full url (http://myawesomewebsite.com), a URI (/contact), an anchor-link (#anchor) or a phone number. Note that if you input a phone number that you select the option ‘Is phone number’. This will be a direct click-to-call action. Please don’t add a full url without the http:// (like: www.myawesomewebsite.com). </span></span>
|
193 |
</td>
|
194 |
+
<td><?php
|
195 |
echo $this->buttonGetUrl( $iButtonId ) ;
|
196 |
?>
|
197 |
</td>
|
208 |
echo $iButtonId ;
|
209 |
?>
|
210 |
_is_phonenumber"> Yes</label></td>
|
|
|
211 |
</tr>
|
212 |
|
213 |
<tr class="settings-row setting-new-tab">
|
221 |
echo $iButtonId ;
|
222 |
?>
|
223 |
_url_newtab"> Yes</label></td>
|
224 |
+
</tr>
|
225 |
+
|
226 |
+
<tr class="settings-row">
|
227 |
+
<td>
|
228 |
+
<i class="fa fa-paint-brush setting-icon"></i> Button colors
|
229 |
+
<span class="info-class"><i class="fa fa-info-circle"></i> <span>... </span></span>
|
230 |
+
</td>
|
231 |
+
<td><?php
|
232 |
+
echo $this->buttonColors( $iButtonId ) ;
|
233 |
+
?>
|
234 |
+
</td>
|
235 |
</tr>
|
236 |
|
237 |
<tr>
|
238 |
<td> </td>
|
239 |
<td></td>
|
|
|
240 |
</tr>
|
241 |
|
242 |
<tr class="settings-row">
|
250 |
echo $iButtonId ;
|
251 |
?>
|
252 |
_show_on_phone"> Yes</label></td>
|
|
|
253 |
</tr>
|
254 |
|
255 |
<tr class="settings-row">
|
263 |
echo $iButtonId ;
|
264 |
?>
|
265 |
_show_on_desktop"> Yes</label></td>
|
|
|
266 |
</tr>
|
267 |
|
268 |
<tr class="settings-row">
|
283 |
echo $iButtonId ;
|
284 |
?>
|
285 |
_hide_label"> Yes</label></td>
|
|
|
286 |
</tr>
|
287 |
|
288 |
<tr>
|
289 |
<td> </td>
|
290 |
<td></td>
|
|
|
291 |
</tr>
|
292 |
|
293 |
<?php
|
304 |
<i class="fa fa-times-circle-o setting-icon"></i> Show <b>only outside</b> opening hours
|
305 |
</td>
|
306 |
<td><input type="checkbox" class="buttonizer-click-to-pro" readonly=""> <label> Yes</label> <span class="buttonizer-pro-feature">PRO</span></td>
|
|
|
307 |
</tr>
|
308 |
<?php
|
309 |
?>
|
328 |
// Get button icon
|
329 |
public function buttonGetIcon( $iButtonId = 0 )
|
330 |
{
|
331 |
+
return $this->oIconManager->generator( array(
|
332 |
+
'icon' => ( isset( $this->aSavedData['button_' . $iButtonId . '_icon'] ) ? $this->aSavedData['button_' . $iButtonId . '_icon'] : '' ),
|
333 |
+
'icon_fieldname' => 'buttonizer_buttons[button_' . $iButtonId . '_icon]',
|
334 |
+
'image' => ( isset( $this->aSavedData['button_' . $iButtonId . '_image'] ) ? $this->aSavedData['button_' . $iButtonId . '_image'] : '' ),
|
335 |
+
'image_fieldname' => 'buttonizer_buttons[button_' . $iButtonId . '_image]',
|
336 |
+
'choose_type' => true,
|
337 |
+
) );
|
338 |
}
|
339 |
|
340 |
// Get button icon
|
424 |
$is_selected = ( isset( $this->aSavedData[$fieldName] ) ? $this->aSavedData[$fieldName] : '' );
|
425 |
return '<input type="checkbox" name="buttonizer_buttons[' . $fieldName . ']" id="' . $fieldName . '" value="1" class="button_isnewtab" ' . (( $is_selected == '1' ? 'checked="checked"' : '' )) . ' />';
|
426 |
}
|
427 |
+
|
428 |
+
public function buttonColors( $iButtonId = 0 )
|
429 |
+
{
|
430 |
+
// Default button colors
|
431 |
+
$sDefaultColor1 = $this->aSystemSettings['button_unpushed'];
|
432 |
+
$sDefaultColor2 = $this->aSystemSettings['button_pushed'];
|
433 |
+
$sDefaultColor3 = $this->aSystemSettings['icon_color'];
|
434 |
+
// Using custom colors?
|
435 |
+
$bCustomColors = ( isset( $this->aSavedData['button_' . $iButtonId . '_using_custom_colors'] ) && $this->aSavedData['button_' . $iButtonId . '_using_custom_colors'] == '1' ? true : false );
|
436 |
+
// Get button colors
|
437 |
+
$sColor1 = ( $bCustomColors && isset( $this->aSavedData['button_' . $iButtonId . '_colors_button'] ) && !empty($this->aSavedData['button_' . $iButtonId . '_colors_button']) ? $this->aSavedData['button_' . $iButtonId . '_colors_button'] : $sDefaultColor1 );
|
438 |
+
$sColor2 = ( $bCustomColors && isset( $this->aSavedData['button_' . $iButtonId . '_colors_pushed'] ) && !empty($this->aSavedData['button_' . $iButtonId . '_colors_pushed']) ? $this->aSavedData['button_' . $iButtonId . '_colors_pushed'] : $sDefaultColor2 );
|
439 |
+
$sColor3 = ( $bCustomColors && isset( $this->aSavedData['button_' . $iButtonId . '_colors_icon'] ) && !empty($this->aSavedData['button_' . $iButtonId . '_colors_icon']) ? $this->aSavedData['button_' . $iButtonId . '_colors_icon'] : $sDefaultColor3 );
|
440 |
+
$sColorPalet = '<div class="button-color-palet" data-btnid="' . $iButtonId . '">';
|
441 |
+
$sColorPalet .= '<div class="color default" style="background-color: ' . $sColor1 . ';" data-default="' . $sDefaultColor1 . '"></div>';
|
442 |
+
$sColorPalet .= '<div class="color pushed" style="background-color: ' . $sColor2 . ';" data-default="' . $sDefaultColor2 . '"></div>';
|
443 |
+
$sColorPalet .= '<div class="color icon" style="background-color: ' . $sColor3 . ';" data-default="' . $sDefaultColor3 . '"></div>';
|
444 |
+
$sColorPalet .= '<div class="text">' . (( $sColor1 != $sDefaultColor1 || $sColor2 != $sDefaultColor2 || $sColor3 != $sDefaultColor3 ? 'Custom colors' : 'Default colors' )) . '</div>';
|
445 |
+
$sColorPalet .= '<input type="hidden" name="buttonizer_buttons[button_' . $iButtonId . '_using_custom_colors]" class="custom" value="' . (( $bCustomColors ? '1' : '0' )) . '" />';
|
446 |
+
$sColorPalet .= '<input type="hidden" name="buttonizer_buttons[button_' . $iButtonId . '_colors_button]" class="default" value="' . $sColor1 . '" />';
|
447 |
+
$sColorPalet .= '<input type="hidden" name="buttonizer_buttons[button_' . $iButtonId . '_colors_pushed]" class="pushed" value="' . $sColor2 . '" />';
|
448 |
+
$sColorPalet .= '<input type="hidden" name="buttonizer_buttons[button_' . $iButtonId . '_colors_icon]" class="icon" value="' . $sColor3 . '" />';
|
449 |
+
$sColorPalet .= '</div>';
|
450 |
+
$sColorPalet .= '<a href="javascript:void(0)" id="reset_colors_' . $iButtonId . '" style="' . (( !$bCustomColors ? 'display: none' : '' )) . '" class="button color_default_btn">Back to default</a>';
|
451 |
+
return $sColorPalet;
|
452 |
+
}
|
453 |
|
454 |
}
|
classes/admin/General.php
CHANGED
@@ -74,6 +74,7 @@ class General
|
|
74 |
$this->aSubPages['styling'] = '<table class="form-table"><tbody>';
|
75 |
$this->aSubPages['styling'] .= $this->createFormField( 'Right', array( &$this, 'field_position_right' ) );
|
76 |
$this->aSubPages['styling'] .= $this->createFormField( 'Bottom', array( &$this, 'field_position_bottom' ) );
|
|
|
77 |
$this->aSubPages['styling'] .= $this->createFormField( 'Color button unpushed', array( &$this, 'field_button_unpushed' ) );
|
78 |
$this->aSubPages['styling'] .= $this->createFormField( 'Color button pushed', array( &$this, 'field_button_pushed' ) );
|
79 |
$this->aSubPages['styling'] .= $this->createFormField( 'Icon color', array( &$this, 'field_icon_color' ) );
|
@@ -225,6 +226,17 @@ class General
|
|
225 |
return '<input type="text" name="buttonizer_general_settings[position_bottom]" value="' . $position_bottom . '"/><small><i>%</i><br>Recommended 5% then it will position itself on the bottom corner</small>';
|
226 |
}
|
227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
/*
|
229 |
* Advanced
|
230 |
*/
|
74 |
$this->aSubPages['styling'] = '<table class="form-table"><tbody>';
|
75 |
$this->aSubPages['styling'] .= $this->createFormField( 'Right', array( &$this, 'field_position_right' ) );
|
76 |
$this->aSubPages['styling'] .= $this->createFormField( 'Bottom', array( &$this, 'field_position_bottom' ) );
|
77 |
+
$this->aSubPages['styling'] .= $this->createFormField( 'Button animation', array( &$this, 'field_button_animation' ) );
|
78 |
$this->aSubPages['styling'] .= $this->createFormField( 'Color button unpushed', array( &$this, 'field_button_unpushed' ) );
|
79 |
$this->aSubPages['styling'] .= $this->createFormField( 'Color button pushed', array( &$this, 'field_button_pushed' ) );
|
80 |
$this->aSubPages['styling'] .= $this->createFormField( 'Icon color', array( &$this, 'field_icon_color' ) );
|
226 |
return '<input type="text" name="buttonizer_general_settings[position_bottom]" value="' . $position_bottom . '"/><small><i>%</i><br>Recommended 5% then it will position itself on the bottom corner</small>';
|
227 |
}
|
228 |
|
229 |
+
public function field_button_animation()
|
230 |
+
{
|
231 |
+
$button_animation = ( isset( $this->aSavedData['buttons_animation'] ) ? $this->aSavedData['buttons_animation'] : 'default' );
|
232 |
+
return '
|
233 |
+
<select name="buttonizer_general_settings[buttons_animation]" style="width: 100%; padding: 0 10px; height: 40px;">
|
234 |
+
<option value="default" ' . (( $button_animation == 'default' ? 'selected' : '' )) . '>Default button animation (fade up)</option>
|
235 |
+
<option value="circle" ' . (( $button_animation == 'circle' ? 'selected' : '' )) . '>Circle animation (arround button, right bottom corner)</option>
|
236 |
+
<option value="fade-left-to-right" ' . (( $button_animation == 'fade-left-to-right' ? 'selected' : '' )) . '>Fade animation left to right</option>
|
237 |
+
</select>';
|
238 |
+
}
|
239 |
+
|
240 |
/*
|
241 |
* Advanced
|
242 |
*/
|
classes/admin/InitializeAdmin.php
CHANGED
@@ -212,7 +212,7 @@ class InitializeAdmin {
|
|
212 |
public function getPageButtons() {
|
213 |
require BUTTONIZER_DIR . '/classes/admin/Buttons.php';
|
214 |
|
215 |
-
new Buttons($this->aFontAwesome);
|
216 |
}
|
217 |
|
218 |
/* Add general settings */
|
212 |
public function getPageButtons() {
|
213 |
require BUTTONIZER_DIR . '/classes/admin/Buttons.php';
|
214 |
|
215 |
+
new Buttons($this->aFontAwesome, $this->oIconManager);
|
216 |
}
|
217 |
|
218 |
/* Add general settings */
|
classes/admin/PageCategories.php
CHANGED
@@ -49,7 +49,7 @@ class PageCategories
|
|
49 |
}
|
50 |
echo '<div id="page-categories">' ;
|
51 |
// Not removable button row
|
52 |
-
echo '<div class="button-row">
|
53 |
<div class="row-info">
|
54 |
<span><i class="fa fa-file-text-o"></i> All pages</span>
|
55 |
<a href="javascript:void(0)" class="delete-button" style="opacity: 0.5">Delete <i class="fa fa-trash-o"></i></a>
|
49 |
}
|
50 |
echo '<div id="page-categories">' ;
|
51 |
// Not removable button row
|
52 |
+
echo '<div class="button-row is_category">
|
53 |
<div class="row-info">
|
54 |
<span><i class="fa fa-file-text-o"></i> All pages</span>
|
55 |
<a href="javascript:void(0)" class="delete-button" style="opacity: 0.5">Delete <i class="fa fa-trash-o"></i></a>
|
classes/default/main.php
CHANGED
@@ -36,10 +36,13 @@ class Button
|
|
36 |
private $sCurrentPageUrl = '' ;
|
37 |
private $sCurrentPageTitle = '' ;
|
38 |
private $sCurrentPageDescription = '' ;
|
|
|
39 |
// Output string
|
40 |
private $iAmountOfButtons = 0 ;
|
41 |
private $iAmountOfShareButtons = 0 ;
|
42 |
private $sOutput = '' ;
|
|
|
|
|
43 |
public function __construct( $bIsMobile )
|
44 |
{
|
45 |
// Set some data
|
@@ -150,7 +153,6 @@ class Button
|
|
150 |
*/
|
151 |
$buttonText = ( isset( $this->aButtons['button_' . $bNmbr . '_text'] ) ? $this->aButtons['button_' . $bNmbr . '_text'] : 'Button ' . $bNmbr );
|
152 |
$buttonTitle = ( isset( $this->aButtons['button_' . $bNmbr . '_title'] ) ? $this->aButtons['button_' . $bNmbr . '_title'] : 'Button ' . $bNmbr );
|
153 |
-
$buttonIcon = ( isset( $this->aButtons['button_' . $bNmbr . '_icon'] ) ? $this->aButtons['button_' . $bNmbr . '_icon'] : 'plus' );
|
154 |
$buttonIsPhone = ( isset( $this->aButtons['button_' . $bNmbr . '_is_phonenumber'] ) ? $this->aButtons['button_' . $bNmbr . '_is_phonenumber'] : '' );
|
155 |
$link = ( isset( $this->aButtons['button_' . $bNmbr . '_url'] ) ? $this->aButtons['button_' . $bNmbr . '_url'] : '' );
|
156 |
$linkNewTab = ( isset( $this->aButtons['button_' . $bNmbr . '_url_newtab'] ) ? 'target="_blank"' : '' );
|
@@ -163,8 +165,31 @@ class Button
|
|
163 |
}
|
164 |
}
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
$sButtonClasses = 'is_extra bt_' . $this->iAmountOfButtons;
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
}
|
169 |
|
170 |
// Show on timeout
|
@@ -313,9 +338,16 @@ class Button
|
|
313 |
if ( isset( $this->aSettings['google_analytics'] ) && $this->aSettings['google_analytics'] != '' ) {
|
314 |
$output .= '<script>(function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,\'script\',\'https://www.google-analytics.com/analytics.js\',\'ga\');ga(\'create\', \'' . $this->aSettings['google_analytics'] . '\', \'auto\');</script>';
|
315 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
list($sShadowColorRed, $sShadowColorGreen, $sShadowColorBlue) = sscanf( $this->aSettings['button_unpushed'], '#%02x%02x%02x' );
|
317 |
-
echo '<style>.buttonizer-button a:hover, .buttonizer-button a:focus{ background:' . $this->aSettings['button_pushed'] . '; } .buttonizer-button a { background:' . $this->aSettings['button_unpushed'] . '; } .buttonizer-button a i { color: ' . $this->aSettings['icon_color'] . '; }</style>
|
318 |
-
<div class="buttonizer-button ' . (( $showOnScroll > 0 || $showAfterTimeout > 0 ? 'hide' : '' )) . '" style=" right: ' . $this->aSettings['position_right'] . '%; bottom: ' . $this->aSettings['position_bottom'] . '%;" id="buttonizer-button"><div class="buttonizer_inner" id="buttonizer-sys">' . $output . '</div></div>
|
319 |
<script type="text/javascript">
|
320 |
buttonizer.init({
|
321 |
scrollBarTop: ' . $showOnScroll . ',
|
36 |
private $sCurrentPageUrl = '' ;
|
37 |
private $sCurrentPageTitle = '' ;
|
38 |
private $sCurrentPageDescription = '' ;
|
39 |
+
private $aAnimationSettings = array( 'default', 'circle', 'fade-left-to-right' ) ;
|
40 |
// Output string
|
41 |
private $iAmountOfButtons = 0 ;
|
42 |
private $iAmountOfShareButtons = 0 ;
|
43 |
private $sOutput = '' ;
|
44 |
+
// Custom button color
|
45 |
+
private $sButtonCss = '' ;
|
46 |
public function __construct( $bIsMobile )
|
47 |
{
|
48 |
// Set some data
|
153 |
*/
|
154 |
$buttonText = ( isset( $this->aButtons['button_' . $bNmbr . '_text'] ) ? $this->aButtons['button_' . $bNmbr . '_text'] : 'Button ' . $bNmbr );
|
155 |
$buttonTitle = ( isset( $this->aButtons['button_' . $bNmbr . '_title'] ) ? $this->aButtons['button_' . $bNmbr . '_title'] : 'Button ' . $bNmbr );
|
|
|
156 |
$buttonIsPhone = ( isset( $this->aButtons['button_' . $bNmbr . '_is_phonenumber'] ) ? $this->aButtons['button_' . $bNmbr . '_is_phonenumber'] : '' );
|
157 |
$link = ( isset( $this->aButtons['button_' . $bNmbr . '_url'] ) ? $this->aButtons['button_' . $bNmbr . '_url'] : '' );
|
158 |
$linkNewTab = ( isset( $this->aButtons['button_' . $bNmbr . '_url_newtab'] ) ? 'target="_blank"' : '' );
|
165 |
}
|
166 |
}
|
167 |
|
168 |
+
// Has image
|
169 |
+
|
170 |
+
if ( !isset( $this->aButtons['button_' . $bNmbr . '_image'] ) || empty($this->aButtons['button_' . $bNmbr . '_image']) ) {
|
171 |
+
$sButtonIcon = '<i class="fa ' . (( isset( $this->aButtons['button_' . $bNmbr . '_icon'] ) ? $this->aButtons['button_' . $bNmbr . '_icon'] : 'plus' )) . '"></i>';
|
172 |
+
} else {
|
173 |
+
$sButtonIcon = '<img src="' . $this->aButtons['button_' . $bNmbr . '_image'] . '" style="width: ' . (( count( $this->aButtons ) > 1 ? '25px' : '32px' )) . '; vertical-align: middle;" />';
|
174 |
+
}
|
175 |
+
|
176 |
$sButtonClasses = 'is_extra bt_' . $this->iAmountOfButtons;
|
177 |
+
// Custom colors?
|
178 |
+
if ( isset( $this->aButtons['button_' . $bNmbr . '_using_custom_colors'] ) && $this->aButtons['button_' . $bNmbr . '_using_custom_colors'] == '1' ) {
|
179 |
+
$this->sButtonCss .= '
|
180 |
+
.buttonizer-button .buttonizer_' . $bNmbr . ' {
|
181 |
+
background-color: ' . $this->aButtons['button_' . $bNmbr . '_colors_button'] . ';
|
182 |
+
}
|
183 |
+
|
184 |
+
.buttonizer-button .buttonizer_' . $bNmbr . ':hover,.buttonizer_' . $bNmbr . ':active {
|
185 |
+
background-color: ' . $this->aButtons['button_' . $bNmbr . '_colors_pushed'] . ';
|
186 |
+
}
|
187 |
+
|
188 |
+
.buttonizer-button .buttonizer_' . $bNmbr . ' i {
|
189 |
+
color: ' . $this->aButtons['button_' . $bNmbr . '_colors_icon'] . ';
|
190 |
+
} ';
|
191 |
+
}
|
192 |
+
return '<a href="' . (( $buttonIsPhone ? 'tel:' . $link : $link )) . '" class="' . $sButtonClasses . ' buttonizer_' . $bNmbr . ' ' . $linkNewTab . ' onclick="onButtonizerClickEvent(\'' . $buttonText . '\')">' . (( $buttonText != '' ? '<div class="text"' . (( $hideLabel == '1' ? 'style="display: none;"' : '' )) . '><div>' . $buttonText . '</div></div>' : '' )) . $sButtonIcon . '</a>';
|
193 |
}
|
194 |
|
195 |
// Show on timeout
|
338 |
if ( isset( $this->aSettings['google_analytics'] ) && $this->aSettings['google_analytics'] != '' ) {
|
339 |
$output .= '<script>(function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,\'script\',\'https://www.google-analytics.com/analytics.js\',\'ga\');ga(\'create\', \'' . $this->aSettings['google_analytics'] . '\', \'auto\');</script>';
|
340 |
}
|
341 |
+
|
342 |
+
if ( isset( $this->aSettings['buttons_animation'] ) && in_array( $this->aSettings['buttons_animation'], $this->aAnimationSettings ) ) {
|
343 |
+
$sButtonAnimation = $this->aSettings['buttons_animation'];
|
344 |
+
} else {
|
345 |
+
$sButtonAnimation = 'default';
|
346 |
+
}
|
347 |
+
|
348 |
list($sShadowColorRed, $sShadowColorGreen, $sShadowColorBlue) = sscanf( $this->aSettings['button_unpushed'], '#%02x%02x%02x' );
|
349 |
+
echo '<style>.buttonizer-button a:hover, .buttonizer-button a:focus{ background:' . $this->aSettings['button_pushed'] . '; } .buttonizer-button a { background:' . $this->aSettings['button_unpushed'] . '; } .buttonizer-button a i { color: ' . $this->aSettings['icon_color'] . '; } ' . $this->sButtonCss . '</style>
|
350 |
+
<div class="buttonizer-button ' . (( $showOnScroll > 0 || $showAfterTimeout > 0 ? 'hide' : '' )) . '" button-animation="' . $sButtonAnimation . '" style=" right: ' . $this->aSettings['position_right'] . '%; bottom: ' . $this->aSettings['position_bottom'] . '%;" id="buttonizer-button"><div class="buttonizer_inner" id="buttonizer-sys">' . $output . '</div></div>
|
351 |
<script type="text/javascript">
|
352 |
buttonizer.init({
|
353 |
scrollBarTop: ' . $showOnScroll . ',
|
css/buttonizer.css
CHANGED
@@ -154,90 +154,216 @@
|
|
154 |
opacity: 0;
|
155 |
}
|
156 |
|
157 |
-
.buttonizer-button .buttonizer_inner.opened .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
opacity: 1;
|
159 |
top: -110px;
|
160 |
}
|
161 |
|
162 |
-
.buttonizer-button .buttonizer_inner.opened .bt_1 {
|
163 |
opacity: 1;
|
164 |
top: -160px;
|
165 |
}
|
166 |
|
167 |
-
.buttonizer-button .buttonizer_inner.opened .bt_2 {
|
168 |
opacity: 1;
|
169 |
top: -210px;
|
170 |
}
|
171 |
|
172 |
-
.buttonizer-button .buttonizer_inner.opened .bt_3 {
|
173 |
opacity: 1;
|
174 |
top: -260px;
|
175 |
}
|
176 |
|
177 |
-
.buttonizer-button .buttonizer_inner.opened .bt_4 {
|
178 |
opacity: 1;
|
179 |
top: -310px;
|
180 |
}
|
181 |
|
182 |
-
.buttonizer-button .buttonizer_inner.opened .share_1 {
|
183 |
opacity: 1;
|
184 |
left: -105px;
|
185 |
top: -53px;
|
186 |
}
|
187 |
|
188 |
-
.buttonizer-button .buttonizer_inner.opened .share_2 {
|
189 |
opacity: 1;
|
190 |
left: -154px;
|
191 |
top: -53px;
|
192 |
}
|
193 |
|
194 |
-
.buttonizer-button .buttonizer_inner.opened .share_3 {
|
195 |
opacity: 1;
|
196 |
left: -202px;
|
197 |
top: -53px;
|
198 |
}
|
199 |
|
200 |
-
|
201 |
-
.buttonizer-button .
|
202 |
-
|
203 |
-
|
204 |
-
right: -53px;
|
205 |
}
|
206 |
|
207 |
-
.buttonizer-button a .text {
|
208 |
-
|
209 |
-
top: 7px;
|
210 |
-
right: 55px;
|
211 |
-
text-align: right;
|
212 |
-
color: #ffffff;
|
213 |
-
height: 26px;
|
214 |
-
line-height: 26px;
|
215 |
-
font-size: 12px;
|
216 |
-
padding: 0 10px;
|
217 |
-
transition: all 0.1s ease-out;
|
218 |
-
-moz-transition: all 0.1s ease-out;
|
219 |
-
-webkit-transition: all 0.1s ease-out;
|
220 |
-
-o-transition: all 0.1s ease-out;
|
221 |
-
display: block;
|
222 |
-
white-space: nowrap;
|
223 |
-
background: #4e4c4c;
|
224 |
-
border-radius: 3px;
|
225 |
-
-moz-border-radius: 3px;
|
226 |
-
-webkit-border-radius: 3px;
|
227 |
}
|
228 |
|
229 |
-
.buttonizer-button .
|
230 |
-
opacity:
|
231 |
-
visibility: hidden;
|
232 |
}
|
233 |
|
234 |
-
.buttonizer-button
|
235 |
-
visibility: visible;
|
236 |
opacity: 1;
|
|
|
|
|
237 |
}
|
238 |
|
239 |
-
.buttonizer-button
|
240 |
-
|
241 |
-
|
242 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
154 |
opacity: 0;
|
155 |
}
|
156 |
|
157 |
+
.buttonizer-button .buttonizer_inner.opened .share_1 .text,
|
158 |
+
.buttonizer-button .buttonizer_inner.opened .share_2 .text,
|
159 |
+
.buttonizer-button .buttonizer_inner.opened .share_3 .text {
|
160 |
+
top: -35px;
|
161 |
+
right: -53px;
|
162 |
+
}
|
163 |
+
|
164 |
+
.buttonizer-button a .text {
|
165 |
+
position: absolute;
|
166 |
+
top: 7px;
|
167 |
+
right: 55px;
|
168 |
+
text-align: right;
|
169 |
+
color: #ffffff;
|
170 |
+
height: 26px;
|
171 |
+
line-height: 26px;
|
172 |
+
font-size: 12px;
|
173 |
+
padding: 0 10px;
|
174 |
+
transition: all 0.1s ease-out;
|
175 |
+
-moz-transition: all 0.1s ease-out;
|
176 |
+
-webkit-transition: all 0.1s ease-out;
|
177 |
+
-o-transition: all 0.1s ease-out;
|
178 |
+
display: block;
|
179 |
+
white-space: nowrap;
|
180 |
+
background: #4e4c4c;
|
181 |
+
border-radius: 3px;
|
182 |
+
-moz-border-radius: 3px;
|
183 |
+
-webkit-border-radius: 3px;
|
184 |
+
}
|
185 |
+
|
186 |
+
.buttonizer-button .share .text {
|
187 |
+
opacity: 0;
|
188 |
+
visibility: hidden;
|
189 |
+
}
|
190 |
+
|
191 |
+
.buttonizer-button a.share:hover .text {
|
192 |
+
visibility: visible;
|
193 |
+
opacity: 1;
|
194 |
+
}
|
195 |
+
|
196 |
+
.buttonizer-button a i {
|
197 |
+
font-size:24px;
|
198 |
+
width:24px;
|
199 |
+
height:24px;
|
200 |
+
}
|
201 |
+
|
202 |
+
/* Default animation */
|
203 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .bt_0 {
|
204 |
opacity: 1;
|
205 |
top: -110px;
|
206 |
}
|
207 |
|
208 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .bt_1 {
|
209 |
opacity: 1;
|
210 |
top: -160px;
|
211 |
}
|
212 |
|
213 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .bt_2 {
|
214 |
opacity: 1;
|
215 |
top: -210px;
|
216 |
}
|
217 |
|
218 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .bt_3 {
|
219 |
opacity: 1;
|
220 |
top: -260px;
|
221 |
}
|
222 |
|
223 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .bt_4 {
|
224 |
opacity: 1;
|
225 |
top: -310px;
|
226 |
}
|
227 |
|
228 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .share_1 {
|
229 |
opacity: 1;
|
230 |
left: -105px;
|
231 |
top: -53px;
|
232 |
}
|
233 |
|
234 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .share_2 {
|
235 |
opacity: 1;
|
236 |
left: -154px;
|
237 |
top: -53px;
|
238 |
}
|
239 |
|
240 |
+
.buttonizer-button[button-animation="default"] .buttonizer_inner.opened .share_3 {
|
241 |
opacity: 1;
|
242 |
left: -202px;
|
243 |
top: -53px;
|
244 |
}
|
245 |
|
246 |
+
/* Circle animation */
|
247 |
+
.buttonizer-button[button-animation="circle"] a.is_extra {
|
248 |
+
top: -50px;
|
249 |
+
right: 0px;
|
|
|
250 |
}
|
251 |
|
252 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner a.is_extra .text {
|
253 |
+
opacity: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
}
|
255 |
|
256 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner a.is_extra:hover .text {
|
257 |
+
opacity: 1;
|
|
|
258 |
}
|
259 |
|
260 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner.opened .bt_0 {
|
|
|
261 |
opacity: 1;
|
262 |
+
top: -49px;
|
263 |
+
right: 150px;
|
264 |
}
|
265 |
|
266 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner.opened .bt_1 {
|
267 |
+
opacity: 1;
|
268 |
+
top: -100px;
|
269 |
+
right: 137px;
|
270 |
+
-moz-transition-delay: 150ms;
|
271 |
+
-webkit-transition-delay: 150ms;
|
272 |
+
transition-delay: 150ms;
|
273 |
+
}
|
274 |
+
|
275 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner.opened .bt_2 {
|
276 |
+
opacity: 1;
|
277 |
+
top: -150px;
|
278 |
+
right: 108px;
|
279 |
+
-moz-transition-delay: 300ms;
|
280 |
+
-webkit-transition-delay: 300ms;
|
281 |
+
transition-delay: 300ms;
|
282 |
+
}
|
283 |
+
|
284 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner.opened .bt_3 {
|
285 |
+
opacity: 1;
|
286 |
+
top: -186px;
|
287 |
+
right: 63px;
|
288 |
+
-moz-transition-delay: 450ms;
|
289 |
+
-webkit-transition-delay: 450ms;
|
290 |
+
transition-delay: 450ms;
|
291 |
+
}
|
292 |
+
|
293 |
+
.buttonizer-button[button-animation="circle"] .buttonizer_inner.opened .bt_4 {
|
294 |
+
opacity: 1;
|
295 |
+
top: -208px;
|
296 |
+
right: 10px;
|
297 |
+
-moz-transition-delay: 600ms;
|
298 |
+
-webkit-transition-delay: 600ms;
|
299 |
+
transition-delay: 600ms;
|
300 |
+
}
|
301 |
+
|
302 |
+
|
303 |
+
/* Fade right to left animation */
|
304 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner:not(.opened) .is_extra {
|
305 |
+
margin-right: -40px;
|
306 |
+
}
|
307 |
+
|
308 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner.opened .is_extra {
|
309 |
+
opacity: 1;
|
310 |
+
}
|
311 |
+
|
312 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .bt_0 {
|
313 |
+
top: -110px;
|
314 |
+
}
|
315 |
+
|
316 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .bt_1 {
|
317 |
+
top: -160px;
|
318 |
+
-moz-transition-delay: 150ms;
|
319 |
+
-webkit-transition-delay: 150ms;
|
320 |
+
transition-delay: 150ms;
|
321 |
+
}
|
322 |
+
|
323 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .bt_2 {
|
324 |
+
top: -210px;
|
325 |
+
-moz-transition-delay: 300ms;
|
326 |
+
-webkit-transition-delay: 300ms;
|
327 |
+
transition-delay: 300ms;
|
328 |
+
}
|
329 |
+
|
330 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .bt_3 {
|
331 |
+
top: -260px;
|
332 |
+
-moz-transition-delay: 450ms;
|
333 |
+
-webkit-transition-delay: 450ms;
|
334 |
+
transition-delay: 450ms;
|
335 |
+
}
|
336 |
+
|
337 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .bt_4 {
|
338 |
+
top: -310px;
|
339 |
+
-moz-transition-delay: 600ms;
|
340 |
+
-webkit-transition-delay: 600ms;
|
341 |
+
transition-delay: 600ms;
|
342 |
+
}
|
343 |
+
|
344 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner:not(.opened) .share_1,
|
345 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner:not(.opened) .share_2,
|
346 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner:not(.opened) .share_3 {
|
347 |
+
margin-bottom: -40px;
|
348 |
+
}
|
349 |
+
|
350 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .share_1 {
|
351 |
+
left: -105px;
|
352 |
+
top: -53px;
|
353 |
+
}
|
354 |
+
|
355 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .share_2 {
|
356 |
+
left: -154px;
|
357 |
+
top: -53px;
|
358 |
+
-moz-transition-delay: 150ms;
|
359 |
+
-webkit-transition-delay: 150ms;
|
360 |
+
transition-delay: 150ms;
|
361 |
+
}
|
362 |
+
|
363 |
+
.buttonizer-button[button-animation="fade-left-to-right"] .buttonizer_inner .share_3 {
|
364 |
+
left: -202px;
|
365 |
+
top: -53px;
|
366 |
+
-moz-transition-delay: 300ms;
|
367 |
+
-webkit-transition-delay: 300ms;
|
368 |
+
transition-delay: 300ms;
|
369 |
}
|
css/style.css
CHANGED
@@ -289,6 +289,76 @@ h2 .button {
|
|
289 |
margin-right: 4px;
|
290 |
}
|
291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
.button-preview {
|
293 |
border-radius: 50%;
|
294 |
width: 56px;
|
@@ -608,6 +678,11 @@ h2 .button {
|
|
608 |
max-width: 700px;
|
609 |
}
|
610 |
|
|
|
|
|
|
|
|
|
|
|
611 |
/* jQuery slider */
|
612 |
.ui-slider {
|
613 |
position: relative;
|
289 |
margin-right: 4px;
|
290 |
}
|
291 |
|
292 |
+
.button-row .icon-or-image {
|
293 |
+
position: relative;
|
294 |
+
}
|
295 |
+
|
296 |
+
.button-row .icon-or-image .placeholder-choose {
|
297 |
+
position: absolute;
|
298 |
+
top: -35px;
|
299 |
+
right: 10px;
|
300 |
+
z-index: 99;
|
301 |
+
}
|
302 |
+
|
303 |
+
.button-row .button-preview {
|
304 |
+
position: absolute;
|
305 |
+
right: 20px;
|
306 |
+
top: -15px;
|
307 |
+
background-color: blue;
|
308 |
+
}
|
309 |
+
|
310 |
+
.button-row .button-color-palet {
|
311 |
+
border: 1px solid #ccc;
|
312 |
+
-webkit-box-shadow: 0 1px 0 #ccc;
|
313 |
+
box-shadow: 0 1px 0 #ccc;
|
314 |
+
-webkit-border-radius: 3px;
|
315 |
+
border-radius: 3px;
|
316 |
+
cursor: pointer;
|
317 |
+
height: 22px;
|
318 |
+
margin: 0 6px 6px 0;
|
319 |
+
position: relative;
|
320 |
+
-webkit-user-select: none;
|
321 |
+
-moz-user-select: none;
|
322 |
+
-ms-user-select: none;
|
323 |
+
user-select: none;
|
324 |
+
vertical-align: bottom;
|
325 |
+
display: inline-block;
|
326 |
+
top: 0;
|
327 |
+
overflow: hidden;
|
328 |
+
}
|
329 |
+
|
330 |
+
.button-row .button-color-palet:hover {
|
331 |
+
border-color: #afafaf;
|
332 |
+
}
|
333 |
+
|
334 |
+
.button-row .button-color-palet .color {
|
335 |
+
height: 24px;
|
336 |
+
width: 30px;
|
337 |
+
display: inline-block;
|
338 |
+
}
|
339 |
+
|
340 |
+
.button-row .button-color-palet .text {
|
341 |
+
background: #f7f7f7;
|
342 |
+
-webkit-border-radius: 0 2px 2px 0;
|
343 |
+
border-radius: 0 2px 2px 0;
|
344 |
+
border-left: 1px solid #ccc;
|
345 |
+
color: #555;
|
346 |
+
content: attr(title);
|
347 |
+
display: block;
|
348 |
+
font-size: 11px;
|
349 |
+
line-height: 22px;
|
350 |
+
padding: 0 6px;
|
351 |
+
position: relative;
|
352 |
+
text-align: center;
|
353 |
+
float: right;
|
354 |
+
}
|
355 |
+
|
356 |
+
.button-row .color_default_btn {
|
357 |
+
font-size: 11px;
|
358 |
+
line-height: 22px;
|
359 |
+
height: 24px;
|
360 |
+
}
|
361 |
+
|
362 |
.button-preview {
|
363 |
border-radius: 50%;
|
364 |
width: 56px;
|
678 |
max-width: 700px;
|
679 |
}
|
680 |
|
681 |
+
/**/
|
682 |
+
.color-chooser-table tr td {
|
683 |
+
vertical-align: top;
|
684 |
+
}
|
685 |
+
|
686 |
/* jQuery slider */
|
687 |
.ui-slider {
|
688 |
position: relative;
|
js/buttonizer.js
CHANGED
@@ -72,13 +72,13 @@ function onButtonizerClickEvent(text) {
|
|
72 |
}
|
73 |
|
74 |
function onButtonizerButtonFacebook() {
|
75 |
-
window.open('http://www.facebook.com/sharer.php?u='+
|
76 |
}
|
77 |
|
78 |
function onButtonizerButtonTwitter() {
|
79 |
-
window.open('https://twitter.com/intent/tweet?text='+
|
80 |
}
|
81 |
|
82 |
function onButtonizerButtonLinkedin() {
|
83 |
-
window.open('http://www.linkedin.com/shareArticle?mini=true&url='+
|
84 |
}
|
72 |
}
|
73 |
|
74 |
function onButtonizerButtonFacebook() {
|
75 |
+
window.open('http://www.facebook.com/sharer.php?u='+ document.location.href +'&t='+ document.title +'', 'popupFacebook', 'width=610, height=480, resizable=0, toolbar=0, menubar=0, status=0, location=0, scrollbars=0'); return false;
|
76 |
}
|
77 |
|
78 |
function onButtonizerButtonTwitter() {
|
79 |
+
window.open('https://twitter.com/intent/tweet?text='+ document.title +'&url='+ document.location.href +'', 'popupTwitter', 'width=610, height=480, resizable=0, toolbar=0, menubar=0, status=0, location=0, scrollbars=0'); return false;
|
80 |
}
|
81 |
|
82 |
function onButtonizerButtonLinkedin() {
|
83 |
+
window.open('http://www.linkedin.com/shareArticle?mini=true&url='+ document.location.href +'&title='+ document.title +'&summary='+ document.title +'', 'popupLinkedIn', 'width=610, height=480, resizable=0, toolbar=0, menubar=0, status=0, location=0, scrollbars=0'); return false;
|
84 |
}
|
js/dashboard.js
CHANGED
@@ -35,20 +35,6 @@ var buttonizer = {
|
|
35 |
buttonizer.settings.hasChanges = true;
|
36 |
});
|
37 |
|
38 |
-
var iconImage = jQuery.wpMediaUploader({
|
39 |
-
target : '.smartcat-uploader', // The class wrapping the textbox
|
40 |
-
uploaderTitle : 'Select or upload image', // The title of the media upload popup
|
41 |
-
uploaderButton : 'Set image', // the text of the button in the media upload popup
|
42 |
-
multiple : false, // Allow the user to select multiple images
|
43 |
-
buttonText : '<i class="fa fa-image"></i> <span>Upload image</span>', // The text of the upload button
|
44 |
-
buttonClass : '.smartcat-upload', // the class of the upload button
|
45 |
-
previewSize : '32px', // The preview image size
|
46 |
-
modal : false, // is the upload button within a bootstrap modal ?
|
47 |
-
buttonStyle : { // style the button
|
48 |
-
|
49 |
-
},
|
50 |
-
});
|
51 |
-
|
52 |
setTimeout(function() {
|
53 |
// Init preview button
|
54 |
jQuery('.button-preview').css({
|
@@ -66,6 +52,10 @@ var buttonizer = {
|
|
66 |
});
|
67 |
}, 500);
|
68 |
|
|
|
|
|
|
|
|
|
69 |
// Remove the spam from other plugins
|
70 |
setTimeout(function() {
|
71 |
var foundOurContent = false;
|
@@ -82,27 +72,6 @@ var buttonizer = {
|
|
82 |
}
|
83 |
}, 1000);
|
84 |
|
85 |
-
jQuery(".icon-or-image").each(function() {
|
86 |
-
var type = jQuery(this).data("type");
|
87 |
-
var currentContainer = jQuery(this);
|
88 |
-
|
89 |
-
jQuery(this).find(".placeholder-choose a").click(function() {
|
90 |
-
if(type == 'image') {
|
91 |
-
type = 'icon';
|
92 |
-
|
93 |
-
currentContainer.find(".image-placeholder").hide();
|
94 |
-
currentContainer.find(".icon-placeholder").show();
|
95 |
-
|
96 |
-
currentContainer.find("input").val("");
|
97 |
-
}else {
|
98 |
-
type = 'image';
|
99 |
-
|
100 |
-
currentContainer.find(".image-placeholder").show();
|
101 |
-
currentContainer.find(".icon-placeholder").hide();
|
102 |
-
}
|
103 |
-
});
|
104 |
-
});
|
105 |
-
|
106 |
// Hash
|
107 |
if(document.location.hash != "") {
|
108 |
var tabKey = document.location.hash;
|
@@ -117,7 +86,10 @@ var buttonizer = {
|
|
117 |
});
|
118 |
|
119 |
buttonizer.loadPageCategorie();
|
120 |
-
|
|
|
|
|
|
|
121 |
},
|
122 |
|
123 |
proInfoWindow: function() {
|
@@ -134,8 +106,8 @@ var buttonizer = {
|
|
134 |
'<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Show on timeout</div>' +
|
135 |
'<br />' +
|
136 |
'<p class="color-buttonizer text-right"><b>Do you <span><i class="fa fa-heart"></i></span> these features?</b></p>',
|
137 |
-
|
138 |
-
|
139 |
document.location.href = 'admin.php?page=Buttonizer-pricing';
|
140 |
}
|
141 |
});
|
@@ -171,6 +143,144 @@ var buttonizer = {
|
|
171 |
// jQuery("type[name=_wp_http_referer]").val();
|
172 |
},
|
173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
loadPageCategorie: function() {
|
175 |
jQuery(".page-categorie-styling").each(function() {
|
176 |
var maxLoaded = 10;
|
@@ -180,6 +290,7 @@ var buttonizer = {
|
|
180 |
|
181 |
table.find("tr").each(function() {
|
182 |
jQuery(this).click(function(e) {
|
|
|
183 |
if(jQuery(e.target).attr("type") != "checkbox") {
|
184 |
jQuery(this).find("input").click();
|
185 |
}
|
@@ -190,7 +301,6 @@ var buttonizer = {
|
|
190 |
maxLoaded += 10;
|
191 |
isLoaded = 0;
|
192 |
|
193 |
-
|
194 |
table.find("tr").each(function() {
|
195 |
isLoaded++;
|
196 |
if(isLoaded <= maxLoaded) {
|
@@ -243,8 +353,12 @@ var buttonizer = {
|
|
243 |
});
|
244 |
|
245 |
jQuery(".button-row").each(function() {
|
|
|
|
|
|
|
|
|
246 |
var rowObj = jQuery(this);
|
247 |
-
var rowId = jQuery(this).attr("button-id")
|
248 |
var buttonTitle = rowObj.find(".row-info span .row-title");
|
249 |
var buttonEdit = rowObj.find(".row-info .pencil-edit");
|
250 |
var buttonTitleField = rowObj.find(".button_title");
|
@@ -260,7 +374,6 @@ var buttonizer = {
|
|
260 |
buttonTitle.html(buttonTitleField.val());
|
261 |
|
262 |
rowObj.find(".row-info").click(function(e) {
|
263 |
-
|
264 |
if(
|
265 |
jQuery(e.target).hasClass('fa-desktop') ||
|
266 |
jQuery(e.target).hasClass('fa-mobile') ||
|
@@ -324,7 +437,6 @@ var buttonizer = {
|
|
324 |
});
|
325 |
|
326 |
jQuery("#button_"+ rowId +"_icon").change(function(e) {
|
327 |
-
console.log("test");
|
328 |
rowObj.find(".button-icon").attr('class', "fa "+ jQuery(this).val() +" button-icon");
|
329 |
});
|
330 |
|
@@ -344,6 +456,10 @@ var buttonizer = {
|
|
344 |
rowObj.find(".page-categorie-styling input[type=checkbox]").removeAttr("checked");
|
345 |
}
|
346 |
});
|
|
|
|
|
|
|
|
|
347 |
}
|
348 |
});
|
349 |
},
|
@@ -439,6 +555,8 @@ var buttonizer = {
|
|
439 |
if(jQuery("#new-button").hasClass('disabled')) {
|
440 |
return;
|
441 |
}
|
|
|
|
|
442 |
jQuery(".buttonizer-no-buttons").hide();
|
443 |
|
444 |
var isCategory = jQuery(".button-row[button-id=-1]").hasClass("is_category");
|
@@ -504,7 +622,10 @@ var buttonizer = {
|
|
504 |
.attr("id", "button_"+ buttonId +"_text").val("");
|
505 |
|
506 |
// Iconfield
|
507 |
-
jQuery("#btn_row_"+ buttonId + " .
|
|
|
|
|
|
|
508 |
|
509 |
// Button title
|
510 |
jQuery("#btn_row_"+ buttonId + " .button_title").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_title]");
|
@@ -512,6 +633,13 @@ var buttonizer = {
|
|
512 |
// Button show on page category
|
513 |
jQuery("#btn_row_"+ buttonId + " #button_category").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_pages]");
|
514 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
// Show on phone
|
516 |
jQuery("#btn_row_"+ buttonId + " .button_showonphone")
|
517 |
.attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_phone]")
|
@@ -587,12 +715,28 @@ var buttonizer = {
|
|
587 |
data.text = '<p>This dialog has not text.</p><p>Weird, isn\'t it?</p>';
|
588 |
}
|
589 |
|
590 |
-
if(!data.
|
591 |
-
data.
|
|
|
|
|
|
|
|
|
592 |
}
|
593 |
|
594 |
-
if(!data.
|
595 |
-
data.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
596 |
}
|
597 |
|
598 |
var windowStyle = '<div class="fs-modal active" id="buttonizer-window-'+ currentWindow +'"><div class="fs-modal-dialog">';
|
@@ -603,19 +747,23 @@ var buttonizer = {
|
|
603 |
windowStyle += data.text;
|
604 |
windowStyle += '</div></div>';
|
605 |
|
606 |
-
windowStyle += '<div class="fs-modal-footer"
|
607 |
|
608 |
windowStyle += '</div></div>';
|
609 |
|
610 |
jQuery("body").append(windowStyle);
|
611 |
|
|
|
|
|
612 |
jQuery("#buttonizer-window-"+ currentWindow + " .fs-close, #buttonizer-window-"+ currentWindow + " button").click(function(e) {
|
613 |
e.preventDefault();
|
614 |
jQuery("#buttonizer-window-"+ currentWindow).fadeOut();
|
615 |
|
616 |
-
if(
|
617 |
-
data.
|
618 |
}
|
|
|
|
|
619 |
})
|
620 |
},
|
621 |
|
35 |
buttonizer.settings.hasChanges = true;
|
36 |
});
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
setTimeout(function() {
|
39 |
// Init preview button
|
40 |
jQuery('.button-preview').css({
|
52 |
});
|
53 |
}, 500);
|
54 |
|
55 |
+
jQuery(".vertical-tabs .icon-or-image").each(function() {
|
56 |
+
buttonizer.iconImageHandler(jQuery(this));
|
57 |
+
});
|
58 |
+
|
59 |
// Remove the spam from other plugins
|
60 |
setTimeout(function() {
|
61 |
var foundOurContent = false;
|
72 |
}
|
73 |
}, 1000);
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
// Hash
|
76 |
if(document.location.hash != "") {
|
77 |
var tabKey = document.location.hash;
|
86 |
});
|
87 |
|
88 |
buttonizer.loadPageCategorie();
|
89 |
+
|
90 |
+
if(!jQuery(".button-row").hasClass("is_category")) {
|
91 |
+
buttonizer.addSortable();
|
92 |
+
}
|
93 |
},
|
94 |
|
95 |
proInfoWindow: function() {
|
106 |
'<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Show on timeout</div>' +
|
107 |
'<br />' +
|
108 |
'<p class="color-buttonizer text-right"><b>Do you <span><i class="fa fa-heart"></i></span> these features?</b></p>',
|
109 |
+
confirmText: 'Upgrade',
|
110 |
+
onConfirm: function() {
|
111 |
document.location.href = 'admin.php?page=Buttonizer-pricing';
|
112 |
}
|
113 |
});
|
143 |
// jQuery("type[name=_wp_http_referer]").val();
|
144 |
},
|
145 |
|
146 |
+
iconImageHandler: function(currentContainer) {
|
147 |
+
var type = currentContainer.data("type");
|
148 |
+
|
149 |
+
// Chooser
|
150 |
+
currentContainer.find(".placeholder-choose a").click(function() {
|
151 |
+
if(type == 'image') {
|
152 |
+
type = 'icon';
|
153 |
+
|
154 |
+
currentContainer.find(".image-placeholder").hide();
|
155 |
+
currentContainer.find(".icon-placeholder").show();
|
156 |
+
|
157 |
+
currentContainer.find("input").val("");
|
158 |
+
}else {
|
159 |
+
type = 'image';
|
160 |
+
|
161 |
+
currentContainer.find(".image-placeholder").show();
|
162 |
+
currentContainer.find(".icon-placeholder").hide();
|
163 |
+
}
|
164 |
+
});
|
165 |
+
|
166 |
+
// Insert image and icon type
|
167 |
+
currentContainer.find(".image-uploader-button").click(function(e) {
|
168 |
+
e.preventDefault();
|
169 |
+
|
170 |
+
var custom_uploader = wp.media({
|
171 |
+
title: 'Choose button icon',
|
172 |
+
multiple: false
|
173 |
+
})
|
174 |
+
.on('select', function() {
|
175 |
+
var attachment = custom_uploader.state().get('selection').first().toJSON();
|
176 |
+
currentContainer.find('.button-preview img').attr( 'src', attachment.url).show();
|
177 |
+
currentContainer.find(".button-preview").show();
|
178 |
+
|
179 |
+
currentContainer.find('input').val(attachment.url);
|
180 |
+
})
|
181 |
+
.open();
|
182 |
+
});
|
183 |
+
},
|
184 |
+
|
185 |
+
colorPaletHandler: function(colorPalet) {
|
186 |
+
var buttonId = colorPalet.attr("data-btnid");
|
187 |
+
var customColors = false;
|
188 |
+
var currentColors = {
|
189 |
+
default: buttonizer.rgb2hex(colorPalet.find(".color.default").css('background-color')),
|
190 |
+
pushed: buttonizer.rgb2hex(colorPalet.find(".color.pushed").css('background-color')),
|
191 |
+
icon: buttonizer.rgb2hex(colorPalet.find(".color.icon").css('background-color'))
|
192 |
+
};
|
193 |
+
|
194 |
+
jQuery("#btn_row_"+ buttonId +" .button-preview").css({ 'background-color': currentColors.default });
|
195 |
+
|
196 |
+
colorPalet.click(function() {
|
197 |
+
var randomText = (buttonizer.settings.windowNumber + 1);
|
198 |
+
|
199 |
+
buttonizer.createWindow({
|
200 |
+
title: 'Choose colors',
|
201 |
+
text:
|
202 |
+
'<p>Choose the colors here of your button. You can give every button different colors.</p>' +
|
203 |
+
'<table width="100%" class="color-chooser-table">' +
|
204 |
+
'<tr><td width="150">' +
|
205 |
+
'<b>Button color</b>' +
|
206 |
+
'</td><td>' +
|
207 |
+
'<input type="text" class="colorpalet-initializer" value="'+ currentColors.default +'" id="color_default_'+ randomText +'" />' +
|
208 |
+
'</td></tr>' +
|
209 |
+
|
210 |
+
'<tr><td>' +
|
211 |
+
'<b>Pushed/hover color</b>' +
|
212 |
+
'</td><td>' +
|
213 |
+
'<input type="text" class="colorpalet-initializer" value="'+ currentColors.pushed +'" id="color_pushed_'+ randomText +'" />' +
|
214 |
+
'</td></tr>' +
|
215 |
+
|
216 |
+
'<tr><td>' +
|
217 |
+
'<b>Icon color</b>' +
|
218 |
+
'</td><td>' +
|
219 |
+
'<input type="text" class="colorpalet-initializer" value="'+ currentColors.icon +'" id="color_icon_'+ randomText +'" />' +
|
220 |
+
'</td></tr>' +
|
221 |
+
'</table>',
|
222 |
+
|
223 |
+
confirmText: 'Choose',
|
224 |
+
|
225 |
+
afterInit: function() {
|
226 |
+
jQuery(".colorpalet-initializer").wpColorPicker();
|
227 |
+
},
|
228 |
+
|
229 |
+
onConfirm: function() {
|
230 |
+
currentColors.default = jQuery("#color_default_" + randomText).val();
|
231 |
+
currentColors.pushed = jQuery("#color_pushed_" + randomText).val();
|
232 |
+
currentColors.icon = jQuery("#color_icon_" + randomText).val();
|
233 |
+
jQuery("#btn_row_"+ buttonId +" .button-preview").css({ 'background-color': currentColors.default });
|
234 |
+
customColors = true;
|
235 |
+
|
236 |
+
jQuery("#reset_colors_" + buttonId).show();
|
237 |
+
updatePalet();
|
238 |
+
}
|
239 |
+
});
|
240 |
+
});
|
241 |
+
|
242 |
+
jQuery("#reset_colors_" + buttonId).click(function() {
|
243 |
+
buttonizer.createWindow({
|
244 |
+
title: 'Back to default colors',
|
245 |
+
text: '<p>The button colors will reset to the choosen default button colors (from the general settings).</p>' +
|
246 |
+
'<p>Are you sure you want to get the default colors for this button?</p>',
|
247 |
+
|
248 |
+
canCancel: true,
|
249 |
+
cancelText: 'Cancel',
|
250 |
+
confirmText: '<i class="fa fa-thumbs-o-up"></i> Yes, I am',
|
251 |
+
|
252 |
+
onConfirm: function() {
|
253 |
+
customColors = false;
|
254 |
+
currentColors.default = colorPalet.find(".color.default").attr("data-default");
|
255 |
+
currentColors.pushed = colorPalet.find(".color.pushed").attr("data-default");
|
256 |
+
currentColors.icon = colorPalet.find(".color.icon").attr("data-default");
|
257 |
+
updatePalet();
|
258 |
+
jQuery("#reset_colors_" + buttonId).hide();
|
259 |
+
jQuery("#btn_row_"+ buttonId +" .button-preview").css({ 'background-color': currentColors.default });
|
260 |
+
}
|
261 |
+
});
|
262 |
+
});
|
263 |
+
|
264 |
+
function updatePalet() {
|
265 |
+
colorPalet.find(".color.default").css({ 'background-color': currentColors.default});
|
266 |
+
colorPalet.find(".color.pushed").css({ 'background-color': currentColors.pushed});
|
267 |
+
colorPalet.find(".color.icon").css({ 'background-color': currentColors.icon});
|
268 |
+
|
269 |
+
colorPalet.find("input.custom").val(customColors ? '1' : '0').change();
|
270 |
+
colorPalet.find("input.default").val(currentColors.default);
|
271 |
+
colorPalet.find("input.pushed").val(currentColors.pushed);
|
272 |
+
colorPalet.find("input.icon").val(currentColors.icon);
|
273 |
+
}
|
274 |
+
},
|
275 |
+
|
276 |
+
rgb2hex: function(rgb) {
|
277 |
+
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
278 |
+
function hex(x) {
|
279 |
+
return ("0" + parseInt(x).toString(16)).slice(-2);
|
280 |
+
}
|
281 |
+
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
|
282 |
+
},
|
283 |
+
|
284 |
loadPageCategorie: function() {
|
285 |
jQuery(".page-categorie-styling").each(function() {
|
286 |
var maxLoaded = 10;
|
290 |
|
291 |
table.find("tr").each(function() {
|
292 |
jQuery(this).click(function(e) {
|
293 |
+
buttonizer.settings.hasChanges = true;
|
294 |
if(jQuery(e.target).attr("type") != "checkbox") {
|
295 |
jQuery(this).find("input").click();
|
296 |
}
|
301 |
maxLoaded += 10;
|
302 |
isLoaded = 0;
|
303 |
|
|
|
304 |
table.find("tr").each(function() {
|
305 |
isLoaded++;
|
306 |
if(isLoaded <= maxLoaded) {
|
353 |
});
|
354 |
|
355 |
jQuery(".button-row").each(function() {
|
356 |
+
if(jQuery(this).attr("button-id") == '-1') {
|
357 |
+
return;
|
358 |
+
}
|
359 |
+
|
360 |
var rowObj = jQuery(this);
|
361 |
+
var rowId = jQuery(this).attr("button-id");
|
362 |
var buttonTitle = rowObj.find(".row-info span .row-title");
|
363 |
var buttonEdit = rowObj.find(".row-info .pencil-edit");
|
364 |
var buttonTitleField = rowObj.find(".button_title");
|
374 |
buttonTitle.html(buttonTitleField.val());
|
375 |
|
376 |
rowObj.find(".row-info").click(function(e) {
|
|
|
377 |
if(
|
378 |
jQuery(e.target).hasClass('fa-desktop') ||
|
379 |
jQuery(e.target).hasClass('fa-mobile') ||
|
437 |
});
|
438 |
|
439 |
jQuery("#button_"+ rowId +"_icon").change(function(e) {
|
|
|
440 |
rowObj.find(".button-icon").attr('class', "fa "+ jQuery(this).val() +" button-icon");
|
441 |
});
|
442 |
|
456 |
rowObj.find(".page-categorie-styling input[type=checkbox]").removeAttr("checked");
|
457 |
}
|
458 |
});
|
459 |
+
}else{
|
460 |
+
// Image icon handler
|
461 |
+
buttonizer.iconImageHandler(rowObj.find(".icon-or-image"));
|
462 |
+
buttonizer.colorPaletHandler(rowObj.find(".button-color-palet"));
|
463 |
}
|
464 |
});
|
465 |
},
|
555 |
if(jQuery("#new-button").hasClass('disabled')) {
|
556 |
return;
|
557 |
}
|
558 |
+
buttonizer.settings.hasChanges = true;
|
559 |
+
|
560 |
jQuery(".buttonizer-no-buttons").hide();
|
561 |
|
562 |
var isCategory = jQuery(".button-row[button-id=-1]").hasClass("is_category");
|
622 |
.attr("id", "button_"+ buttonId +"_text").val("");
|
623 |
|
624 |
// Iconfield
|
625 |
+
jQuery("#btn_row_"+ buttonId + " .icon-placeholder select").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_icon]");
|
626 |
+
|
627 |
+
// Iconfield
|
628 |
+
jQuery("#btn_row_"+ buttonId + " .image-placeholder input").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_image]");
|
629 |
|
630 |
// Button title
|
631 |
jQuery("#btn_row_"+ buttonId + " .button_title").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_title]");
|
633 |
// Button show on page category
|
634 |
jQuery("#btn_row_"+ buttonId + " #button_category").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_pages]");
|
635 |
|
636 |
+
// Color palets
|
637 |
+
jQuery("#btn_row_"+ buttonId + " input.custom").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_using_custom_colors]");
|
638 |
+
|
639 |
+
jQuery("#btn_row_"+ buttonId + " input.default").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_colors_button]");
|
640 |
+
jQuery("#btn_row_"+ buttonId + " input.pushed").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_colors_pushed]");
|
641 |
+
jQuery("#btn_row_"+ buttonId + " input.icon").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_colors_icon]");
|
642 |
+
|
643 |
// Show on phone
|
644 |
jQuery("#btn_row_"+ buttonId + " .button_showonphone")
|
645 |
.attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_phone]")
|
715 |
data.text = '<p>This dialog has not text.</p><p>Weird, isn\'t it?</p>';
|
716 |
}
|
717 |
|
718 |
+
if(!data.confirmText) {
|
719 |
+
data.confirmText = 'Close';
|
720 |
+
}
|
721 |
+
|
722 |
+
if(!data.canCancel) {
|
723 |
+
data.canCancel = false;
|
724 |
}
|
725 |
|
726 |
+
if(!data.cancelText) {
|
727 |
+
data.cancelText = 'Cancel';
|
728 |
+
}
|
729 |
+
|
730 |
+
if(!data.onConfirm) {
|
731 |
+
data.onConfirm = function() {};
|
732 |
+
}
|
733 |
+
|
734 |
+
if(!data.onClose) {
|
735 |
+
data.onClose = function() {};
|
736 |
+
}
|
737 |
+
|
738 |
+
if(!data.afterInit) {
|
739 |
+
data.afterInit = function() {};
|
740 |
}
|
741 |
|
742 |
var windowStyle = '<div class="fs-modal active" id="buttonizer-window-'+ currentWindow +'"><div class="fs-modal-dialog">';
|
747 |
windowStyle += data.text;
|
748 |
windowStyle += '</div></div>';
|
749 |
|
750 |
+
windowStyle += '<div class="fs-modal-footer">' + (data.canCancel ? '<button class="button cancel" tabindex="3">'+ data.cancelText +'</button> ' : '') +' <button class="button button-primary confirm" tabindex="4">'+ data.confirmText +'</button></div>';
|
751 |
|
752 |
windowStyle += '</div></div>';
|
753 |
|
754 |
jQuery("body").append(windowStyle);
|
755 |
|
756 |
+
jQuery(document).ready(data.afterInit);
|
757 |
+
|
758 |
jQuery("#buttonizer-window-"+ currentWindow + " .fs-close, #buttonizer-window-"+ currentWindow + " button").click(function(e) {
|
759 |
e.preventDefault();
|
760 |
jQuery("#buttonizer-window-"+ currentWindow).fadeOut();
|
761 |
|
762 |
+
if(jQuery(this).hasClass("confirm")) {
|
763 |
+
data.onConfirm();
|
764 |
}
|
765 |
+
|
766 |
+
data.onClose();
|
767 |
})
|
768 |
},
|
769 |
|
js/wp_media_uploader.js
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
|
27 |
}, options );
|
28 |
|
29 |
-
if(typeof $(settings.target).
|
30 |
var img = $(settings.target).data("image");
|
31 |
}else{
|
32 |
var img = "";
|
26 |
|
27 |
}, options );
|
28 |
|
29 |
+
if(typeof $(settings.target).attr("data-image") != 'undefined') {
|
30 |
var img = $(settings.target).data("image");
|
31 |
}else{
|
32 |
var img = "";
|
readme.txt
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
-
=== Wordpress Smart Floating Action and Conversion Button Plugin - Buttonizer ===
|
2 |
Contributors: Buttonizer, freemius
|
3 |
Buy plugin: https://buttonizer.pro
|
4 |
-
Tags:
|
5 |
Requires at least: 4.2
|
6 |
Tested up to: 4.8.1
|
7 |
-
Stable tag: 1.0.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
Add & manage floating action buttons. From call buttons to social sharing buttons. Add page rules and decide to show your
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
The Buttonizer is a smart conversion-targeted button that will make your website more efficient. From making a simple call button, to a navigation button to open Facebook messenger. The Buttonizer is a new way to give a boost to your number of interactions, actions and conversions from your website visitor by adding one or multiple Customizable Smart Multifunctional Floating Button in the corner of your website.
|
16 |
|
17 |
-
With the Buttonizer it
|
18 |
|
19 |
And the beauty of all: All actions are hidden in one button. The moment a visitor clicks on your Floating Action Button it will *pop* all specific buttons you've set for that page. Track each single button in Google Analytics so you can see which actions your visitors prefer.
|
20 |
|
@@ -23,6 +23,7 @@ Download the Buttonizer for free and make your first Smart Conversion Button in
|
|
23 |
= Major features in Buttonizer include: =
|
24 |
|
25 |
* **Floating Action Buttons** - Make different action buttons, like a call button on your mobile website;
|
|
|
26 |
* **No coding** - The plugin takes care of everything;
|
27 |
* **Styling options** - Style your button by choosing your color with an easy color-picker;
|
28 |
* **Positioning** - Easily choose the position of your button;
|
@@ -37,10 +38,14 @@ Download the Buttonizer for free and make your first Smart Conversion Button in
|
|
37 |
|
38 |
Download the free version or go premium and get to add an infinite number of buttons and page rules.
|
39 |
|
40 |
-
= MAKE A FLOATING CALL BUTTON ONLY FOR MOBILE WITH BUTTONIZER =
|
41 |
|
42 |
Make it a lot more easier for your mobile website visitors to call you. With the Buttonizer you can easily make a floating call button for your mobile website. In just 2 minutes you can make your own click to call button.
|
43 |
|
|
|
|
|
|
|
|
|
44 |
= STYLING OPTIONS & ICONS =
|
45 |
|
46 |
Next to choosing the color of your button, the color when someone click / hover over your button and the color of your icon, there is more. With the Buttonizer you can easily choose between font awesome icons but you can also add you own image / logo or icon. You can even add a moving icon in your button.
|
@@ -53,13 +58,13 @@ Decide for each button if you want to show it on your desktop, mobile or both. S
|
|
53 |
|
54 |
Of Course you can add a button for all your pages. But it is also possible to show a floating action button on specific pages. How? By easily adding a page category to the button. In a page category you can simply include or exclude the selected pages. This way you can add a specific floating call button selected pages and every page has its own conversion purpose.
|
55 |
|
56 |
-
= OPENING HOURS =
|
57 |
|
58 |
-
Show a floating action button only when your business is open. As an example: Add Facebook Messenger as a button and set it to show only on opening hours so your clients won't chat with your company outside opening hours.
|
59 |
|
60 |
= AUTO EVENT TRACKING IN GOOGLE ANALYTICS =
|
61 |
|
62 |
-
Each button gets tracked on your website as long as your Google Analytics code is installed on your website. When you don
|
63 |
|
64 |
The best thing of all, the name you give to your button, is also seen in your Google analytics event page so you always know which buttons outperform the other.
|
65 |
|
@@ -71,6 +76,9 @@ If you have a blog, share news articles, or have lucrative products that people
|
|
71 |
|
72 |
You can decide if you want your Buttonizer to show after a specific amount of time that your visitor is on your website or when after a percentage amount of scroll on a page. For example, the scroll depth option can come in handy when you have a blog and you want to display social sharing options after your visitor has red a good part of your article. This way you ask the attention of your readers at just the right time.
|
73 |
|
|
|
|
|
|
|
74 |
== Installation ==
|
75 |
|
76 |
= For automatic installation: =
|
@@ -83,7 +91,7 @@ You can decide if you want your Buttonizer to show after a specific amount of ti
|
|
83 |
* Click the Activate Plugin link.
|
84 |
|
85 |
= For manual installation: =
|
86 |
-
* You should have access to the server where WordPress is installed. If you don
|
87 |
* Copy the plugin zip file up to your server and unzip it somewhere on the file system.
|
88 |
* Copy the "Buttonizer" folder into the /wp-content/plugins directory of your WordPress installation.
|
89 |
* Login to your website and go to the Plugins section of your admin panel.
|
@@ -101,19 +109,33 @@ The Buttonizer is a new way to give a boost to your number of interactions, acti
|
|
101 |
|
102 |
= What's the difference between floating action buttons or other conversion buttons? =
|
103 |
|
104 |
-
With Buttonizer you don't just add the same button to every page on your website. No, the key is that each action must be relevant. With the Buttonizer it
|
105 |
|
106 |
-
And the beauty of all: All actions are hidden in one button. The moment a visitor clicks on your Floating Action Button it will *pop* all specific buttons you
|
107 |
|
108 |
-
In fact the Buttonizer is an addiction to use. You
|
109 |
|
110 |
== Changelog ==
|
111 |
|
112 |
-
= 1.0.
|
113 |
-
Added new feature:
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
|
|
|
|
|
|
|
|
116 |
|
|
|
|
|
|
|
117 |
|
118 |
= 1.0.2 =
|
119 |
Launch of the Buttonizer Floating Action Button Plugin!
|
1 |
+
=== Wordpress Smart Floating Action and Conversion Button Plugin - Buttonizer ===
|
2 |
Contributors: Buttonizer, freemius
|
3 |
Buy plugin: https://buttonizer.pro
|
4 |
+
Tags: floating menu, action button, call button, floating action button, Social Sharing button
|
5 |
Requires at least: 4.2
|
6 |
Tested up to: 4.8.1
|
7 |
+
Stable tag: 1.0.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
Add & manage floating action buttons. From call buttons to social sharing buttons. Add page rules and decide to show your floating menu on desktop, mobile or both.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
The Buttonizer is a smart conversion-targeted button that will make your website more efficient. From making a simple call button, to a navigation button to open Facebook messenger. The Buttonizer is a new way to give a boost to your number of interactions, actions and conversions from your website visitor by adding one or multiple Customizable Smart Multifunctional Floating Button in the corner of your website.
|
16 |
|
17 |
+
With the Buttonizer it's possible to add buttons to a select number of pages with "page rules", decide for each button if it shows on mobile and/or desktop, style your button with your own icons & colors, add social sharing buttons, Show the button on opening hours and make use of many more rules.
|
18 |
|
19 |
And the beauty of all: All actions are hidden in one button. The moment a visitor clicks on your Floating Action Button it will *pop* all specific buttons you've set for that page. Track each single button in Google Analytics so you can see which actions your visitors prefer.
|
20 |
|
23 |
= Major features in Buttonizer include: =
|
24 |
|
25 |
* **Floating Action Buttons** - Make different action buttons, like a call button on your mobile website;
|
26 |
+
* **Floating Menu** - Create a dynamic Floating Menu, style each button and choose which items are shown on mobile, desktop or both;
|
27 |
* **No coding** - The plugin takes care of everything;
|
28 |
* **Styling options** - Style your button by choosing your color with an easy color-picker;
|
29 |
* **Positioning** - Easily choose the position of your button;
|
38 |
|
39 |
Download the free version or go premium and get to add an infinite number of buttons and page rules.
|
40 |
|
41 |
+
= CALL NOW: MAKE A FLOATING CALL BUTTON ONLY FOR MOBILE WITH BUTTONIZER =
|
42 |
|
43 |
Make it a lot more easier for your mobile website visitors to call you. With the Buttonizer you can easily make a floating call button for your mobile website. In just 2 minutes you can make your own click to call button.
|
44 |
|
45 |
+
= FLOATING MENU =
|
46 |
+
|
47 |
+
Create Dynamic Floating Menus. Choose the positioning of your menu, style your buttons, choose which actions (menu items) are shown on a set of rules (pages, desktop/mobile, opening hours etc.)
|
48 |
+
|
49 |
= STYLING OPTIONS & ICONS =
|
50 |
|
51 |
Next to choosing the color of your button, the color when someone click / hover over your button and the color of your icon, there is more. With the Buttonizer you can easily choose between font awesome icons but you can also add you own image / logo or icon. You can even add a moving icon in your button.
|
58 |
|
59 |
Of Course you can add a button for all your pages. But it is also possible to show a floating action button on specific pages. How? By easily adding a page category to the button. In a page category you can simply include or exclude the selected pages. This way you can add a specific floating call button selected pages and every page has its own conversion purpose.
|
60 |
|
61 |
+
= SHOW ON/AFTER OPENING HOURS =
|
62 |
|
63 |
+
Show a floating action button only when your business is open or closed. As an example: Add Facebook Messenger as a button and set it to show only on opening hours so your clients won't chat with your company outside opening hours. You can then add another button that is only shown after opening hours.
|
64 |
|
65 |
= AUTO EVENT TRACKING IN GOOGLE ANALYTICS =
|
66 |
|
67 |
+
Each button gets tracked on your website as long as your Google Analytics code is installed on your website. When you don't have it installed, or you have Google Tag Manager installed instead but still want to track your clicks on your floating action buttons? Than you can add you Google Analytics code manually in the setting tab of Buttonizer.
|
68 |
|
69 |
The best thing of all, the name you give to your button, is also seen in your Google analytics event page so you always know which buttons outperform the other.
|
70 |
|
76 |
|
77 |
You can decide if you want your Buttonizer to show after a specific amount of time that your visitor is on your website or when after a percentage amount of scroll on a page. For example, the scroll depth option can come in handy when you have a blog and you want to display social sharing options after your visitor has red a good part of your article. This way you ask the attention of your readers at just the right time.
|
78 |
|
79 |
+
It is also possible to add Exit Intent. The floating action button will show itself when a visitors tries to leave the website.
|
80 |
+
|
81 |
+
|
82 |
== Installation ==
|
83 |
|
84 |
= For automatic installation: =
|
91 |
* Click the Activate Plugin link.
|
92 |
|
93 |
= For manual installation: =
|
94 |
+
* You should have access to the server where WordPress is installed. If you don't, see your system administrator.
|
95 |
* Copy the plugin zip file up to your server and unzip it somewhere on the file system.
|
96 |
* Copy the "Buttonizer" folder into the /wp-content/plugins directory of your WordPress installation.
|
97 |
* Login to your website and go to the Plugins section of your admin panel.
|
109 |
|
110 |
= What's the difference between floating action buttons or other conversion buttons? =
|
111 |
|
112 |
+
With Buttonizer you don't just add the same button to every page on your website. No, the key is that each action must be relevant. With the Buttonizer it's possible to add buttons to a select number of pages with "page rules", decide for each button if it shows on mobile and/or desktop, style your button with your own icons & colors, add social sharing buttons, Show the button on opening hours and make use of many more rules.
|
113 |
|
114 |
+
And the beauty of all: All actions are hidden in one button. The moment a visitor clicks on your Floating Action Button it will *pop* all specific buttons you've set for that page. Track each single button in Google Analytics so you can see which actions your visitors prefer.
|
115 |
|
116 |
+
In fact the Buttonizer is an addiction to use. You're website visitors will interact as never before.
|
117 |
|
118 |
== Changelog ==
|
119 |
|
120 |
+
= 1.0.6 =
|
121 |
+
Added new feature: Change the color of each button
|
122 |
+
From now on you can change the color of each floating action button you make. If you want to create a Floating Menu with different button colors, it is now possible!
|
123 |
+
|
124 |
+
Added new feature: New animation floating menu
|
125 |
+
We now have a new animation to open the floating menu (multiple floating action). Instead of showing the buttons on the top of each other you can the floating buttons make a 45 degrees circle.
|
126 |
+
|
127 |
+
= 1.0.5 =
|
128 |
+
Added new feature: Add own images and icons
|
129 |
+
You can now add your own images and icons for each button instead of only the main button :).
|
130 |
|
131 |
+
= 1.0.4 =
|
132 |
+
Added new feature: Drag & Drop for floating menu
|
133 |
+
- Drag & Drop. You can Drag & Drop your buttons so you can choose in which order you buttons get show when you want to show more then one button on one page. This is perfect when you want to add a Floating Menu. You can easily change the positions of your buttons.
|
134 |
+
- We did some bugfixing
|
135 |
|
136 |
+
= 1.0.3 =
|
137 |
+
Added new feature:
|
138 |
+
- Exit intent: Let you Floating Action Buttons with a clean ’pop’ when your visitor tries to leave your website. By adding exit intent you can increase the number of conversions and keep your leaving webvisitors
|
139 |
|
140 |
= 1.0.2 =
|
141 |
Launch of the Buttonizer Floating Action Button Plugin!
|