PluginProbe
Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder / 1.0.10
Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder v1.0.10
3.6.0 3.5.0 trunk 1.0.10 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.6.1 1.0.7 1.0.8 1.0.9 1.1 1.1.1 1.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5 1.5.1 All 110 releases
buttonizer-multifunctional-button / classes / admin / General.php

General.php in Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder 1.0.10, at classes/admin/General.php

392 lines 22.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 Copyright 2017 Buttonizer
19 */
20 namespace Buttonizer\Admin;
21
22 # No script kiddies
23 defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
24 class General
25 {
26 private $aSavedData = array() ;
27 private $aSubCatagories = array() ;
28 private $aSubPages = array() ;
29 private $aFontAwesome = array() ;
30 private $oIconManager = array() ;
31 private $bHasProFeature = false ;
32 public function __construct( $aFontAwesome, $oIconManager )
33 {
34 $this->aFontAwesome = $aFontAwesome;
35 $this->oIconManager = $oIconManager;
36 $this->loadData();
37 $this->registerDesignSettings();
38 $this->registerPlacingSettings();
39 $this->registerAdvancedSettings();
40 $this->registerSocialSettings();
41 $this->registerOther();
42 $this->generatePage();
43 }
44
45 private function loadData()
46 {
47 $this->aSavedData = (array) get_option( 'buttonizer_general_settings' );
48 }
49
50 private function generatePage()
51 {
52 $sTabs = '';
53 $sTabsContent = '';
54 $bFirstTab = true;
55 // Get tabs
56 foreach ( $this->aSubCatagories as $sKey => $sTitle ) {
57 $sTabs .= '<a href="#tab_' . $sKey . '" onclick="javascript:buttonizer.tabNavigate(\'' . $sKey . '\')" id="tab_container_' . $sKey . '" class="nav-tab ' . (( $bFirstTab ? 'first nav-tab-active' : '' )) . '">' . $sTitle . '</a>';
58 $sTabsContent .= '<div id="tab_container_' . $sKey . '" ' . (( !$bFirstTab ? 'style="display: none;"' : '' )) . ' class="tab-container">' . $this->aSubPages[$sKey] . '</div>';
59 $bFirstTab = false;
60 }
61 echo '<table class="vertical-tabs">
62 <tr>
63 <td class="tabs">' . $sTabs . '</td>
64 <td class="tabsholder">' . $sTabsContent . '</td>
65 </tr>
66 </table>' ;
67 }
68
69 /*
70 * Register settings
71 */
72 public function registerPlacingSettings()
73 {
74 $this->aSubCatagories['placing'] = __( 'Placing &amp; animations', BUTTONIZER_SLUG );
75 $this->aSubPages['placing'] = '<table class="form-table"><tbody>';
76 $this->aSubPages['placing'] .= '<tr>
77 <td colspan="2">
78 <h2>Placing &amp; animations</h2>
79 <p>You can change here the button position and the button animation.</p>
80 </td></tr>';
81 $this->aSubPages['placing'] .= $this->createFormField( 'Right', array( &$this, 'field_position_right' ), 'intro-position' );
82 $this->aSubPages['placing'] .= $this->createFormField( 'Bottom', array( &$this, 'field_position_bottom' ) );
83 $this->aSubPages['placing'] .= $this->createFormField( 'Button animation', array( &$this, 'field_button_animation' ), 'intro-animaton' );
84 $this->aSubPages['placing'] .= $this->createFormField( 'Attention animation', array( &$this, 'field_attention_animation' ), 'intro-attention' );
85 $this->aSubPages['placing'] .= '</tbody></table>';
86 }
87
88 /*
89 * Register settings
90 */
91 public function registerDesignSettings()
92 {
93 $this->aSubCatagories['design'] = __( 'Design', BUTTONIZER_SLUG );
94 $this->aSubPages['design'] = '<table class="form-table"><tbody>';
95 $this->aSubPages['design'] .= '<tr>
96 <td colspan="2">
97 <h2>Design</h2>
98 <p>Style your button, make it blinky as you wish. You can change here the main color, main label and set the label hover types.</p>
99 </td></tr>';
100 $this->aSubPages['design'] .= '</tbody></table>';
101 $this->aSubPages['design'] .= '<table class="form-table intro-styling"><tbody>';
102 $this->aSubPages['design'] .= $this->createFormField( 'Color button unpushed', array( &$this, 'field_button_unpushed' ) );
103 $this->aSubPages['design'] .= $this->createFormField( 'Color button pushed', array( &$this, 'field_button_pushed' ) );
104 $this->aSubPages['design'] .= $this->createFormField( 'Icon color', array( &$this, 'field_icon_color' ) );
105 $this->aSubPages['design'] .= '</tbody></table>';
106 $this->aSubPages['design'] .= '<table class="form-table" style="margin-top: 0;"><tbody>';
107 $this->aSubPages['design'] .= $this->createFormField( 'Main icon<br /><br /><small>This icon will apear in a button when you have multiple floating action buttons on one page. When you click on the icon the other floating action button will \'pop\' open​.</small>', array( &$this, 'field_icon_icon' ), 'intro-icon' );
108 $this->aSubPages['design'] .= $this->createFormField( 'Main label<br /><br /><small>This label will apear next to the \'main button\' when you have multiple floating action buttons on one page.</small>', array( &$this, 'field_icon_label' ), 'intro-label' );
109 $this->aSubPages['design'] .= $this->createFormField( 'Only show labels on hover<br /><br /><small>Only show the label when you hover the button.</small>', array( &$this, 'field_label_show_on_hover' ) );
110 $this->aSubPages['design'] .= '</tbody></table>';
111 }
112
113 public function registerAdvancedSettings()
114 {
115 $this->aSubCatagories['advanced'] = __( 'Advanced settings', BUTTONIZER_SLUG );
116 $this->aSubPages['advanced'] = '<table class="form-table"><tbody>';
117 $this->aSubPages['advanced'] .= '<tr>
118 <td colspan="2">
119 <h2>Advanced settings</h2>
120 <p></p>
121 </td></tr>';
122 $this->aSubPages['advanced'] .= $this->createFormField( '
123 <span class="info-class">
124 <i class="fa fa-info-circle"></i>
125 <span>If you have your Google Analytics tracking code already installed you can ignore this setting. If you want to be sure that your buttons are tracked in your Google Analytics account? Then go to your Google Analytics account > Click on Real Time > Events and open your website in another tab. Click on a Buttonizer button and check if you see that the click gets tracked in Google Analytics. If this doesn\'t happen than go to your google Analytics settings page > Click on tracking code and copy your tracking-ID. It should look like this (UA-00000000-0)
126 </span>
127 </span>
128 Google Analytics', array( &$this, 'field_analytics_code' ) );
129 $this->aSubPages['advanced'] .= $this->createFieldset( 'Show on scroll' );
130 // Show on scroll
131 $this->aSubPages['advanced'] .= $this->createFormField( '
132 <span class="info-class">
133 <i class="fa fa-info-circle"></i>
134 <span>
135 When selected, the buttons will be shown after the user has scrolled a percentage of the page.
136 </span>
137 </span>
138 Show on scroll?', array( &$this, 'field_show_on_scroll' ) );
139 $this->aSubPages['advanced'] .= $this->createFormField( '
140 <span class="info-class">
141 <i class="fa fa-info-circle"></i>
142 <span>
143 Enter a percentage, starting from 0, up to 100.
144 </span>
145 </span>
146 % from top to show:', array( &$this, 'field_procent_to_scroll' ) );
147 $this->aSubPages['advanced'] .= $this->closeFieldset();
148 // Show after timeout
149 $this->aSubPages['advanced'] .= $this->createFieldset( 'Show after timeout' );
150 $this->aSubPages['advanced'] .= $this->createFormField( '
151 <span class="info-class">
152 <i class="fa fa-info-circle"></i>
153 <span>
154 When selected, the buttons will be shown when the user browsers more than the given seconds. So when you say: Show after 20<i>000</i>ms, the button shows after the user browsed on the website for 20 seconds.
155 </span>
156 </span>
157 Show after timeout?', array( &$this, 'field_show_on_timeout' ) );
158 $this->aSubPages['advanced'] .= $this->createFormField( '
159 <span class="info-class">
160 <i class="fa fa-info-circle"></i>
161 <span>
162 Enter the miliseconds from when the buttons must get shown to the user.<br />
163 <br />
164 1 second = 1000 miliseconds<br />
165 10 seconds = 10000 miliseconds<br />
166 1 minute = 60000 miliseconds<br />
167 </span>
168 </span>
169 Milliseconds: ', array( &$this, 'field_time_to_timeout' ) );
170 $this->aSubPages['advanced'] .= $this->closeFieldset();
171 // Exit intent
172 $this->aSubPages['advanced'] .= $this->createFieldset( 'Exit intent' );
173 $this->aSubPages['advanced'] .= $this->createFormField( '
174 <span class="info-class">
175 <i class="fa fa-info-circle"></i>
176 <span>
177 When selected, the buttons will open with a effect when your guest/user tries to escape from your website. The user gets attracted from your buttons.
178 </span>
179 </span>
180 Exit intent', array( &$this, 'field_exit_intent' ) );
181 $this->aSubPages['advanced'] .= $this->createFormField( '
182 <span class="info-class">
183 <i class="fa fa-info-circle"></i>
184 <span>
185 When the exit intent activates, there will be shown some text next to the head-button. You can edit that here.<br />
186 <br />
187 When empty, no message will be shown.
188 </span>
189 </span>
190 Exit intent text', array( &$this, 'field_exit_intent_text' ) );
191 $this->aSubPages['advanced'] .= $this->closeFieldset();
192 $this->aSubPages['advanced'] .= '</tbody></table>';
193 if ( !ButtonizerLicense()->is_not_paying() && !ButtonizerLicense()->is_plan( 'premium' ) ) {
194 $this->aSubPages['advanced'] .= '<div class="buttonizer-pro-text"><i class="fa fa-lock"></i> You are missing the fun! When upgrading to <a href="admin.php?page=Buttonizer-pricing">Buttonizer Pro</a> you will get these features.</div>';
195 }
196 }
197
198 public function registerSocialSettings()
199 {
200 $this->aSubCatagories['social'] = __( 'Social share settings', BUTTONIZER_SLUG );
201 $this->aSubPages['social'] = '<table class="form-table"><tbody>';
202 $this->aSubPages['social'] .= '<tr>
203 <td colspan="2">
204 <h2>Social sharing buttons</h2>
205 <p>This are separated pre-configured buttons to share a page. The buttons will be visible at every page, you can let the user share a page on Twitter, Facebook or LinkedIn.<p>
206 <p>You can enable them to check the checkbox at the end of the input. Don\'t forget that :)</p>
207 </td></tr>';
208 // Facebook share button
209 $this->aSubPages['social'] .= $this->createFormField( 'Share on Facebook', array( &$this, 'field_share_facebook' ) );
210 // Twitter share button
211 $this->aSubPages['social'] .= $this->createFormField( 'Share on Twitter', array( &$this, 'field_share_twitter' ) );
212 // LinkedIn share button
213 $this->aSubPages['social'] .= $this->createFormField( 'Share on LinkedIn', array( &$this, 'field_share_linkedin' ) );
214 $this->aSubPages['social'] .= '<tr>
215 <td colspan="2" style="text-align: right;">
216 <p>Do you want us to add more social media options? <a href="admin.php?page=Buttonizer-contact">Contact us</a></p>
217 </td></tr>';
218 $this->aSubPages['social'] .= '</tbody></table>';
219 }
220
221 public function registerOther()
222 {
223 $this->aSubCatagories['other'] = __( 'Other', BUTTONIZER_SLUG );
224 $this->aSubPages['other'] = '<table class="form-table"><tbody>';
225 $this->aSubPages['other'] .= '<tr>
226 <td colspan="2">
227 <h2>Other</h2>
228 <p>Nothing really specials here, just a way to reset the buttonizer to the default settings.</p>
229 <p>Click the button below to get some more information.</p>
230 </td></tr>';
231 $this->aSubPages['other'] .= '<tr><th scope="row">Reset Buttonizer</th><td><a href="?page=Buttonizer&tab=buttonizer_page_reset" class="button ">More info</a></td></tr>';
232 $this->aSubPages['other'] .= '</tbody></table>';
233 }
234
235 private function createFormField( $sLabel, $aFunction, $sClass = '' )
236 {
237 return '<tr class="' . $sClass . '"><th scope="row">' . $sLabel . '</th><td class="r-sit">' . $aFunction() . '</td></tr>';
238 }
239
240 private function createFieldset( $sLabel )
241 {
242 return '<tr><td colspan="2"><fieldset><legend>' . $sLabel . '</legend><table class="form-table">';
243 }
244
245 private function closeFieldset()
246 {
247 return '</table></fieldset></td></tr>';
248 }
249
250 /*
251 * Form
252 */
253 function field_button_unpushed()
254 {
255 $button_unpushed = ( isset( $this->aSavedData['button_unpushed'] ) ? $this->aSavedData['button_unpushed'] : '#48A4DC' );
256 return '<input type="text" name="buttonizer_general_settings[button_unpushed]" value="' . $button_unpushed . '" id="button_unpushed" data-default-color="#fffff" />';
257 }
258
259 function field_button_pushed()
260 {
261 $button_pushed = ( isset( $this->aSavedData['button_pushed'] ) ? $this->aSavedData['button_pushed'] : '#1D9BDB' );
262 return '<input type="text" name="buttonizer_general_settings[button_pushed]" value="' . $button_pushed . '" id="button_pushed" data-default-color="#fffff" />';
263 }
264
265 function field_icon_color()
266 {
267 $icon_color = ( isset( $this->aSavedData['icon_color'] ) ? $this->aSavedData['icon_color'] : '#fffff' );
268 return '<input type="text" name="buttonizer_general_settings[icon_color]" value="' . $icon_color . '" id="icon_color" data-default-color="#fffff" />';
269 }
270
271 function field_icon_icon()
272 {
273 $p = $this->oIconManager->generator( [
274 'icon' => ( isset( $this->aSavedData['icon_icon'] ) ? $this->aSavedData['icon_icon'] : '' ),
275 'icon_fieldname' => 'buttonizer_general_settings[icon_icon]',
276 'image' => ( isset( $this->aSavedData['custom_icon'] ) ? $this->aSavedData['custom_icon'] : '' ),
277 'image_fieldname' => 'buttonizer_general_settings[custom_icon]',
278 ] );
279 return $p;
280 }
281
282 function field_icon_label()
283 {
284 $icon_label = ( isset( $this->aSavedData['icon_label'] ) ? $this->aSavedData['icon_label'] : '' );
285 return '<input type="text" name="buttonizer_general_settings[icon_label]" value="' . $icon_label . '" placeholder="Fill in some text" />';
286 }
287
288 function field_position_right()
289 {
290 $position_right = ( isset( $this->aSavedData['position_right'] ) ? $this->aSavedData['position_right'] : '5' );
291 return '<input type="text" name="buttonizer_general_settings[position_right]" value="' . $position_right . '" placeholder="Fill in a number from 0 to 100"/><small><i class="after-input">%</i><br />Recommended 5% then it will position itself on the right corner</small>';
292 }
293
294 function field_position_bottom()
295 {
296 $position_bottom = ( isset( $this->aSavedData['position_bottom'] ) ? $this->aSavedData['position_bottom'] : '5' );
297 return '<input type="text" name="buttonizer_general_settings[position_bottom]" value="' . $position_bottom . '" placeholder="Fill in a number from 0 to 100"/><small><i class="after-input">%</i><br>Recommended 5% then it will position itself on the bottom corner</small>';
298 }
299
300 function field_button_animation()
301 {
302 $button_animation = ( isset( $this->aSavedData['buttons_animation'] ) ? $this->aSavedData['buttons_animation'] : 'default' );
303 return '
304 <select name="buttonizer_general_settings[buttons_animation]" style="width: 100%; padding: 0 10px; height: 40px;">
305 <option value="default" ' . (( $button_animation == 'default' ? 'selected' : '' )) . '>Default button animation (fade up)</option>
306 <option value="circle" ' . (( $button_animation == 'circle' ? 'selected' : '' )) . '>Circle animation (arround button, right bottom corner)</option>
307 <option value="fade-left-to-right" ' . (( $button_animation == 'fade-left-to-right' ? 'selected' : '' )) . '>Fade animation left to right</option>
308 </select>';
309 }
310
311 function field_attention_animation()
312 {
313 $attention_animation = ( isset( $this->aSavedData['attention_animation'] ) ? $this->aSavedData['attention_animation'] : 'none' );
314 return '
315 <select name="buttonizer_general_settings[attention_animation]" style="width: 100%; padding: 0 10px; height: 40px;">
316 <option value="none" ' . (( $attention_animation == 'none' ? 'selected' : '' )) . '>No attention animation</option>
317 <option value="hello" ' . (( $attention_animation == 'hello' ? 'selected' : '' )) . '>Buttonizer Hello</option>
318 <option value="bounce" ' . (( $attention_animation == 'bounce' ? 'selected' : '' )) . '>Bouncing</option>
319 </select>
320 <small>This will get the button jumping out of the background. So it gets your attention. All animations will be played every 10 seconds. Average animation duration is 1.75 seconds.</small>
321 ';
322 }
323
324 public function field_label_show_on_hover()
325 {
326 $is_selected = ( isset( $this->aSavedData['buttons_label_show_on_hover'] ) ? $this->aSavedData['buttons_label_show_on_hover'] : '' );
327 return '<input type="checkbox" name="buttonizer_general_settings[buttons_label_show_on_hover]" id="buttons_label_show_on_hover" value="1" ' . (( $is_selected == '1' ? 'checked="checked"' : '' )) . ' /> <small><label for="buttons_label_show_on_hover">Only show on hover</label></small>';
328 }
329
330 /*
331 * Advanced
332 */
333 function field_analytics_code()
334 {
335 $google_analytics = ( isset( $this->aSavedData['google_analytics'] ) ? $this->aSavedData['google_analytics'] : '' );
336 return '<input type="text" name="buttonizer_general_settings[google_analytics]" value="' . $google_analytics . '" placeholder="Only when not inserted yet" /><small>Insert here the Google Analytics tracking code. Like UA-000000-2</small>';
337 }
338
339 public function field_show_on_scroll()
340 {
341 return '<input type="checkbox" class="buttonizer-click-to-pro" readonly /> <div class="after-input"><span class="buttonizer-pro-feature">PRO</span></div>';
342 }
343
344 public function field_procent_to_scroll()
345 {
346 return '<input type="text" value="0" class="buttonizer-click-to-pro" readonly /> <div class="after-input"><small><i>%</i></small> <span class="buttonizer-pro-feature">PRO</span></div>';
347 }
348
349 public function field_show_on_timeout()
350 {
351 return '<input type="checkbox" class="buttonizer-click-to-pro" readonly /> <span class="buttonizer-pro-feature">PRO</span>';
352 }
353
354 public function field_time_to_timeout()
355 {
356 return '<input type="text" class="buttonizer-click-to-pro" readonly value="0" /><div class="after-input"><span class="buttonizer-pro-feature">PRO</span></div>';
357 }
358
359 // Exit intent
360 public function field_exit_intent()
361 {
362 return '<input type="checkbox" class="buttonizer-click-to-pro" readonly /> <span class="buttonizer-pro-feature">PRO</span>';
363 }
364
365 public function field_exit_intent_text()
366 {
367 return '<input type="text" class="buttonizer-click-to-pro" readonly value="" /><div class="after-input"><span class="buttonizer-pro-feature">PRO</span></div>';
368 }
369
370 // Share page
371 function field_share_facebook()
372 {
373 $share_facebook = ( isset( $this->aSavedData['share_facebook'] ) ? $this->aSavedData['share_facebook'] : '' );
374 $share_facebook_text = ( isset( $this->aSavedData['share_facebook_text'] ) ? $this->aSavedData['share_facebook_text'] : 'Share this on Facebook' );
375 return '<span class="before-input"><input type="checkbox" name="buttonizer_general_settings[share_facebook]" value="1" ' . (( $share_facebook == '1' ? 'checked="checked"' : '' )) . ' /></span> <input type="text" name="buttonizer_general_settings[share_facebook_text]" value="' . $share_facebook_text . '" class="before-input-padding" placeholder="Share this on Facebook" />';
376 }
377
378 function field_share_linkedin()
379 {
380 $share_linkedin = ( isset( $this->aSavedData['share_linkedin'] ) ? $this->aSavedData['share_linkedin'] : '' );
381 $share_linkedin_text = ( isset( $this->aSavedData['share_linkedin_text'] ) ? $this->aSavedData['share_linkedin_text'] : 'Share this on LinkedIn' );
382 return '<span class="before-input"><input type="checkbox" name="buttonizer_general_settings[share_linkedin]" value="1" ' . (( $share_linkedin == '1' ? 'checked="checked"' : '' )) . ' /></span> <input type="text" name="buttonizer_general_settings[share_linkedin_text]" value="' . $share_linkedin_text . '" class="before-input-padding" placeholder="Share this on LinkedIn" />';
383 }
384
385 function field_share_twitter()
386 {
387 $share_twitter = ( isset( $this->aSavedData['share_twitter'] ) ? $this->aSavedData['share_twitter'] : '' );
388 $share_twitter_text = ( isset( $this->aSavedData['share_twitter_text'] ) ? $this->aSavedData['share_twitter_text'] : 'Share this on Twitter' );
389 return '<span class="before-input"><input type="checkbox" name="buttonizer_general_settings[share_twitter]" value="1" ' . (( $share_twitter == '1' ? 'checked="checked"' : '' )) . ' /></span> <input type="text" name="buttonizer_general_settings[share_twitter_text]" value="' . $share_twitter_text . '" class="before-input-padding" placeholder="Share this on Twitter" />';
390 }
391
392 }