Under Construction - Version 3.20

Version Description

  • 2018/11/12
  • few bug fixes
  • integration with MailOptin - collect leads & emails with in-content forms and popups
  • we're at 1,820,000 downloads
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Under Construction
Version 3.20
Comparing to
See all releases

Code changes from version 3.15 to 3.20

css/ucp-admin.css CHANGED
@@ -26,6 +26,14 @@
26
  display: none;
27
  }
28
 
 
 
 
 
 
 
 
 
29
  .settings_page_ucp .button:hover,
30
  .settings_page_ucp .button-primary:hover,
31
  .settings_page_ucp .button-secondary:hover,
@@ -375,9 +383,7 @@ span.select2-container .select2-search--inline .select2-search__field {
375
  .question-wrapper .dashicons.big {
376
  color: rgba(0, 0, 0, 1);
377
  display: inline;
378
- height: 61px;
379
  font-size: 61px;
380
- margin-bottom: 10px;
381
  }
382
 
383
  .question-wrapper img {
@@ -858,3 +864,54 @@ option.ucp-promo {
858
  color: #e14d43;
859
  }
860
  /* upsell dialog */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  display: none;
27
  }
28
 
29
+ .ucp-notice-small {
30
+ border-left: 4px solid #00a0d2;
31
+ margin: 5px 0 15px;
32
+ padding: 1px 12px;
33
+ background-color: #fafafa;
34
+ display: inline-block;
35
+ }
36
+
37
  .settings_page_ucp .button:hover,
38
  .settings_page_ucp .button-primary:hover,
39
  .settings_page_ucp .button-secondary:hover,
383
  .question-wrapper .dashicons.big {
384
  color: rgba(0, 0, 0, 1);
385
  display: inline;
 
386
  font-size: 61px;
 
387
  }
388
 
389
  .question-wrapper img {
864
  color: #e14d43;
865
  }
866
  /* upsell dialog */
867
+
868
+
869
+ /* mailoptin upsell dialog */
870
+ .mailoptin-upsell-dialog .ui-dialog-titlebar {
871
+ background: #2980b9;
872
+ text-align: center;
873
+ height: 55px;
874
+ }
875
+ .mailoptin-upsell-dialog .ui-dialog-titlebar img {
876
+ height: 32px;
877
+ display: inline-block;
878
+ margin: 11px 0 0 0;
879
+ }
880
+ .mailoptin-upsell-dialog .ui-dialog-titlebar-close {
881
+ color: #fff;
882
+ height: 55px;
883
+ }
884
+ .mailoptin-upsell-dialog .ui-dialog-titlebar-close:hover {
885
+ color: #333;
886
+ }
887
+ .mailoptin-upsell-dialog .ui-dialog-content {
888
+ padding: 0;
889
+ }
890
+ .mailoptin-upsell-dialog .ui-tabs-nav {
891
+ text-align: center;
892
+ }
893
+ .mailoptin-upsell-dialog .ui-tabs .upsell-tab {
894
+ padding: 20px 15px;
895
+ text-align: center;
896
+ }
897
+ .mailoptin-upsell-dialog a {
898
+ color: #333;
899
+ }
900
+ .mailoptin-upsell-dialog a:hover {
901
+ color: #000;
902
+ }
903
+ option.mailoptin-promo {
904
+ color: #2980b9;
905
+ }
906
+ .mailoptin-pro-feature {
907
+ display: inline-block;
908
+ width: 32%;
909
+ background: rgba(128, 128, 128, 0.03);
910
+ margin: 0 5px 20px 5px;
911
+ padding: 10px;
912
+ box-sizing: border-box;
913
+ vertical-align: top;
914
+ position: relative;
915
+ border-top: 1px solid #2980b9;
916
+ }
917
+ /* upsell dialog */
images/mailoptin-logo-white.png ADDED
Binary file
js/ucp-admin.js CHANGED
@@ -262,6 +262,7 @@ jQuery(document).ready(function($) {
262
 
263
  // helper for linking anchors in different tabs
264
  $('.settings_page_ucp').on('click', '.change_tab', function(e) {
 
265
  $('#ucp_tabs').tabs('option', 'active', $(this).data('tab'));
266
 
267
  // get the link anchor and scroll to it
@@ -269,6 +270,8 @@ jQuery(document).ready(function($) {
269
  if (target) {
270
  $.scrollTo('#' + target, 500, {offset: {top:-50, left:0}});
271
  }
 
 
272
  });
273
 
274
 
@@ -276,7 +279,7 @@ jQuery(document).ready(function($) {
276
  $('#upsell-dialog').dialog({'dialogClass': 'wp-dialog ucp-dialog ucp-upsell-dialog',
277
  'modal': 1,
278
  'resizable': false,
279
- 'title': 'asdasd <b>asdasd</b>',
280
  'zIndex': 9999,
281
  'width': 900,
282
  'height': 'auto',
@@ -294,6 +297,38 @@ jQuery(document).ready(function($) {
294
  $('#upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
295
  });
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  // zebra on pricing table, per column
298
  $('#ucp-pricing-table').find('tr').each(function() {
299
  $(this).find('td').eq(1).addClass('hover');
@@ -346,6 +381,18 @@ jQuery(document).ready(function($) {
346
  return false;
347
  });
348
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  $('#tabs_upsell').on('tabsactivate', function(event, ui) {
350
  $('#upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
351
  });
262
 
263
  // helper for linking anchors in different tabs
264
  $('.settings_page_ucp').on('click', '.change_tab', function(e) {
265
+ e.preventDefault();
266
  $('#ucp_tabs').tabs('option', 'active', $(this).data('tab'));
267
 
268
  // get the link anchor and scroll to it
270
  if (target) {
271
  $.scrollTo('#' + target, 500, {offset: {top:-50, left:0}});
272
  }
273
+
274
+ return false;
275
  });
276
 
277
 
279
  $('#upsell-dialog').dialog({'dialogClass': 'wp-dialog ucp-dialog ucp-upsell-dialog',
280
  'modal': 1,
281
  'resizable': false,
282
+ 'title': 'UCP Upsell',
283
  'zIndex': 9999,
284
  'width': 900,
285
  'height': 'auto',
297
  $('#upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
298
  });
299
 
300
+ // upsell dialog init
301
+ $('#mailoptin-upsell-dialog').dialog({'dialogClass': 'wp-dialog ucp-dialog mailoptin-upsell-dialog',
302
+ 'modal': 1,
303
+ 'resizable': false,
304
+ 'title': 'Start Collecting Leads and Subscribers',
305
+ 'zIndex': 9999,
306
+ 'width': 550,
307
+ 'height': 'auto',
308
+ 'show': 'fade',
309
+ 'hide': 'fade',
310
+ 'open': function(event, ui) {
311
+ ucp_fix_dialog_close(event, ui);
312
+ $(this).siblings().find('span.ui-dialog-title').html(ucp.mailoptin_dialog_upsell_title);
313
+ },
314
+ 'close': function(event, ui) { },
315
+ 'autoOpen': false,
316
+ 'closeOnEscape': true
317
+ });
318
+ $(window).resize(function(e) {
319
+ $('#mailoptin-upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
320
+ });
321
+
322
+
323
+ jQuery('#install-mailoptin').on('click',function(e){
324
+ $('#mailoptin-upsell-dialog').dialog('close');
325
+ jQuery('body').append('<div style="width:550px;height:450px; position:fixed;top:10%;left:50%;margin-left:-275px; color:#444; background-color: #fbfbfb;border:1px solid #DDD; border-radius:4px;box-shadow: 0px 0px 0px 4000px rgba(0, 0, 0, 0.85);z-index: 9999999;"><iframe src="' + ucp.mailoptin_install_url + '" style="width:100%;height:100%;border:none;" /></div>');
326
+ jQuery('#wpwrap').css('pointer-events', 'none');
327
+ e.preventDefault();
328
+ return false;
329
+ });
330
+
331
+
332
  // zebra on pricing table, per column
333
  $('#ucp-pricing-table').find('tr').each(function() {
334
  $(this).find('td').eq(1).addClass('hover');
381
  return false;
382
  });
383
 
384
+
385
+ $('.settings_page_ucp').on('click', '.open-mailoptin-upsell', function(e) {
386
+ e.preventDefault();
387
+
388
+ $(this).blur();
389
+
390
+ $('#mailoptin-upsell-dialog').dialog('open');
391
+
392
+ return false;
393
+ });
394
+
395
+
396
  $('#tabs_upsell').on('tabsactivate', function(event, ui) {
397
  $('#upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
398
  });
js/ucp-jquery-plugins.js CHANGED
@@ -5,12 +5,12 @@
5
  */
6
 
7
  /**
8
- * Copyright (c) 2007-2012 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
9
- * Dual licensed under MIT and GPL.
10
  * @author Ariel Flesler
11
- * @version 1.4.3.1
12
  */
13
- ;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
14
 
15
 
16
  /*! js-cookie v2.1.3 | MIT */
5
  */
6
 
7
  /**
8
+ * Copyright (c) 2007 Ariel Flesler - afleslergmailcom | https://github.com/flesler
9
+ * Licensed under MIT
10
  * @author Ariel Flesler
11
+ * @version 2.1.2
12
  */
13
+ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
14
 
15
 
16
  /*! js-cookie v2.1.3 | MIT */
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: WebFactory, UnderConstructionPage, googlemapswidget, securityninja
3
  Tags: maintenance mode, maintenance page, coming soon page, landing page, under construction, under construction page, coming soon, launch page, coming soon mode, maintenance mode page, offline page, maintenance
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
- Tested up to: 4.9
7
- Stable tag: 3.15
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -21,6 +21,8 @@ Create an Under Construction Page, Maintenance Mode Page, Coming Soon Page or a
21
 
22
  A simple, no-nonsense plugin for all those situations when you have to hide the site behind an Under Construction page for a while. Live examples are available on the <a href="https://underconstructionpage.com/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=website" rel="friend">Under Construction website</a>. Give us a shout on Twitter <a href="http://twitter.com/WebFactoryLtd">@WebFactoryLtd</a> or check out the <a href="https://youtu.be/fqqWrQENSDc">video</a>.
23
 
 
 
24
 
25
  **Options**
26
 
@@ -33,6 +35,7 @@ A simple, no-nonsense plugin for all those situations when you have to hide the
33
  * Description - page description, for SEO
34
  * Headline - main headline/title
35
  * Content - anything you need to display, from styled text to images
 
36
  * Login Button - show a discrete link to the login form, or WP admin if you're logged in
37
  * Social icons/links - new ones are added with every update; let us know if we missed your favorite ones
38
  * Facebook
@@ -131,6 +134,12 @@ Or if needed, upload manually;
131
 
132
  == Changelog ==
133
 
 
 
 
 
 
 
134
  = 3.15 =
135
  * 2018/08/22
136
  * minor bug fixes
@@ -467,4 +476,4 @@ Open your site and force refresh browser cache (Ctrl or Shift + F5). If that doe
467
 
468
  = Is UCP compatible with caching plugins? =
469
 
470
- UCP is compatible with all caching plugins. However, please note that we automatically empty cache when UCP status is changed only for the following plugins: W3 Total Cache, WP Super Cache, Endurance Page Cache, SiteGround SuperCacher and WP Fastest Cache.
3
  Tags: maintenance mode, maintenance page, coming soon page, landing page, under construction, under construction page, coming soon, launch page, coming soon mode, maintenance mode page, offline page, maintenance
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
+ Tested up to: 5.0
7
+ Stable tag: 3.20
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
21
 
22
  A simple, no-nonsense plugin for all those situations when you have to hide the site behind an Under Construction page for a while. Live examples are available on the <a href="https://underconstructionpage.com/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=website" rel="friend">Under Construction website</a>. Give us a shout on Twitter <a href="http://twitter.com/WebFactoryLtd">@WebFactoryLtd</a> or check out the <a href="https://youtu.be/fqqWrQENSDc">video</a>.
23
 
24
+ UCP has full support for collecting leads and subscribers via optin boxes in content, and optin popups. We've integrated <a href="https://wordpress.org/plugins/mailoptin/">MailOptin</a> a great, free plugin into UCP that connects to MailChimp and numerous other autoresponder services allowing you to easily collect emails.
25
+
26
 
27
  **Options**
28
 
35
  * Description - page description, for SEO
36
  * Headline - main headline/title
37
  * Content - anything you need to display, from styled text to images
38
+ * Optin box, optin popup - collect leads and emails and sync with MailChimp and other autoresponders
39
  * Login Button - show a discrete link to the login form, or WP admin if you're logged in
40
  * Social icons/links - new ones are added with every update; let us know if we missed your favorite ones
41
  * Facebook
134
 
135
  == Changelog ==
136
 
137
+ = 3.20 =
138
+ * 2018/11/12
139
+ * few bug fixes
140
+ * integration with MailOptin - collect leads & emails with in-content forms and popups
141
+ * we're at 1,820,000 downloads
142
+
143
  = 3.15 =
144
  * 2018/08/22
145
  * minor bug fixes
476
 
477
  = Is UCP compatible with caching plugins? =
478
 
479
+ UCP is compatible with all caching plugins. However, please note that we automatically empty cache when UCP status is changed only for the following plugins: W3 Total Cache, WP Super Cache, Endurance Page Cache, SiteGround SuperCacher and WP Fastest Cache.
under-construction.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin URI: https://underconstructionpage.com/
5
  Description: Put your site behind a great looking under construction, coming soon, maintenance mode or landing page.
6
  Author: WebFactory Ltd
7
- Version: 3.15
8
  Author URI: https://www.webfactoryltd.com/
9
  Text Domain: under-construction-page
10
  Domain Path: lang
@@ -25,7 +25,6 @@
25
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  */
27
 
28
-
29
  // this is an include only WP file
30
  if (!defined('ABSPATH')) {
31
  die;
@@ -87,6 +86,7 @@ class UCP {
87
  add_action('admin_action_ucp_dismiss_notice', array(__CLASS__, 'dismiss_notice'));
88
  add_action('admin_action_ucp_change_status', array(__CLASS__, 'change_status'));
89
  add_action('admin_action_ucp_reset_settings', array(__CLASS__, 'reset_settings'));
 
90
 
91
  // enqueue admin scripts
92
  add_action('admin_enqueue_scripts', array(__CLASS__, 'admin_enqueue_scripts'));
@@ -325,6 +325,8 @@ class UCP {
325
  'promo_countdown' => $countdown,
326
  'is_activated' => UCP_license::is_activated(),
327
  'dialog_upsell_title' => '<img alt="' . __('UnderConstructionPage PRO', 'under-construction-page') . '" title="' . __('UnderConstructionPage PRO', 'under-construction-page') . '" src="' . UCP_PLUGIN_URL . 'images/ucp_pro_logo_white.png' . '">',
 
 
328
  'nonce_dismiss_survey' => wp_create_nonce('ucp_dismiss_survey'),
329
  'nonce_submit_survey' => wp_create_nonce('ucp_submit_survey'),
330
  'nonce_submit_earlybird' => wp_create_nonce('ucp_submit_earlybird'),
@@ -633,6 +635,26 @@ class UCP {
633
 
634
  $out .= '<link rel="shortcut icon" type="image/png" href="' . trailingslashit(UCP_PLUGIN_URL . 'themes/images') . 'favicon.png" />';
635
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  if (!empty($options['ga_tracking_id'])) {
637
  $out .= "
638
  <script>
@@ -715,6 +737,10 @@ class UCP {
715
  require UCP_PLUGIN_DIR . 'themes/' . $template_id . '/index.php';
716
  $template = ob_get_clean();
717
 
 
 
 
 
718
  foreach ($vars as $var_name => $var_value) {
719
  $var_name = '[' . $var_name . ']';
720
  $template = str_ireplace($var_name, $var_value, $template);
@@ -852,7 +878,7 @@ class UCP {
852
  echo '</p></div>';
853
  $shown = true;
854
  }
855
-
856
  // promo for new users
857
  // todo: translate
858
  if (self::is_plugin_page() &&
@@ -1122,6 +1148,7 @@ class UCP {
1122
  'description' => '[site-tagline]',
1123
  'heading1' => __('Sorry, we\'re doing some work on the site', 'under-construction-page'),
1124
  'content' => __('Thank you for being patient. We are doing some work on the site and will be back shortly.', 'under-construction-page'),
 
1125
  'social_facebook' => '',
1126
  'social_twitter' => '',
1127
  'social_google' => '',
@@ -1144,7 +1171,7 @@ class UCP {
1144
  'whitelisted_roles' => array('administrator'),
1145
  'whitelisted_users' => array()
1146
  );
1147
-
1148
  $defaults_000 = array('status' => '1',
1149
  'license_key' => '',
1150
  'license_active' => false,
@@ -1375,7 +1402,11 @@ class UCP {
1375
  $page = '/';
1376
  }
1377
 
1378
- $parts = array_merge(array('utm_source' => 'ucp-free', 'utm_medium' => 'plugin', 'utm_content' => $placement, 'utm_campaign' => 'ucp-free-v' . self::$version), $params);
 
 
 
 
1379
 
1380
  if (!empty($anchor)) {
1381
  $anchor = '#' . trim($anchor, '#');
@@ -1457,6 +1488,7 @@ class UCP {
1457
 
1458
 
1459
  static function tab_content() {
 
1460
  $options = self::get_options();
1461
  $default_options = self::default_options();
1462
 
@@ -1497,6 +1529,50 @@ class UCP {
1497
  echo '<p class="description">All HTML elements are allowed. Shortcodes are not parsed except <a href="#title">UC theme ones</a>. Default: ' . $default_options['content'] . '</p>';
1498
  echo '</td></tr>';
1499
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1500
  echo '<tr>';
1501
  echo '<th><label for="content_font">Content Font</label></th>';
1502
  echo '<td><select class="skip-save open-ucp-upsell" id="content_font">';
@@ -1517,16 +1593,6 @@ class UCP {
1517
  echo '<p class="description">Enable if you have a 3rd party shortcode you\'d like to use on the under construction page. This is a <a href="#" class="open-ucp-upsell" data-pro-ad="external_shortcodes">PRO feature</a>.</p>';
1518
  echo '</td></tr>';
1519
 
1520
- echo '<tr valign="top">
1521
- <th scope="row"><label for="mailchimp">' . __('Collect Emails via MailChimp', 'under-construction-page') . '</label></th>
1522
- <td>';
1523
- echo '<div class="toggle-wrapper">
1524
- <input type="checkbox" id="mailchimp" type="checkbox" value="1" class="skip-save open-ucp-upsell">
1525
- <label for="mailchimp" class="toggle"><span class="toggle_handler"></span></label>
1526
- </div>';
1527
- echo '<p class="description">Enable if you want to collect user emails on the under construction page by using MailChimp. This is a <a href="#" class="open-ucp-upsell" data-pro-ad="mailchimp">PRO feature</a>.</p>';
1528
- echo '</td></tr>';
1529
-
1530
  echo '<tr valign="top" id="login_button_wrap">
1531
  <th scope="row"><label for="login_button">' . __('Login Button', 'under-construction-page') . '</label></th>
1532
  <td>';
@@ -1730,6 +1796,14 @@ class UCP {
1730
  $img_path = UCP_PLUGIN_URL . 'images/thumbnails/';
1731
  $themes = self::get_themes();
1732
 
 
 
 
 
 
 
 
 
1733
  echo '<table class="form-table">';
1734
  echo '<tr valign="top">
1735
  <td colspan="2"><b style="margin-bottom: 10px; display: inline-block;">' . __('Theme', 'under-construction-page') . '</b> (<a target="_blank" href="' . self::generate_web_link('themes-browse-premium', 'templates') . '">browse 100+ premium themes</a>)<br>';
@@ -2063,6 +2137,21 @@ class UCP {
2063
  echo '</form>'; // ucp_tabs
2064
  echo '</div>'; // wrap
2065
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2066
  $promo = self::is_promo_active();
2067
  if ($promo == 'welcome') {
2068
  $header = 'A <b>welcoming discount</b> has been applied to all packages! It\'s <b>time limited</b> and available for only another <b class="ucp-countdown">59min 30sec</b>.';
@@ -2284,6 +2373,93 @@ class UCP {
2284
  } // reset_pointers
2285
 
2286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2287
  // reset pointers on activation
2288
  static function activate() {
2289
  self::reset_pointers();
4
  Plugin URI: https://underconstructionpage.com/
5
  Description: Put your site behind a great looking under construction, coming soon, maintenance mode or landing page.
6
  Author: WebFactory Ltd
7
+ Version: 3.20
8
  Author URI: https://www.webfactoryltd.com/
9
  Text Domain: under-construction-page
10
  Domain Path: lang
25
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  */
27
 
 
28
  // this is an include only WP file
29
  if (!defined('ABSPATH')) {
30
  die;
86
  add_action('admin_action_ucp_dismiss_notice', array(__CLASS__, 'dismiss_notice'));
87
  add_action('admin_action_ucp_change_status', array(__CLASS__, 'change_status'));
88
  add_action('admin_action_ucp_reset_settings', array(__CLASS__, 'reset_settings'));
89
+ add_action('admin_action_install_mailoptin', array(__CLASS__, 'install_mailoptin'));
90
 
91
  // enqueue admin scripts
92
  add_action('admin_enqueue_scripts', array(__CLASS__, 'admin_enqueue_scripts'));
325
  'promo_countdown' => $countdown,
326
  'is_activated' => UCP_license::is_activated(),
327
  'dialog_upsell_title' => '<img alt="' . __('UnderConstructionPage PRO', 'under-construction-page') . '" title="' . __('UnderConstructionPage PRO', 'under-construction-page') . '" src="' . UCP_PLUGIN_URL . 'images/ucp_pro_logo_white.png' . '">',
328
+ 'mailoptin_dialog_upsell_title' => '<img alt="' . __('MailOptin', 'under-construction-page') . '" title="' . __('MailOptin', 'under-construction-page') . '" src="' . UCP_PLUGIN_URL . 'images/mailoptin-logo-white.png' . '">',
329
+ 'mailoptin_install_url' => add_query_arg(array('action' => 'install_mailoptin'), admin_url('admin.php')),
330
  'nonce_dismiss_survey' => wp_create_nonce('ucp_dismiss_survey'),
331
  'nonce_submit_survey' => wp_create_nonce('ucp_submit_survey'),
332
  'nonce_submit_earlybird' => wp_create_nonce('ucp_submit_earlybird'),
635
 
636
  $out .= '<link rel="shortcut icon" type="image/png" href="' . trailingslashit(UCP_PLUGIN_URL . 'themes/images') . 'favicon.png" />';
637
 
638
+ if (self::is_mailoptin_active()) {
639
+ $out .= '<script src="' . includes_url('/js/jquery/jquery.js') . '"></script>';
640
+ $out .= '<script type="text/javascript">
641
+ var mailoptin_globals = {
642
+ "admin_url":"' . admin_url() . '",
643
+ "public_js":"' . MAILOPTIN_ASSETS_URL . 'js/src",
644
+ "nonce":"' . wp_create_nonce('mailoptin-admin-nonce') . '",
645
+ "mailoptin_ajaxurl":"' . MailOptin\Core\AjaxHandler::get_endpoint() . '",
646
+ "ajaxurl":"' . admin_url('admin-ajax.php') . '",
647
+ "split_test_start_label":"Start Test",
648
+ "split_test_pause_label":"Pause Test",
649
+ "is_customize_preview":"false",
650
+ "disable_impression_tracking":"false",
651
+ "chosen_search_placeholder":"Type to search",
652
+ "js_confirm_text":"Are you sure you want to do this?",
653
+ "js_clear_stat_text":"Are you sure you want to do this? Clicking OK will delete all your optin analytics records."};
654
+ </script>';
655
+ $out .= '<script src="' . MAILOPTIN_ASSETS_URL . '/js/mailoptin.min.js"></script>';
656
+ }
657
+
658
  if (!empty($options['ga_tracking_id'])) {
659
  $out .= "
660
  <script>
737
  require UCP_PLUGIN_DIR . 'themes/' . $template_id . '/index.php';
738
  $template = ob_get_clean();
739
 
740
+ if (self::is_mailoptin_active() && $options['mailoptin_campaign'] > 0){
741
+ $vars['content'] .= MailOptin\Core\Admin\Customizer\OptinForm\OptinFormFactory::build($options['mailoptin_campaign']);
742
+ }
743
+
744
  foreach ($vars as $var_name => $var_value) {
745
  $var_name = '[' . $var_name . ']';
746
  $template = str_ireplace($var_name, $var_value, $template);
878
  echo '</p></div>';
879
  $shown = true;
880
  }
881
+
882
  // promo for new users
883
  // todo: translate
884
  if (self::is_plugin_page() &&
1148
  'description' => '[site-tagline]',
1149
  'heading1' => __('Sorry, we\'re doing some work on the site', 'under-construction-page'),
1150
  'content' => __('Thank you for being patient. We are doing some work on the site and will be back shortly.', 'under-construction-page'),
1151
+ 'mailoptin_campaign' => '-1',
1152
  'social_facebook' => '',
1153
  'social_twitter' => '',
1154
  'social_google' => '',
1171
  'whitelisted_roles' => array('administrator'),
1172
  'whitelisted_users' => array()
1173
  );
1174
+
1175
  $defaults_000 = array('status' => '1',
1176
  'license_key' => '',
1177
  'license_active' => false,
1402
  $page = '/';
1403
  }
1404
 
1405
+ if (stripos($_SERVER['HTTP_HOST'], '000webhost') !== false) {
1406
+ $parts = array_merge(array('utm_source' => 'ucp-free-000webhost', 'utm_medium' => 'plugin', 'utm_content' => $placement, 'utm_campaign' => 'ucp-free-v' . self::$version), $params);
1407
+ } else {
1408
+ $parts = array_merge(array('utm_source' => 'ucp-free', 'utm_medium' => 'plugin', 'utm_content' => $placement, 'utm_campaign' => 'ucp-free-v' . self::$version), $params);
1409
+ }
1410
 
1411
  if (!empty($anchor)) {
1412
  $anchor = '#' . trim($anchor, '#');
1488
 
1489
 
1490
  static function tab_content() {
1491
+ global $wpdb;
1492
  $options = self::get_options();
1493
  $default_options = self::default_options();
1494
 
1529
  echo '<p class="description">All HTML elements are allowed. Shortcodes are not parsed except <a href="#title">UC theme ones</a>. Default: ' . $default_options['content'] . '</p>';
1530
  echo '</td></tr>';
1531
 
1532
+
1533
+ if (self::is_mailoptin_active()) {
1534
+ $mailoptin_campaigns = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'mo_optin_campaigns');
1535
+ $campaigns = array();
1536
+
1537
+ if (!empty($mailoptin_campaigns)) {
1538
+ $campaigns[] = array('val' => -1, 'label' => 'Disable optins');
1539
+ foreach ($mailoptin_campaigns as $mailoptin_campaign) {
1540
+ if ($mailoptin_campaign->optin_type == 'lightbox') {
1541
+ $type = 'lightbox optin';
1542
+ } else {
1543
+ $type = 'content box optin';
1544
+ }
1545
+ $campaigns[] = array('val' => $mailoptin_campaign->id, 'label' => $mailoptin_campaign->name . ' - ' . $type);
1546
+ } // foreach
1547
+ } // if campaigns
1548
+
1549
+ echo '<tr id="mailoptin-settings">';
1550
+ echo '<th><label for="mailoptin_campaign">Optin Boxes &amp; Popups</label></th>';
1551
+ echo '<td>';
1552
+ if ($campaigns) {
1553
+ echo '<select name="' . UCP_OPTIONS_KEY . '[mailoptin_campaign]" id="mailoptin_campaign">';
1554
+ echo self::create_select_options($campaigns, $options['mailoptin_campaign']);
1555
+ echo '</select>';
1556
+ } else {
1557
+ echo '<p><a href="' . admin_url('admin.php?page=mailoptin-optin-campaigns') . '">Create your first optin</a> to start collecting leads and subscribers</p>';
1558
+ }
1559
+ echo '<p class="description">Create, edit and manage optins on the <a href="' . admin_url('admin.php?page=mailoptin-optin-campaigns') . '">MailOptin campaigns page</a>. Lightbox optins are more prominent but some users find them annoying. Content box optins tend to generate leads of higher quality.</p>';
1560
+ echo '</td>';
1561
+ echo '</tr>';
1562
+ } else {
1563
+ echo '<tr>';
1564
+ echo '<th><label for="">Optin Boxes &amp; Popups</label></th>';
1565
+ echo '<td>';
1566
+ echo '<div class="toggle-wrapper">
1567
+ <input type="checkbox" id="mailoptin_support" type="checkbox" value="1" class="skip-save open-mailoptin-upsell">
1568
+ <label for="mailoptin_support" class="toggle"><span class="toggle_handler"></span></label>
1569
+ </div>';
1570
+ echo '<p class="description">Collecting leads and subscribers is one of the most important aspect of any under construction page. ';
1571
+ echo 'To add optin boxes &amp; optin popups compatible with Mailchimp and many other autoresponders <a href="#" class="open-mailoptin-upsell">install the free MailOptin plugin</a>. It seamlessly integrates with UCP, offers numerous options and will enable you to collect leads without any additional costs.</p>';
1572
+ echo '</td>';
1573
+ echo '</tr>';
1574
+ } // mailoptin not active
1575
+
1576
  echo '<tr>';
1577
  echo '<th><label for="content_font">Content Font</label></th>';
1578
  echo '<td><select class="skip-save open-ucp-upsell" id="content_font">';
1593
  echo '<p class="description">Enable if you have a 3rd party shortcode you\'d like to use on the under construction page. This is a <a href="#" class="open-ucp-upsell" data-pro-ad="external_shortcodes">PRO feature</a>.</p>';
1594
  echo '</td></tr>';
1595
 
 
 
 
 
 
 
 
 
 
 
1596
  echo '<tr valign="top" id="login_button_wrap">
1597
  <th scope="row"><label for="login_button">' . __('Login Button', 'under-construction-page') . '</label></th>
1598
  <td>';
1796
  $img_path = UCP_PLUGIN_URL . 'images/thumbnails/';
1797
  $themes = self::get_themes();
1798
 
1799
+ echo '<div class="ucp-notice-small"><p>All themes come with <b>optin boxes</b> &amp; <b>optin popups</b> that you can connect to Mailchimp and other autoresponders to collect leads &amp; subscribers.';
1800
+ if (self::is_mailoptin_active()) {
1801
+ echo '<br>Configure them in <a href="#mailoptin-settings" class="change_tab" data-tab="2">Content - MailOptin</a> settings.';
1802
+ } else {
1803
+ echo '<br>To enable this feature <a class="open-mailoptin-upsell" href="#">install the free MailOptin plugin</a>.';
1804
+ }
1805
+ echo '</p></div>';
1806
+
1807
  echo '<table class="form-table">';
1808
  echo '<tr valign="top">
1809
  <td colspan="2"><b style="margin-bottom: 10px; display: inline-block;">' . __('Theme', 'under-construction-page') . '</b> (<a target="_blank" href="' . self::generate_web_link('themes-browse-premium', 'templates') . '">browse 100+ premium themes</a>)<br>';
2137
  echo '</form>'; // ucp_tabs
2138
  echo '</div>'; // wrap
2139
 
2140
+ // mailoptin install dialog
2141
+ echo '<div id="mailoptin-upsell-dialog" style="display: none;" title="MailOptin"><span class="ui-helper-hidden-accessible"><input type="text"/></span>';
2142
+ echo '<div style="padding: 20px; font-size: 14px;">';
2143
+ echo '<ul class="ucp-list">';
2144
+ echo '<li>completely free plugin that integrates with UCP</li>';
2145
+ echo '<li>instantly start collecting leads &amp; subscribers</li>';
2146
+ echo '<li>use an optin form on the bottom of UCP content</li>';
2147
+ echo '<li>or try a popup/lightbox optin</li>';
2148
+ echo '<li>easily connect with Mailchimp and other leading autoresponder services</li>';
2149
+ echo '<li>completely customize the look &amp; feel of the optin form</li>';
2150
+ echo '</ul>';
2151
+ echo '<p class="upsell-footer"><a class="button button-primary" id="install-mailoptin">Install &amp; activate MailOptin to start collecting leads</a></p>';
2152
+ echo '</div>';
2153
+ echo '</div>'; // mailoptin install dialog
2154
+
2155
  $promo = self::is_promo_active();
2156
  if ($promo == 'welcome') {
2157
  $header = 'A <b>welcoming discount</b> has been applied to all packages! It\'s <b>time limited</b> and available for only another <b class="ucp-countdown">59min 30sec</b>.';
2373
  } // reset_pointers
2374
 
2375
 
2376
+ // auto download / install / activate MailOptin plugin
2377
+ static function install_mailoptin() {
2378
+ $plugin_slug = 'mailoptin/mailoptin.php';
2379
+ $plugin_zip = 'https://downloads.wordpress.org/plugin/mailoptin.latest-stable.zip';
2380
+
2381
+ @include_once ABSPATH . 'wp-admin/includes/plugin.php';
2382
+ @include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
2383
+ @include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
2384
+ @include_once ABSPATH . 'wp-admin/includes/file.php';
2385
+ @include_once ABSPATH . 'wp-admin/includes/misc.php';
2386
+ echo '<style>
2387
+ body{
2388
+ font-family: sans-serif;
2389
+ font-size: 14px;
2390
+ line-height: 1.5;
2391
+ color: #444;
2392
+ }
2393
+ </style>';
2394
+
2395
+ echo '<div style="margin: 20px; color:#444;">';
2396
+ echo 'If things are not done in a minute <a target="_parent" href="' . admin_url('plugin-install.php?s=mailoptin&tab=search&type=term') .'">install the plugin manually via Plugins page</a><br><br>';
2397
+ echo 'Starting ...<br><br>';
2398
+
2399
+ wp_cache_flush();
2400
+ $upgrader = new Plugin_Upgrader();
2401
+ echo 'Check if MailOptin is already installed ... <br />';
2402
+ if (self::is_plugin_installed($plugin_slug)) {
2403
+ echo 'MailOptin is already installed! <br /><br />Making sure it\'s the latest version.<br />';
2404
+ $upgrader->upgrade($plugin_slug);
2405
+ $installed = true;
2406
+ } else {
2407
+ echo 'Installing MailOptin.<br />';
2408
+ $installed = $upgrader->install($plugin_zip);
2409
+ }
2410
+ wp_cache_flush();
2411
+
2412
+ if (!is_wp_error($installed) && $installed) {
2413
+ echo 'Activating MailOptin.<br />';
2414
+ $activate = activate_plugin($plugin_slug);
2415
+
2416
+ if (is_null($activate)) {
2417
+ echo 'MailOptin Activated.<br />';
2418
+
2419
+ echo '<script>setTimeout(function() { top.location = "options-general.php?page=ucp"; }, 1000);</script>';
2420
+ echo '<br>If you are not redirected in a few seconds - <a href="options-general.php?page=ucp" target="_parent">click here</a>.';
2421
+ }
2422
+ } else {
2423
+ echo 'Could not install MailOptin. You\'ll have to <a target="_parent" href="' . admin_url('plugin-install.php?s=mailoptin&tab=search&type=term') .'">download and install manually</a>.';
2424
+ }
2425
+
2426
+ echo '</div>';
2427
+ } // install_mailoptin
2428
+
2429
+
2430
+ static function is_plugin_installed($slug) {
2431
+ if (!function_exists('get_plugins')) {
2432
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
2433
+ }
2434
+ $all_plugins = get_plugins();
2435
+
2436
+ if (!empty($all_plugins[$slug])) {
2437
+ return true;
2438
+ } else {
2439
+ return false;
2440
+ }
2441
+ } // is_plugin_installed
2442
+
2443
+
2444
+ // check if MailOptin plugin is active and min version installed
2445
+ static function is_mailoptin_active() {
2446
+ if (!function_exists('is_plugin_active') || !function_exists('get_plugin_data')) {
2447
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
2448
+ }
2449
+
2450
+ if (is_plugin_active('mailoptin/mailoptin.php')) {
2451
+ $mailoptin_info = get_plugin_data(ABSPATH.'wp-content/plugins/mailoptin/mailoptin.php');
2452
+ if( version_compare($mailoptin_info['Version'], '1.2.10.1', '<')) {
2453
+ return false;
2454
+ } else {
2455
+ return true;
2456
+ }
2457
+ } else {
2458
+ return false;
2459
+ }
2460
+ } // is_mailoptin_active
2461
+
2462
+
2463
  // reset pointers on activation
2464
  static function activate() {
2465
  self::reset_pointers();