Popup Builder – Responsive WordPress Pop up - Version 3.75

Version Description

Current Version of Popup Builder is 3.75

Download this release

Release Info

Developer Sygnoos
Plugin Icon 128x128 Popup Builder – Responsive WordPress Pop up
Version 3.75
Comparing to
See all releases

Code changes from version 3.74 to 3.75

com/classes/Actions.php CHANGED
@@ -205,10 +205,7 @@ class Actions
205
 
206
  public function wpInit()
207
  {
208
- require_once(ABSPATH.'wp-admin/includes/screen.php');
209
- if (!wp_next_scheduled('sgpbGetBannerContentOnce')) {
210
- wp_schedule_event(time(), 'sgpb_banners', 'sgpbGetBannerContentOnce');
211
- }
212
  }
213
 
214
  public function mainActionButtons($views)
205
 
206
  public function wpInit()
207
  {
208
+
 
 
 
209
  }
210
 
211
  public function mainActionButtons($views)
com/classes/Ajax.php CHANGED
@@ -228,29 +228,30 @@ class Ajax
228
  {
229
  check_ajax_referer(SG_AJAX_NONCE, 'nonce');
230
 
231
- $popupParams = $_POST['params'];
232
- if (isset($_GET['sg_popup_preview_id'])) {
233
- wp_die();
234
  }
235
- $popupsIdCollection = $popupParams['popupsIdCollection'];
236
 
 
 
 
 
 
237
  $popupsCounterData = get_option('SgpbCounter');
238
 
239
  if ($popupsCounterData === false) {
240
  $popupsCounterData = array();
241
  }
242
 
243
- if (!empty($popupsIdCollection)) {
244
- foreach ($popupsIdCollection as $popupId => $popupCount) {
245
- if (empty($popupsCounterData[$popupId])) {
246
- $popupsCounterData[$popupId] = 0;
247
- }
248
- $popupsCounterData[$popupId] += $popupCount;
249
- }
250
- }
251
 
252
  update_option('SgpbCounter', $popupsCounterData);
253
- wp_die();
254
  }
255
 
256
  public function deleteSubscribers()
228
  {
229
  check_ajax_referer(SG_AJAX_NONCE, 'nonce');
230
 
231
+ if (isset($_GET['sg_popup_preview_id']) && !isset($_POST['params'])) {
232
+ wp_die(0);
 
233
  }
 
234
 
235
+ /* Sanitizing multidimensional array */
236
+ $popupParams = $_POST['params'];
237
+ array_walk($popupParams, 'sanitize_text_field');
238
+
239
+ $popupsIdCollection = is_array($popupParams['popupsIdCollection'])?$popupParams['popupsIdCollection']:array();
240
  $popupsCounterData = get_option('SgpbCounter');
241
 
242
  if ($popupsCounterData === false) {
243
  $popupsCounterData = array();
244
  }
245
 
246
+ foreach ($popupsIdCollection as $popupId => $popupCount) {
247
+ if (empty($popupsCounterData[$popupId])) {
248
+ $popupsCounterData[$popupId] = 0;
249
+ }
250
+ $popupsCounterData[$popupId] += $popupCount;
251
+ }
 
 
252
 
253
  update_option('SgpbCounter', $popupsCounterData);
254
+ wp_die(1);
255
  }
256
 
257
  public function deleteSubscribers()
com/classes/Filters.php CHANGED
@@ -118,6 +118,12 @@ class Filters
118
  $buttonStyles .= 'color: '.$popupOptions['sgpb-floating-button-text-color'].';';
119
  }
120
 
 
 
 
 
 
 
121
  $floatingButton = '<div class="'.$buttonClass.' sgpb-floating-button sg-popup-id-'.$popupId.'" style="'.$buttonStyles.'"><span class="sgpb-'.$popupOptions['sgpb-floating-button-style'].'-floating-button-text">'.$popupOptions['sgpb-floating-button-text'].'</span></div>';
122
 
123
  echo $floatingButton;
118
  $buttonStyles .= 'color: '.$popupOptions['sgpb-floating-button-text-color'].';';
119
  }
120
 
121
+ /*
122
+ * We first hide to make all CSS load then we will show once document is ready
123
+ * SgpbEventListener.eventsListenerAfterDocumentReady -> showFloatingButton
124
+ */
125
+ $buttonStyles .= 'display: none;';
126
+
127
  $floatingButton = '<div class="'.$buttonClass.' sgpb-floating-button sg-popup-id-'.$popupId.'" style="'.$buttonStyles.'"><span class="sgpb-'.$popupOptions['sgpb-floating-button-style'].'-floating-button-text">'.$popupOptions['sgpb-floating-button-text'].'</span></div>';
128
 
129
  echo $floatingButton;
com/classes/NotificationCenter.php CHANGED
@@ -93,8 +93,8 @@ class SGPBNotificationCenter
93
  public function cronAddMinutes($schedules)
94
  {
95
  $schedules['sgpb_notifications'] = array(
96
- 'interval' => SGPB_NOTIFICATIONS_CRON_REPEAT_INTERVAL * 60,
97
- 'display' => __('Once a day', SG_POPUP_TEXT_DOMAIN)
98
  );
99
 
100
  return $schedules;
93
  public function cronAddMinutes($schedules)
94
  {
95
  $schedules['sgpb_notifications'] = array(
96
+ 'interval' => SGPB_NOTIFICATIONS_CRON_REPEAT_INTERVAL * 3600,
97
+ 'display' => __('Twice Daily', SG_POPUP_TEXT_DOMAIN)
98
  );
99
 
100
  return $schedules;
com/classes/RegisterPostType.php CHANGED
@@ -205,14 +205,14 @@ class RegisterPostType
205
  * if the post id doesn't exist, we try to find it with $_GET['sgpb_type']
206
  */
207
  if (!empty($_GET['post'])) {
208
- $popupId = $_GET['post'];
209
  $popupOptionsData = SGPopup::getPopupOptionsById($popupId);
210
  if (!empty($popupOptionsData['sgpb-type'])) {
211
  $popupType = $popupOptionsData['sgpb-type'];
212
  }
213
  }
214
  else if (!empty($_GET['sgpb_type'])) {
215
- $popupType = $_GET['sgpb_type'];
216
  }
217
 
218
  return $popupType;
205
  * if the post id doesn't exist, we try to find it with $_GET['sgpb_type']
206
  */
207
  if (!empty($_GET['post'])) {
208
+ $popupId = (int)$_GET['post'];
209
  $popupOptionsData = SGPopup::getPopupOptionsById($popupId);
210
  if (!empty($popupOptionsData['sgpb-type'])) {
211
  $popupType = $popupOptionsData['sgpb-type'];
212
  }
213
  }
214
  else if (!empty($_GET['sgpb_type'])) {
215
+ $popupType = sanitize_text_field($_GET['sgpb_type']);
216
  }
217
 
218
  return $popupType;
com/classes/extension/SgpbPopupExtensionRegister.php CHANGED
@@ -16,9 +16,9 @@ class SgpbPopupExtensionRegister
16
  }
17
 
18
  foreach ($blogs as $blog) {
19
- switch_to_blog($blog['blog_id']);
20
- self::registerPlugin($pluginName, $classPath, $className, $options);
21
- restore_current_blog();
22
  }
23
  return;
24
  }
@@ -79,7 +79,9 @@ class SgpbPopupExtensionRegister
79
  }
80
 
81
  foreach ($blogs as $blog) {
82
- switch_to_blog($blog['blog_id']);
 
 
83
  if (!self::isPluginActive($pluginName)) {
84
  self::removePlugin($pluginName);
85
  }
16
  }
17
 
18
  foreach ($blogs as $blog) {
19
+ /* $blog -> List of WP_Site objects for wp > 4.6 otherwise, an associative array of WP_Site data as arrays. */
20
+ $blogId = is_object($blog)?$blog->blog_id:$blog['blog_id'];
21
+ switch_to_blog($blogId);
22
  }
23
  return;
24
  }
79
  }
80
 
81
  foreach ($blogs as $blog) {
82
+ /* $blog -> List of WP_Site objects for wp > 4.6 otherwise, an associative array of WP_Site data as arrays. */
83
+ $blogId = is_object($blog)?$blog->blog_id:$blog['blog_id'];
84
+ switch_to_blog($blogId);
85
  if (!self::isPluginActive($pluginName)) {
86
  self::removePlugin($pluginName);
87
  }
com/config/config.php CHANGED
@@ -23,7 +23,7 @@ class SgpbPopupConfig
23
  self::addDefine('SG_POPUP_EXTENSIONS_URL', 'https://popup-builder.com/#extensions');
24
  self::addDefine('SG_POPUP_SUPPORT_URL', 'https://wordpress.org/support/plugin/popup-builder');
25
  self::addDefine('SG_POPUP_TICKET_URL', 'https://help.popup-builder.com');
26
- self::addDefine('SG_POPUP_RATE_US_URL', 'http://bit.ly/sgpbPluginSource');
27
  self::addDefine('SG_POPUP_IFRAME_URL', 'https://popup-builder.com/downloads/iframe/');
28
  self::addDefine('SG_POPUP_SCROLL_URL', 'https://popup-builder.com/downloads/scroll/');
29
  self::addDefine('SG_POPUP_AD_BLOCK_URL', 'https://popup-builder.com/downloads/adblock/');
@@ -102,7 +102,7 @@ class SgpbPopupConfig
102
  self::addDefine('SGPB_APP_POPUP_TABLE_LIMIT', 15);
103
  self::addDefine('SGPB_SUBSCRIBERS_ERROR_TABLE_NAME', 'sgpb_subscription_error_log');
104
  self::addDefine('SGPB_CRON_REPEAT_INTERVAL', 1);
105
- self::addDefine('SGPB_NOTIFICATIONS_CRON_REPEAT_INTERVAL', 1);
106
  self::addDefine('SGPB_METABOX_BANNER_CRON_TEXT_URL', 'https://popup-builder.com/sgpb-banner.php?banner=sidebar1');
107
  self::addDefine('SGPB_FACEBOOK_APP_ID', 540547196484707);
108
  self::addDefine('SGPB_POPUP_TYPE_RESTRICTION', 'ageRestriction');
23
  self::addDefine('SG_POPUP_EXTENSIONS_URL', 'https://popup-builder.com/#extensions');
24
  self::addDefine('SG_POPUP_SUPPORT_URL', 'https://wordpress.org/support/plugin/popup-builder');
25
  self::addDefine('SG_POPUP_TICKET_URL', 'https://help.popup-builder.com');
26
+ self::addDefine('SG_POPUP_RATE_US_URL', 'https://wordpress.org/support/plugin/popup-builder/reviews/');
27
  self::addDefine('SG_POPUP_IFRAME_URL', 'https://popup-builder.com/downloads/iframe/');
28
  self::addDefine('SG_POPUP_SCROLL_URL', 'https://popup-builder.com/downloads/scroll/');
29
  self::addDefine('SG_POPUP_AD_BLOCK_URL', 'https://popup-builder.com/downloads/adblock/');
102
  self::addDefine('SGPB_APP_POPUP_TABLE_LIMIT', 15);
103
  self::addDefine('SGPB_SUBSCRIBERS_ERROR_TABLE_NAME', 'sgpb_subscription_error_log');
104
  self::addDefine('SGPB_CRON_REPEAT_INTERVAL', 1);
105
+ self::addDefine('SGPB_NOTIFICATIONS_CRON_REPEAT_INTERVAL', 12); /* Hours */
106
  self::addDefine('SGPB_METABOX_BANNER_CRON_TEXT_URL', 'https://popup-builder.com/sgpb-banner.php?banner=sidebar1');
107
  self::addDefine('SGPB_FACEBOOK_APP_ID', 540547196484707);
108
  self::addDefine('SGPB_POPUP_TYPE_RESTRICTION', 'ageRestriction');
com/config/configPackage.php CHANGED
@@ -3,6 +3,6 @@ if (!defined('ABSPATH')) {
3
  exit();
4
  }
5
 
6
- define('SG_POPUP_VERSION', '3.74');
7
  define('SGPB_POPUP_PKG', SGPB_POPUP_PKG_FREE);
8
  define('POPUP_BUILDER_BASENAME', 'popupbuilder-platinum/popup-builder.php');
3
  exit();
4
  }
5
 
6
+ define('SG_POPUP_VERSION', '3.75');
7
  define('SGPB_POPUP_PKG', SGPB_POPUP_PKG_FREE);
8
  define('POPUP_BUILDER_BASENAME', 'popupbuilder-platinum/popup-builder.php');
com/helpers/AdminHelper.php CHANGED
@@ -569,17 +569,9 @@ class AdminHelper
569
  return $role;
570
  }
571
 
572
- global $currentUser;
573
- if (!empty($currentUser)) {
574
- $userRoleName = $currentUser->roles;
575
- $role = $userRoleName;
576
- }
577
- else {
578
- global $current_user;
579
- if ($current_user) {
580
- $currentUser = wp_get_current_user();
581
- $role = $currentUser->roles;
582
- }
583
  }
584
 
585
  return $role;
@@ -1674,6 +1666,10 @@ class AdminHelper
1674
  $systemInfoContent .= "\n".'-- Popup Builder License Data'."\n\n";
1675
  if (!empty($registered)) {
1676
  foreach ($registered as $singleExntensionData) {
 
 
 
 
1677
  $key = $singleExntensionData['options']['licence']['key'];
1678
  $name = $singleExntensionData['options']['licence']['itemName'];
1679
  $licenseKey = __('No license');
569
  return $role;
570
  }
571
 
572
+ global $current_user;
573
+ if (!empty($current_user)) {
574
+ $role = $current_user->roles;
 
 
 
 
 
 
 
 
575
  }
576
 
577
  return $role;
1666
  $systemInfoContent .= "\n".'-- Popup Builder License Data'."\n\n";
1667
  if (!empty($registered)) {
1668
  foreach ($registered as $singleExntensionData) {
1669
+ if (empty($singleExntensionData['options'])) {
1670
+ continue;
1671
+ }
1672
+
1673
  $key = $singleExntensionData['options']['licence']['key'];
1674
  $name = $singleExntensionData['options']['licence']['itemName'];
1675
  $licenseKey = __('No license');
com/libs/EDD_SL_Plugin_Updater.php CHANGED
@@ -5,7 +5,8 @@ namespace sgpb;
5
  if ( ! defined( 'ABSPATH' ) ) exit;
6
  /**
7
  * Allows plugins to use their own update API.
8
- *
 
9
  * @author Easy Digital Downloads
10
  * @version 1.6.14
11
  */
5
  if ( ! defined( 'ABSPATH' ) ) exit;
6
  /**
7
  * Allows plugins to use their own update API.
8
+ * Note: This updater is not used for Community/Hosted version of the plugin.
9
+ * This class is included in addons to have an update system in a single file rather than including it in each extension.
10
  * @author Easy Digital Downloads
11
  * @version 1.6.14
12
  */
popup-builder.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Popup Builder
4
  * Plugin URI: https://popup-builder.com
5
  * Description: The most complete popup plugin. Html, image, iframe, shortcode, video and many other popup types. Manage popup dimensions, effects, themes and more.
6
- * Version: 3.74
7
  * Author: Sygnoos
8
  * Author URI: https://sygnoos.com
9
  * License: GPLv2
3
  * Plugin Name: Popup Builder
4
  * Plugin URI: https://popup-builder.com
5
  * Description: The most complete popup plugin. Html, image, iframe, shortcode, video and many other popup types. Manage popup dimensions, effects, themes and more.
6
+ * Version: 3.75
7
  * Author: Sygnoos
8
  * Author URI: https://sygnoos.com
9
  * License: GPLv2
public/js/PopupBuilder.js CHANGED
@@ -81,7 +81,6 @@ SGPBPopup.htmlCustomButton = function()
81
  tempInput.id = tempInputId;
82
  tempInput.value = value;
83
  tempInput.style = 'position: absolute; right: -10000px';
84
- console.log(tempInput);
85
  if (!document.getElementById(tempInputId)) {
86
  document.body.appendChild(tempInput);
87
  }
@@ -116,9 +115,9 @@ SGPBPopup.listeners = function () {
116
  /*for mobile landscape issue*/
117
  if (typeof (Event) === 'function') {
118
  var event = new CustomEvent('resize', {
119
- bubbles: true,
120
- cancelable: true
121
- });
122
  }
123
  else {
124
  if (SGPBPopup.isIE()) {
@@ -239,6 +238,49 @@ SGPBPopup.playMusic = function(e) {
239
  }
240
  };
241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  SGPBPopup.prototype.initialsListeners = function()
243
  {
244
  /* one time calling events (sgpbDidOpen, sgpbDidClose ...) */
@@ -1463,8 +1505,8 @@ SGPBPopup.prototype.closeButtonDisplay = function(popupId, display, delay)
1463
  {
1464
  if (display == 'show') {
1465
  setTimeout(function() {
1466
- jQuery('.sgpb-content-' + popupId).prev().show();
1467
- },
1468
  delay * 1000 /* received values covert to milliseconds */
1469
  );
1470
  }
@@ -1562,7 +1604,6 @@ SGPBPopup.prototype.contentCopyToClick = function()
1562
  tempInput.id = tempInputId;
1563
  tempInput.value = value;
1564
  tempInput.style = 'position: absolute; right: -10000px';
1565
- console.log(tempInput);
1566
  if (!document.getElementById(tempInputId)) {
1567
  document.body.appendChild(tempInput);
1568
  }
@@ -2311,14 +2352,6 @@ SGPBPopup.deleteCookie = function(cName, cPath)
2311
  *
2312
  * @SgpbEventListener listen Events and call corresponding events
2313
  *
2314
- *
2315
- *
2316
- *
2317
- *
2318
- *
2319
- *
2320
- *
2321
- *
2322
  */
2323
 
2324
  function SgpbEventListener()
@@ -2379,9 +2412,9 @@ SgpbEventListener.init = function()
2379
  var that = this;
2380
 
2381
  popupsData.each(function() {
2382
- that.popupObjCreator(jQuery(this));
 
2383
  });
2384
-
2385
  };
2386
 
2387
  SgpbEventListener.popupObjCreator = function(currentData)
@@ -2404,6 +2437,7 @@ SgpbEventListener.popupObjCreator = function(currentData)
2404
  obj.eventListener(events[i]);
2405
  }
2406
 
 
2407
  };
2408
 
2409
  SgpbEventListener.prototype.eventListener = function(eventData)
81
  tempInput.id = tempInputId;
82
  tempInput.value = value;
83
  tempInput.style = 'position: absolute; right: -10000px';
 
84
  if (!document.getElementById(tempInputId)) {
85
  document.body.appendChild(tempInput);
86
  }
115
  /*for mobile landscape issue*/
116
  if (typeof (Event) === 'function') {
117
  var event = new CustomEvent('resize', {
118
+ bubbles: true,
119
+ cancelable: true
120
+ });
121
  }
122
  else {
123
  if (SGPBPopup.isIE()) {
238
  }
239
  };
240
 
241
+ SGPBPopup.floatingButton = function (e) {
242
+ SGPBPopup.showFloatingButton(e);
243
+
244
+ jQuery(window).on('sgpbFormSuccess', function (e){
245
+ SGPBPopup.hideFloatingButton();
246
+ });
247
+ };
248
+
249
+ SGPBPopup.showFloatingButton = function (e) {
250
+ var popupObj = e || {};
251
+ var popupId = 0;
252
+ var shouldShowFloatingButton = true;
253
+
254
+ /* if argument e is event reference the popup object is wrapped inside e.detail.currentObj.sgpbPopupObj */
255
+ if (e.hasOwnProperty('sgpbPopupObj')) {
256
+ popupObj = e.detail.currentObj.sgpbPopupObj;
257
+ }
258
+
259
+ if (popupObj instanceof SGPBPopup) {
260
+ popupId = parseInt(popupObj.id);
261
+ shouldShowFloatingButton = popupObj.forceCheckCurrentPopupType(popupObj);
262
+ }
263
+
264
+ /* If there is no cookie which will prevent popup opening we will show floating button */
265
+ if (shouldShowFloatingButton) {
266
+ /* if we have popup id we detect exact button */
267
+ if (popupId) {
268
+ jQuery('.sgpb-floating-button.sg-popup-id-' + popupId).show();
269
+ } else {
270
+ jQuery('.sgpb-floating-button').show();
271
+ }
272
+ }
273
+ };
274
+
275
+ SGPBPopup.hideFloatingButton = function (popupId) {
276
+ /* if we have popup id we detect exact button */
277
+ if (popupId) {
278
+ jQuery('.sgpb-floating-button.sg-popup-id-' + popupId).fadeOut();
279
+ } else {
280
+ jQuery('.sgpb-floating-button').fadeOut();
281
+ }
282
+ };
283
+
284
  SGPBPopup.prototype.initialsListeners = function()
285
  {
286
  /* one time calling events (sgpbDidOpen, sgpbDidClose ...) */
1505
  {
1506
  if (display == 'show') {
1507
  setTimeout(function() {
1508
+ jQuery('.sgpb-content-' + popupId).prev().show();
1509
+ },
1510
  delay * 1000 /* received values covert to milliseconds */
1511
  );
1512
  }
1604
  tempInput.id = tempInputId;
1605
  tempInput.value = value;
1606
  tempInput.style = 'position: absolute; right: -10000px';
 
1607
  if (!document.getElementById(tempInputId)) {
1608
  document.body.appendChild(tempInput);
1609
  }
2352
  *
2353
  * @SgpbEventListener listen Events and call corresponding events
2354
  *
 
 
 
 
 
 
 
 
2355
  */
2356
 
2357
  function SgpbEventListener()
2412
  var that = this;
2413
 
2414
  popupsData.each(function() {
2415
+ var popupObj = that.popupObjCreator(jQuery(this));
2416
+ SGPBPopup.floatingButton(popupObj);
2417
  });
 
2418
  };
2419
 
2420
  SgpbEventListener.popupObjCreator = function(currentData)
2437
  obj.eventListener(events[i]);
2438
  }
2439
 
2440
+ return popupObj;
2441
  };
2442
 
2443
  SgpbEventListener.prototype.eventListener = function(eventData)
public/js/bootstrap.min.js CHANGED
@@ -1,7 +1,6 @@
1
  /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 Twitter, Inc.
4
  * Licensed under the MIT license
5
  */
6
- if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
7
- this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
1
  /*!
2
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 Twitter, Inc.
4
  * Licensed under the MIT license
5
  */
6
+ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
 
public/views/customEditor.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $popupId = @$_GET['post'];
3
  $editorModeJs = htmlentities('text/javascript');
4
  $editorModeCss = htmlentities('text/css');
5
 
1
  <?php
2
+ $popupId = !empty($_GET['post']) ? (int)$_GET['post'] : 0;
3
  $editorModeJs = htmlentities('text/javascript');
4
  $editorModeCss = htmlentities('text/css');
5
 
public/views/htmlCustomButtonElement.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  use sgpb\AdminHelper;
3
- $excludePostId = @$_GET['post'];
 
4
  $excludedPopups = array($excludePostId);
5
  $allPopups = AdminHelper::getPopupsIdAndTitle($excludedPopups);
6
  ?>
1
  <?php
2
  use sgpb\AdminHelper;
3
+
4
+ $excludePostId = !empty($_GET['post']) ? (int)$_GET['post'] : 0;
5
  $excludedPopups = array($excludePostId);
6
  $allPopups = AdminHelper::getPopupsIdAndTitle($excludedPopups);
7
  ?>
public/views/options/subscription.php CHANGED
@@ -8,7 +8,10 @@
8
 
9
  if (!empty($_GET['post'])) {
10
  $popupId = (int)$_GET['post'];
 
 
11
  }
 
12
  $subscriptionSubPopups = $popupTypeObj->getPopupsIdAndTitle();
13
  $successPopup = $popupTypeObj->getOptionValue('sgpb-subs-success-popup');
14
 
@@ -414,10 +417,6 @@
414
  <div class="col-md-5">
415
  <div>
416
  <h1 class="sgpb-align-center"><?php _e('Live preview', SG_POPUP_TEXT_DOMAIN);?></h1>
417
- <?php
418
- $popupTypeObj->setSubsFormData(@$_GET['post']);
419
- $formData = $popupTypeObj->createFormFieldsData();
420
- ?>
421
  <div class="sgpb-subs-form-<?php echo $popupId; ?> sgpb-subscription-admin-wrapper<?php echo $forceRtlClass; ?>">
422
  <?php echo Functions::renderForm($formData); ?>
423
  </div>
8
 
9
  if (!empty($_GET['post'])) {
10
  $popupId = (int)$_GET['post'];
11
+ $popupTypeObj->setSubsFormData($popupId);
12
+ $formData = $popupTypeObj->createFormFieldsData();
13
  }
14
+
15
  $subscriptionSubPopups = $popupTypeObj->getPopupsIdAndTitle();
16
  $successPopup = $popupTypeObj->getOptionValue('sgpb-subs-success-popup');
17
 
417
  <div class="col-md-5">
418
  <div>
419
  <h1 class="sgpb-align-center"><?php _e('Live preview', SG_POPUP_TEXT_DOMAIN);?></h1>
 
 
 
 
420
  <div class="sgpb-subs-form-<?php echo $popupId; ?> sgpb-subscription-admin-wrapper<?php echo $forceRtlClass; ?>">
421
  <?php echo Functions::renderForm($formData); ?>
422
  </div>
public/views/targetView.php CHANGED
@@ -1,7 +1,9 @@
1
  <?php
2
  namespace sgpb;
 
3
  $targetData = $popupTypeObj->getOptionValue('sgpb-target');
4
  $popupTargetData = ConditionBuilder::createTargetConditionBuilder($targetData);
 
5
  ?>
6
 
7
  <div class="popup-conditions-wrapper popup-conditions-target" data-condition-type="target">
@@ -11,7 +13,6 @@ $popupTargetData = ConditionBuilder::createTargetConditionBuilder($targetData);
11
  ?>
12
  </div>
13
 
14
- <?php $type = (!empty($_GET['sgpb_type'])) ? $_GET['sgpb_type'] : $popupTypeObj->getOptionValue('sgpb-type'); ?>
15
  <input type="hidden" name="sgpb-type" value="<?php echo esc_html($type); ?>">
16
  <input id="sgpb-is-preview" type="hidden" name="sgpb-is-preview" value="0" autocomplete="off">
17
  <input id="sgpb-is-active" type="hidden" name="sgpb-is-active" value="<?php echo $popupTypeObj->getOptionValue('sgpb-is-active'); ?>" autocomplete="off">
1
  <?php
2
  namespace sgpb;
3
+
4
  $targetData = $popupTypeObj->getOptionValue('sgpb-target');
5
  $popupTargetData = ConditionBuilder::createTargetConditionBuilder($targetData);
6
+ $type = (!empty($_GET['sgpb_type'])) ? sanitize_text_field($_GET['sgpb_type']) : $popupTypeObj->getOptionValue('sgpb-type');
7
  ?>
8
 
9
  <div class="popup-conditions-wrapper popup-conditions-target" data-condition-type="target">
13
  ?>
14
  </div>
15
 
 
16
  <input type="hidden" name="sgpb-type" value="<?php echo esc_html($type); ?>">
17
  <input id="sgpb-is-preview" type="hidden" name="sgpb-is-preview" value="0" autocomplete="off">
18
  <input id="sgpb-is-active" type="hidden" name="sgpb-is-active" value="<?php echo $popupTypeObj->getOptionValue('sgpb-is-active'); ?>" autocomplete="off">
readme.txt CHANGED
@@ -1,1384 +1,1391 @@
1
- === Popup Builder - Responsive Wordpress Pop up - Subscription & Newsletter ===
2
- Plugin Name: Popup Builder - Responsive Wordpress Pop up
3
- Contributors: Popup By Sygnoos, Sygnoos
4
- Author: Popup Builder
5
- Author URI: https://popup-builder.com
6
- Plugin URI: https://popup-builder.com
7
- Donate link: https://popup-builder.com
8
- Tags: popup, pop up, wordpress popup, popup maker, exit popup, popup builder, wordpress popup plugin
9
- Requires at least: 4.2
10
- Tested up to: 5.6
11
- Requires PHP: 5.3.3
12
- Stable tag: 3.74
13
- License: GPLv2 or later
14
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
15
-
16
- Discover whole new ball game of pop-ups. Popup whatever floats your boat, customize it however you need and increase your sales with Popup Builder!
17
-
18
- == Description ==
19
-
20
- #### WordPress Popup Builder
21
-
22
- Pop up anything with Popup Builder, create and manage powerful promotion modal popups for your WordPress blog or website. Powerful, and yet, easy to use this plugin that will help you to grab your visitors' attention to introduce them your offers, discounts or other kind of promotional notices.
23
-
24
- https://www.youtube.com/watch?v=-wFDJDjczeY
25
-
26
- **Popup Builder - Features:**
27
-
28
- * Create and manage as many popups as you want
29
- * Customize the look and feel of the popup
30
- * Set popup animation effect
31
- * Choose between several popup themes
32
- * Set popup location on the screen
33
- * Show popup after X amount of page scrolling/Scroll popups - sometimes you don't want to show the popup right away, it's a good idea to set this option so the popup will be shown to the visitor only when he scrolls.
34
- * OnClick/OnHover popup
35
- * Floating Button - trigger a popup by clicking on floating button. It comes with many customization options: the style, the position, text formatting, border design, etc. The Floating Button can be designed with the color palette and style which would suit your website design nicely.
36
- * Redirect confirmation popup/Leaving notice popup
37
- * Repetitive pop up - show popup every X period of time
38
-
39
- -
40
-
41
- * Popup opening sound
42
- * Responsive popup
43
- * Network/Multisite compatible
44
- * WPML compatible
45
- * Visual Composer compatible
46
- * DIVI builder compatible
47
- * Redirect user to another page when he/she clicks on popup content
48
- * Show/Hide Popup for selected User Roles (Admin panel)
49
- * Open popup from URL. Example http://popup-builder.com/index.php?sg_popup_id=1
50
- * Reopen popup after form submission
51
-
52
- -
53
-
54
- * Html popup
55
- * Image popup
56
- * Facebook popup
57
- * Shortcode popup
58
- * Subscription popup - this type provides the easiest way to create an efficient connection between users and your website through subscription popup. With this simple popup solution, you can quickly collect subscribers in a very pleasant and elegant way. With our newsletter module you can easily send mass mailings.
59
- * Newsletter - send marketing campaings right from popup builder
60
- * PDF popup
61
-
62
- **Popup Builder - 3rd party supported plugins:**
63
-
64
- * Contact Form 7
65
- * Ninja Forms
66
- * Gravity Forms
67
- * TablePress - Just add `cache_table_output=false` to shortcode Ex. `[table id=213 cache_table_output=false /]`
68
- * Formidable Forms
69
- * WP Google Maps
70
- * HTML5 Maps
71
- * Review Builder
72
-
73
- This is a modal popup plugin for WordPress websites, that allows you to add highly customizable lightbox. This lightbox plugin will enable awesome popup windows in your WordPress website using short codes. You can add unlimited popups with their own configurations. We added effective settings'-panel for each type. So, you can fully customize the popup themes, colors, sizes and many other options.
74
-
75
- Popups are a good marketing tool, they're impressively high converting. A web page with a modal popup typically sees more conversions than the same page without one. More important, a page with a well-designed and thoughtfully implemented popup converts better than one with a poor popup. With Popup Builder plugin you can customize the look and the functionality according to your needs.
76
-
77
- With Popup Builder plugin you can insert any type of content, right into your Popup. Insert them into any page or a post, easily and fast. Popups that open automatically, are the best solution to attract your visitor's attention. Add some effects to your Popup and your customers won't go unnoticed.
78
-
79
- **Popup Builder - PRO features:**
80
-
81
- * WooCommerce popup - display targeted popup offers depending on the WooCommerce cart conditions: Price, Product amount, Specific product.
82
-
83
- * Recent sales or Social proof - promote more sales showing all your live sales popups to notify your customers about recently bought items.
84
-
85
- * Login popup - open login form inside the popup.
86
-
87
- * Registration popup - open registration form inside the popup.
88
-
89
- * Web Push Notification popup - run effective marketing campaings through web push notifications.
90
-
91
- * Iframe popup - you can set the URL you want to load within an iframe and the popup will load that iframe.
92
-
93
- * Autoresponder (subscription plus extension) - send targeted emails right after the visitor subscribes to your newsletter. You can send coupon codes or download links.
94
-
95
- * Video popup - embed YouTube and Vimeo videos inside your popup.
96
-
97
- * Social popup - this is a great type of a popup if you need to share/like your site. In social popup we have added all popular social networks like Facebook, LinkedIn, Twitter, Google Plus etc.
98
-
99
- * Age restriction popup - sometimes the site content may not be appropriate for all audiences. In these cases, users may not be able to view the content until they pass age confirmation popup.
100
-
101
- * Create countdown popup - your site is under construction and you are planning to open it in some amount of time, in this case countdown popup is exactly for you.
102
-
103
- * Exit popup - catch your users' attention when they decide to leave your site without doing any of the things you want them to do. Exit popups can briefly interrupt them with a popup message, steering them towards a singular call to action.
104
-
105
- * Contact form popup - this type will allow your clients to write you a message right from the popup.
106
-
107
- * Mailchimp popup (separate extension) - create eye-catching, beautiful Mailchimp popups to make your users sign up to the mail list right from the popup. You can set up all the design customization according to your needs and preferences!
108
-
109
- * Adblock popup (separate extension) - detect Adblock extensions that block the advertisements of your site and show a message to your visitors via popup!
110
-
111
- * AWeber popup (separate extension) - let your visitors to subscribe to your AWeber subscription form right from the popup.
112
-
113
- * Popup analytics (separate extension) - get statistics about the effectiveness of your popup.
114
-
115
- * Random popups option - this option is useful if you need to show random popups to your visitors. Let's say you are running ecommerce website and want to show discount codes. With random popup options ON you will be able to show different offers to your customers.
116
-
117
- * Show popup once per visitor - useful when you don't want to show the popup to the same visitor more than once.
118
-
119
- * Don't show popup on mobile devices - after activating this option, popup won't be shown in mobile devices.
120
-
121
- * Show popup only on mobile devices - after activating this option, popup will be shown only on mobile devices.
122
-
123
- * Disable popup closing - after activating this option, user won't be able to close the popup in any possible way.
124
-
125
- * Auto close popup after X seconds - useful when activated together with the previous option, you can disable manual popup closing but close it after a certain time.
126
-
127
- * Targeting popup - this option allows you to show a popup depending on user's location. This kind of popup is useful if your product or service is created for a specific region.
128
-
129
- * Show popup for logged in users or vice versa - you can make the popup appear only for the users who are logged in. Or you can make the it visible only for the users who aren't logged in.
130
-
131
- * Show popup after X pages - this option will help you to show a popup when the visitor visits your specified amount of pages.
132
-
133
- * Schedule popup - you can schedule the period (in days) when you want the popup to be shown. The users will see the popup during the period of the time you set. (Ex. April 13- May 9)
134
-
135
- * Popup showing frequency - you can select how many times you want the popup be shown to the same user. This means, you can make the popup appear for 3 times, for example, to the same user.
136
-
137
- <a href="https://popup-builder.com" target="_blank">Get Popup Builder PRO package</a>
138
- <div>
139
- Customizing the look and feel of the popup is as important as the content itself. That's why Popup Builder gives you the ability to customize the timings, effects, position and size of the popup to your needs.
140
- </div>
141
-
142
- Popup Builder team constantly works on upgrades and improvements. With our upcoming updates we are planning to add more types of popups.
143
-
144
- Thank you for using our pop-up modal plugin.
145
-
146
- <div>
147
- <div>
148
- <br />
149
- </div>
150
- <div>
151
- Also follow us on:
152
- <a href="https://www.facebook.com/popupbuildercom" title="Popup Builder Facebook"><strong>Facebook</strong></a>&nbsp;<a href="https://twitter.com/popup_builder" title="Popup Builder Twitter"><strong>Twitter</strong></a> and <a href="https://www.linkedin.com/company/popup-builder" title="Popup Builder LinkedIn"><strong>LinkedIn</strong></a>
153
- </div>
154
- <div>
155
- If you think that you found a bug in our Popup Builder plugin or have any questions, please feel free to contact us at <a href="mailto:support@popup-builder.com" title="support@popup-builder.com"><strong>support@popup-builder.com</strong></a>.
156
- </div>
157
- </div>
158
-
159
- <div>
160
- <br />
161
- </div>
162
-
163
- == Installation ==
164
-
165
- Install Popup Builder either via the WordPress.org plugin directory, or by uploading the files to your server.
166
-
167
- Activate the plugin through the 'Plugins' menu in WordPress.
168
-
169
- Go to the Popup Builder settings and set your desired options.
170
-
171
- == Screenshots ==
172
-
173
- 1. List of popups screen
174
- 2. Add new popup screen
175
- 3. Edit popup screen - Visual Composer
176
- 4. Edit popup screen - DIVI Builder
177
- 5. Subscribers list
178
- 6. Newsletter
179
- 7. Video popup
180
- 8. Social popup
181
- 9. Content restriction popup
182
- 10. Subscription popup
183
- 11. Image popup
184
- 12. Countdown popup
185
- 13. Facebook popup
186
-
187
- == Changelog ==
188
-
189
- = Version 3.74 =
190
- * Deprecated wp_get_sites() replaced with get_sites.
191
- * Unescaped DB Parameter fixed.
192
- * Removed deprecated parameter from wp_upload_bits.
193
- * Deprecated get_user_by_email has been replaced with get_user_by('email').
194
- * DB placeholders has been unquoted.
195
-
196
- = Version 3.73 =
197
- * Bug fixed related to AJAX.
198
- * Bug fixed related to Subscription form's submitting.
199
- * Bug fixed related to conflict with Post SMTP.
200
-
201
- = Version 3.72 =
202
- * Option added to enable/disable AJAX for counting popup opening stats.
203
- * Bug fixed related to multisite issue.
204
- * Bug fixed related to floating button, when style is set to basic.
205
- * Improvement of code, PHP errors are fixed.
206
- * Bug fixed related to copy to clipboard functionality in action on popup click section.
207
- * Bug fixed related to email notifications.
208
- * Bug fixed related to white space that appears when popup is active.
209
- * Added user compatibility check for AJAX requests.
210
-
211
- = Version 3.7 - 3.7.1 =
212
- * Improvement of "Display Rules" settings, showing popups on archive pages for all custom post types is added.
213
- * Bug fixed related to "Settings" button when popup's opening event is set to on load.
214
- * Bug fixed related to on click popups that are set to appear on dropdown’s menu items.
215
-
216
- = Version 3.69.6 =
217
- * JavaScript improvements.
218
- * Bug fixes.
219
-
220
- = Version 3.69.5 =
221
- * Improvement of "Display Rules" settings: Everywhere is auto selected which helps to prevent invisible popups.
222
- * Improvement of close button, image source is changed to url instead of base64.
223
- * Improvement of import/export functionality.
224
- * Bug fixed related to Polylang compatibility, translate settings is visible for all users.
225
- * Bug fixed related to Floating button's frame on iOS devices.
226
-
227
- = Version 3.69.4 =
228
- * Bug fixed related to Debug Mode.
229
-
230
- = Version 3.69.3 =
231
- * Polylang compatibility fix.
232
-
233
- = Version 3.69.2 =
234
- * Code improvement.
235
- * Debug mode added: Now it’s easier to find the issues that our users face.
236
- * Bug fixed related to compatibility with Polylang plugin.
237
- * Bug fixed related to close button showing on iOS devices.
238
-
239
- = Version 3.69.1 =
240
- * Code improvements. Thanks to 'G Lagonikas'.
241
- * Minor fixes.
242
-
243
- = Version 3.69 =
244
- * Improvement of code in SGPopup.php/PopupLoader.php/PopupBuilder.js files
245
- * Improvement of WPML compatibility
246
- * Improvement of subscribers’ import functionality, all CSV file formats are supported (CSV UTF-8, Comma delimited, Macintosh, MS-DOS)
247
- * Improvement of Image popup type, ALT attribute added for search engine optimization
248
- * Improvement of Floating button styles
249
- * Improvement of logic in opening conditions
250
- * Conflict fixed related to Litespeed cache plugin
251
- * Bug fixed related to "Hover" and "Click" opening events
252
- * Bug fixed related to Multisite dynamic paths
253
-
254
- = Version 3.68.5 =
255
- * Added new feature: Floating Button - Trigger popup by clicking on the button
256
- * Improvement of Newsletter: Added an option to send test emails before running the email campaign
257
- * Improvement of Newsletter related to keeping already inserted/sent email content after refresh
258
- * Improvement of code in Feedback.php file
259
- * PHP version compatibility improvements
260
- * Improvement and code optimization of core files
261
- * Bug fixed related to the jQuery depreciation functionality
262
- * Bug fixed related to cookie saving
263
-
264
- = Version 3.68.4 =
265
- * Improvement of core JS files.
266
- * Improvement of compatibility with WooCommerce related to Gutenberg blocks.
267
- * Full Integration with WPML plugin.
268
- * Compatibility with WordPress v5.5.
269
-
270
- = Version 3.68.3 =
271
- * Bug fixed related to the error message while uploading image for close button.
272
- * Bug fixed related to the popup cloning.
273
- * Popup opening size improvement related to wide screens.
274
-
275
- = Version 3.68.2 =
276
- * Popup Builder custom post type renamed to be more recognizable
277
- * Image upload issue
278
- * Popup display design improvement related to devices with large size
279
- * Email validation fixed on subscription popup type
280
-
281
- = Version 3.68 =
282
- * Display rules section improvement.
283
- * Subscription popup type email sending improvements.
284
- * Range slider bug fixed related to showing JS error when Gutenberg editor is enabled.
285
- * Subscribers section bulk actions error fixed related to conflict with search logic, syntax error where shown.
286
- * Conflict fixed related to Beaver builder plugin in page/post creation page.
287
-
288
- = Version 3.67 =
289
- * The Popup Builder posts were removed from sitemaps which is being generated by WordPress SEO Plugin – Rank Math.
290
- * The design of Subscription popup field issues (when some themes overwrite the colors) are fixed now.
291
- * Compatibility issues in the PHP version are fixed.
292
-
293
- = Version 3.66 =
294
- * Compatability issues fixed related to Gutenberg.
295
- * Minor improvements.
296
- * Notices fixed.
297
-
298
- = Version 3.65.2 =
299
- * Added support links.
300
- * Bug fixed related to mobile landscape view.
301
- * User roles compatibility issues fixed.
302
- * Tested with WordPress 5.4
303
-
304
- = Version 3.65.1 =
305
- * Added filter for custom JS input to sanitize invalid symbols.
306
-
307
- = Version 3.65 =
308
- * Reset the custom JS metabox to prevent code injection from versions < 3.64
309
-
310
- = Version 3.64 =
311
- * Security fixes.
312
- * Conflict resolved related to Duplicate Post plugin.
313
- * Speed improvements related to popup opening when custom close button setup.
314
- * Added ALT attribute inside the close button element.
315
- * Bug fixed related to Content Click Redirect functionality when the URL contains Unicode characters.
316
- * Minor improvements.
317
-
318
- = Version 3.63 =
319
- * Autosave fixed.
320
- * Bug fixes and improvements.
321
- * JS and CSS files minified.
322
-
323
- = Version 3.62.1 =
324
- * Hot fix related to PHP Warning.
325
-
326
- = Version 3.62 =
327
- * Improvement related to image upload inside the Image Popup.
328
- * Empty notification removed.
329
- * Notices fixed related to custom CSS/JS.
330
- * Close button issue fixed when the button was not clickable.
331
- * Improvement related to cookie saving.
332
-
333
- = Version 3.61.1 =
334
- * Minor fix related to image popup.
335
-
336
- = Version 3.61 =
337
- * Improvement: No code content will be loaded if the custom JS/CSS doesn't contain any code.
338
- * Improvement: Relative plugin path has been used.
339
- * Bug fixed related to class namepsace.
340
- * Improvement: Popup data migration functionality has been modified.
341
- * Minor fixes and improvements.
342
-
343
- = Version 3.60 =
344
- * Bug fixed related to image popup saving issue.
345
- * Cron Job task improvements.
346
- * Using a dynamic plugin path when loading resources.
347
- * Improvement related to 'Disable Page Scrolling' when page scrolls to top after the popup opened.
348
  * Minor fixes and improvements.
349
-
350
- = Version 3.59 =
351
- * Speed improvements.
352
- * Bug fixed related to Page Level Cookie on all browsers.
353
-
354
- = Version 3.58 =
355
- * Hot fix related to function arguments.
356
-
357
- = Version 3.57 =
358
- * Bug fixed related to get_option function.
359
- * Popup cache improvements.
360
-
361
- = Version 3.56 =
362
- * Transient name changed.
363
- * Max loaded popups limit increased.
364
-
365
- = Version 3.55 =
366
- * Bug fixed related to cron jobs.
367
- * Code improvements.
368
-
369
- = Version 3.54 =
370
- * Custom js issue related to code symbols (not encoded as expected).
371
- * Internet explorer compatibility issue fixed.
372
- * Popup speed improvements, decreasing of requests count to DB, AJAX.
373
- * System info view added which will help us to debug errors.
374
- * Duplicate queries were removed.
375
- * New types in the notification center added (separated by colors)
376
- * Safari overlay issue fixed
377
-
378
- = Version 3.53 =
379
- * Added missing text domain.
380
- * Fixes regarding cron tasks.
381
- * Code improvements.
382
-
383
- = Version 3.52 =
384
- * Popup notifications section improvements.
385
- * Translation .pot file updated.
386
- * Missing styles for the Close button fixed.
387
- * Fixed compatibility issues with Beaver Builder (page builder) plugin.
388
- * Speed improvements, related to getting popup data from a database.
389
- * JS code improvements related to popup opening, there were issues with old/new browsers.
390
- * Image popup improvements, when there is an incorrect image used: with incorrect URL, in this case, we will show the default "no image" placeholder.
391
- * Deprecated functions updated (JS).
392
- * Unneeded CSS code removed, which affected on the admin panel of the plugin.
393
- * New 'Archive' page added in Display Rules => Page types.
394
- * JS error fixed, which affected on correct work of extra events.
395
-
396
- = Version 3.51 =
397
- * Bug fixed related to Newsletter.
398
- * Added new parameter PopupID inside sgpbPopupContentLoadToPage filter.
399
- * Added plugin notification URL.
400
- * Typo fixes.
401
-
402
- = Version 3.50 =
403
- * Added new feature to add custom JS and CSS codes. You can add your custom JS logic to control popup opening also you can add custom CSS to change popup styles.
404
- * Bug fixed related to image upload.
405
- * Big fixed related to popup opening events. Sometimes it didn't get saved.
406
- * Code improvements. We have changed the auto save option to not call AJAX every time.
407
-
408
- = Version 3.49 =
409
- * Added async image preloading to make Image popup loads faster.
410
- * Code improvements and minor bug fixes.
411
-
412
- = Version 3.48 =
413
- * Code improvements and minor bug fixes.
414
- * Popup speed improvements.
415
- * Popup triggering events synchronisation.
416
- * PHP notices fixed.
417
-
418
- = Version 3.47 =
419
- * Bug fixed related to onclick event.
420
-
421
- = Version 3.46 =
422
- * Bug fixed related to Import of subscribers.
423
- * In popup builder menu, support section fixed, there was an incorrect redirection.
424
- * WP bakery (composer) compatibilty issue fixed.
425
- * PHP notice removed connected to Media buttons.
426
- * Popup speed improvements.
427
- * Bug fixed related to menu item click.
428
- * Facebook popup bug fixed related to error related to app development mode.
429
-
430
- = Version 3.45 =
431
- * Improvements of subscription form live preview.
432
- * Changed Support location URL to (Live Chat).
433
- * Bug fixed related to Subscribers Table ordering (credit: Tin Duong of Fortinets FortiGuard Labs).
434
- * Banner closing issue fixed.
435
- * Code/speed improvements, php notices have been removed.
436
-
437
- = Version 3.44 =
438
- * Code optimization and typo fixes.
439
- * Bug fixed, related to Unsubscribe link in the newsletter.
440
- * Bug fixed related to unavailability to close the banner.
441
-
442
- = Version 3.43 =
443
- * Iframes (dimensions) in html works correctly, with correct sizes and without scroll issue.
444
- * Don't show again button added in license notice banner.
445
- * License keys issue fixed, now if you have already activated/deactivated the keys on another site, you will see the actual error.
446
- * Added new option which allows to show Subscription popup to already subscribed users.
447
- * Added new option to change the unsubscribe link title in the newsletter.
448
- * Code/speed improvements, php notices have been removed.
449
-
450
- = Version 3.41- 3.42 =
451
- * Added new shortcodes which can be used inside the Newsletter
452
- * PHP > 7 notices fixed
453
- * Code optimization and typo fixes
454
-
455
- = Version 3.4 =
456
- * Popup Builder post type removed from Yoast sitemap and other SEO plugins.
457
- * Custom JS variable improvements.
458
- * Bug fixed related to PHP version notice.
459
- * Bug fixed related to page level cookie.
460
- * Popup speed optimization.
461
- * Bug fixed related to page scrolling when the pages moves up.
462
- * New extension added Age Restriction popup.
463
-
464
- = Version 3.3 =
465
- * Popup preview fixes.
466
- * Improvement: If the popup is setup on the Link and the popup opening condition doesn't meet the current state, the default Link functionality will be triggered.
467
- * Added a Button element inside the WP editor.
468
- * Fix: Mobile landscape issue, in all cases the popup sizes will be changed, if the window orientation is changed (mobile/desktop).
469
- * Completely works with almost all page builders.
470
- * Subscribers Import/export fixes.
471
- * Popup showing limitation improvement.
472
-
473
- = Version 3.2 =
474
- * New Feature: PDF popup type.
475
- * New Feature: Popup content can be set at the top and bottom of Subscription form.
476
- * Admin panel and frontend speed improvements.
477
- * Speed improvements for Multisite.
478
- * Bug fixed related to popup overlay turning on/off functionality.
479
- * Improvements for Apple devices (page scrolling, popup dimensions, etc).
480
- * Big fixed for Internet Explorer related to popup showing limitations.
481
- * Unstoppable scroll bug fixed when there is a LastPass browser extension.
482
- * Add improvements for Page builders.
483
- * Add UTF-8 support for Newsletters.
484
-
485
- = Version 3.1.9 =
486
- * Bug fixed related to paths of the Popup Builder resources.
487
- * Select2 ui bugs.
488
- * Typos fixes.
489
- * Added message to notify user about inactive extension(s).
490
- * Speed improvement: popup opening sound affects on the popup opening speed and in some cases on page load.
491
- * Improvements related to JS variables.
492
- * Styles and scripts including issue on multisite websites.
493
- * Subscription popup: ability to write html into the GDPR field confirmation message.
494
-
495
- = Version 3.1.8 =
496
- * Added new feature border-width for subscription popup.
497
- * Added new feature border-radius for subscription popup.
498
- * Added new feature border-color for subscription popup.
499
- * Bug fixed related to dynamic JS variagbles.
500
- * Bug fixed related to popup appearance on admin panel for page builders.
501
- * Code cleanup and improvements.
502
-
503
- = Version 3.1.7.1 =
504
- * Bug fixes related to banner.
505
-
506
- = Version 3.1.7 =
507
- * Added Popup Builder button inside the TinyMCE editor, which will allow adding the popup shortcode inside the page/post content.
508
- * Added compatability with page builders.
509
- * Bug fixed related to Autoresponder conditions.
510
- * Bug fixed related to cache of the select box element.
511
- * Improvements related to script including for wordpress multisites.
512
- * Conflict resolved related to some extensions.
513
- * Bug fixed related to post category search action.
514
- * Code cleanup and improvements.
515
-
516
- = Version 3.1.6.1 =
517
- * Bug fixed related to overlay issue.
518
- * Mailchimp update issue fixed.
519
-
520
- = Version 3.1.6 =
521
- * Added new feature to change Close Button position.
522
- * Added new feature to hide/change popup's border (2nd and 3rd themes).
523
- * Added new feature inside the 'Display Rules' to show popup by post categories.
524
- * Improvement related to MyISAM and InnoDB when one if this engines don't supported.
525
- * Added class selector inside the popups' data table.
526
- * Fixed PHP notices.
527
- * Bug fixed related to extension licenses.
528
- * Code improvements and minor bug fixes.
529
-
530
- = Version 3.1.5.2 =
531
- * Added new extension Web Push Notification.
532
- * Gutenberg block improvements.
533
- * Code improvements and minor bug fixes.
534
-
535
- = Version 3.1.5.1 =
536
- * Bug fixes and improvements.
537
-
538
- = Version 3.1.5 =
539
- * Improvements related to popup analytics.
540
- * Bug fixed related to onclick with 'set popup by css class' option.
541
- * Improvements related to some filters inside the subscriber's list section.
542
- * Bug fixed related to multiple onload subscription popups.
543
- * Bug fixed related to infinite loop with popups shortcode.
544
- * Code improvements and minor bug fixes.
545
-
546
- = Version 3.1.4.1 =
547
- * Bug fixed related to JS error for blocks.
548
-
549
- = Version 3.1.4 =
550
- * Added Popup Builder block for Gutenberg.
551
- * Bug fixed related to popup limitation for IE browser.
552
- * Improvements related to the Iframes inside the HTML popup.
553
- * Added filter inside subscriber's table.
554
- * URL detection.
555
-
556
- = Version 3.1.3 =
557
- * Bug fixed related to banner closing.
558
- * Popup Builder archive page removed.
559
- * Bug fixed related to blank page of the popups data table.
560
- * Added popup showing limitation to remember by session.
561
- * If the user requests Popup's post type page it will be redreceted to homepage.
562
- * Added new option to not close the initial popup when the second popup is opened with "popup inside another popup" option.
563
- * Code improvements and minor bug fixes.
564
-
565
- = Version 3.1.2 =
566
- * Bug fixed related to popup view limitation (getting JS error if Popup Limitation is set up).
567
- * Improvements on popup preview functionality.
568
- * Added missing localization texts.
569
- * Improvements on subscribers section.
570
- * Minor fixes and improvements.
571
-
572
- = Version 3.1.1 =
573
- * Now the popup limitation cookie is saving only after the popup appears.
574
- * Popup Builder migration tweak.
575
- * Added popup import/export functionality.
576
- * Added new extension.
577
- * Code improvements and minor bug fixes.
578
-
579
- = Version 3.1 =
580
- * Bug fixed related to cookie saving for Safari and Internet Explorer.
581
- * Add new option to show categories for WooCommerce product(s).
582
- * Bug fixed related to 'unsubscribe' link.
583
- * Code improvements and minor bug fixes.
584
-
585
- = Version 3.0.9.1 =
586
- * Deafult values added for conditions section.
587
- * Media button dublicate localization removed.
588
- * Bug fixed related to page/post selection.
589
-
590
- = Version 3.0.9 =
591
- * Bug fixed connected to page scrolling when after popup appearance page srolled up.
592
- * Bug fixed for the admin side related to subscribers export list.
593
- * Improvements connected to subscription live preview.
594
- * Improvement: If more than one ShortCode (same popup) is added into the page, we will load the data only once.
595
- * Image popup optimization.
596
- * Bug fixed realted to overlay closing.
597
- * Minor fixes and improvements.
598
-
599
- = Version 3.0.8 =
600
- * Conflict fixed connected to 'unsubscribe' link with othe plugins.
601
- * Image popup responsivenes improvements.
602
- * Onclick and Onhover events added inside events dropdown metabox.
603
- * Padding removed from image popup.
604
- * Added while content is loading.
605
- * Code improvements and minor bug fixes.
606
-
607
- = Version 3.0.7 =
608
- * Hot fix connected to subscribers table.
609
-
610
- = Version 3.0.6 =
611
- * Added new option 'unsubscribe' for newsletter.
612
- * Opening and closing animation can be a float value now.
613
- * Optimization connected to large page/post list data inside the select box.
614
- * Now countdown can be set not only with date but also without it.
615
- * Image popup improvements, optimization (speed, responsivenes) and bug fixes.
616
- * Added to new option RTL/LTR for popup content direction.
617
- * Added new option inside age restriction popup to remember previus state of user selection.
618
- * Added loading spinner inside Iframe and Video popup types.
619
-
620
- = Version 3.0.5 =
621
- * Bug fixed for subscription popup for some cases when the submit event was not triggering.
622
- * Added new option to close popup after copy to clipboard action.
623
- * Added 'Push to bottom' option for social and restriction popup types.
624
- * Bug fixed connected to user roles who can use the plugin.
625
- * Bug fixed related to Popup Conditions saved data.
626
- * Improvements connected to 'disable scrolling' option for Android devices.
627
- * Added new Fit option for image popup type to resize it according to the image size.
628
- * Added success message for 'Copy to clipboard' option
629
- * Added new option to reset popup opening count.
630
- * New animation effect for popup closing.
631
-
632
- = Version 3.0.4 =
633
- * Seo redirect for popup post types (301).
634
- * CSS class support for popup opening.
635
- * Added new condition to show popup sitewide.
636
- * Bug fixed conencted to scrolling inside the Safari browser.
637
- * Bug fixed inside the subscribers' table for invalid dates.
638
- * Popup sizing improvements.
639
- * Bug fixed connected to content scroling option.
640
-
641
- = Version 3.0.3 =
642
- * Bug fixed connected to update from v2 to v3 when popups disappear.
643
- * Compatability with old popup (v2) classes. Example sg-popup-id-1.
644
- * Popup preview big fixed.
645
- * Bug fixed connected to selected pages/post for popup showing.
646
- * Bug fixed connected to new line brake inside the TinyMCE.
647
- * Bug fixed connected to close button image rendering issue.
648
- * Bug fixed connected to popup themes.
649
-
650
- = Version 3.0.2 =
651
- * Bug fixed connected to mail subject.
652
- * Bug fixed subscription popup type.
653
- * Bug fixed connected to banner.
654
- * Bug fixed connected to 'draft' status.
655
- * Optimization of images.
656
-
657
- = Version 3.0.1 =
658
- * Bug fixed connected to subscribers table.
659
- * CSS issue fixed connected to bs alert box.
660
-
661
- = Version 3.0 =
662
- * Major release of Popup Builder v.3.0.
663
- * Full UI redesign.
664
- * Full architectural changes.
665
- * Subscription popup added.
666
- * Newsletter added.
667
-
668
- = Version 2.6.7.6 =
669
- * Added new class to don't show popup for a certain period of time if the user clicks on the containg button.
670
- Example `<button class="sg-popup-dont-show-30">Close Popup and Dont Show for 30 days</button>`.
671
- * Bug fixed connected to user roles who can use the plugin.
672
-
673
- = Version 2.6.7.5 =
674
- * Improvements connected to popup preview.
675
- * Bug fixes connected to user roles who can use the plugin
676
- * Code optimization.
677
-
678
- = Version 2.6.7.4 =
679
- * Video popup improvements connected to full screen option
680
- * Popup integration's path fixed
681
- * Bug fixed connected to popup preview
682
-
683
- = Version 2.6.7.3 =
684
- * UI improvements.
685
- * Typo fixes.
686
- * Email validator fixed for subscription popup and contact form popup.
687
- * Code optimization.
688
-
689
- = Version 2.6.7.2 =
690
- * Bug fixed connected to page builder plugins.
691
-
692
- = Version 2.6.7.1 =
693
- * Bug fixed connected custom JS variables inside the popup.
694
- * Bug fixed connected to page scrolling when it is disabled.
695
- * Bug fixed connected to activation and deactivation of some popup extensions.
696
- * Bug fixed connected to get_screen function in themes where it was missing.
697
-
698
- = Version 2.6.7 =
699
- * Added new feature to use custom JS variables inside the popup.
700
- * Content background issue fixed.
701
- * Bug fixes and code optimization.
702
-
703
- = Version 2.6.5 =
704
- * Bug fixed connected to Iframe video autoplay.
705
-
706
- = Version 2.6.4.6 =
707
- * Bug fixed connected to Popup size.
708
- * Code optimization and typo fixes.
709
-
710
- = Version 2.6.4.6 =
711
- * Added a new option, to show the popup close button with configurable delay option.
712
- * Added tooltip next to Preview button, to show how to setup popup in page or post.
713
- * Bug fixed connected to Popup Type inside the JS variable.
714
- * Code optimization and typo fixes.
715
-
716
- = Version 2.6.4.5.1 =
717
- * HOTFIX
718
-
719
- = Version 2.6.4.5 =
720
- * Popup preview improvements.
721
- * Fixed auto play issue for iframe inside html popup content.
722
- * Fixed popup preview for mailchimp issue.
723
- * Facebook popup Optimization.
724
-
725
- = Version 2.6.4.4 =
726
- * Added an option to close facebook popup after liking the page.
727
- * Added an option to hide share button inside the facebook popup.
728
- * Minor fixes and improvements.
729
-
730
- = Version 2.6.4.3 =
731
- * Bug fixed connected to Popup Preview.
732
- * Popup preview improvments.
733
- * Minor fixes and improvements.
734
- * Optimization of page scroling when the popup is opened.
735
-
736
- = Version 2.6.4.2 =
737
- * Added popup preview option.
738
- * Added popup background image option.
739
- * Added new option to open popup from URL. Example `<a href="https://yoursite.com#sg-popup-id-1">Click Text</a>`
740
- * Minor fixes and improvements.
741
-
742
- = Version 2.6.4.1 =
743
- * Added popup counter feature.
744
- * Added review section.
745
- * Bug fixed connected to popup opening sound.
746
- * PHP Notices fixed.
747
- * Minor fixes and improvements.
748
-
749
- = Version 2.6.4 =
750
- * Added new option to play sound on popup opening.
751
- * Minor fixes and improvements.
752
-
753
- = Version 2.6.3.3 =
754
- * Bug fixed for Safari browser when the popup loads automatically.
755
-
756
- = Version 2.6.3.2 =
757
- * Popup media button functionality improvements.
758
- * Show popup this often time period is saving according to visitors browser.
759
-
760
- = Version 2.6.3.1 =
761
- * JS bug fixed.
762
-
763
- = Version 2.6.3 =
764
- * Bug fixes and code improvements.
765
- * New popup animation added.
766
-
767
- = Version 2.6.2 =
768
- * Bug fixed connected to page scrolling behind the popup.
769
- * Added new option `repetitive popup` to show popup every X period of time.
770
- * Added option to sho random popups (PRO).
771
- * Improved compatibility with WPML (PRO).
772
- * Typo fixes.
773
-
774
- = Version 2.6.1 =
775
- * Shortcode detection optimizations.
776
-
777
- = Version 2.6.0 =
778
- * Improvement of responsive auto mode.
779
- * Improvement of popup's shortcode detection.
780
- * Bug fixes.
781
-
782
- = Version 2.5.9.3 =
783
- * Added new option to disable content scrolling of the page.
784
- * Auto mode optimization.
785
- * Bug fixes.
786
-
787
- = Version 2.5.9.2 =
788
- * Hot fix connected to onclick popup.
789
-
790
- = Version 2.5.9.1 =
791
- * Bug fixed connected to popup positioning.
792
- * Bug fixed connected to popup hovering event.
793
- * Bug fixed connected to popup scaling.
794
- * Minor fixes and improvements.
795
-
796
- = Version 2.5.9 =
797
- * Added popup content padding option.
798
- * Banner improvements.
799
- * Bug fixes.
800
-
801
- = Version 2.5.8 =
802
- * Tweak: Added option to control popup opening count.
803
- * Bug fixed connected to banner `Do not show again button` button.
804
- * Code improvements.
805
-
806
- = Version 2.5.7 =
807
- * Bug fixed connected to popup On/Off switch button.
808
- * PHP notices fixed.
809
-
810
- = Version 2.5.6 =
811
- * Improvements of the HTML sanitization.
812
-
813
- = Version 2.5.4 - 2.5.5 =
814
- * Security update.
815
-
816
- = Version 2.5.3 =
817
- * Tweak: JS and CSS minified for better performance.
818
- * Tweak: Responsive mode calculations are more accurate.
819
- * Tweak: Facebook popup share and like buttons will be localized according to the site language.
820
- * Bug fixed connected to user roles who can use popup builder plugin.
821
- * Bug fixed connected to Max-Width option for `auto` mode.
822
- * Code optimization and typo fixes.
823
-
824
- = Version 2.5.2 =
825
- * Added new option `auto` inside the responsive mode.
826
- * Tweak: popup loading optimization.
827
- * Tweak: added compatibility with autoptimize plugin.
828
- * Tweak: added e.preventDefault(); for onclick popups to not redirect the page.
829
- * Code optimization and typo fixes.
830
- * Bug fixes.
831
-
832
-
833
- = Version 2.5.1 =
834
- * Bug fixed connected to Filename notice.
835
- * Added new feature to control popup Z-Index.
836
- * Popup themes optimization.
837
- * Code optimization and typo fixes.
838
- * Fixed some output notices.
839
-
840
- = Version 2.5.0 =
841
- * Added new option for responsiveness.
842
- * Added option to control the opacity of the popup background.
843
- * Shortcode popup improvements.
844
- * Added compatibility with cache plugins.
845
- * Added CSS class sg-popup-hover-id for triggering popup by hovering via element.
846
- * Code improvement and optimization.
847
- * Improvement for detection of CSS classes(inside page templates, and WooCommerce products).
848
- * Code improvement and optimization.
849
-
850
- = Version 2.4.9 =
851
- * New extensions added.
852
- * Subscription popup improvements.
853
- * Shortcode popup improvements.
854
- * Compatibility with WP Network > 4.6.
855
- * User role improvement for WP Network.
856
- * JS optimization for Cache plugins.
857
- * Code improvement and optimization.
858
-
859
- = Version 2.4.8 =
860
- * Bug fixed connected to extensions manager.
861
-
862
- = Version 2.4.7 =
863
- * Added extension logic.
864
- * Code optimization.
865
- * Bug fixes.
866
- * Exit-Intent extension (PRO).
867
- * AdBlock extension (PRO).
868
-
869
- = Version 2.4.6 =
870
- * UX modifications.
871
-
872
- = Version 2.4.5 =
873
- * Backend JS optimization.
874
- * Frontend JS optimization.
875
-
876
- = Version 2.4.4 =
877
- * Bug fixed connected to timezone.
878
-
879
- = Version 2.4.3 =
880
- * Added empty index.php file inside every directory to prevent directory listing.
881
- * Shortcode functionality improvements.
882
- * Prevented direct access to plugins php file.
883
- * Bug fixes.
884
-
885
- = Version 2.4.2 =
886
- * Added option to open from URL. Example http://popup-builder.com/index.php?sg_popup_id=1
887
- * Added option to reopen popup after any form submission.
888
- * Added option to show popup on custom posts (PRO)
889
- * Bug fixes and code optimization.
890
-
891
- = Version 2.4.1 =
892
- * New opening animation added.
893
-
894
- = Version 2.4.0 =
895
- * Availability to add popup for external link. Ex.`<a href="https://sygnoos.com/" class="sg-confirm-popup-1">Popup</a>` where 1 is a popup id.
896
- * Now you can have one iframe popup instance which can load dynamic external URLs. Ex `<a href="https://sygnoos.com/" class="sg-iframe-popup-1">Popup</a>`(PRO)
897
- * Page level cookie storing. Now you can decide 'Show this often' option will work on a site level or on a page level.
898
- * Bug fixed and code optimization.
899
-
900
- = Version 2.3.9.1 =
901
- * UTF-8 issue fixed.
902
-
903
- = Version 2.3.9 =
904
- * New theme added (lightbox popup).
905
- * Added new functionlity to turn on/off popup.
906
- * Inside HTML popup now allowed to use script, styles and other HTML tags.
907
- * Onclick popup inside menu item.
908
- * Newsletter module added to subscription popup (PRO).
909
- * Selective deletion inside Subscribers data table (PRO).
910
- * Popup cookie saving per page or site (PRO).
911
- * Bug fixed and code optimization.
912
-
913
- = Version 2.3.8 =
914
- * New animation effect added.
915
-
916
- = Version 2.3.7 =
917
- * New option: Popup scaling.
918
- * New option: Availability to customize 3rd theme. Ex (border-radius, border-color)
919
- * Bug fixes and code optimization.
920
-
921
- = Version 2.3.6 =
922
- * Show/Hide Popup for selected User Roles (Admin panel) (Free)
923
- * Bug fixed connected to 3rd party shortcodes
924
- * New option: Show popup after inactivity (PRO)
925
- * New option: Popup Scheduling (Example: every Monday from 9:00am - 6:00pm) (PRO)
926
- * New option: Show popup on categories
927
-
928
- = Version 2.3.5 =
929
- * Added new menu item `Settings` where user can choose weather to delete tables or not. This is helpfull when user upgrades to PRO version and don't want to lost previous data.
930
- * Third party shortcodes improvments.
931
- * New type of popup Mailchimp (PRO).
932
- * Bug fixed connected to onclick popup integration.
933
- * Dimenssions fixed when using shortcode popup.
934
-
935
-
936
- = Version 2.3.4 =
937
- * PHP version bug fixed.
938
-
939
- = Version 2.3.3 =
940
- * Bug fixed connected to PHP script short tag.
941
- * Bug fixed connected to popup's dialog z-index.
942
- * Added support for future extensions.
943
- * Added compatibility with Ninja Forms.
944
- * Added compatibility with Gravity Forms.
945
- * Added compatibility with TablePress.
946
- * Added compatibility with Formidable Forms.
947
- * Added compatibility with WP Google Maps.
948
- * Added compatibility with HTML5 Maps.
949
- * Code cleanup.
950
- * Code optimization related to include paths.
951
-
952
- = Version 2.3.3 =
953
- * Added new option for a popup content padding.
954
- * Backend banner improvement.
955
- * Bug fixes.
956
-
957
- = Version 2.3.2 =
958
- * Fusion builder compatible.
959
- * Bug fixes.
960
-
961
- = Version 2.3.1 =
962
- * Bug fixed connected to PHP version
963
-
964
- = Version 2.3.0 =
965
- * Popup shortcode modified, onclick popup can be wrapped to any element. Ex `[sg_popup id="1" wrap="span" event="click"]Open Popup #1[/sg_popup]`
966
- * Popup can be opened via html class. Ex. `<span class='sg-popup-id-1'>Popup #1</span>`
967
-
968
- = Version 2.2.9 =
969
- * Bug fixed connected to redirection on popup click.
970
-
971
- = Version 2.2.8 =
972
- * Bug fixed connected to version 2.2.7
973
-
974
- = Version 2.2.7 =
975
- * Shortcode bug fixed.
976
- * Show popup on element hover (New Feature).
977
-
978
- = Version 2.2.6 =
979
- * Bug fixed with redirection logic.
980
-
981
- = Version 2.2.5 =
982
- * Now you can insert a link (URL) of a page to which the customers will be redirected to, when clicking on the popup.
983
- * Code cleanup.
984
-
985
- = Version 2.2.4 =
986
- * Bug fixed connected to data tables.
987
-
988
- = Version 2.2.3 =
989
- * Popup Z-index set to max value.
990
-
991
- = Version 2.2.2 =
992
- * Fully tested on WordPress 4.5.
993
- * New features added.
994
- * Bug fixes and stability improvements.
995
-
996
- = Version 2.2.1 =
997
- * Auto resize if dimensions are not defined.
998
-
999
- = Version 2.2.0 =
1000
- * Bug fixed with popup scrolling.
1001
-
1002
- = Version 2.1.9 =
1003
- * Bug fixed.
1004
-
1005
- = Version 2.1.8 =
1006
- * Added close button localization for fourth popup theme.
1007
- * Code cleanup.
1008
- * Minor improvements.
1009
-
1010
- = Version 2.1.7 =
1011
- * Auto adjust Popup to HTML image size.
1012
-
1013
- = Version 2.1.6 =
1014
- * Page scrolling issue fixed in popup builder.
1015
-
1016
- = Version 2.1.5 =
1017
- * Compatible with Black Studio TinyMCE.
1018
-
1019
- = Version 2.1.4 =
1020
- * Short code popup added.
1021
- * Bug fixed.
1022
-
1023
- = Version 2.1.3 =
1024
- * Bug fixed.
1025
-
1026
- = Version 2.1.2 =
1027
- * Bug fixed inside Facebook Popup.
1028
- * Optimizations.
1029
-
1030
- = Version 2.1.1 =
1031
-
1032
- * Compatible with minify plugins.
1033
- * Code cleanup.
1034
-
1035
- = Version 2.1.0 =
1036
-
1037
- * Added ability to close popup from itself. Just add html class to the element.
1038
- * Ex. `<a href="#" class="sg-popup-close">Close Popup</a>`
1039
-
1040
- = Version 2.0.9 =
1041
-
1042
- * Facebook share and like popup added.
1043
- * Code cleanup.
1044
- * Bug fixed.
1045
-
1046
- = Version 2.0.8 =
1047
-
1048
- * Inside Popup data table added sorting and search field.
1049
- * Bug fixed.
1050
-
1051
- = Version 2.0.7 =
1052
-
1053
- * Inside HTML popup WYSIWYG is updated and now allows to create content with most common HTML tags and styles.
1054
- * Code cleanup.
1055
- * Bug fixed.
1056
-
1057
-
1058
- = Version 2.0.6 =
1059
-
1060
- * Added new effects of showing popup.
1061
- * Bug fixed.
1062
-
1063
- = Version 2.0.5 =
1064
-
1065
- * Added shortcode to auto open popup.
1066
- * Added new feature to support all screen positions where popup can be shown.
1067
- * Code cleanup.
1068
- * Bug fixed.
1069
-
1070
- = Version 2.0.4 =
1071
-
1072
- * Bug fixed with database collation.
1073
-
1074
- = Version 2.0.3 =
1075
-
1076
- * Bug fixed.
1077
-
1078
- = Version 2.0.2 =
1079
-
1080
- * Popup UI changed.
1081
- * Popup Builder PHP version fixes.
1082
-
1083
- = Version 2.0.1 =
1084
-
1085
- * Bug fixed.
1086
-
1087
- = Version 2.0 =
1088
-
1089
- * Major release of Popup Builder v.2.0
1090
-
1091
- = Version 1.1.4 =
1092
-
1093
- * Bug fixed with single quotes string/html popup.
1094
-
1095
- = Version 1.1.3 =
1096
-
1097
- * Multisite support.
1098
- * Bug fixes.
1099
-
1100
- = Version 1.1.2 =
1101
-
1102
- * Bug fixes.
1103
-
1104
- = Version 1.1.1 =
1105
-
1106
- * Bug fixes.
1107
-
1108
- = Version 1.1 =
1109
-
1110
- * Bug fixes.
1111
-
1112
- = Initial upload 1.0.0 =
1113
-
1114
- == Frequently Asked Questions ==
1115
- **How many popups can I create?**
1116
-
1117
- You can create as many popups as you want, there is no limit either on the Free or the PRO version.
1118
-
1119
- **Can I have more than one popup on the same page?**
1120
-
1121
- You can have as many popups as you want on the same page, but you can only set one popup to be opened on page load, the others must be set to open on click.
1122
-
1123
- **How can I set a popup to open automatically?**
1124
-
1125
- After creating your popup, go to the desired page or post and you will see a meta box below the content editor, with the following title: "Select popup on page load". Select the popup you want to set and then update the page. You are done! After you go to that page/post the popup will get opened automatically.
1126
-
1127
- **Want to insert a popup on a link, that will open up when clicked on the link?**
1128
-
1129
- Simply add the following class to it: sg-confirm-popup-#popupid.
1130
- Ex. `<a href="https://sygnoos.com/" class="sg-confirm-popup-1">Popup</a>`
1131
- This will open a popup before a user goes to the page from the link.
1132
-
1133
- **How to redirect users after clicking on the popup image?**
1134
-
1135
- Go to the `Options` section of your popup and find "Dismiss on content click" option.
1136
- Then Select "Redirect" option and in the URL field type the URL of the page you need your users to be redirected to.
1137
-
1138
- **Can I show a popup after a specific amount of time?**
1139
-
1140
- Under the Effects panel you will see 'Popup opening delay' option, all you need to do is to enter the amount of time (seconds) after which popup will be shown.
1141
-
1142
- **Want to open your links inside the popup without redirecting your users to the other site? (PRO)**
1143
-
1144
- You can simply create an empty iframe popup and add the following class to your link: sg-iframe-popup-#popupid number.
1145
- Ex. `<a href="https://sygnoos.com/" class="sg-iframe-popup-1">Popup</a>`
1146
- This way, you'll have an iframe popup on your link, so when a user clicks on your link an iframe popup will open up, with the page of the link inside, so the users won't be redirected by the link.
1147
-
1148
- **Can I put a popup to show after clicking something?**
1149
-
1150
- Yes. There is an "Insert popup" button which will insert the popup shortcode over any element (text, image, button, etc.) you want. Just select the element, click on the button, choose a popup and you are done!
1151
-
1152
- Ex. [sg_popup id="1" event="click"]Your text, or HTML element[/sg_popup]
1153
-
1154
- Ex. [sg_popup id="1" event="click" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]
1155
-
1156
- Ex. [sg_popup id="1" event="click"]`<img src="https://sygnoos.com/images/sygnoos_logo_grey.png">`[/sg_popup]
1157
-
1158
- Alternative method in case if shortcode doesn't satisfy your needs
1159
-
1160
- Adding the following class `sg-popup-id-1`
1161
-
1162
- Example: `<span class='sg-popup-id-1'>Popup #1</span>`
1163
-
1164
- **Can I change the wrapping element of onclick popup?**
1165
-
1166
- Yes, you can change it. You can write any HTML element you need to wrap your content in the wrapper attribute of your onclick popup.
1167
-
1168
- Example: `[sg_popup id="1" event="click" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]`
1169
-
1170
- **Can I put a popup to show after hovering an element?**
1171
-
1172
- Sure, you can! Just insert your text into the following code: `[sg_popup id="1" event="hover" wrap="span"]Your text, which will be wrapped inside span element[/sg_popup]`
1173
-
1174
- **Can I change the wrapping element of hovering popup?**
1175
-
1176
- Yes, you can change it. You can write any HTML element you need to wrap your content in the wrapper attribute of your hovering popup.
1177
-
1178
- Example: `[sg_popup id="1" event="hover" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]`
1179
-
1180
- **How to create a shortcode popup?**
1181
-
1182
- It's a very easy thing to do, just follow the steps!
1183
-
1184
- * Find "Popup Builder" plugin on the left bar
1185
- * Press "Add new Popup" button
1186
- * Press "Shortcode" button
1187
- * Enter a title for the Popup
1188
- * Setup general options of the popup
1189
- * Enter a Shortcode
1190
- * Setup effects of the popup
1191
- * Setup the dimensions of the popup
1192
- * Setup advanced options of the popup
1193
- * After creating press "Save changes" right above the page
1194
- * Find the popup you created in "All popups" on the left bar
1195
-
1196
- One perfect news for the popup builder users! Our popup builder plugin is now compatible with any other plugins' shortcodes!
1197
-
1198
- **How to make the Popup responsive?**
1199
-
1200
- To make your popup responsive you should do the following:
1201
- Set width and height in percent(%) and then set Max width and Max height in pixels (px).
1202
- When the screen is too wide, Max width option will work and it will prevent showing popup large.
1203
-
1204
- Example of responsive popup:
1205
-
1206
- Width: 80%
1207
-
1208
- Height: 90%
1209
-
1210
- Max width: 640px
1211
-
1212
- Max height: 480px
1213
-
1214
-
1215
- **What URL do I have to enter in the URL field of the facebook popup?**
1216
-
1217
- You should enter the URL of the site you want to share.
1218
-
1219
- **How to redirect user to specific page when he/she clicks on popup?**
1220
-
1221
- You should create any type of popup.
1222
-
1223
- * From the Popup's options, find "Dismiss on content click" option.
1224
- * Check it.
1225
- * Select "Redirect" button.
1226
- * In the "URL" field enter the URL of the page you need your users to be redirected to.
1227
-
1228
- Don't forget to Save changes!)
1229
-
1230
- **Can I make the video play automatically in the Video popup? (PRO)**
1231
-
1232
- Sure! If you want your video to play automatically, we have an option specially for that case. Just select "Autoplay" and your video will play automatically. Please be noted that autoplay option will not work on mobile devices as there are browser restrictions.
1233
-
1234
- **What do I have to write in the field "Label" of the Age Restriction popup? (PRO)**
1235
-
1236
- You can write the text which you want to see on the button. ("Yes" or "No")
1237
-
1238
- **What if I don't have any specific URL to be shared in my social popup?**
1239
-
1240
- You can select "Use active URL" and the current page URL will be shared.
1241
-
1242
- **Why should I buy the PRO package?**
1243
-
1244
- The Free version of Popup Builder gives you anything you need for creating unlimited fully functional popups and insert them wherever you want. Our PRO package gives you the ability to create more specific popups, like iframe, video or shortcode popups. Also, advanced options will be available for you to disable popup closing, disable popup for mobile devices, show the popup only once, and many other features. So if you need these advanced popups and functionalities, get Popup Builder PRO <a href="http://popup-builder.com">here</a>.
1245
-
1246
- **How to upgrade to PRO version without losing popup's data?**
1247
-
1248
- We made it very easy for you! All you need to do is:
1249
-
1250
- * In your Menu sidebar, go to Popup -> "Settings" section.
1251
- * Disable the "Delete popup data" option.
1252
-
1253
- That's all! And you don't need to delete your Free version manually before upgrading to Pro!
1254
-
1255
- **How can I add a sound on popup opening?**
1256
-
1257
- From the 'Effects' panel enable 'Popup open sound' option and choose the sound you would like to be played on the popup opening.
1258
- Please be noted that browser's don't support all the formats. We recommend to use the WAV format.
1259
-
1260
- **Can I create a popup and make it invisible for some countries? (PRO)**
1261
-
1262
- Our plugin has an option for such cases. You can select "Filter popup for selected countries" option, which allows you to select the countries in which you want the popup to be shown or hidden, because there can be some popups which you make for specific countries and you may not want them to be seen in some other countries in cases of targeting groups for your marketing. (Allow/Disallow)
1263
-
1264
- **What's Live Preview in Countdown, Subscription and Contact Form popups for? (PRO)**
1265
-
1266
- Live preview is a great option which gives you an opportunity to see all the changes you make while creating your popup without saving it after every single change.
1267
-
1268
-
1269
- **Something is not working. What do I do?**
1270
-
1271
- Contact us! Depending on your server configuration something may go wrong, please don't hesitate on contacting us, we are here to help you! Our support email is: support@popup-builder.com
1272
-
1273
- **Everything works PERFECT. What do I do?**
1274
-
1275
- Leave us a good review :)
1276
-
1277
- == Upgrade Notice ==
1278
-
1279
- Current Version of Popup Builder is 3.74
1280
-
1281
- == Other Notes ==
1282
-
1283
- #### Popup Builder
1284
-
1285
- Our Popup Builder plugin is brilliant if you need to insert some ads to your website to attract users' attention. You can use our popups to redirect users to pages which you want them to visit, besides your host website. You can share videos, images and links of websites you want to. By our Popup Builder plugin you can add subscription forms to make your users subscribe to your page. You can even set restrictions for some groups of users, inserting restriction popups created by our plugin to your page.
1286
-
1287
- Popup Builder Team finds popups as another definition of the word "Solution".
1288
- Ready to see 10 relevant problems that appear while social marketing?
1289
- Here is how this works.
1290
-
1291
- = First problem: I want to have basic information about my product in a certain popup but a huge text might make annoying or just unreadable the text. How can this be achieved? Is there a correspondent tool for it? =
1292
-
1293
- == First solution: HTML Popup ==
1294
-
1295
- While sharing your ideas and viewpoints online, it is not always convenient or adequate to involve in the text all the information you got. On the other hand, it is always important not to ignore all the significant extra pieces of the information, because every website owner wants to satisfy the needs of a manifold audience.
1296
-
1297
- The HTML popup of ours is quite popular solution. After installing it, you gain the golden ability to be brief in your texts but unleash a pack of needed information that was collected in your mind. It is all about a simple redirection.
1298
- There are several sections in the options we give, that represent a grateful help to configure all the popups up to your needs.
1299
-
1300
- Firstly - the way the Popup looks.
1301
- You may easily customize it by choosing the theme and effect types applied to it and deciding the appropriate dimensions.
1302
- Secondly - the time, when the Popup turns up.
1303
- You have all the abilities to manage when and where the popup turns up. It can appear while visitors scroll the page, whether while they try to exit the page.
1304
- Thirdly - the size of your Popup.
1305
- You may make the it to remain unchangeable or be resized according to the window.
1306
- Fourthly - how visitors can close it.
1307
- The popup could close itself either automatically or by visitor's hand. All this options are up to you our dear customer.
1308
- And finally - the availability of the Popup.
1309
- You can decide on its availability on different devices (PC, mobile, etc.).
1310
-
1311
- = Second problem: I want to have lots of comments and reviews about my blogs because I find them attractive and informative ones. Thus, how to make people read the articles on my web page? =
1312
-
1313
- == Second solution: Image Popup ==
1314
-
1315
- It is not a secret that even the greatest articles written with the most attractive style awaken laziness among readers. The victims of these situations are huge texts that are allowed to include only words as main characters but the images. An undeniable fact - even few images certainly ease the process of reading and getting information from blogs.
1316
- Image popup is the best way to deal with this problem; the best way to make your ideas stand out in the crowd. All you need to do is using all the available opportunities we offer by adding a topic image to the pilot.
1317
-
1318
- * You may customize your installed image popup in many interesting ways, such as determining the image dimensions that considers being a very responsive option due to its resizing and repositioning ability when the main window resizes.
1319
- * It also provides options for choosing the image frame theme and effects that vary in the duration of the popup animation as well.
1320
- * There is one more possibility up to you, to specify how long the ready-made popup appearance should be delayed after loading the page.
1321
- * With the help of both basic and advanced options, you are able to easily regulate the dismissal, display, color and location of the image popup.
1322
- * You may choose where it should appear. It can appear at the top right or left corner, at the bottom or in the center.
1323
- * You can choose to show it whenever the user scrolls the page or ensure its permanent occurrence by disabling popup closing in any possible way.
1324
- * On the other hand, the popup can be chosen to close automatically, whether be dismissed when the user clicks inside or beyond of the popup area.
1325
- * In addition, it is up to you to decide on your popup accessibility on different devices (PC, mobile, etc.).
1326
-
1327
-
1328
- = ShortCode Popup =
1329
-
1330
- It is so wonderful and advantageous that more and more people take up the business of Internet content creation, as each of them tries to enrich us with marvelous tools to make use of in different spheres. Some are the authors of tooltips, column layouts, galleries, others of buttons, block quotes, social media buttons, etc.. All of the latter can be inserted into any of your content, page or post in the form of a short code which will be opened in a popup window.
1331
- Besides having the ability to add a short code into the modal popup, it is also possible to manage its development with the help of different options available. First, you can apply a certain theme and/or effect to it, decide how long its appearance should be delayed after loading the page. Then, you will be able to configure the display and dismissal of the popup by choosing it to be closed automatically or by hand, be opened while scrolling or be a permanent one. Also, you are to decide where the popup will be located.
1332
- As far as the popup accessibility on different devices is freely manageable too, it's quite responsive and is resized accordingly.
1333
-
1334
-
1335
- = Iframe Popup =
1336
-
1337
- Here is another useful pop up to make your content or website more sociable and vibrant. It is a great addition to your social toolkit, since Iframe enables you to include and remind of another website with the help of a simple tool.
1338
- One can think of a number of cases when this popup can efficiently be used.
1339
- For instance, if you are lucky enough to have sponsors or you have got partners that are worth a mention, Iframe will give you the wonderful opportunity to share the work they do. Thus, by clicking on the popup, the user will get to their websites.
1340
- It can also be used to add some maps, diagrams, charts, etc. to your content without putting them within the material itself or by refraining from dealing with copyright issues.
1341
- You can build the Iframe popup having decided on its frame theme and the effects that vary in duration. It is also possible to manage how long the ready-made popup appearance should be delayed after loading the page (in sec).
1342
- The popup can appear at the top right/left corner, at the bottom or in the center. Thanks to certain ticks-off in the options section you will be able to show the popup whenever the user scrolls the page and disable its closing at all. On the contrary, the popup can be chosen to close automatically or be dismissed when the user clicks inside or beyond the popup area.
1343
- Finally, you can decide whether to make the popup accessible or not on different devices by choosing the options available.
1344
-
1345
- = Video Popup =
1346
-
1347
- Every single day lots of information and news is shared by a number of people online. And it is widespread knowledge that any information transmitted visually is more comprehensible and competitive, as motion pictures, video clips, etc. give any material somehow a unique flavor.
1348
- Surely, many of you would like to take advantage of the opportunity that this video popup offers. It can help to emphasize or season your ideas. You will be able to add video content (YouTube, Vimeo, etc.) by putting its video URL in the popup options.
1349
- Happily, you can manage its look by choosing the popup frame theme and the effect type that can vary in duration. Also, you can decide how long the popup appearance should be delayed after loading the main page.
1350
- The availability of both basic and advanced options makes the popup dismissal and display easily manageable. You can have it at the top right/left corner, at the bottom or in the center of the page. The popup can appear while the user is scrolling the page and play right away thanks to its wonderful autoplay option. Meanwhile, you can secure the permanent appearance of the popup having disabled its closing in any possible way or it can be chosen to close automatically or disappear when the user clicks inside or beyond the popup area. Also, it's of importance that you are able to decide whether the popup should be available on a certain device or not.
1351
-
1352
- = Social Popup =
1353
-
1354
- Sometimes it is really crucial to make your voice audible to the public when you have so many things to share. On the Internet it is the social media that can enable you with the chance to communicate your ideas to the world. And to reach this goal, you can get this social popup that gives you very useful options while sharing.
1355
- Having added this popup, you will be provided with a variety of office and general tools to develop your content as you wish. Then, you will be able to make a choice between the two options to share in the social media either by adding the URL of the website you work on - the active URL - or by putting some important material from another internet source.
1356
- But before making the sharing option available you can configure the labels according to the theme and font size you want. It is also possible to make visible or hide the number of shares you have had so far. Finally, you are able to share your material with all the social media given or only the ones you prefer.
1357
- The dismissal, display, colour and location of the social popup can be easily regulated as well by making use of both basic and advanced options. The popup may appear at the top right/left corner, at the bottom or in the centre. You can choose to show the it whenever the user scrolls the page or disable popup closing thus ensuring its permanent occurrence. Meanwhile, the popup can be arranged to close automatically, be dismissed when the user clicks inside or beyond the popup area. Also, you have the possibility to decide on your popup accessibility on different devices ( PC, mobile, etc.).
1358
-
1359
- = Exit-Intent Popup =
1360
-
1361
- The exit-intent popup technologies we offer can detect when your visitors are about to push the back button, close their browser, or navigate away and they can appear as a popup addressed to them. These are "overlay popups", and cannot be blocked by popup blockers. Also, they are the most customer-friendly approach to share a special message to your visitors, as they don't interrupt your visitors while browsing or scanning your site. Thus, you will be able to easily draw their attention to sales, special offers and contests. If you decide to make use of targeted audience, you'd better consider those of a particular social network you get a lot of traffic from. Another thing you will be able to do is to grab email addresses by offering an incentive to subscribe.
1362
-
1363
- = Countdown Popup =
1364
-
1365
- You are lucky enough to come up with a great project, novelty or an unprecedented offer? You don't know how to stress its importance and make people long for it? Well, there is at least one version and we are here to lighten up your burden. Imagine a time counter that is decreasing in days, hours, minutes, etc.. We suggest installing this countdown popup that helps to present your content and keep people anticipating for it, as the popup gives information and shows the time left for reaching it at the same time.
1366
- While building up the popup, you are able to attach any kind of media or textual material. Moreover, you can control its look by choosing the popup theme and the accompanying effect. The way the counter is displayed is also manageable, since you can choose the counter background colour, text colour and language, countdown format, time zone and the location of the counter in the popup.
1367
- In the meantime, there are basic and advanced options available which help to regulate the dismissal, display, colour and location of the countdown popup. It can be chosen to turn up while scrolling or remain unchangeable, be closed automatically or manually. As far as the size of the popup is concerned, it can easily be arranged in the dimensions' options.
1368
-
1369
- = Subscription Popup =
1370
-
1371
- No doubt, building a trustful relationship with an audience is highly important if you wish to make a profit online and have an email list full of targeted, engaged subscribers. As the trust grows, the audience will be more prone to buying whatever is being sold. One way to make this happen is to make people wish to subscribe to your website with the help of the Subscription popup which can help to extend the functionality of your website.
1372
- The Subscription popup offered allows to generate a great-looking form, add a compelling incentive to subscribe and guarantee the buildup of an email list, as, once installed, it will be given maximum visibility on your website.
1373
- Happily, almost every element of the popup is fully customizable - including fonts, sizes and colours, themes and effects applied. Also, you can view it real-time thanks to the live previewer displaying changes you make.
1374
- The appearance and disappearance of the popup is under complete control too. It will appear after a pre-configured wait, be permanent or turn up while scrolling, close by hand or by itself.
1375
-
1376
- = Age restriction Popup =
1377
-
1378
- Internet is recognized as somehow an open space for creation and dissemination of ideas and content that comply to no kind of limits. It is also known that many children have at least once accessed some online content that contains violence, sex, bad language, etc.. The latter can play a crucial role in the child's personality development and can lead to serious deviations later.
1379
- Thus, to help avoid such kind of developments, you can foster child protection by simply deciding on how much explicit each of your content is and installing the age restriction popup we offer. It will make your content accessible to the age group it refers to, as the popup will make the user answer some questions to decide his/her age and will direct to certain content accordingly.
1380
- This popup can be built up to your preferences, as there is a range of options at hand. First, you can choose to put restriction on both visual and textual materials. Then, you will be able to see about the popup appearance by choosing the theme and effects to be adjusted to it, the background and text colour, radius of the "Yes" and "No" buttons below the question. Also, you can manage its dimensions and decide on its accessibility on different devices. Meanwhile, you are able to make it automatically closable, leave it open all the time or only while scrolling the page.
1381
-
1382
- More marketing popup descriptions/solutions are coming soon.
1383
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1384
  Popup Builder Team.
1
+ === Popup Builder - Responsive Wordpress Pop up - Subscription & Newsletter ===
2
+ Plugin Name: Popup Builder - Responsive Wordpress Pop up
3
+ Contributors: Popup By Sygnoos, Sygnoos
4
+ Author: Popup Builder
5
+ Author URI: https://popup-builder.com
6
+ Plugin URI: https://popup-builder.com
7
+ Donate link: https://popup-builder.com
8
+ Tags: popup, pop up, wordpress popup, popup maker, exit popup, popup builder, wordpress popup plugin
9
+ Requires at least: 4.2
10
+ Tested up to: 5.6
11
+ Requires PHP: 5.3.3
12
+ Stable tag: 3.75
13
+ License: GPLv2 or later
14
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
15
+
16
+ Discover whole new ball game of pop-ups. Popup whatever floats your boat, customize it however you need and increase your sales with Popup Builder!
17
+
18
+ == Description ==
19
+
20
+ #### WordPress Popup Builder
21
+
22
+ Pop up anything with Popup Builder, create and manage powerful promotion modal popups for your WordPress blog or website. Powerful, and yet, easy to use this plugin that will help you to grab your visitors' attention to introduce them your offers, discounts or other kind of promotional notices.
23
+
24
+ https://www.youtube.com/watch?v=-wFDJDjczeY
25
+
26
+ **Popup Builder - Features:**
27
+
28
+ * Create and manage as many popups as you want
29
+ * Customize the look and feel of the popup
30
+ * Set popup animation effect
31
+ * Choose between several popup themes
32
+ * Set popup location on the screen
33
+ * Show popup after X amount of page scrolling/Scroll popups - sometimes you don't want to show the popup right away, it's a good idea to set this option so the popup will be shown to the visitor only when he scrolls.
34
+ * OnClick/OnHover popup
35
+ * Floating Button - trigger a popup by clicking on floating button. It comes with many customization options: the style, the position, text formatting, border design, etc. The Floating Button can be designed with the color palette and style which would suit your website design nicely.
36
+ * Redirect confirmation popup/Leaving notice popup
37
+ * Repetitive pop up - show popup every X period of time
38
+
39
+ -
40
+
41
+ * Popup opening sound
42
+ * Responsive popup
43
+ * Network/Multisite compatible
44
+ * WPML compatible
45
+ * Visual Composer compatible
46
+ * DIVI builder compatible
47
+ * Redirect user to another page when he/she clicks on popup content
48
+ * Show/Hide Popup for selected User Roles (Admin panel)
49
+ * Open popup from URL. Example http://popup-builder.com/index.php?sg_popup_id=1
50
+ * Reopen popup after form submission
51
+
52
+ -
53
+
54
+ * Html popup
55
+ * Image popup
56
+ * Facebook popup
57
+ * Shortcode popup
58
+ * Subscription popup - this type provides the easiest way to create an efficient connection between users and your website through subscription popup. With this simple popup solution, you can quickly collect subscribers in a very pleasant and elegant way. With our newsletter module you can easily send mass mailings.
59
+ * Newsletter - send marketing campaings right from popup builder
60
+ * PDF popup
61
+
62
+ **Popup Builder - 3rd party supported plugins:**
63
+
64
+ * Contact Form 7
65
+ * Ninja Forms
66
+ * Gravity Forms
67
+ * TablePress - Just add `cache_table_output=false` to shortcode Ex. `[table id=213 cache_table_output=false /]`
68
+ * Formidable Forms
69
+ * WP Google Maps
70
+ * HTML5 Maps
71
+ * Review Builder
72
+
73
+ This is a modal popup plugin for WordPress websites, that allows you to add highly customizable lightbox. This lightbox plugin will enable awesome popup windows in your WordPress website using short codes. You can add unlimited popups with their own configurations. We added effective settings'-panel for each type. So, you can fully customize the popup themes, colors, sizes and many other options.
74
+
75
+ Popups are a good marketing tool, they're impressively high converting. A web page with a modal popup typically sees more conversions than the same page without one. More important, a page with a well-designed and thoughtfully implemented popup converts better than one with a poor popup. With Popup Builder plugin you can customize the look and the functionality according to your needs.
76
+
77
+ With Popup Builder plugin you can insert any type of content, right into your Popup. Insert them into any page or a post, easily and fast. Popups that open automatically, are the best solution to attract your visitor's attention. Add some effects to your Popup and your customers won't go unnoticed.
78
+
79
+ **Popup Builder - PRO features:**
80
+
81
+ * WooCommerce popup - display targeted popup offers depending on the WooCommerce cart conditions: Price, Product amount, Specific product.
82
+
83
+ * Recent sales or Social proof - promote more sales showing all your live sales popups to notify your customers about recently bought items.
84
+
85
+ * Login popup - open login form inside the popup.
86
+
87
+ * Registration popup - open registration form inside the popup.
88
+
89
+ * Web Push Notification popup - run effective marketing campaings through web push notifications.
90
+
91
+ * Iframe popup - you can set the URL you want to load within an iframe and the popup will load that iframe.
92
+
93
+ * Autoresponder (subscription plus extension) - send targeted emails right after the visitor subscribes to your newsletter. You can send coupon codes or download links.
94
+
95
+ * Video popup - embed YouTube and Vimeo videos inside your popup.
96
+
97
+ * Social popup - this is a great type of a popup if you need to share/like your site. In social popup we have added all popular social networks like Facebook, LinkedIn, Twitter, Google Plus etc.
98
+
99
+ * Age restriction popup - sometimes the site content may not be appropriate for all audiences. In these cases, users may not be able to view the content until they pass age confirmation popup.
100
+
101
+ * Create countdown popup - your site is under construction and you are planning to open it in some amount of time, in this case countdown popup is exactly for you.
102
+
103
+ * Exit popup - catch your users' attention when they decide to leave your site without doing any of the things you want them to do. Exit popups can briefly interrupt them with a popup message, steering them towards a singular call to action.
104
+
105
+ * Contact form popup - this type will allow your clients to write you a message right from the popup.
106
+
107
+ * Mailchimp popup (separate extension) - create eye-catching, beautiful Mailchimp popups to make your users sign up to the mail list right from the popup. You can set up all the design customization according to your needs and preferences!
108
+
109
+ * Adblock popup (separate extension) - detect Adblock extensions that block the advertisements of your site and show a message to your visitors via popup!
110
+
111
+ * AWeber popup (separate extension) - let your visitors to subscribe to your AWeber subscription form right from the popup.
112
+
113
+ * Popup analytics (separate extension) - get statistics about the effectiveness of your popup.
114
+
115
+ * Random popups option - this option is useful if you need to show random popups to your visitors. Let's say you are running ecommerce website and want to show discount codes. With random popup options ON you will be able to show different offers to your customers.
116
+
117
+ * Show popup once per visitor - useful when you don't want to show the popup to the same visitor more than once.
118
+
119
+ * Don't show popup on mobile devices - after activating this option, popup won't be shown in mobile devices.
120
+
121
+ * Show popup only on mobile devices - after activating this option, popup will be shown only on mobile devices.
122
+
123
+ * Disable popup closing - after activating this option, user won't be able to close the popup in any possible way.
124
+
125
+ * Auto close popup after X seconds - useful when activated together with the previous option, you can disable manual popup closing but close it after a certain time.
126
+
127
+ * Targeting popup - this option allows you to show a popup depending on user's location. This kind of popup is useful if your product or service is created for a specific region.
128
+
129
+ * Show popup for logged in users or vice versa - you can make the popup appear only for the users who are logged in. Or you can make the it visible only for the users who aren't logged in.
130
+
131
+ * Show popup after X pages - this option will help you to show a popup when the visitor visits your specified amount of pages.
132
+
133
+ * Schedule popup - you can schedule the period (in days) when you want the popup to be shown. The users will see the popup during the period of the time you set. (Ex. April 13- May 9)
134
+
135
+ * Popup showing frequency - you can select how many times you want the popup be shown to the same user. This means, you can make the popup appear for 3 times, for example, to the same user.
136
+
137
+ <a href="https://popup-builder.com" target="_blank">Get Popup Builder PRO package</a>
138
+ <div>
139
+ Customizing the look and feel of the popup is as important as the content itself. That's why Popup Builder gives you the ability to customize the timings, effects, position and size of the popup to your needs.
140
+ </div>
141
+
142
+ Popup Builder team constantly works on upgrades and improvements. With our upcoming updates we are planning to add more types of popups.
143
+
144
+ Thank you for using our pop-up modal plugin.
145
+
146
+ <div>
147
+ <div>
148
+ <br />
149
+ </div>
150
+ <div>
151
+ Also follow us on:
152
+ <a href="https://www.facebook.com/popupbuildercom" title="Popup Builder Facebook"><strong>Facebook</strong></a>&nbsp;<a href="https://twitter.com/popup_builder" title="Popup Builder Twitter"><strong>Twitter</strong></a> and <a href="https://www.linkedin.com/company/popup-builder" title="Popup Builder LinkedIn"><strong>LinkedIn</strong></a>
153
+ </div>
154
+ <div>
155
+ If you think that you found a bug in our Popup Builder plugin or have any questions, please feel free to contact us at <a href="mailto:support@popup-builder.com" title="support@popup-builder.com"><strong>support@popup-builder.com</strong></a>.
156
+ </div>
157
+ </div>
158
+
159
+ <div>
160
+ <br />
161
+ </div>
162
+
163
+ == Installation ==
164
+
165
+ Install Popup Builder either via the WordPress.org plugin directory, or by uploading the files to your server.
166
+
167
+ Activate the plugin through the 'Plugins' menu in WordPress.
168
+
169
+ Go to the Popup Builder settings and set your desired options.
170
+
171
+ == Screenshots ==
172
+
173
+ 1. List of popups screen
174
+ 2. Add new popup screen
175
+ 3. Edit popup screen - Visual Composer
176
+ 4. Edit popup screen - DIVI Builder
177
+ 5. Subscribers list
178
+ 6. Newsletter
179
+ 7. Video popup
180
+ 8. Social popup
181
+ 9. Content restriction popup
182
+ 10. Subscription popup
183
+ 11. Image popup
184
+ 12. Countdown popup
185
+ 13. Facebook popup
186
+
187
+ == Changelog ==
188
+
189
+ = Version 3.75 =
190
+ * Added sanitization for input and output variables.
191
+ * Floating button will be visible when the document is ready.
192
+ * Floating button will not be visible for users who are already subscribed.
193
+ * Bug fixed related to WordPress network.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  * Minor fixes and improvements.
195
+
196
+ = Version 3.74 =
197
+ * Deprecated wp_get_sites() replaced with get_sites.
198
+ * Unescaped DB Parameter fixed.
199
+ * Removed deprecated parameter from wp_upload_bits.
200
+ * Deprecated get_user_by_email has been replaced with get_user_by('email').
201
+ * DB placeholders has been unquoted.
202
+
203
+ = Version 3.73 =
204
+ * Bug fixed related to AJAX.
205
+ * Bug fixed related to Subscription form's submitting.
206
+ * Bug fixed related to conflict with Post SMTP.
207
+
208
+ = Version 3.72 =
209
+ * Option added to enable/disable AJAX for counting popup opening stats.
210
+ * Bug fixed related to multisite issue.
211
+ * Bug fixed related to floating button, when style is set to basic.
212
+ * Improvement of code, PHP errors are fixed.
213
+ * Bug fixed related to copy to clipboard functionality in action on popup click section.
214
+ * Bug fixed related to email notifications.
215
+ * Bug fixed related to white space that appears when popup is active.
216
+ * Added user compatibility check for AJAX requests.
217
+
218
+ = Version 3.7 - 3.7.1 =
219
+ * Improvement of "Display Rules" settings, showing popups on archive pages for all custom post types is added.
220
+ * Bug fixed related to "Settings" button when popup's opening event is set to on load.
221
+ * Bug fixed related to on click popups that are set to appear on dropdown’s menu items.
222
+
223
+ = Version 3.69.6 =
224
+ * JavaScript improvements.
225
+ * Bug fixes.
226
+
227
+ = Version 3.69.5 =
228
+ * Improvement of "Display Rules" settings: Everywhere is auto selected which helps to prevent invisible popups.
229
+ * Improvement of close button, image source is changed to url instead of base64.
230
+ * Improvement of import/export functionality.
231
+ * Bug fixed related to Polylang compatibility, translate settings is visible for all users.
232
+ * Bug fixed related to Floating button's frame on iOS devices.
233
+
234
+ = Version 3.69.4 =
235
+ * Bug fixed related to Debug Mode.
236
+
237
+ = Version 3.69.3 =
238
+ * Polylang compatibility fix.
239
+
240
+ = Version 3.69.2 =
241
+ * Code improvement.
242
+ * Debug mode added: Now it’s easier to find the issues that our users face.
243
+ * Bug fixed related to compatibility with Polylang plugin.
244
+ * Bug fixed related to close button showing on iOS devices.
245
+
246
+ = Version 3.69.1 =
247
+ * Code improvements. Thanks to 'G Lagonikas'.
248
+ * Minor fixes.
249
+
250
+ = Version 3.69 =
251
+ * Improvement of code in SGPopup.php/PopupLoader.php/PopupBuilder.js files
252
+ * Improvement of WPML compatibility
253
+ * Improvement of subscribers’ import functionality, all CSV file formats are supported (CSV UTF-8, Comma delimited, Macintosh, MS-DOS)
254
+ * Improvement of Image popup type, ALT attribute added for search engine optimization
255
+ * Improvement of Floating button styles
256
+ * Improvement of logic in opening conditions
257
+ * Conflict fixed related to Litespeed cache plugin
258
+ * Bug fixed related to "Hover" and "Click" opening events
259
+ * Bug fixed related to Multisite dynamic paths
260
+
261
+ = Version 3.68.5 =
262
+ * Added new feature: Floating Button - Trigger popup by clicking on the button
263
+ * Improvement of Newsletter: Added an option to send test emails before running the email campaign
264
+ * Improvement of Newsletter related to keeping already inserted/sent email content after refresh
265
+ * Improvement of code in Feedback.php file
266
+ * PHP version compatibility improvements
267
+ * Improvement and code optimization of core files
268
+ * Bug fixed related to the jQuery depreciation functionality
269
+ * Bug fixed related to cookie saving
270
+
271
+ = Version 3.68.4 =
272
+ * Improvement of core JS files.
273
+ * Improvement of compatibility with WooCommerce related to Gutenberg blocks.
274
+ * Full Integration with WPML plugin.
275
+ * Compatibility with WordPress v5.5.
276
+
277
+ = Version 3.68.3 =
278
+ * Bug fixed related to the error message while uploading image for close button.
279
+ * Bug fixed related to the popup cloning.
280
+ * Popup opening size improvement related to wide screens.
281
+
282
+ = Version 3.68.2 =
283
+ * Popup Builder custom post type renamed to be more recognizable
284
+ * Image upload issue
285
+ * Popup display design improvement related to devices with large size
286
+ * Email validation fixed on subscription popup type
287
+
288
+ = Version 3.68 =
289
+ * Display rules section improvement.
290
+ * Subscription popup type email sending improvements.
291
+ * Range slider bug fixed related to showing JS error when Gutenberg editor is enabled.
292
+ * Subscribers section bulk actions error fixed related to conflict with search logic, syntax error where shown.
293
+ * Conflict fixed related to Beaver builder plugin in page/post creation page.
294
+
295
+ = Version 3.67 =
296
+ * The Popup Builder posts were removed from sitemaps which is being generated by WordPress SEO Plugin – Rank Math.
297
+ * The design of Subscription popup field issues (when some themes overwrite the colors) are fixed now.
298
+ * Compatibility issues in the PHP version are fixed.
299
+
300
+ = Version 3.66 =
301
+ * Compatability issues fixed related to Gutenberg.
302
+ * Minor improvements.
303
+ * Notices fixed.
304
+
305
+ = Version 3.65.2 =
306
+ * Added support links.
307
+ * Bug fixed related to mobile landscape view.
308
+ * User roles compatibility issues fixed.
309
+ * Tested with WordPress 5.4
310
+
311
+ = Version 3.65.1 =
312
+ * Added filter for custom JS input to sanitize invalid symbols.
313
+
314
+ = Version 3.65 =
315
+ * Reset the custom JS metabox to prevent code injection from versions < 3.64
316
+
317
+ = Version 3.64 =
318
+ * Security fixes.
319
+ * Conflict resolved related to Duplicate Post plugin.
320
+ * Speed improvements related to popup opening when custom close button setup.
321
+ * Added ALT attribute inside the close button element.
322
+ * Bug fixed related to Content Click Redirect functionality when the URL contains Unicode characters.
323
+ * Minor improvements.
324
+
325
+ = Version 3.63 =
326
+ * Autosave fixed.
327
+ * Bug fixes and improvements.
328
+ * JS and CSS files minified.
329
+
330
+ = Version 3.62.1 =
331
+ * Hot fix related to PHP Warning.
332
+
333
+ = Version 3.62 =
334
+ * Improvement related to image upload inside the Image Popup.
335
+ * Empty notification removed.
336
+ * Notices fixed related to custom CSS/JS.
337
+ * Close button issue fixed when the button was not clickable.
338
+ * Improvement related to cookie saving.
339
+
340
+ = Version 3.61.1 =
341
+ * Minor fix related to image popup.
342
+
343
+ = Version 3.61 =
344
+ * Improvement: No code content will be loaded if the custom JS/CSS doesn't contain any code.
345
+ * Improvement: Relative plugin path has been used.
346
+ * Bug fixed related to class namepsace.
347
+ * Improvement: Popup data migration functionality has been modified.
348
+ * Minor fixes and improvements.
349
+
350
+ = Version 3.60 =
351
+ * Bug fixed related to image popup saving issue.
352
+ * Cron Job task improvements.
353
+ * Using a dynamic plugin path when loading resources.
354
+ * Improvement related to 'Disable Page Scrolling' when page scrolls to top after the popup opened.
355
+ * Minor fixes and improvements.
356
+
357
+ = Version 3.59 =
358
+ * Speed improvements.
359
+ * Bug fixed related to Page Level Cookie on all browsers.
360
+
361
+ = Version 3.58 =
362
+ * Hot fix related to function arguments.
363
+
364
+ = Version 3.57 =
365
+ * Bug fixed related to get_option function.
366
+ * Popup cache improvements.
367
+
368
+ = Version 3.56 =
369
+ * Transient name changed.
370
+ * Max loaded popups limit increased.
371
+
372
+ = Version 3.55 =
373
+ * Bug fixed related to cron jobs.
374
+ * Code improvements.
375
+
376
+ = Version 3.54 =
377
+ * Custom js issue related to code symbols (not encoded as expected).
378
+ * Internet explorer compatibility issue fixed.
379
+ * Popup speed improvements, decreasing of requests count to DB, AJAX.
380
+ * System info view added which will help us to debug errors.
381
+ * Duplicate queries were removed.
382
+ * New types in the notification center added (separated by colors)
383
+ * Safari overlay issue fixed
384
+
385
+ = Version 3.53 =
386
+ * Added missing text domain.
387
+ * Fixes regarding cron tasks.
388
+ * Code improvements.
389
+
390
+ = Version 3.52 =
391
+ * Popup notifications section improvements.
392
+ * Translation .pot file updated.
393
+ * Missing styles for the Close button fixed.
394
+ * Fixed compatibility issues with Beaver Builder (page builder) plugin.
395
+ * Speed improvements, related to getting popup data from a database.
396
+ * JS code improvements related to popup opening, there were issues with old/new browsers.
397
+ * Image popup improvements, when there is an incorrect image used: with incorrect URL, in this case, we will show the default "no image" placeholder.
398
+ * Deprecated functions updated (JS).
399
+ * Unneeded CSS code removed, which affected on the admin panel of the plugin.
400
+ * New 'Archive' page added in Display Rules => Page types.
401
+ * JS error fixed, which affected on correct work of extra events.
402
+
403
+ = Version 3.51 =
404
+ * Bug fixed related to Newsletter.
405
+ * Added new parameter PopupID inside sgpbPopupContentLoadToPage filter.
406
+ * Added plugin notification URL.
407
+ * Typo fixes.
408
+
409
+ = Version 3.50 =
410
+ * Added new feature to add custom JS and CSS codes. You can add your custom JS logic to control popup opening also you can add custom CSS to change popup styles.
411
+ * Bug fixed related to image upload.
412
+ * Big fixed related to popup opening events. Sometimes it didn't get saved.
413
+ * Code improvements. We have changed the auto save option to not call AJAX every time.
414
+
415
+ = Version 3.49 =
416
+ * Added async image preloading to make Image popup loads faster.
417
+ * Code improvements and minor bug fixes.
418
+
419
+ = Version 3.48 =
420
+ * Code improvements and minor bug fixes.
421
+ * Popup speed improvements.
422
+ * Popup triggering events synchronisation.
423
+ * PHP notices fixed.
424
+
425
+ = Version 3.47 =
426
+ * Bug fixed related to onclick event.
427
+
428
+ = Version 3.46 =
429
+ * Bug fixed related to Import of subscribers.
430
+ * In popup builder menu, support section fixed, there was an incorrect redirection.
431
+ * WP bakery (composer) compatibilty issue fixed.
432
+ * PHP notice removed connected to Media buttons.
433
+ * Popup speed improvements.
434
+ * Bug fixed related to menu item click.
435
+ * Facebook popup bug fixed related to error related to app development mode.
436
+
437
+ = Version 3.45 =
438
+ * Improvements of subscription form live preview.
439
+ * Changed Support location URL to (Live Chat).
440
+ * Bug fixed related to Subscribers Table ordering (credit: Tin Duong of Fortinets FortiGuard Labs).
441
+ * Banner closing issue fixed.
442
+ * Code/speed improvements, php notices have been removed.
443
+
444
+ = Version 3.44 =
445
+ * Code optimization and typo fixes.
446
+ * Bug fixed, related to Unsubscribe link in the newsletter.
447
+ * Bug fixed related to unavailability to close the banner.
448
+
449
+ = Version 3.43 =
450
+ * Iframes (dimensions) in html works correctly, with correct sizes and without scroll issue.
451
+ * Don't show again button added in license notice banner.
452
+ * License keys issue fixed, now if you have already activated/deactivated the keys on another site, you will see the actual error.
453
+ * Added new option which allows to show Subscription popup to already subscribed users.
454
+ * Added new option to change the unsubscribe link title in the newsletter.
455
+ * Code/speed improvements, php notices have been removed.
456
+
457
+ = Version 3.41- 3.42 =
458
+ * Added new shortcodes which can be used inside the Newsletter
459
+ * PHP > 7 notices fixed
460
+ * Code optimization and typo fixes
461
+
462
+ = Version 3.4 =
463
+ * Popup Builder post type removed from Yoast sitemap and other SEO plugins.
464
+ * Custom JS variable improvements.
465
+ * Bug fixed related to PHP version notice.
466
+ * Bug fixed related to page level cookie.
467
+ * Popup speed optimization.
468
+ * Bug fixed related to page scrolling when the pages moves up.
469
+ * New extension added Age Restriction popup.
470
+
471
+ = Version 3.3 =
472
+ * Popup preview fixes.
473
+ * Improvement: If the popup is setup on the Link and the popup opening condition doesn't meet the current state, the default Link functionality will be triggered.
474
+ * Added a Button element inside the WP editor.
475
+ * Fix: Mobile landscape issue, in all cases the popup sizes will be changed, if the window orientation is changed (mobile/desktop).
476
+ * Completely works with almost all page builders.
477
+ * Subscribers Import/export fixes.
478
+ * Popup showing limitation improvement.
479
+
480
+ = Version 3.2 =
481
+ * New Feature: PDF popup type.
482
+ * New Feature: Popup content can be set at the top and bottom of Subscription form.
483
+ * Admin panel and frontend speed improvements.
484
+ * Speed improvements for Multisite.
485
+ * Bug fixed related to popup overlay turning on/off functionality.
486
+ * Improvements for Apple devices (page scrolling, popup dimensions, etc).
487
+ * Big fixed for Internet Explorer related to popup showing limitations.
488
+ * Unstoppable scroll bug fixed when there is a LastPass browser extension.
489
+ * Add improvements for Page builders.
490
+ * Add UTF-8 support for Newsletters.
491
+
492
+ = Version 3.1.9 =
493
+ * Bug fixed related to paths of the Popup Builder resources.
494
+ * Select2 ui bugs.
495
+ * Typos fixes.
496
+ * Added message to notify user about inactive extension(s).
497
+ * Speed improvement: popup opening sound affects on the popup opening speed and in some cases on page load.
498
+ * Improvements related to JS variables.
499
+ * Styles and scripts including issue on multisite websites.
500
+ * Subscription popup: ability to write html into the GDPR field confirmation message.
501
+
502
+ = Version 3.1.8 =
503
+ * Added new feature border-width for subscription popup.
504
+ * Added new feature border-radius for subscription popup.
505
+ * Added new feature border-color for subscription popup.
506
+ * Bug fixed related to dynamic JS variagbles.
507
+ * Bug fixed related to popup appearance on admin panel for page builders.
508
+ * Code cleanup and improvements.
509
+
510
+ = Version 3.1.7.1 =
511
+ * Bug fixes related to banner.
512
+
513
+ = Version 3.1.7 =
514
+ * Added Popup Builder button inside the TinyMCE editor, which will allow adding the popup shortcode inside the page/post content.
515
+ * Added compatability with page builders.
516
+ * Bug fixed related to Autoresponder conditions.
517
+ * Bug fixed related to cache of the select box element.
518
+ * Improvements related to script including for wordpress multisites.
519
+ * Conflict resolved related to some extensions.
520
+ * Bug fixed related to post category search action.
521
+ * Code cleanup and improvements.
522
+
523
+ = Version 3.1.6.1 =
524
+ * Bug fixed related to overlay issue.
525
+ * Mailchimp update issue fixed.
526
+
527
+ = Version 3.1.6 =
528
+ * Added new feature to change Close Button position.
529
+ * Added new feature to hide/change popup's border (2nd and 3rd themes).
530
+ * Added new feature inside the 'Display Rules' to show popup by post categories.
531
+ * Improvement related to MyISAM and InnoDB when one if this engines don't supported.
532
+ * Added class selector inside the popups' data table.
533
+ * Fixed PHP notices.
534
+ * Bug fixed related to extension licenses.
535
+ * Code improvements and minor bug fixes.
536
+
537
+ = Version 3.1.5.2 =
538
+ * Added new extension Web Push Notification.
539
+ * Gutenberg block improvements.
540
+ * Code improvements and minor bug fixes.
541
+
542
+ = Version 3.1.5.1 =
543
+ * Bug fixes and improvements.
544
+
545
+ = Version 3.1.5 =
546
+ * Improvements related to popup analytics.
547
+ * Bug fixed related to onclick with 'set popup by css class' option.
548
+ * Improvements related to some filters inside the subscriber's list section.
549
+ * Bug fixed related to multiple onload subscription popups.
550
+ * Bug fixed related to infinite loop with popups shortcode.
551
+ * Code improvements and minor bug fixes.
552
+
553
+ = Version 3.1.4.1 =
554
+ * Bug fixed related to JS error for blocks.
555
+
556
+ = Version 3.1.4 =
557
+ * Added Popup Builder block for Gutenberg.
558
+ * Bug fixed related to popup limitation for IE browser.
559
+ * Improvements related to the Iframes inside the HTML popup.
560
+ * Added filter inside subscriber's table.
561
+ * URL detection.
562
+
563
+ = Version 3.1.3 =
564
+ * Bug fixed related to banner closing.
565
+ * Popup Builder archive page removed.
566
+ * Bug fixed related to blank page of the popups data table.
567
+ * Added popup showing limitation to remember by session.
568
+ * If the user requests Popup's post type page it will be redreceted to homepage.
569
+ * Added new option to not close the initial popup when the second popup is opened with "popup inside another popup" option.
570
+ * Code improvements and minor bug fixes.
571
+
572
+ = Version 3.1.2 =
573
+ * Bug fixed related to popup view limitation (getting JS error if Popup Limitation is set up).
574
+ * Improvements on popup preview functionality.
575
+ * Added missing localization texts.
576
+ * Improvements on subscribers section.
577
+ * Minor fixes and improvements.
578
+
579
+ = Version 3.1.1 =
580
+ * Now the popup limitation cookie is saving only after the popup appears.
581
+ * Popup Builder migration tweak.
582
+ * Added popup import/export functionality.
583
+ * Added new extension.
584
+ * Code improvements and minor bug fixes.
585
+
586
+ = Version 3.1 =
587
+ * Bug fixed related to cookie saving for Safari and Internet Explorer.
588
+ * Add new option to show categories for WooCommerce product(s).
589
+ * Bug fixed related to 'unsubscribe' link.
590
+ * Code improvements and minor bug fixes.
591
+
592
+ = Version 3.0.9.1 =
593
+ * Deafult values added for conditions section.
594
+ * Media button dublicate localization removed.
595
+ * Bug fixed related to page/post selection.
596
+
597
+ = Version 3.0.9 =
598
+ * Bug fixed connected to page scrolling when after popup appearance page srolled up.
599
+ * Bug fixed for the admin side related to subscribers export list.
600
+ * Improvements connected to subscription live preview.
601
+ * Improvement: If more than one ShortCode (same popup) is added into the page, we will load the data only once.
602
+ * Image popup optimization.
603
+ * Bug fixed realted to overlay closing.
604
+ * Minor fixes and improvements.
605
+
606
+ = Version 3.0.8 =
607
+ * Conflict fixed connected to 'unsubscribe' link with othe plugins.
608
+ * Image popup responsivenes improvements.
609
+ * Onclick and Onhover events added inside events dropdown metabox.
610
+ * Padding removed from image popup.
611
+ * Added while content is loading.
612
+ * Code improvements and minor bug fixes.
613
+
614
+ = Version 3.0.7 =
615
+ * Hot fix connected to subscribers table.
616
+
617
+ = Version 3.0.6 =
618
+ * Added new option 'unsubscribe' for newsletter.
619
+ * Opening and closing animation can be a float value now.
620
+ * Optimization connected to large page/post list data inside the select box.
621
+ * Now countdown can be set not only with date but also without it.
622
+ * Image popup improvements, optimization (speed, responsivenes) and bug fixes.
623
+ * Added to new option RTL/LTR for popup content direction.
624
+ * Added new option inside age restriction popup to remember previus state of user selection.
625
+ * Added loading spinner inside Iframe and Video popup types.
626
+
627
+ = Version 3.0.5 =
628
+ * Bug fixed for subscription popup for some cases when the submit event was not triggering.
629
+ * Added new option to close popup after copy to clipboard action.
630
+ * Added 'Push to bottom' option for social and restriction popup types.
631
+ * Bug fixed connected to user roles who can use the plugin.
632
+ * Bug fixed related to Popup Conditions saved data.
633
+ * Improvements connected to 'disable scrolling' option for Android devices.
634
+ * Added new Fit option for image popup type to resize it according to the image size.
635
+ * Added success message for 'Copy to clipboard' option
636
+ * Added new option to reset popup opening count.
637
+ * New animation effect for popup closing.
638
+
639
+ = Version 3.0.4 =
640
+ * Seo redirect for popup post types (301).
641
+ * CSS class support for popup opening.
642
+ * Added new condition to show popup sitewide.
643
+ * Bug fixed conencted to scrolling inside the Safari browser.
644
+ * Bug fixed inside the subscribers' table for invalid dates.
645
+ * Popup sizing improvements.
646
+ * Bug fixed connected to content scroling option.
647
+
648
+ = Version 3.0.3 =
649
+ * Bug fixed connected to update from v2 to v3 when popups disappear.
650
+ * Compatability with old popup (v2) classes. Example sg-popup-id-1.
651
+ * Popup preview big fixed.
652
+ * Bug fixed connected to selected pages/post for popup showing.
653
+ * Bug fixed connected to new line brake inside the TinyMCE.
654
+ * Bug fixed connected to close button image rendering issue.
655
+ * Bug fixed connected to popup themes.
656
+
657
+ = Version 3.0.2 =
658
+ * Bug fixed connected to mail subject.
659
+ * Bug fixed subscription popup type.
660
+ * Bug fixed connected to banner.
661
+ * Bug fixed connected to 'draft' status.
662
+ * Optimization of images.
663
+
664
+ = Version 3.0.1 =
665
+ * Bug fixed connected to subscribers table.
666
+ * CSS issue fixed connected to bs alert box.
667
+
668
+ = Version 3.0 =
669
+ * Major release of Popup Builder v.3.0.
670
+ * Full UI redesign.
671
+ * Full architectural changes.
672
+ * Subscription popup added.
673
+ * Newsletter added.
674
+
675
+ = Version 2.6.7.6 =
676
+ * Added new class to don't show popup for a certain period of time if the user clicks on the containg button.
677
+ Example `<button class="sg-popup-dont-show-30">Close Popup and Dont Show for 30 days</button>`.
678
+ * Bug fixed connected to user roles who can use the plugin.
679
+
680
+ = Version 2.6.7.5 =
681
+ * Improvements connected to popup preview.
682
+ * Bug fixes connected to user roles who can use the plugin
683
+ * Code optimization.
684
+
685
+ = Version 2.6.7.4 =
686
+ * Video popup improvements connected to full screen option
687
+ * Popup integration's path fixed
688
+ * Bug fixed connected to popup preview
689
+
690
+ = Version 2.6.7.3 =
691
+ * UI improvements.
692
+ * Typo fixes.
693
+ * Email validator fixed for subscription popup and contact form popup.
694
+ * Code optimization.
695
+
696
+ = Version 2.6.7.2 =
697
+ * Bug fixed connected to page builder plugins.
698
+
699
+ = Version 2.6.7.1 =
700
+ * Bug fixed connected custom JS variables inside the popup.
701
+ * Bug fixed connected to page scrolling when it is disabled.
702
+ * Bug fixed connected to activation and deactivation of some popup extensions.
703
+ * Bug fixed connected to get_screen function in themes where it was missing.
704
+
705
+ = Version 2.6.7 =
706
+ * Added new feature to use custom JS variables inside the popup.
707
+ * Content background issue fixed.
708
+ * Bug fixes and code optimization.
709
+
710
+ = Version 2.6.5 =
711
+ * Bug fixed connected to Iframe video autoplay.
712
+
713
+ = Version 2.6.4.6 =
714
+ * Bug fixed connected to Popup size.
715
+ * Code optimization and typo fixes.
716
+
717
+ = Version 2.6.4.6 =
718
+ * Added a new option, to show the popup close button with configurable delay option.
719
+ * Added tooltip next to Preview button, to show how to setup popup in page or post.
720
+ * Bug fixed connected to Popup Type inside the JS variable.
721
+ * Code optimization and typo fixes.
722
+
723
+ = Version 2.6.4.5.1 =
724
+ * HOTFIX
725
+
726
+ = Version 2.6.4.5 =
727
+ * Popup preview improvements.
728
+ * Fixed auto play issue for iframe inside html popup content.
729
+ * Fixed popup preview for mailchimp issue.
730
+ * Facebook popup Optimization.
731
+
732
+ = Version 2.6.4.4 =
733
+ * Added an option to close facebook popup after liking the page.
734
+ * Added an option to hide share button inside the facebook popup.
735
+ * Minor fixes and improvements.
736
+
737
+ = Version 2.6.4.3 =
738
+ * Bug fixed connected to Popup Preview.
739
+ * Popup preview improvments.
740
+ * Minor fixes and improvements.
741
+ * Optimization of page scroling when the popup is opened.
742
+
743
+ = Version 2.6.4.2 =
744
+ * Added popup preview option.
745
+ * Added popup background image option.
746
+ * Added new option to open popup from URL. Example `<a href="https://yoursite.com#sg-popup-id-1">Click Text</a>`
747
+ * Minor fixes and improvements.
748
+
749
+ = Version 2.6.4.1 =
750
+ * Added popup counter feature.
751
+ * Added review section.
752
+ * Bug fixed connected to popup opening sound.
753
+ * PHP Notices fixed.
754
+ * Minor fixes and improvements.
755
+
756
+ = Version 2.6.4 =
757
+ * Added new option to play sound on popup opening.
758
+ * Minor fixes and improvements.
759
+
760
+ = Version 2.6.3.3 =
761
+ * Bug fixed for Safari browser when the popup loads automatically.
762
+
763
+ = Version 2.6.3.2 =
764
+ * Popup media button functionality improvements.
765
+ * Show popup this often time period is saving according to visitors browser.
766
+
767
+ = Version 2.6.3.1 =
768
+ * JS bug fixed.
769
+
770
+ = Version 2.6.3 =
771
+ * Bug fixes and code improvements.
772
+ * New popup animation added.
773
+
774
+ = Version 2.6.2 =
775
+ * Bug fixed connected to page scrolling behind the popup.
776
+ * Added new option `repetitive popup` to show popup every X period of time.
777
+ * Added option to sho random popups (PRO).
778
+ * Improved compatibility with WPML (PRO).
779
+ * Typo fixes.
780
+
781
+ = Version 2.6.1 =
782
+ * Shortcode detection optimizations.
783
+
784
+ = Version 2.6.0 =
785
+ * Improvement of responsive auto mode.
786
+ * Improvement of popup's shortcode detection.
787
+ * Bug fixes.
788
+
789
+ = Version 2.5.9.3 =
790
+ * Added new option to disable content scrolling of the page.
791
+ * Auto mode optimization.
792
+ * Bug fixes.
793
+
794
+ = Version 2.5.9.2 =
795
+ * Hot fix connected to onclick popup.
796
+
797
+ = Version 2.5.9.1 =
798
+ * Bug fixed connected to popup positioning.
799
+ * Bug fixed connected to popup hovering event.
800
+ * Bug fixed connected to popup scaling.
801
+ * Minor fixes and improvements.
802
+
803
+ = Version 2.5.9 =
804
+ * Added popup content padding option.
805
+ * Banner improvements.
806
+ * Bug fixes.
807
+
808
+ = Version 2.5.8 =
809
+ * Tweak: Added option to control popup opening count.
810
+ * Bug fixed connected to banner `Do not show again button` button.
811
+ * Code improvements.
812
+
813
+ = Version 2.5.7 =
814
+ * Bug fixed connected to popup On/Off switch button.
815
+ * PHP notices fixed.
816
+
817
+ = Version 2.5.6 =
818
+ * Improvements of the HTML sanitization.
819
+
820
+ = Version 2.5.4 - 2.5.5 =
821
+ * Security update.
822
+
823
+ = Version 2.5.3 =
824
+ * Tweak: JS and CSS minified for better performance.
825
+ * Tweak: Responsive mode calculations are more accurate.
826
+ * Tweak: Facebook popup share and like buttons will be localized according to the site language.
827
+ * Bug fixed connected to user roles who can use popup builder plugin.
828
+ * Bug fixed connected to Max-Width option for `auto` mode.
829
+ * Code optimization and typo fixes.
830
+
831
+ = Version 2.5.2 =
832
+ * Added new option `auto` inside the responsive mode.
833
+ * Tweak: popup loading optimization.
834
+ * Tweak: added compatibility with autoptimize plugin.
835
+ * Tweak: added e.preventDefault(); for onclick popups to not redirect the page.
836
+ * Code optimization and typo fixes.
837
+ * Bug fixes.
838
+
839
+
840
+ = Version 2.5.1 =
841
+ * Bug fixed connected to Filename notice.
842
+ * Added new feature to control popup Z-Index.
843
+ * Popup themes optimization.
844
+ * Code optimization and typo fixes.
845
+ * Fixed some output notices.
846
+
847
+ = Version 2.5.0 =
848
+ * Added new option for responsiveness.
849
+ * Added option to control the opacity of the popup background.
850
+ * Shortcode popup improvements.
851
+ * Added compatibility with cache plugins.
852
+ * Added CSS class sg-popup-hover-id for triggering popup by hovering via element.
853
+ * Code improvement and optimization.
854
+ * Improvement for detection of CSS classes(inside page templates, and WooCommerce products).
855
+ * Code improvement and optimization.
856
+
857
+ = Version 2.4.9 =
858
+ * New extensions added.
859
+ * Subscription popup improvements.
860
+ * Shortcode popup improvements.
861
+ * Compatibility with WP Network > 4.6.
862
+ * User role improvement for WP Network.
863
+ * JS optimization for Cache plugins.
864
+ * Code improvement and optimization.
865
+
866
+ = Version 2.4.8 =
867
+ * Bug fixed connected to extensions manager.
868
+
869
+ = Version 2.4.7 =
870
+ * Added extension logic.
871
+ * Code optimization.
872
+ * Bug fixes.
873
+ * Exit-Intent extension (PRO).
874
+ * AdBlock extension (PRO).
875
+
876
+ = Version 2.4.6 =
877
+ * UX modifications.
878
+
879
+ = Version 2.4.5 =
880
+ * Backend JS optimization.
881
+ * Frontend JS optimization.
882
+
883
+ = Version 2.4.4 =
884
+ * Bug fixed connected to timezone.
885
+
886
+ = Version 2.4.3 =
887
+ * Added empty index.php file inside every directory to prevent directory listing.
888
+ * Shortcode functionality improvements.
889
+ * Prevented direct access to plugins php file.
890
+ * Bug fixes.
891
+
892
+ = Version 2.4.2 =
893
+ * Added option to open from URL. Example http://popup-builder.com/index.php?sg_popup_id=1
894
+ * Added option to reopen popup after any form submission.
895
+ * Added option to show popup on custom posts (PRO)
896
+ * Bug fixes and code optimization.
897
+
898
+ = Version 2.4.1 =
899
+ * New opening animation added.
900
+
901
+ = Version 2.4.0 =
902
+ * Availability to add popup for external link. Ex.`<a href="https://sygnoos.com/" class="sg-confirm-popup-1">Popup</a>` where 1 is a popup id.
903
+ * Now you can have one iframe popup instance which can load dynamic external URLs. Ex `<a href="https://sygnoos.com/" class="sg-iframe-popup-1">Popup</a>`(PRO)
904
+ * Page level cookie storing. Now you can decide 'Show this often' option will work on a site level or on a page level.
905
+ * Bug fixed and code optimization.
906
+
907
+ = Version 2.3.9.1 =
908
+ * UTF-8 issue fixed.
909
+
910
+ = Version 2.3.9 =
911
+ * New theme added (lightbox popup).
912
+ * Added new functionlity to turn on/off popup.
913
+ * Inside HTML popup now allowed to use script, styles and other HTML tags.
914
+ * Onclick popup inside menu item.
915
+ * Newsletter module added to subscription popup (PRO).
916
+ * Selective deletion inside Subscribers data table (PRO).
917
+ * Popup cookie saving per page or site (PRO).
918
+ * Bug fixed and code optimization.
919
+
920
+ = Version 2.3.8 =
921
+ * New animation effect added.
922
+
923
+ = Version 2.3.7 =
924
+ * New option: Popup scaling.
925
+ * New option: Availability to customize 3rd theme. Ex (border-radius, border-color)
926
+ * Bug fixes and code optimization.
927
+
928
+ = Version 2.3.6 =
929
+ * Show/Hide Popup for selected User Roles (Admin panel) (Free)
930
+ * Bug fixed connected to 3rd party shortcodes
931
+ * New option: Show popup after inactivity (PRO)
932
+ * New option: Popup Scheduling (Example: every Monday from 9:00am - 6:00pm) (PRO)
933
+ * New option: Show popup on categories
934
+
935
+ = Version 2.3.5 =
936
+ * Added new menu item `Settings` where user can choose weather to delete tables or not. This is helpfull when user upgrades to PRO version and don't want to lost previous data.
937
+ * Third party shortcodes improvments.
938
+ * New type of popup Mailchimp (PRO).
939
+ * Bug fixed connected to onclick popup integration.
940
+ * Dimenssions fixed when using shortcode popup.
941
+
942
+
943
+ = Version 2.3.4 =
944
+ * PHP version bug fixed.
945
+
946
+ = Version 2.3.3 =
947
+ * Bug fixed connected to PHP script short tag.
948
+ * Bug fixed connected to popup's dialog z-index.
949
+ * Added support for future extensions.
950
+ * Added compatibility with Ninja Forms.
951
+ * Added compatibility with Gravity Forms.
952
+ * Added compatibility with TablePress.
953
+ * Added compatibility with Formidable Forms.
954
+ * Added compatibility with WP Google Maps.
955
+ * Added compatibility with HTML5 Maps.
956
+ * Code cleanup.
957
+ * Code optimization related to include paths.
958
+
959
+ = Version 2.3.3 =
960
+ * Added new option for a popup content padding.
961
+ * Backend banner improvement.
962
+ * Bug fixes.
963
+
964
+ = Version 2.3.2 =
965
+ * Fusion builder compatible.
966
+ * Bug fixes.
967
+
968
+ = Version 2.3.1 =
969
+ * Bug fixed connected to PHP version
970
+
971
+ = Version 2.3.0 =
972
+ * Popup shortcode modified, onclick popup can be wrapped to any element. Ex `[sg_popup id="1" wrap="span" event="click"]Open Popup #1[/sg_popup]`
973
+ * Popup can be opened via html class. Ex. `<span class='sg-popup-id-1'>Popup #1</span>`
974
+
975
+ = Version 2.2.9 =
976
+ * Bug fixed connected to redirection on popup click.
977
+
978
+ = Version 2.2.8 =
979
+ * Bug fixed connected to version 2.2.7
980
+
981
+ = Version 2.2.7 =
982
+ * Shortcode bug fixed.
983
+ * Show popup on element hover (New Feature).
984
+
985
+ = Version 2.2.6 =
986
+ * Bug fixed with redirection logic.
987
+
988
+ = Version 2.2.5 =
989
+ * Now you can insert a link (URL) of a page to which the customers will be redirected to, when clicking on the popup.
990
+ * Code cleanup.
991
+
992
+ = Version 2.2.4 =
993
+ * Bug fixed connected to data tables.
994
+
995
+ = Version 2.2.3 =
996
+ * Popup Z-index set to max value.
997
+
998
+ = Version 2.2.2 =
999
+ * Fully tested on WordPress 4.5.
1000
+ * New features added.
1001
+ * Bug fixes and stability improvements.
1002
+
1003
+ = Version 2.2.1 =
1004
+ * Auto resize if dimensions are not defined.
1005
+
1006
+ = Version 2.2.0 =
1007
+ * Bug fixed with popup scrolling.
1008
+
1009
+ = Version 2.1.9 =
1010
+ * Bug fixed.
1011
+
1012
+ = Version 2.1.8 =
1013
+ * Added close button localization for fourth popup theme.
1014
+ * Code cleanup.
1015
+ * Minor improvements.
1016
+
1017
+ = Version 2.1.7 =
1018
+ * Auto adjust Popup to HTML image size.
1019
+
1020
+ = Version 2.1.6 =
1021
+ * Page scrolling issue fixed in popup builder.
1022
+
1023
+ = Version 2.1.5 =
1024
+ * Compatible with Black Studio TinyMCE.
1025
+
1026
+ = Version 2.1.4 =
1027
+ * Short code popup added.
1028
+ * Bug fixed.
1029
+
1030
+ = Version 2.1.3 =
1031
+ * Bug fixed.
1032
+
1033
+ = Version 2.1.2 =
1034
+ * Bug fixed inside Facebook Popup.
1035
+ * Optimizations.
1036
+
1037
+ = Version 2.1.1 =
1038
+
1039
+ * Compatible with minify plugins.
1040
+ * Code cleanup.
1041
+
1042
+ = Version 2.1.0 =
1043
+
1044
+ * Added ability to close popup from itself. Just add html class to the element.
1045
+ * Ex. `<a href="#" class="sg-popup-close">Close Popup</a>`
1046
+
1047
+ = Version 2.0.9 =
1048
+
1049
+ * Facebook share and like popup added.
1050
+ * Code cleanup.
1051
+ * Bug fixed.
1052
+
1053
+ = Version 2.0.8 =
1054
+
1055
+ * Inside Popup data table added sorting and search field.
1056
+ * Bug fixed.
1057
+
1058
+ = Version 2.0.7 =
1059
+
1060
+ * Inside HTML popup WYSIWYG is updated and now allows to create content with most common HTML tags and styles.
1061
+ * Code cleanup.
1062
+ * Bug fixed.
1063
+
1064
+
1065
+ = Version 2.0.6 =
1066
+
1067
+ * Added new effects of showing popup.
1068
+ * Bug fixed.
1069
+
1070
+ = Version 2.0.5 =
1071
+
1072
+ * Added shortcode to auto open popup.
1073
+ * Added new feature to support all screen positions where popup can be shown.
1074
+ * Code cleanup.
1075
+ * Bug fixed.
1076
+
1077
+ = Version 2.0.4 =
1078
+
1079
+ * Bug fixed with database collation.
1080
+
1081
+ = Version 2.0.3 =
1082
+
1083
+ * Bug fixed.
1084
+
1085
+ = Version 2.0.2 =
1086
+
1087
+ * Popup UI changed.
1088
+ * Popup Builder PHP version fixes.
1089
+
1090
+ = Version 2.0.1 =
1091
+
1092
+ * Bug fixed.
1093
+
1094
+ = Version 2.0 =
1095
+
1096
+ * Major release of Popup Builder v.2.0
1097
+
1098
+ = Version 1.1.4 =
1099
+
1100
+ * Bug fixed with single quotes string/html popup.
1101
+
1102
+ = Version 1.1.3 =
1103
+
1104
+ * Multisite support.
1105
+ * Bug fixes.
1106
+
1107
+ = Version 1.1.2 =
1108
+
1109
+ * Bug fixes.
1110
+
1111
+ = Version 1.1.1 =
1112
+
1113
+ * Bug fixes.
1114
+
1115
+ = Version 1.1 =
1116
+
1117
+ * Bug fixes.
1118
+
1119
+ = Initial upload 1.0.0 =
1120
+
1121
+ == Frequently Asked Questions ==
1122
+ **How many popups can I create?**
1123
+
1124
+ You can create as many popups as you want, there is no limit either on the Free or the PRO version.
1125
+
1126
+ **Can I have more than one popup on the same page?**
1127
+
1128
+ You can have as many popups as you want on the same page, but you can only set one popup to be opened on page load, the others must be set to open on click.
1129
+
1130
+ **How can I set a popup to open automatically?**
1131
+
1132
+ After creating your popup, go to the desired page or post and you will see a meta box below the content editor, with the following title: "Select popup on page load". Select the popup you want to set and then update the page. You are done! After you go to that page/post the popup will get opened automatically.
1133
+
1134
+ **Want to insert a popup on a link, that will open up when clicked on the link?**
1135
+
1136
+ Simply add the following class to it: sg-confirm-popup-#popupid.
1137
+ Ex. `<a href="https://sygnoos.com/" class="sg-confirm-popup-1">Popup</a>`
1138
+ This will open a popup before a user goes to the page from the link.
1139
+
1140
+ **How to redirect users after clicking on the popup image?**
1141
+
1142
+ Go to the `Options` section of your popup and find "Dismiss on content click" option.
1143
+ Then Select "Redirect" option and in the URL field type the URL of the page you need your users to be redirected to.
1144
+
1145
+ **Can I show a popup after a specific amount of time?**
1146
+
1147
+ Under the Effects panel you will see 'Popup opening delay' option, all you need to do is to enter the amount of time (seconds) after which popup will be shown.
1148
+
1149
+ **Want to open your links inside the popup without redirecting your users to the other site? (PRO)**
1150
+
1151
+ You can simply create an empty iframe popup and add the following class to your link: sg-iframe-popup-#popupid number.
1152
+ Ex. `<a href="https://sygnoos.com/" class="sg-iframe-popup-1">Popup</a>`
1153
+ This way, you'll have an iframe popup on your link, so when a user clicks on your link an iframe popup will open up, with the page of the link inside, so the users won't be redirected by the link.
1154
+
1155
+ **Can I put a popup to show after clicking something?**
1156
+
1157
+ Yes. There is an "Insert popup" button which will insert the popup shortcode over any element (text, image, button, etc.) you want. Just select the element, click on the button, choose a popup and you are done!
1158
+
1159
+ Ex. [sg_popup id="1" event="click"]Your text, or HTML element[/sg_popup]
1160
+
1161
+ Ex. [sg_popup id="1" event="click" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]
1162
+
1163
+ Ex. [sg_popup id="1" event="click"]`<img src="https://sygnoos.com/images/sygnoos_logo_grey.png">`[/sg_popup]
1164
+
1165
+ Alternative method in case if shortcode doesn't satisfy your needs
1166
+
1167
+ Adding the following class `sg-popup-id-1`
1168
+
1169
+ Example: `<span class='sg-popup-id-1'>Popup #1</span>`
1170
+
1171
+ **Can I change the wrapping element of onclick popup?**
1172
+
1173
+ Yes, you can change it. You can write any HTML element you need to wrap your content in the wrapper attribute of your onclick popup.
1174
+
1175
+ Example: `[sg_popup id="1" event="click" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]`
1176
+
1177
+ **Can I put a popup to show after hovering an element?**
1178
+
1179
+ Sure, you can! Just insert your text into the following code: `[sg_popup id="1" event="hover" wrap="span"]Your text, which will be wrapped inside span element[/sg_popup]`
1180
+
1181
+ **Can I change the wrapping element of hovering popup?**
1182
+
1183
+ Yes, you can change it. You can write any HTML element you need to wrap your content in the wrapper attribute of your hovering popup.
1184
+
1185
+ Example: `[sg_popup id="1" event="hover" wrap="span"]Your text, which will be wraped inside span element[/sg_popup]`
1186
+
1187
+ **How to create a shortcode popup?**
1188
+
1189
+ It's a very easy thing to do, just follow the steps!
1190
+
1191
+ * Find "Popup Builder" plugin on the left bar
1192
+ * Press "Add new Popup" button
1193
+ * Press "Shortcode" button
1194
+ * Enter a title for the Popup
1195
+ * Setup general options of the popup
1196
+ * Enter a Shortcode
1197
+ * Setup effects of the popup
1198
+ * Setup the dimensions of the popup
1199
+ * Setup advanced options of the popup
1200
+ * After creating press "Save changes" right above the page
1201
+ * Find the popup you created in "All popups" on the left bar
1202
+
1203
+ One perfect news for the popup builder users! Our popup builder plugin is now compatible with any other plugins' shortcodes!
1204
+
1205
+ **How to make the Popup responsive?**
1206
+
1207
+ To make your popup responsive you should do the following:
1208
+ Set width and height in percent(%) and then set Max width and Max height in pixels (px).
1209
+ When the screen is too wide, Max width option will work and it will prevent showing popup large.
1210
+
1211
+ Example of responsive popup:
1212
+
1213
+ Width: 80%
1214
+
1215
+ Height: 90%
1216
+
1217
+ Max width: 640px
1218
+
1219
+ Max height: 480px
1220
+
1221
+
1222
+ **What URL do I have to enter in the URL field of the facebook popup?**
1223
+
1224
+ You should enter the URL of the site you want to share.
1225
+
1226
+ **How to redirect user to specific page when he/she clicks on popup?**
1227
+
1228
+ You should create any type of popup.
1229
+
1230
+ * From the Popup's options, find "Dismiss on content click" option.
1231
+ * Check it.
1232
+ * Select "Redirect" button.
1233
+ * In the "URL" field enter the URL of the page you need your users to be redirected to.
1234
+
1235
+ Don't forget to Save changes!)
1236
+
1237
+ **Can I make the video play automatically in the Video popup? (PRO)**
1238
+
1239
+ Sure! If you want your video to play automatically, we have an option specially for that case. Just select "Autoplay" and your video will play automatically. Please be noted that autoplay option will not work on mobile devices as there are browser restrictions.
1240
+
1241
+ **What do I have to write in the field "Label" of the Age Restriction popup? (PRO)**
1242
+
1243
+ You can write the text which you want to see on the button. ("Yes" or "No")
1244
+
1245
+ **What if I don't have any specific URL to be shared in my social popup?**
1246
+
1247
+ You can select "Use active URL" and the current page URL will be shared.
1248
+
1249
+ **Why should I buy the PRO package?**
1250
+
1251
+ The Free version of Popup Builder gives you anything you need for creating unlimited fully functional popups and insert them wherever you want. Our PRO package gives you the ability to create more specific popups, like iframe, video or shortcode popups. Also, advanced options will be available for you to disable popup closing, disable popup for mobile devices, show the popup only once, and many other features. So if you need these advanced popups and functionalities, get Popup Builder PRO <a href="http://popup-builder.com">here</a>.
1252
+
1253
+ **How to upgrade to PRO version without losing popup's data?**
1254
+
1255
+ We made it very easy for you! All you need to do is:
1256
+
1257
+ * In your Menu sidebar, go to Popup -> "Settings" section.
1258
+ * Disable the "Delete popup data" option.
1259
+
1260
+ That's all! And you don't need to delete your Free version manually before upgrading to Pro!
1261
+
1262
+ **How can I add a sound on popup opening?**
1263
+
1264
+ From the 'Effects' panel enable 'Popup open sound' option and choose the sound you would like to be played on the popup opening.
1265
+ Please be noted that browser's don't support all the formats. We recommend to use the WAV format.
1266
+
1267
+ **Can I create a popup and make it invisible for some countries? (PRO)**
1268
+
1269
+ Our plugin has an option for such cases. You can select "Filter popup for selected countries" option, which allows you to select the countries in which you want the popup to be shown or hidden, because there can be some popups which you make for specific countries and you may not want them to be seen in some other countries in cases of targeting groups for your marketing. (Allow/Disallow)
1270
+
1271
+ **What's Live Preview in Countdown, Subscription and Contact Form popups for? (PRO)**
1272
+
1273
+ Live preview is a great option which gives you an opportunity to see all the changes you make while creating your popup without saving it after every single change.
1274
+
1275
+
1276
+ **Something is not working. What do I do?**
1277
+
1278
+ Contact us! Depending on your server configuration something may go wrong, please don't hesitate on contacting us, we are here to help you! Our support email is: support@popup-builder.com
1279
+
1280
+ **Everything works PERFECT. What do I do?**
1281
+
1282
+ Leave us a good review :)
1283
+
1284
+ == Upgrade Notice ==
1285
+
1286
+ Current Version of Popup Builder is 3.75
1287
+
1288
+ == Other Notes ==
1289
+
1290
+ #### Popup Builder
1291
+
1292
+ Our Popup Builder plugin is brilliant if you need to insert some ads to your website to attract users' attention. You can use our popups to redirect users to pages which you want them to visit, besides your host website. You can share videos, images and links of websites you want to. By our Popup Builder plugin you can add subscription forms to make your users subscribe to your page. You can even set restrictions for some groups of users, inserting restriction popups created by our plugin to your page.
1293
+
1294
+ Popup Builder Team finds popups as another definition of the word "Solution".
1295
+ Ready to see 10 relevant problems that appear while social marketing?
1296
+ Here is how this works.
1297
+
1298
+ = First problem: I want to have basic information about my product in a certain popup but a huge text might make annoying or just unreadable the text. How can this be achieved? Is there a correspondent tool for it? =
1299
+
1300
+ == First solution: HTML Popup ==
1301
+
1302
+ While sharing your ideas and viewpoints online, it is not always convenient or adequate to involve in the text all the information you got. On the other hand, it is always important not to ignore all the significant extra pieces of the information, because every website owner wants to satisfy the needs of a manifold audience.
1303
+
1304
+ The HTML popup of ours is quite popular solution. After installing it, you gain the golden ability to be brief in your texts but unleash a pack of needed information that was collected in your mind. It is all about a simple redirection.
1305
+ There are several sections in the options we give, that represent a grateful help to configure all the popups up to your needs.
1306
+
1307
+ Firstly - the way the Popup looks.
1308
+ You may easily customize it by choosing the theme and effect types applied to it and deciding the appropriate dimensions.
1309
+ Secondly - the time, when the Popup turns up.
1310
+ You have all the abilities to manage when and where the popup turns up. It can appear while visitors scroll the page, whether while they try to exit the page.
1311
+ Thirdly - the size of your Popup.
1312
+ You may make the it to remain unchangeable or be resized according to the window.
1313
+ Fourthly - how visitors can close it.
1314
+ The popup could close itself either automatically or by visitor's hand. All this options are up to you our dear customer.
1315
+ And finally - the availability of the Popup.
1316
+ You can decide on its availability on different devices (PC, mobile, etc.).
1317
+
1318
+ = Second problem: I want to have lots of comments and reviews about my blogs because I find them attractive and informative ones. Thus, how to make people read the articles on my web page? =
1319
+
1320
+ == Second solution: Image Popup ==
1321
+
1322
+ It is not a secret that even the greatest articles written with the most attractive style awaken laziness among readers. The victims of these situations are huge texts that are allowed to include only words as main characters but the images. An undeniable fact - even few images certainly ease the process of reading and getting information from blogs.
1323
+ Image popup is the best way to deal with this problem; the best way to make your ideas stand out in the crowd. All you need to do is using all the available opportunities we offer by adding a topic image to the pilot.
1324
+
1325
+ * You may customize your installed image popup in many interesting ways, such as determining the image dimensions that considers being a very responsive option due to its resizing and repositioning ability when the main window resizes.
1326
+ * It also provides options for choosing the image frame theme and effects that vary in the duration of the popup animation as well.
1327
+ * There is one more possibility up to you, to specify how long the ready-made popup appearance should be delayed after loading the page.
1328
+ * With the help of both basic and advanced options, you are able to easily regulate the dismissal, display, color and location of the image popup.
1329
+ * You may choose where it should appear. It can appear at the top right or left corner, at the bottom or in the center.
1330
+ * You can choose to show it whenever the user scrolls the page or ensure its permanent occurrence by disabling popup closing in any possible way.
1331
+ * On the other hand, the popup can be chosen to close automatically, whether be dismissed when the user clicks inside or beyond of the popup area.
1332
+ * In addition, it is up to you to decide on your popup accessibility on different devices (PC, mobile, etc.).
1333
+
1334
+
1335
+ = ShortCode Popup =
1336
+
1337
+ It is so wonderful and advantageous that more and more people take up the business of Internet content creation, as each of them tries to enrich us with marvelous tools to make use of in different spheres. Some are the authors of tooltips, column layouts, galleries, others of buttons, block quotes, social media buttons, etc.. All of the latter can be inserted into any of your content, page or post in the form of a short code which will be opened in a popup window.
1338
+ Besides having the ability to add a short code into the modal popup, it is also possible to manage its development with the help of different options available. First, you can apply a certain theme and/or effect to it, decide how long its appearance should be delayed after loading the page. Then, you will be able to configure the display and dismissal of the popup by choosing it to be closed automatically or by hand, be opened while scrolling or be a permanent one. Also, you are to decide where the popup will be located.
1339
+ As far as the popup accessibility on different devices is freely manageable too, it's quite responsive and is resized accordingly.
1340
+
1341
+
1342
+ = Iframe Popup =
1343
+
1344
+ Here is another useful pop up to make your content or website more sociable and vibrant. It is a great addition to your social toolkit, since Iframe enables you to include and remind of another website with the help of a simple tool.
1345
+ One can think of a number of cases when this popup can efficiently be used.
1346
+ For instance, if you are lucky enough to have sponsors or you have got partners that are worth a mention, Iframe will give you the wonderful opportunity to share the work they do. Thus, by clicking on the popup, the user will get to their websites.
1347
+ It can also be used to add some maps, diagrams, charts, etc. to your content without putting them within the material itself or by refraining from dealing with copyright issues.
1348
+ You can build the Iframe popup having decided on its frame theme and the effects that vary in duration. It is also possible to manage how long the ready-made popup appearance should be delayed after loading the page (in sec).
1349
+ The popup can appear at the top right/left corner, at the bottom or in the center. Thanks to certain ticks-off in the options section you will be able to show the popup whenever the user scrolls the page and disable its closing at all. On the contrary, the popup can be chosen to close automatically or be dismissed when the user clicks inside or beyond the popup area.
1350
+ Finally, you can decide whether to make the popup accessible or not on different devices by choosing the options available.
1351
+
1352
+ = Video Popup =
1353
+
1354
+ Every single day lots of information and news is shared by a number of people online. And it is widespread knowledge that any information transmitted visually is more comprehensible and competitive, as motion pictures, video clips, etc. give any material somehow a unique flavor.
1355
+ Surely, many of you would like to take advantage of the opportunity that this video popup offers. It can help to emphasize or season your ideas. You will be able to add video content (YouTube, Vimeo, etc.) by putting its video URL in the popup options.
1356
+ Happily, you can manage its look by choosing the popup frame theme and the effect type that can vary in duration. Also, you can decide how long the popup appearance should be delayed after loading the main page.
1357
+ The availability of both basic and advanced options makes the popup dismissal and display easily manageable. You can have it at the top right/left corner, at the bottom or in the center of the page. The popup can appear while the user is scrolling the page and play right away thanks to its wonderful autoplay option. Meanwhile, you can secure the permanent appearance of the popup having disabled its closing in any possible way or it can be chosen to close automatically or disappear when the user clicks inside or beyond the popup area. Also, it's of importance that you are able to decide whether the popup should be available on a certain device or not.
1358
+
1359
+ = Social Popup =
1360
+
1361
+ Sometimes it is really crucial to make your voice audible to the public when you have so many things to share. On the Internet it is the social media that can enable you with the chance to communicate your ideas to the world. And to reach this goal, you can get this social popup that gives you very useful options while sharing.
1362
+ Having added this popup, you will be provided with a variety of office and general tools to develop your content as you wish. Then, you will be able to make a choice between the two options to share in the social media either by adding the URL of the website you work on - the active URL - or by putting some important material from another internet source.
1363
+ But before making the sharing option available you can configure the labels according to the theme and font size you want. It is also possible to make visible or hide the number of shares you have had so far. Finally, you are able to share your material with all the social media given or only the ones you prefer.
1364
+ The dismissal, display, colour and location of the social popup can be easily regulated as well by making use of both basic and advanced options. The popup may appear at the top right/left corner, at the bottom or in the centre. You can choose to show the it whenever the user scrolls the page or disable popup closing thus ensuring its permanent occurrence. Meanwhile, the popup can be arranged to close automatically, be dismissed when the user clicks inside or beyond the popup area. Also, you have the possibility to decide on your popup accessibility on different devices ( PC, mobile, etc.).
1365
+
1366
+ = Exit-Intent Popup =
1367
+
1368
+ The exit-intent popup technologies we offer can detect when your visitors are about to push the back button, close their browser, or navigate away and they can appear as a popup addressed to them. These are "overlay popups", and cannot be blocked by popup blockers. Also, they are the most customer-friendly approach to share a special message to your visitors, as they don't interrupt your visitors while browsing or scanning your site. Thus, you will be able to easily draw their attention to sales, special offers and contests. If you decide to make use of targeted audience, you'd better consider those of a particular social network you get a lot of traffic from. Another thing you will be able to do is to grab email addresses by offering an incentive to subscribe.
1369
+
1370
+ = Countdown Popup =
1371
+
1372
+ You are lucky enough to come up with a great project, novelty or an unprecedented offer? You don't know how to stress its importance and make people long for it? Well, there is at least one version and we are here to lighten up your burden. Imagine a time counter that is decreasing in days, hours, minutes, etc.. We suggest installing this countdown popup that helps to present your content and keep people anticipating for it, as the popup gives information and shows the time left for reaching it at the same time.
1373
+ While building up the popup, you are able to attach any kind of media or textual material. Moreover, you can control its look by choosing the popup theme and the accompanying effect. The way the counter is displayed is also manageable, since you can choose the counter background colour, text colour and language, countdown format, time zone and the location of the counter in the popup.
1374
+ In the meantime, there are basic and advanced options available which help to regulate the dismissal, display, colour and location of the countdown popup. It can be chosen to turn up while scrolling or remain unchangeable, be closed automatically or manually. As far as the size of the popup is concerned, it can easily be arranged in the dimensions' options.
1375
+
1376
+ = Subscription Popup =
1377
+
1378
+ No doubt, building a trustful relationship with an audience is highly important if you wish to make a profit online and have an email list full of targeted, engaged subscribers. As the trust grows, the audience will be more prone to buying whatever is being sold. One way to make this happen is to make people wish to subscribe to your website with the help of the Subscription popup which can help to extend the functionality of your website.
1379
+ The Subscription popup offered allows to generate a great-looking form, add a compelling incentive to subscribe and guarantee the buildup of an email list, as, once installed, it will be given maximum visibility on your website.
1380
+ Happily, almost every element of the popup is fully customizable - including fonts, sizes and colours, themes and effects applied. Also, you can view it real-time thanks to the live previewer displaying changes you make.
1381
+ The appearance and disappearance of the popup is under complete control too. It will appear after a pre-configured wait, be permanent or turn up while scrolling, close by hand or by itself.
1382
+
1383
+ = Age restriction Popup =
1384
+
1385
+ Internet is recognized as somehow an open space for creation and dissemination of ideas and content that comply to no kind of limits. It is also known that many children have at least once accessed some online content that contains violence, sex, bad language, etc.. The latter can play a crucial role in the child's personality development and can lead to serious deviations later.
1386
+ Thus, to help avoid such kind of developments, you can foster child protection by simply deciding on how much explicit each of your content is and installing the age restriction popup we offer. It will make your content accessible to the age group it refers to, as the popup will make the user answer some questions to decide his/her age and will direct to certain content accordingly.
1387
+ This popup can be built up to your preferences, as there is a range of options at hand. First, you can choose to put restriction on both visual and textual materials. Then, you will be able to see about the popup appearance by choosing the theme and effects to be adjusted to it, the background and text colour, radius of the "Yes" and "No" buttons below the question. Also, you can manage its dimensions and decide on its accessibility on different devices. Meanwhile, you are able to make it automatically closable, leave it open all the time or only while scrolling the page.
1388
+
1389
+ More marketing popup descriptions/solutions are coming soon.
1390
+
1391
  Popup Builder Team.