Minimal Coming Soon & Maintenance Mode - Version 1.60

Version Description

  • 2018-03-06
  • minor improvements
  • bug fixes
  • pro activation from plugin
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Minimal Coming Soon & Maintenance Mode
Version 1.60
Comparing to
See all releases

Code changes from version 1.55 to 1.60

Files changed (44) hide show
  1. framework/admin/css/admin.css +371 -21
  2. framework/admin/img/sections/countdown.png +0 -0
  3. framework/admin/img/sections/form.png +0 -0
  4. framework/admin/img/sections/header.png +0 -0
  5. framework/admin/img/sections/html.png +0 -0
  6. framework/admin/img/sections/logo.png +0 -0
  7. framework/admin/img/sections/map.png +0 -0
  8. framework/admin/img/sections/progressbar.png +0 -0
  9. framework/admin/img/sections/secondary.png +0 -0
  10. framework/admin/img/sections/social.png +0 -0
  11. framework/admin/img/sections/video.png +0 -0
  12. framework/admin/img/themes/pro/animated-clock.jpg +0 -0
  13. framework/admin/img/themes/pro/bicycle-race.jpg +0 -0
  14. framework/admin/img/themes/pro/book-lovers.jpg +0 -0
  15. framework/admin/img/themes/pro/dental-clinic.jpg +0 -0
  16. framework/admin/img/themes/pro/homemade-chocolate-gifts.jpg +0 -0
  17. framework/admin/img/themes/pro/interior-design.jpg +0 -0
  18. framework/admin/img/themes/pro/mobile-designer.jpg +0 -0
  19. framework/admin/img/themes/pro/modern-office.jpg +0 -0
  20. framework/admin/img/themes/pro/mountain.jpg +0 -0
  21. framework/admin/img/themes/pro/nature.jpg +0 -0
  22. framework/admin/img/themes/pro/parenting.jpg +0 -0
  23. framework/admin/img/themes/pro/simple-beige-design.jpg +0 -0
  24. framework/admin/img/themes/pro/travel-blog.jpg +0 -0
  25. framework/admin/img/themes/pro/workplace.jpg +0 -0
  26. framework/admin/init.php +2 -4
  27. framework/admin/js/admin.js +67 -2
  28. framework/admin/license.php +186 -0
  29. framework/admin/settings.php +33 -8
  30. framework/admin/views/header.php +18 -1
  31. framework/admin/views/settings-advanced.php +12 -1
  32. framework/admin/views/settings-basic.php +47 -22
  33. framework/admin/views/settings-design.php +42 -1
  34. framework/admin/views/settings-email.php +16 -5
  35. framework/admin/views/settings-form.php +8 -0
  36. framework/admin/views/settings-pro.php +177 -0
  37. framework/admin/views/settings-support.php +7 -8
  38. framework/admin/views/settings-themes.php +186 -43
  39. framework/admin/views/settings.php +5 -3
  40. framework/init.php +3 -1
  41. framework/public/init.php +2 -2
  42. framework/public/views/html.php +10 -10
  43. minimal-coming-soon-maintenance-mode.php +16 -2
  44. readme.txt +13 -6
framework/admin/css/admin.css CHANGED
@@ -52,6 +52,42 @@
52
  margin-top: 2px;
53
  display: inline-block;
54
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  .signals-body {
56
  padding: 30px 20px 30px 20px;
57
  }
@@ -277,46 +313,223 @@
277
 
278
 
279
  /* drag&drop */
 
280
  .signals-elements {
281
- border: 1px solid #f1f1f1;
282
  padding: 10px 20px;
283
  margin-bottom: 30px;
284
- max-width: 300px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  }
286
- #arrange-items li {
287
- background: #f3f3f3;
288
- padding: 10px 15px;
289
  font-weight: bold;
290
  cursor: move;
291
- cursor: -webkit-grabbing;
 
 
 
 
292
  }
293
- #arrange-items li .dashicons {
294
- padding-right: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
295
  }
296
 
297
- #arrange-items li .actions-right {
298
- text-align: right;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  display: inline-block;
300
- width: 50%;
 
 
 
 
 
 
 
 
 
 
 
301
  }
302
 
303
- #arrange-items li .actions-right .dashicons {
304
- padding: 0 0 0 10px;
 
 
 
 
305
  }
306
 
307
- #arrange-items li .actions-right a {
308
- color: #666666;
309
  }
310
 
311
- #arrange-items li .actions-left {
312
- text-align: left;
 
 
 
 
 
 
 
313
  display: inline-block;
314
- width: 50%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  }
316
 
 
 
 
 
317
 
318
- .sortable-ghost {
319
- border: 1px dashed #333;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  }
321
 
322
  /* Forms */
@@ -673,6 +886,46 @@ textarea.signals-form-input-lg {
673
  color: red;
674
  }
675
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
676
  /* Switches */
677
 
678
  .switchery {
@@ -848,7 +1101,104 @@ input.color, input.jscolor {
848
  }
849
 
850
  .signals-strong sup {
851
- padding: 0;
852
  margin: 0;
853
  color: #fe2929;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
854
  }
52
  margin-top: 2px;
53
  display: inline-block;
54
  }
55
+ #header-right {
56
+ position: absolute;
57
+ left: 1114px;
58
+ margin: 2px 0 0 0;
59
+ padding: 10px;
60
+ }
61
+ #header-right label {
62
+ display: inline-block;
63
+ margin: 0 10px 0 0;
64
+ font-size: 15px;
65
+ padding: 0;
66
+ vertical-align: top;
67
+ }
68
+ .csmm-status-wrapper {
69
+ display: inline-block;
70
+ border: 1px solid #666;
71
+ padding: 0;
72
+ margin: -4px 0 0 0;
73
+ background: #fff;
74
+ font-size: 17px;
75
+ font-weight: 500;
76
+ cursor: pointer;
77
+ }
78
+ .csmm-status-wrapper .csmm-status-btn {
79
+ padding: 4px 7px;
80
+ display: inline-block;
81
+ color: #666;
82
+ }
83
+ .csmm-status-wrapper.on .csmm-status-on {
84
+ background: #64bd63;
85
+ color: #fff;
86
+ }
87
+ .csmm-status-wrapper.off .csmm-status-off {
88
+ background: #fe2929;
89
+ color: #fff;
90
+ }
91
  .signals-body {
92
  padding: 30px 20px 30px 20px;
93
  }
313
 
314
 
315
  /* drag&drop */
316
+
317
  .signals-elements {
 
318
  padding: 10px 20px;
319
  margin-bottom: 30px;
320
+ text-align: center;
321
+ }
322
+ .csmm-layout-builder {
323
+ display: inline-block;
324
+ width: 100%;;
325
+ min-height: 60px;
326
+ vertical-align: top;
327
+ position: relative;
328
+ }
329
+ .arrange-label {
330
+ font-weight: bold;
331
+ display: block;
332
+ margin-bottom: 10px;
333
+ }
334
+ .browser-header {
335
+ border: 3px solid #ccc;
336
+ border-bottom-width: 0;
337
+ width: 100%;
338
+ padding: 10px;
339
+ box-sizing: border-box;
340
+ text-align: left;
341
+ }
342
+ .browser-button {
343
+ width: 20px;
344
+ height: 20px;
345
+ margin: 0 8px 0 0;
346
+ border-radius: 50%;
347
+ border: 2px solid #ccc;
348
+ display: inline-block;
349
+ box-sizing: border-box;
350
+ background: #dddddd55;
351
+ }
352
+ .browser-input {
353
+ width: calc(100% - 100px);
354
+ height: 31px;
355
+ margin: 0 0 -3px 15px;
356
+ border: 2px solid #ccc;
357
+ display: inline-block;
358
+ box-sizing: border-box;
359
+ text-align: right;
360
+ padding: 0 10px;
361
+ }
362
+ .browser-input span {
363
+ color: #ddd;
364
+ display: inline-block;
365
+ margin: 4px 0 -4px 0;
366
+ vertical-align: inherit;
367
+ }
368
+ #arrange-items {
369
+ border: 3px solid #ccc;
370
+ border-bottom-width: 8px;
371
+ box-sizing: border-box;
372
+ }
373
+ #arrange-items2 {
374
+ border: 1px solid #ccc;
375
+ width: 300px;
376
+ }
377
+ .arrange-wrapper {
378
+ width: calc(49% - 30px);
379
+ text-align: center;
380
+ display: inline-block;
381
+ vertical-align: top;
382
+ margin-bottom: 30px;
383
+ }
384
+ #active-modules {
385
+ min-width: 380px;
386
+ margin-right: 30px;
387
+ }
388
+ .csmm-layout-builder li a {
389
+ text-decoration: none;
390
  }
391
+ .csmm-layout-builder li {
392
+ padding: 15px 15px;
393
+ box-sizing: border-box;
394
  font-weight: bold;
395
  cursor: move;
396
+ border-top: 1px solid white;
397
+ border-bottom: 1px solid white;
398
+ margin: 0;
399
+ background: #ffffff;
400
+ position: relative;
401
  }
402
+ #arrange-items2 li {
403
+ cursor: pointer;
404
+ }
405
+ .csmm-layout-builder li img {
406
+ max-width: 100%;
407
+ }
408
+ #arrange-items2 li {
409
+ padding: 5px;
410
+ }
411
+ .csmm-layout-builder:hover li {
412
+ opacity: 0.3;
413
+ }
414
+ .csmm-layout-builder li.drag-action {
415
+ opacity: 1;
416
  }
417
 
418
+ .csmm-layout-builder.empty {
419
+ background-color: #eee;
420
+ }
421
+ .csmm-layout-builder.empty:before {
422
+ content: "Empty list.";
423
+ font-weight: 200;
424
+ text-align: center;
425
+ width: 100%;
426
+ left: 0;
427
+ position: absolute;
428
+ display: block;
429
+ top: 50%;
430
+ -webkit-transform: translateY(-50%);
431
+ -moz-transform: translateY(-50%);
432
+ -ms-transform: translateY(-50%);
433
+ transform: translateY(-50%);
434
+ }
435
+ #arrange-items.empty:before {
436
+ content: "Your Coming Soon page is empty - add modules from the list on the right";
437
+ }
438
+ #arrange-items2.empty:before {
439
+ content: "No more modules available";
440
+ }
441
+
442
+ .csmm-layout-builder li:hover {
443
+ border-top: 1px dashed #ff0000;
444
+ border-bottom: 1px dashed #ff0000;
445
+ opacity: 1;
446
+ }
447
+
448
+ .csmm-layout-builder li .actions-center {
449
+ text-align: center;
450
  display: inline-block;
451
+ position: absolute;
452
+ margin: auto;
453
+ top: -1px;
454
+ background: #ff0000bf;
455
+ padding: 6px 10px;
456
+ color: #ffffff;
457
+ left: 50%;
458
+ -webkit-transform: translateX(-50%);
459
+ transform: translateX(-50%);
460
+ font-weight: 400;
461
+ transition: none;
462
+ opacity: 0;
463
  }
464
 
465
+ #arrange-items2 li .actions-center {
466
+ left: 5%;
467
+ width: 90%;
468
+ box-sizing: border-box;
469
+ -webkit-transform: none;
470
+ transform: none;
471
  }
472
 
473
+ .csmm-layout-builder li .actions-center a {
474
+ transition: none;
475
  }
476
 
477
+ .actions-center .module-name {
478
+ padding: 0 10px 0 0;
479
+ border-right: thin solid #fff;
480
+ }
481
+ #arrange-items2 .actions-center .module-name {
482
+ border-right: none;
483
+ }
484
+
485
+ .csmm-layout-builder li:hover .actions-center {
486
  display: inline-block;
487
+ opacity: 1;
488
+ }
489
+
490
+ #arrange-items2 li:hover .actions-center a {
491
+ display: none;
492
+ }
493
+ #arrange-items2 li:hover .actions-center a.add-module {
494
+ display: inline;
495
+ }
496
+ #arrange-items li:hover .actions-center a.add-module {
497
+ display: none;
498
+ }
499
+ #_arrange-items2 li:hover .actions-center .module-name {
500
+ border: none;
501
+ padding: 0;
502
  }
503
 
504
+ .csmm-layout-builder li .actions-center .dashicons {
505
+ padding: 0;
506
+ margin: 0;
507
+ }
508
 
509
+ .csmm-layout-builder li .actions-center a {
510
+ color: #fefefe;
511
+ padding: 0 0 0 10px;
512
+ margin: 0;
513
+ }
514
+
515
+ .csmm-layout-builder li .actions-center a:hover {
516
+ color: #ddd;
517
+ }
518
+
519
+ .csmm-layout-builder li.ui-sortable-helper {
520
+ border: 1px dashed #ff0000;
521
+ background-color: #ffffffb1;
522
+ }
523
+ .csmm-layout-builder li.ui-sortable-helper .actions-center{
524
+ display: none;
525
+ }
526
+
527
+ li.module-placeholder, #arrange-items li.module-placeholder {
528
+ border: 1px dashed #ff0000;
529
+ height: 80px;
530
+ width: 100%;
531
+ background: #ff000033;
532
+ display: inline-block;
533
  }
534
 
535
  /* Forms */
886
  color: red;
887
  }
888
 
889
+ .home-box {
890
+ background-color: #f1f1f1;
891
+ padding: 15px 10px;
892
+ display: inline-block;
893
+ position: relative;
894
+ vertical-align: top;
895
+ }
896
+ .home-box span {
897
+ font-weight: 600;
898
+ display: block;
899
+ font-size: 15px;
900
+ border-left: 2px solid #fe2929;
901
+ margin: 0 0 10px -10px;
902
+ padding: 5px 0 5px 10px;
903
+ }
904
+ .home-box p {
905
+ margin: 0;
906
+ text-align: justify;
907
+ padding: 0;
908
+ }
909
+
910
+ .video-container {
911
+ position:relative;
912
+ padding-bottom:56.25%;
913
+ height:0;
914
+ overflow:hidden;
915
+ }
916
+
917
+ .video-container iframe, .video-container object, .video-container embed {
918
+ position:absolute;
919
+ top:0;
920
+ left:0;
921
+ width:100%;
922
+ height:100%;
923
+ }
924
+
925
+ option[value="-1"] {
926
+ color: #fe2929;
927
+ }
928
+
929
  /* Switches */
930
 
931
  .switchery {
1101
  }
1102
 
1103
  .signals-strong sup {
1104
+ padding: 0 0 0 5px;
1105
  margin: 0;
1106
  color: #fe2929;
1107
+ }
1108
+
1109
+ #features-table {
1110
+ width: 100%;
1111
+ border-spacing: 20px;
1112
+ margin-bottom: -20px;
1113
+ }
1114
+
1115
+ /* pricing */
1116
+
1117
+ #pricing-table {
1118
+ width: 100%;
1119
+ }
1120
+
1121
+ #pricing-table, #pricing-table tr, #pricing-table td, #pricing-table h3 {
1122
+ margin: 0;
1123
+ padding: 0;
1124
+ border: 0;
1125
+ border-spacing: 0;
1126
+ border-collapse: collapse;
1127
+ }
1128
+ #pricing-table tr:first-child td {
1129
+ background-color: #EC414D;
1130
+ padding: 10px;
1131
+ text-align: center;
1132
+ width: 33%;
1133
+ }
1134
+ #pricing-table tr:first-child td span {
1135
+ color: white;
1136
+ padding: 10px 0 0 0;
1137
+ display: inline-block;
1138
+ }
1139
+ #pricing-table tr:last-child td {
1140
+ border-top: 2px solid #EC414D;
1141
+ border-bottom: none;
1142
+ }
1143
+ #pricing-table h3 {
1144
+ color: #fff;
1145
+ font-size: 24px;
1146
+ font-weight: bold;
1147
+ line-height: 105%;
1148
+ }
1149
+ #pricing-table td {
1150
+ padding: 12px 15px;
1151
+ border-bottom: solid thin #EC414D;
1152
+ text-align: center;
1153
+ background-color: #f1f1f1
1154
+ }
1155
+ #pricing-table tr td:first-child {
1156
+ border-right: 30px solid #fff;
1157
+ }
1158
+ #pricing-table tr td:last-child {
1159
+ border-left: 30px solid #fff;
1160
+ }
1161
+ #pricing-table .dashicons {
1162
+ color: #EC414D;
1163
+ }
1164
+ #pricing-table .dashicons.dashicons-no {
1165
+ color: #000;
1166
+ }
1167
+ #pricing-table .hover {
1168
+ background-color: #fff;
1169
+ font-weight: 700;
1170
+ }
1171
+ #pricing-table .promo-button {
1172
+ color: #fff;
1173
+ background: #EC414D;
1174
+ padding: 10px 5px;
1175
+ margin: 0px 0 10px 0;
1176
+ text-align: center;
1177
+ display: block;
1178
+ text-decoration: none;
1179
+ font-weight: bolder;
1180
+ font-size: 22px;
1181
+ line-height: 120%;
1182
+ }
1183
+ #pricing-table .promo-button del {
1184
+ color: #333;
1185
+ }
1186
+ #pricing-table .promo-button:hover {
1187
+ background-color: #f35958;
1188
+ }
1189
+ #pricing-table .instant-download {
1190
+ text-align: center;
1191
+ display: inline-block;
1192
+ font-style: italic;
1193
+ margin: 0 -5px 0 -5px;
1194
+ }
1195
+ #pricing-table .promo-button small {
1196
+ font-size: x-small;
1197
+ line-height: 0px;
1198
+ }
1199
+
1200
+ hr {
1201
+ margin: 30px 0;
1202
+ background-color: #EC414D;
1203
+ height: 3px;
1204
  }
framework/admin/img/sections/countdown.png ADDED
Binary file
framework/admin/img/sections/form.png ADDED
Binary file
framework/admin/img/sections/header.png ADDED
Binary file
framework/admin/img/sections/html.png ADDED
Binary file
framework/admin/img/sections/logo.png ADDED
Binary file
framework/admin/img/sections/map.png ADDED
Binary file
framework/admin/img/sections/progressbar.png ADDED
Binary file
framework/admin/img/sections/secondary.png ADDED
Binary file
framework/admin/img/sections/social.png ADDED
Binary file
framework/admin/img/sections/video.png ADDED
Binary file
framework/admin/img/themes/pro/animated-clock.jpg ADDED
Binary file
framework/admin/img/themes/pro/bicycle-race.jpg ADDED
Binary file
framework/admin/img/themes/pro/book-lovers.jpg ADDED
Binary file
framework/admin/img/themes/pro/dental-clinic.jpg CHANGED
Binary file
framework/admin/img/themes/pro/homemade-chocolate-gifts.jpg ADDED
Binary file
framework/admin/img/themes/pro/interior-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/mobile-designer.jpg ADDED
Binary file
framework/admin/img/themes/pro/modern-office.jpg ADDED
Binary file
framework/admin/img/themes/pro/mountain.jpg ADDED
Binary file
framework/admin/img/themes/pro/nature.jpg ADDED
Binary file
framework/admin/img/themes/pro/parenting.jpg ADDED
Binary file
framework/admin/img/themes/pro/simple-beige-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/travel-blog.jpg ADDED
Binary file
framework/admin/img/themes/pro/workplace.jpg ADDED
Binary file
framework/admin/init.php CHANGED
@@ -9,9 +9,7 @@
9
  */
10
 
11
 
12
- // Menu for the support and about panel
13
  function csmm_add_menu() {
14
-
15
  if(current_user_can('manage_options')) {
16
  // Adding to the plugin panel link to the settings menu
17
  $signals_csmm_menu = add_options_page (
@@ -30,7 +28,7 @@ function csmm_add_menu() {
30
  add_action( 'admin_menu', 'csmm_add_menu' );
31
 
32
 
33
- // Registering JS and CSS files over here
34
  function csmm_admin_scripts() {
35
 
36
  wp_register_style( 'csmm-admin-base', CSMM_URL . '/framework/admin/css/admin.css', false, csmm_get_plugin_version() );
@@ -38,7 +36,7 @@ function csmm_admin_scripts() {
38
  wp_register_script( 'csmm-webfonts', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js', false );
39
  wp_register_script( 'csmm-admin-editor', CSMM_URL . '/framework/admin/js/editor/ace.js', false, csmm_get_plugin_version(), true );
40
  wp_register_script( 'csmm-admin-color', CSMM_URL . '/framework/admin/js/colorpicker/jscolor.js', false, csmm_get_plugin_version(), true );
41
- wp_register_script('csmm-admin-plugins', CSMM_URL . '/framework/admin/js/plugins.js', 'jquery', csmm_get_plugin_version(), true);
42
  wp_register_script('csmm-admin-base', CSMM_URL . '/framework/admin/js/admin.js', 'jquery', csmm_get_plugin_version(), true);
43
 
44
  // Calling the files
9
  */
10
 
11
 
 
12
  function csmm_add_menu() {
 
13
  if(current_user_can('manage_options')) {
14
  // Adding to the plugin panel link to the settings menu
15
  $signals_csmm_menu = add_options_page (
28
  add_action( 'admin_menu', 'csmm_add_menu' );
29
 
30
 
31
+ // enqueue JS and CSS files
32
  function csmm_admin_scripts() {
33
 
34
  wp_register_style( 'csmm-admin-base', CSMM_URL . '/framework/admin/css/admin.css', false, csmm_get_plugin_version() );
36
  wp_register_script( 'csmm-webfonts', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js', false );
37
  wp_register_script( 'csmm-admin-editor', CSMM_URL . '/framework/admin/js/editor/ace.js', false, csmm_get_plugin_version(), true );
38
  wp_register_script( 'csmm-admin-color', CSMM_URL . '/framework/admin/js/colorpicker/jscolor.js', false, csmm_get_plugin_version(), true );
39
+ wp_register_script('csmm-admin-plugins', CSMM_URL . '/framework/admin/js/plugins.js', 'jquery', csmm_get_plugin_version(), true);
40
  wp_register_script('csmm-admin-base', CSMM_URL . '/framework/admin/js/admin.js', 'jquery', csmm_get_plugin_version(), true);
41
 
42
  // Calling the files
framework/admin/js/admin.js CHANGED
@@ -108,7 +108,7 @@ function getUploader( $text, $target ) {
108
  $( document ).ready( function() {
109
 
110
  // hide nags from other plugins
111
- $('#wpbody-content .notice-warning, #wpbody-content .update-nag, #wpbody-content .notice-error, #wpbody-content .notice-info, #wpbody-content .error').hide();
112
 
113
  $( document ).on( 'click', '#mm_subscribe', function(e) {
114
  e.preventDefault();
@@ -162,6 +162,71 @@ function getUploader( $text, $target ) {
162
 
163
  } );
164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  // ios switches
166
  var elements = Array.prototype.slice.call(document.querySelectorAll('.signals-form-ios'));
167
  elements.forEach(function(html) {
@@ -240,7 +305,7 @@ function getUploader( $text, $target ) {
240
  function csmm_change_tab(tab_name) {
241
  tab_name = '#' + tab_name.replace('#', '');
242
 
243
- $('.signals-main-menu li a[href=' + tab_name + ']').trigger('click');
244
  window.scrollTo(0, 0);
245
  } // csmm_change_tab
246
 
108
  $( document ).ready( function() {
109
 
110
  // hide nags from other plugins
111
+ $('#wpbody-content .notice-warning, #wpbody-content .update-nag, #wpbody-content .notice-error, #wpbody-content .notice-info, #wpbody-content .error, #wpbody-content .updated').hide();
112
 
113
  $( document ).on( 'click', '#mm_subscribe', function(e) {
114
  e.preventDefault();
162
 
163
  } );
164
 
165
+ // license key field on enter
166
+ $('#signals_csmm_license_key').on('keypress', function(e) { console.log(e.which);
167
+ if (e.which == 13) {
168
+ e.preventDefault();
169
+ $('#save-license').trigger('click');
170
+ }
171
+ });
172
+
173
+ $('.pro-option').on('click change', function(e) {
174
+ if ($(this).is('select') && $(this).val() != '-1') {
175
+ return true;
176
+ }
177
+
178
+ if ($(this).is('select')) {
179
+ $(this).find('option').attr('selected', '');
180
+ $(this).find('option:first').attr('selected', 'selected');
181
+ }
182
+ $(this).blur();
183
+
184
+ csmm_change_tab('pro');
185
+ e.preventDefault();
186
+
187
+ return false;
188
+ });
189
+
190
+ $('#header-status').on('click', function(e) {
191
+ e.preventDefault();
192
+ window.location = $(this).data('action-url');
193
+ });
194
+
195
+ $('#arrange-items2').on('click', function(e) {
196
+ e.preventDefault();
197
+ csmm_change_tab('pro');
198
+
199
+ return false;
200
+ });
201
+
202
+ // zebra on pricing table, per column
203
+ $('#pricing-table').find('tr').each(function(index) {
204
+ $(this).find('td').eq(1).addClass('hover');
205
+ if (index == 0 || index == 9) {
206
+ return true;
207
+ }
208
+ $(this).find('td').eq(1).html('<span class="dashicons dashicons-yes"></span> ' + $(this).find('td').eq(1).html());
209
+ });
210
+
211
+ // reposition main on/off button on window resize and load
212
+ $(window).on('resize', function(e) {
213
+ if ($('.signals-float-right').width() >= 1200) {
214
+ position = 1113;
215
+ } else {
216
+ position = parseInt($('.signals-float-right').width() - 87, 10);
217
+ }
218
+ $('#header-right').css('left', position + 'px');
219
+ }).trigger('resize');
220
+
221
+ $('.signals-cnt-fix').on('click', '.switchery', function(e) {
222
+ if($(this).prev('input.pro-option').length != 0) {
223
+ csmm_change_tab('pro');
224
+
225
+ e.preventDefault();
226
+ return false;
227
+ }
228
+ });
229
+
230
  // ios switches
231
  var elements = Array.prototype.slice.call(document.querySelectorAll('.signals-form-ios'));
232
  elements.forEach(function(html) {
305
  function csmm_change_tab(tab_name) {
306
  tab_name = '#' + tab_name.replace('#', '');
307
 
308
+ $('.signals-main-menu li a[href="' + tab_name + '"]').trigger('click');
309
  window.scrollTo(0, 0);
310
  } // csmm_change_tab
311
 
framework/admin/license.php ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Minimal Coming Soon & Maintenance Mode
4
+ * PRO license related functions
5
+ * (c) WebFactory Ltd, 2016 - 2018
6
+ */
7
+
8
+ class csmm_license {
9
+ static $licensing_servers = array('https://license1.comingsoonwp.com/', 'https://license2.comingsoonwp.com/');
10
+
11
+
12
+ // hook things up
13
+ static function init() {
14
+ if (is_admin()) {
15
+ add_filter('pre_set_site_transient_update_plugins', array(__CLASS__, 'update_filter'));
16
+ add_filter('plugins_api', array(__CLASS__, 'update_details'), 100, 3);
17
+ }
18
+ } // init
19
+
20
+
21
+ // get plugin info for lightbox
22
+ static function update_details($result, $action, $args) {
23
+ if (!self::is_activated()) {
24
+ return $result;
25
+ }
26
+
27
+ static $response = false;
28
+ $options = csmm_get_meta();
29
+ $plugin = 'minimal-coming-soon-maintenance-mode';
30
+
31
+ if ($action != 'plugin_information' || empty($args->slug) || ($args->slug != $plugin)) {
32
+ return $result;
33
+ }
34
+
35
+ if(empty($response) || is_wp_error($response)) {
36
+ $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
37
+ $request_args = array('action' => 'plugin_information',
38
+ 'request_details' => serialize($args),
39
+ 'timestamp' => time(),
40
+ 'codebase' => 'free',
41
+ 'version' => csmm_get_plugin_version(),
42
+ 'license_key' => $options['license_key'],
43
+ 'license_expires' => $options['license_expires'],
44
+ 'license_type' => $options['license_type'],
45
+ 'license_active' => $options['license_active'],
46
+ 'site' => get_home_url());
47
+
48
+ $url = add_query_arg($request_args, self::$licensing_servers[0]);
49
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
50
+
51
+ if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
52
+ $url = add_query_arg($request_args, self::$licensing_servers[1]);
53
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
54
+ }
55
+ } // if !$response
56
+
57
+ if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
58
+ $res = new WP_Error('plugins_api_failed', __('An unexpected HTTP error occurred during the API request.', 'csmm'), $response->get_error_message());
59
+ } else {
60
+ $res = json_decode(wp_remote_retrieve_body($response), false);
61
+
62
+ if (!is_object($res)) {
63
+ $res = new WP_Error('plugins_api_failed', __('Invalid API respone.', 'csmm'), wp_remote_retrieve_body($response));
64
+ } else {
65
+ $res->sections = (array) $res->sections;
66
+ $res->banners = (array) $res->banners;
67
+ $res->icons = (array) $res->icons;
68
+ }
69
+ }
70
+
71
+ return $res;
72
+ } // update_details
73
+
74
+
75
+ // get info on new plugin version if one exists
76
+ static function update_filter($current) {
77
+ if (!self::is_activated()) {
78
+ return $current;
79
+ }
80
+
81
+ static $response = false;
82
+ $options = csmm_get_meta();
83
+ $plugin = 'minimal-coming-soon-maintenance-mode/minimal-coming-soon-maintenance-mode.php';
84
+
85
+ if(empty($response) || is_wp_error($response)) {
86
+ $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
87
+ $request_args = array('action' => 'update_info',
88
+ 'timestamp' => time(),
89
+ 'codebase' => 'free',
90
+ 'version' => csmm_get_plugin_version(),
91
+ 'license_key' => $options['license_key'],
92
+ 'license_expires' => $options['license_expires'],
93
+ 'license_type' => $options['license_type'],
94
+ 'license_active' => $options['license_active'],
95
+ 'site' => get_home_url());
96
+
97
+ $url = add_query_arg($request_args, self::$licensing_servers[0]);
98
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
99
+
100
+ if (is_wp_error($response)) {
101
+ $url = add_query_arg($request_args, self::$licensing_servers[1]);
102
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
103
+ }
104
+ } // if !$response
105
+
106
+ if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
107
+ $data = json_decode(wp_remote_retrieve_body($response), false);
108
+ if (empty($current)) {
109
+ $current = new stdClass();
110
+ }
111
+ if (empty($current->response)) {
112
+ $current->response = array();
113
+ }
114
+ if (!empty($data) && is_object($data)) {
115
+ $data->icons = (array) $data->icons;
116
+ $data->banners = (array) $data->banners;
117
+ $current->response[$plugin] = $data;
118
+ }
119
+ }
120
+
121
+ return $current;
122
+ } // update_filter
123
+
124
+
125
+ // check if license key is valid and not expired
126
+ static function is_activated() {
127
+ $options = csmm_get_meta();
128
+
129
+ if (!empty($options['license_active']) && $options['license_active'] === true &&
130
+ !empty($options['license_expires']) && $options['license_expires'] >= date('Y-m-d')) {
131
+ return true;
132
+ } else {
133
+ return false;
134
+ }
135
+ } // is_activated
136
+
137
+
138
+ // check if activation code is valid
139
+ static function validate_license_key($code) {
140
+ $out = array('success' => false, 'license_active' => false, 'license_key' => $code, 'error' => '', 'license_type' => '', 'license_expires' => '1900-01-01');
141
+ $result = self::query_licensing_server('validate_license', array('license_key' => $code));
142
+
143
+ if (false === $result) {
144
+ $out['error'] = 'Unable to contact licensing server. Please try again in a few moments.';
145
+ } elseif (!is_array($result['data']) || sizeof($result['data']) != 4) {
146
+ $out['error'] = 'Invalid response from licensing server. Please try again later.';
147
+ } else {
148
+ $out['success'] = true;
149
+ $out = array_merge($out, $result['data']);
150
+ }
151
+
152
+ return $out;
153
+ } // validate_license_key
154
+
155
+
156
+ // run any query on licensing server
157
+ static function query_licensing_server($action, $data = array(), $method = 'GET', $array_response = true) {
158
+ $options = csmm_get_meta();
159
+ $request_params = array('sslverify' => false, 'timeout' => 25, 'redirection' => 2);
160
+ $default_data = array('license_key' => $options['license_key'],
161
+ 'code_base' => 'free',
162
+ '_rand' => rand(1000, 9999),
163
+ 'version' => csmm_get_plugin_version(),
164
+ 'site' => get_home_url());
165
+
166
+ $request_data = array_merge($default_data, $data, array('action' => $action));
167
+
168
+ $url = add_query_arg($request_data, self::$licensing_servers[0]);
169
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
170
+
171
+ if (is_wp_error($response) || !($body = wp_remote_retrieve_body($response)) || !($result = @json_decode($body, $array_response))) {
172
+ $url = add_query_arg($request_data, self::$licensing_servers[1]);
173
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
174
+ $body = wp_remote_retrieve_body($response);
175
+ $result = @json_decode($body, $array_response);
176
+ }
177
+
178
+ $result['success'] = true;
179
+
180
+ if (!is_array($result) || !isset($result['success'])) {
181
+ return false;
182
+ } else {
183
+ return $result;
184
+ }
185
+ } // query_licensing_server
186
+ } // class csmm_license
framework/admin/settings.php CHANGED
@@ -16,17 +16,41 @@ function csmm_admin_settings() {
16
  // List of Google fonts
17
  require_once 'include/fonts.php';
18
 
19
-
20
- // Saving (updating) options over here
21
- if ( isset( $_POST['signals_csmm_submit'] ) ) {
22
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  // Checking whether the status option is checked or not
24
  if ( isset( $_POST['signals_csmm_status'] ) ) :
25
  $tmp_options['status'] = absint( $_POST['signals_csmm_status'] );
26
  else :
27
  $tmp_options['status'] = '2';
28
  endif;
29
-
30
  // Checking whether the love option is checked or not
31
  if ( isset( $_POST['signals_csmm_love'] ) ) :
32
  $tmp_options['love'] = absint( $_POST['signals_csmm_love'] );
@@ -152,7 +176,7 @@ function csmm_admin_settings() {
152
  // Updating the options in the database and showing message to the user
153
  update_option( 'signals_csmm_options', $update_options );
154
  $signals_csmm_err = '<div class="signals-alert signals-alert-info"><strong>Great!</strong> Options have been updated.<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>';
155
-
156
  if (function_exists('w3tc_pgcache_flush')) {
157
  w3tc_pgcache_flush();
158
  }
@@ -173,7 +197,8 @@ function csmm_admin_settings() {
173
 
174
 
175
  // Grab options from the database
176
- $signals_csmm_options = csmm_get_options();
 
177
 
178
  // View template for the settings panel
179
  require 'views/settings.php';
@@ -200,7 +225,7 @@ function csmm_ajax_support() {
200
  $subject = '[Maintenance Mode Ticket] by '. $admin_email;
201
  $body = "Email: $admin_email \r\nIssue: $issue";
202
  $headers = 'From: ' . $admin_email . "\r\n" . 'Reply-To: ' . $admin_email;
203
-
204
  $body .= "\r\n\r\nSite details:\r\n";
205
  $body .= ' WordPress version: ' . get_bloginfo('version') . "\r\n";
206
  $body .= ' MM version: ' . csmm_get_plugin_version() . "\r\n";
16
  // List of Google fonts
17
  require_once 'include/fonts.php';
18
 
19
+ if (!empty($_POST['save-license']) && 'save-license' == $_POST['save-license']) {
20
+ $meta = csmm_get_meta();
21
+ if (empty($_POST['license_key'])) {
22
+ $options['license_type'] = '';
23
+ $options['license_expires'] = '1900-01-01';
24
+ $options['license_active'] = false;
25
+ $options['license_key'] = '';
26
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>License key saved.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
27
+ } else {
28
+ $tmp = csmm_license::validate_license_key($_POST['license_key']);
29
+ if ($tmp['success']) {
30
+ $options['license_type'] = $tmp['license_type'];
31
+ $options['license_expires'] = $tmp['license_expires'];
32
+ $options['license_active'] = $tmp['license_active'];
33
+ $options['license_key'] = $_POST['license_key'];
34
+ if ($tmp['license_active']) {
35
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>License key saved and activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
36
+ set_site_transient('update_plugins', null);
37
+ } else {
38
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>License not active. ' . $tmp['error'] . '</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
39
+ }
40
+ } else {
41
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>Unable to contact licensing server. Please try again in a few moments.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
42
+ }
43
+ }
44
+ $meta = array_merge($meta, $options);
45
+ update_option('signals_csmm_meta', $meta);
46
+ } elseif ( isset( $_POST['signals_csmm_submit'] ) ) {
47
  // Checking whether the status option is checked or not
48
  if ( isset( $_POST['signals_csmm_status'] ) ) :
49
  $tmp_options['status'] = absint( $_POST['signals_csmm_status'] );
50
  else :
51
  $tmp_options['status'] = '2';
52
  endif;
53
+
54
  // Checking whether the love option is checked or not
55
  if ( isset( $_POST['signals_csmm_love'] ) ) :
56
  $tmp_options['love'] = absint( $_POST['signals_csmm_love'] );
176
  // Updating the options in the database and showing message to the user
177
  update_option( 'signals_csmm_options', $update_options );
178
  $signals_csmm_err = '<div class="signals-alert signals-alert-info"><strong>Great!</strong> Options have been updated.<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>';
179
+
180
  if (function_exists('w3tc_pgcache_flush')) {
181
  w3tc_pgcache_flush();
182
  }
197
 
198
 
199
  // Grab options from the database
200
+ $signals_csmm_options = csmm_get_options();
201
+ $meta = csmm_get_meta();
202
 
203
  // View template for the settings panel
204
  require 'views/settings.php';
225
  $subject = '[Maintenance Mode Ticket] by '. $admin_email;
226
  $body = "Email: $admin_email \r\nIssue: $issue";
227
  $headers = 'From: ' . $admin_email . "\r\n" . 'Reply-To: ' . $admin_email;
228
+
229
  $body .= "\r\n\r\nSite details:\r\n";
230
  $body .= ' WordPress version: ' . get_bloginfo('version') . "\r\n";
231
  $body .= ' MM version: ' . csmm_get_plugin_version() . "\r\n";
framework/admin/views/header.php CHANGED
@@ -15,8 +15,25 @@
15
  <img src="<?php echo CSMM_URL; ?>/framework/admin/img/mm-icon-dark.png" class="signals-logo">
16
  <p>
17
  <strong><?php _e( 'Minimal Coming Soon &amp; Maintenance Mode', 'signals' ); ?></strong>
18
- <span><?php _e( 'by', 'signals' ); ?> <a href="http://www.webfactoryltd.com/" target="_blank"><?php _e( 'Web Factory Ltd', 'signals' ); ?></a></span>
19
  </p>
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  <?php if ( isset( $signals_header_addon ) ) { echo $signals_header_addon; } ?>
22
  </div><!-- .signals-header -->
15
  <img src="<?php echo CSMM_URL; ?>/framework/admin/img/mm-icon-dark.png" class="signals-logo">
16
  <p>
17
  <strong><?php _e( 'Minimal Coming Soon &amp; Maintenance Mode', 'signals' ); ?></strong>
18
+ <span><?php _e( 'by', 'signals' ); ?> <a href="http://www.webfactoryltd.com/?utm_source=csmm-free&utm_medium=plugin&utm_content=header-link&utm_campaign=csmm-free-v<?php echo csmm_get_plugin_version(); ?>" target="_blank"><?php _e( 'Web Factory Ltd', 'signals' ); ?></a></span>
19
  </p>
20
 
21
+ <?php
22
+ if ($signals_csmm_options['status']== '1') {
23
+ $action_url = add_query_arg(array('action' => 'csmm_change_status', 'new_status' => 'disabled', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
24
+ } else {
25
+ $action_url = add_query_arg(array('action' => 'csmm_change_status', 'new_status' => 'enabled', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
26
+ }
27
+
28
+ /*
29
+
30
+ <div id="header-right">
31
+ <div id="header-status" title="Click to change the Coming Soon status" data-action-url="<?php echo $action_url; ?>">
32
+ <label for="">Coming Soon Status:</label> <div class="csmm-status-wrapper <?php echo ($signals_csmm_options['status'] != '1')? 'off': 'on'; ?>"><span class="csmm-status-btn csmm-status-off">OFF</span><span class="csmm-status-btn csmm-status-on">ON</span></div>
33
+ </div>
34
+ </div>
35
+
36
+ */
37
+ ?>
38
  <?php if ( isset( $signals_header_addon ) ) { echo $signals_header_addon; } ?>
39
  </div><!-- .signals-header -->
framework/admin/views/settings-advanced.php CHANGED
@@ -12,15 +12,26 @@
12
  <div class="signals-tile" id="advanced">
13
  <div class="signals-tile-body">
14
  <div class="signals-tile-title"><?php _e( 'ADVANCED', 'signals' ); ?></div>
15
- <p><?php _e( 'You can add custom HTML & CSS in this section. Making wrong changes over here will affect the working of the plugin.', 'signals' ); ?></p>
 
16
 
17
  <div class="signals-section-content">
 
18
  <div class="signals-form-group">
19
  <label for="signals_csmm_disable" class="signals-strong"><?php _e( 'Use Custom HTML only', 'signals' ); ?></label>
20
  <input type="checkbox" class="signals-form-ios" id="signals_csmm_disable" name="signals_csmm_disable" value="1"<?php checked( '1', $signals_csmm_options['disable_settings'] ); ?>>
21
 
22
  <p class="signals-form-help-block"><?php _e( 'If you enable this option, the plugin will ignore everything except the HTML you provide.', 'signals' ); ?></p>
23
  <p class="signals-form-help-block"><?php _e( 'Basically, you will have a blank template which you can fill with your provided HTML content. Only basic CSS gets added by the plugin which does the task of browser styling reset. You should style your HTML content either inline or by inserting styling in the custom CSS section. In short, use this option only if you know what you are doing.', 'signals' ); ?></p>
 
 
 
 
 
 
 
 
 
24
  </div>
25
 
26
  <div class="signals-form-group">
12
  <div class="signals-tile" id="advanced">
13
  <div class="signals-tile-body">
14
  <div class="signals-tile-title"><?php _e( 'ADVANCED', 'signals' ); ?></div>
15
+ <p><?php _e( 'You can add custom HTML &amp; CSS in this section. Making wrong changes over here will affect the working of the plugin.', 'signals' ); ?></p>
16
+
17
 
18
  <div class="signals-section-content">
19
+ <div class="signals-double-group signals-clearfix">
20
  <div class="signals-form-group">
21
  <label for="signals_csmm_disable" class="signals-strong"><?php _e( 'Use Custom HTML only', 'signals' ); ?></label>
22
  <input type="checkbox" class="signals-form-ios" id="signals_csmm_disable" name="signals_csmm_disable" value="1"<?php checked( '1', $signals_csmm_options['disable_settings'] ); ?>>
23
 
24
  <p class="signals-form-help-block"><?php _e( 'If you enable this option, the plugin will ignore everything except the HTML you provide.', 'signals' ); ?></p>
25
  <p class="signals-form-help-block"><?php _e( 'Basically, you will have a blank template which you can fill with your provided HTML content. Only basic CSS gets added by the plugin which does the task of browser styling reset. You should style your HTML content either inline or by inserting styling in the custom CSS section. In short, use this option only if you know what you are doing.', 'signals' ); ?></p>
26
+ </div>
27
+
28
+ <div class="signals-form-group">
29
+ <label for="csmm_nocache" class="signals-strong pro-option">Send no-cache Headers<sup>PRO</sup></label>
30
+ <input type="checkbox" class="signals-form-ios pro-option skip-save" id="csmm_nocache" name="csmm_nocache" value="1" disabled>
31
+
32
+ <p class="signals-form-help-block">If you don't want the coming soon page's preview to be cached by Facebook and other social media enable this option. Once you switch to the normal site social media preview (visible when sharing the site's link) will immediately be refreshed. Normal visitors won't notice any differences with the option enabled. This is a <a href="#pro" class="csmm-change-tab">PRO feature</a>.</p>
33
+ </div>
34
+
35
  </div>
36
 
37
  <div class="signals-form-group">
framework/admin/views/settings-basic.php CHANGED
@@ -95,30 +95,55 @@
95
  </div>
96
  </div>
97
 
 
98
  <label class="signals-strong"><?php _e( 'Arrange Elements', 'signals' ); ?></label>
99
  <p class="signals-form-help-block"><?php _e( 'Select the order in which you would like to display the sections on the maintenance page. To change the order, simply drag the items and arrange as per your preference.', 'signals' ); ?></p>
100
- <div class="signals-elements">
101
- <ul id="arrange-items">
102
- <?php
103
-
104
- if (!empty( $signals_csmm_options['arrange'])) {
105
- $signals_arrange = explode( ',', $signals_csmm_options['arrange'] );
106
- } else {
107
- $signals_arrange = array('logo', 'header', 'secondary', 'form', 'html');
108
- }
109
- $section_names = array('logo' => 'Logo', 'header' => 'Header', 'secondary' => 'Content', 'form' => 'Form', 'html' => 'Custom HTML');
110
- $section_links = array('logo' => 'design', 'header' => 'design', 'secondary' => 'design', 'form' => 'form', 'html' => 'advanced');
111
-
112
- // list items
113
- foreach ( $signals_arrange as $signals_item ) {
114
- echo '<li data-id="' . $signals_item . '"><div class="actions-left"><span class="dashicons dashicons-menu"></span> ' . $section_names[$signals_item] . '</div><div class="actions-right"><a href="#' . $section_links[$signals_item] . '" class="js-action csmm-change-tab" title="Edit element"><span class="dashicons dashicons-edit"></span></a></div></li>';
115
- }
116
- ?>
117
- </ul>
118
-
119
- <input type="hidden" name="signals_csmm_arrange" id="signals_csmm_arrange" value="<?php echo esc_attr_e( $signals_csmm_options['arrange'] ); ?>">
120
- </div>
121
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  <div class="signals-double-group signals-clearfix">
123
  <div class="signals-form-group">
124
  <label for="signals_csmm_analytics" class="signals-strong"><?php _e( 'Analytics Code', 'signals' ); ?></label>
95
  </div>
96
  </div>
97
 
98
+ <div class="signals-form-group signals-clearfix">
99
  <label class="signals-strong"><?php _e( 'Arrange Elements', 'signals' ); ?></label>
100
  <p class="signals-form-help-block"><?php _e( 'Select the order in which you would like to display the sections on the maintenance page. To change the order, simply drag the items and arrange as per your preference.', 'signals' ); ?></p>
101
+ <?php
102
+ $modules = array();
103
+ $modules['logo'] = array('name' => 'Logo', 'link' => 'design');
104
+ $modules['header'] = array('name' => 'Header', 'link' => 'signals_csmm_header');
105
+ $modules['secondary'] = array('name' => 'Content', 'link' => 'signals_csmm_secondary');
106
+ $modules['form'] = array('name' => 'Subscribe Form', 'link' => 'form');
107
+ $modules['html'] = array('name' => 'Custom HTML', 'link' => 'advanced');
108
+ $modules['video'] = array('name' => 'Video - PRO module', 'link' => 'design-video');
109
+ $modules['countdown'] = array('name' => 'Countdown - PRO module', 'link' => 'design-countdown');
110
+ $modules['progressbar'] = array('name' => 'Progress Bar - PRO module', 'link' => 'design-progress');
111
+ $modules['social'] = array('name' => 'Social Icons - PRO module', 'link' => 'design-social');
112
+ $modules['map'] = array('name' => 'Map - PRO module', 'link' => 'design-map');
113
+ //$modules['contactform'] = array('name' => 'Contact Form', 'link' => 'design-contactform');
114
+ $modules = apply_filters('csmm_modules_list', $modules);
115
+
116
+
117
+ $active_modules = false;
118
+ if (!empty($signals_csmm_options['arrange'])) {
119
+ $active_modules = explode(',', $signals_csmm_options['arrange']);
120
+ }
121
+ if (!is_array($active_modules)) {
122
+ $active_modules = array('logo', 'header', 'secondary', 'form', 'html');
123
+ }
124
+ $available_modules = array_diff(array_keys($modules), $active_modules);
125
+
126
+ echo '<div class="arrange-wrapper" id="active-modules"><span class="arrange-label">Page Layout</span>';
127
+ echo '<div class="browser-header"><div class="browser-button"></div><div class="browser-button"></div><div class="browser-button"></div><div class="browser-input"><span class="dashicons dashicons-update"></span></div></div>';
128
+ echo '<ul id="arrange-items" class="csmm-layout-builder">';
129
+ // active elements
130
+ foreach ($active_modules as $module ) {
131
+ echo '<li data-id="' . $module . '"><img src="' . CSMM_URL . '/framework/admin/img/sections/' . $module . '.png" title="Drag to rearrange the module on coming soon page"><div class="actions-center"><span class="module-name">' . $modules[$module]['name'] . '</span><a title="Edit module" href="#' . $modules[$module]['link'] . '" class="js-action csmm-change-tab" title="Edit module"><span class="dashicons dashicons-edit"></span></a></div></li>';
132
+ }
133
+ echo '</ul></div>';
134
+
135
+ echo '<div class="arrange-wrapper" id="hidden-modules"><span class="arrange-label">Extra Modules <sup style="color: #fe2929;"> PRO</sup></span>';
136
+ echo '<ul id="arrange-items2" class="csmm-layout-builder">';
137
+ // available elements
138
+ foreach ($available_modules as $module ) {
139
+ echo '<li data-id="' . $module . '"><img src="' . CSMM_URL . '/framework/admin/img/sections/' . $module . '.png" title="Get PRO to activate additional modules"><div class="actions-center"><span class="module-name">' . $modules[$module]['name'] . '</span></div></li>';
140
+ }
141
+ echo '</ul></div>';
142
+ ?>
143
+
144
+ <input type="hidden" name="signals_csmm_arrange" id="signals_csmm_arrange" value="<?php echo esc_attr_e( $signals_csmm_options['arrange'] ); ?>">
145
+
146
+ </div>
147
  <div class="signals-double-group signals-clearfix">
148
  <div class="signals-form-group">
149
  <label for="signals_csmm_analytics" class="signals-strong"><?php _e( 'Analytics Code', 'signals' ); ?></label>
framework/admin/views/settings-design.php CHANGED
@@ -80,11 +80,52 @@
80
  </div>
81
  </div>
82
 
 
83
  <div class="signals-form-group">
84
  <label for="signals_csmm_overlay" class="signals-strong"><?php _e( 'Content Overlay', 'signals' ); ?></label>
85
  <input type="checkbox" class="signals-form-ios" name="signals_csmm_overlay" value="1"<?php checked( '1', $signals_csmm_options['content_overlay'] ); ?>>
86
-
87
  <p class="signals-form-help-block"><?php _e( 'If enabled, applies transparent background to the content section of the maintenance page.', 'signals' ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  </div>
89
 
90
  <div class="signals-double-group signals-clearfix">
80
  </div>
81
  </div>
82
 
83
+ <div class="signals-double-group signals-clearfix">
84
  <div class="signals-form-group">
85
  <label for="signals_csmm_overlay" class="signals-strong"><?php _e( 'Content Overlay', 'signals' ); ?></label>
86
  <input type="checkbox" class="signals-form-ios" name="signals_csmm_overlay" value="1"<?php checked( '1', $signals_csmm_options['content_overlay'] ); ?>>
 
87
  <p class="signals-form-help-block"><?php _e( 'If enabled, applies transparent background to the content section of the maintenance page.', 'signals' ); ?></p>
88
+ </div>
89
+
90
+ <div class="signals-form-group">
91
+ <label for="background_image_filter" class="signals-strong">Background Image Filter<sup>PRO</sup></label>
92
+ <select name="background_image_filter" class="skip-save pro-option" id="background_image_filter">
93
+ <?php
94
+ $filters = array(
95
+ array('val'=> '', 'label' => 'No Filter'),
96
+ array('label' => '1977', 'val' => '-1'),
97
+ array('label' => 'Aden', 'val' => '-1'),
98
+ array('label' => 'Black & White', 'val' => '-1'),
99
+ array('label' => 'Brannan', 'val' => '-1'),
100
+ array('label' => 'Brooklyn', 'val' => '-1'),
101
+ array('label' => 'Clarendon', 'val' => '-1'),
102
+ array('label' => 'Earlybird', 'val' => '-1'),
103
+ array('label' => 'Gingham', 'val' => '-1'),
104
+ array('label' => 'Hudson', 'val' => '-1'),
105
+ array('label' => 'Inkwell', 'val' => '-1'),
106
+ array('label' => 'Kelvin', 'val' => '-1'),
107
+ array('label' => 'Lark', 'val' => '-1'),
108
+ array('label' => 'Lo-Fi', 'val' => '-1'),
109
+ array('label' => 'Maven', 'val' => '-1'),
110
+ array('label' => 'Mayfair', 'val' => '-1'),
111
+ array('label' => 'Moon', 'val' => '-1'),
112
+ array('label' => 'Nashville', 'val' => '-1'),
113
+ array('label' => 'Perpetua', 'val' => '-1'),
114
+ array('label' => 'Reyes', 'val' => '-1'),
115
+ array('label' => 'Rise', 'val' => '-1'),
116
+ array('label' => 'Slumber', 'val' => '-1'),
117
+ array('label' => 'Stinson', 'val' => '-1'),
118
+ array('label' => 'Toaster', 'val' => '-1'),
119
+ array('label' => 'Valencia', 'val' => '-1'),
120
+ array('label' => 'Walden', 'val' => '-1'),
121
+ array('label' => 'Willow', 'val' => '-1'),
122
+ array('label' => 'X-pro II', 'val' => '-1')
123
+ );
124
+ csmm_create_select_options( $filters, '' ); ?>
125
+ </select>
126
+ <p class="signals-form-help-block">Filter are instantly applied on the background image. Check out <a target="_blank" href="<?php echo csmm_generate_web_link('design-filters', 'image-filters'); ?>">the previews</a>. This is a <a href="#pro" class="csmm-change-tab">PRO feature</a>.</p>
127
+ </div>
128
+
129
  </div>
130
 
131
  <div class="signals-double-group signals-clearfix">
framework/admin/views/settings-email.php CHANGED
@@ -16,6 +16,18 @@
16
 
17
  <div class="signals-section-content">
18
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  <div class="signals-double-group signals-clearfix">
20
  <div class="signals-form-group">
21
  <label for="signals_csmm_api" class="signals-strong"><?php _e( 'MailChimp API', 'signals' ); ?></label>
@@ -63,11 +75,10 @@
63
  ?>
64
  </div>
65
 
66
- <div class="signals-form-group" style="display: none;">
67
- <label for="signals_csmm_double_optin" class="signals-strong"><?php _e( 'Double Opt-In', 'signals' ); ?><sup>PRO</sup></label>
68
- <input type="checkbox" class="signals-form-ios pro-option" name="signals_csmm_double_optin" id="signals_csmm_double_optin" value="1" checked="checked">
69
-
70
- <p class="signals-form-help-block"><?php _e( 'TODO Enable this option if you would like to use your custom form styles. The settings below will only be applicable when this option is turned on.', 'signals' ); ?></p>
71
  </div>
72
 
73
  </div>
16
 
17
  <div class="signals-section-content">
18
 
19
+ <div class="signals-double-group signals-clearfix">
20
+ <div class="signals-form-group">
21
+ <label for="mail_system_to_use" class="signals-strong">Select Emailing / Integration System<sup>PRO</sup></label>
22
+ <select id="mail_system_to_use" name="mail_system_to_use" class="signals-form-control pro-option skip-save">
23
+ <option value="mc" selected><?php _e( 'MailChimp', 'signals' ); ?></option>
24
+ <option value="-1"><?php _e( 'Universal Autoresponder - PRO option', 'signals' ); ?></option>
25
+ <option value="-1"><?php _e( 'Zapier - PRO option', 'signals' ); ?></option>
26
+ </select>
27
+ <p class="signals-form-help-block">MailChimp is integrated via the API. For any other services (autoresponders, webinars, CRMs) that can generate an HTML form use the "Universal Autoresponder" option. We recommend using Zapier as it easily connects to 1000+ services. Get the <a href="#pro" class="csmm-change-tab">PRO version</a> to use Zapier and universal autoresponder integrations.</p>
28
+ </div>
29
+ </div>
30
+
31
  <div class="signals-double-group signals-clearfix">
32
  <div class="signals-form-group">
33
  <label for="signals_csmm_api" class="signals-strong"><?php _e( 'MailChimp API', 'signals' ); ?></label>
75
  ?>
76
  </div>
77
 
78
+ <div class="signals-form-group">
79
+ <label for="signals_csmm_double_optin" class="signals-strong pro-option"><?php _e( 'Double Opt-In', 'signals' ); ?><sup>PRO</sup></label>
80
+ <input type="checkbox" disabled="disabled" class="signals-form-ios pro-option skip-save" name="signals_csmm_double_optin" id="signals_csmm_double_optin" value="1" checked="checked">
81
+ <p class="signals-form-help-block"><?php _e( 'The double opt-in process includes two steps. First the potential subscriber fills out and submits your signup form. Then, they\'ll receive a confirmation email and click a link to verify their email, which is then added to your MailChimp list. To add subscribers to the list without requiring a confirmation email - disable the option. This is a <a href="#pro" class="csmm-change-tab">PRO feature</a>.', 'signals' ); ?></p>
 
82
  </div>
83
 
84
  </div>
framework/admin/views/settings-form.php CHANGED
@@ -31,11 +31,19 @@
31
  </div>
32
  </div>
33
 
 
34
  <div class="signals-form-group">
35
  <label for="signals_csmm_ignore_styles" class="signals-strong"><?php _e( 'Ignore Default Form Styles?', 'signals' ); ?></label>
36
  <input type="checkbox" class="signals-form-ios" name="signals_csmm_ignore_styles" id="signals_csmm_ignore_styles" value="1"<?php checked( '1', $signals_csmm_options['ignore_form_styles'] ); ?>>
37
 
38
  <p class="signals-form-help-block"><?php _e( 'Enable this option if you would like to use your custom form styles. The settings below will only be applicable when this option is turned on.', 'signals' ); ?></p>
 
 
 
 
 
 
 
39
  </div>
40
 
41
  <div class="signals-double-group signals-clearfix">
31
  </div>
32
  </div>
33
 
34
+ <div class="signals-double-group signals-clearfix">
35
  <div class="signals-form-group">
36
  <label for="signals_csmm_ignore_styles" class="signals-strong"><?php _e( 'Ignore Default Form Styles?', 'signals' ); ?></label>
37
  <input type="checkbox" class="signals-form-ios" name="signals_csmm_ignore_styles" id="signals_csmm_ignore_styles" value="1"<?php checked( '1', $signals_csmm_options['ignore_form_styles'] ); ?>>
38
 
39
  <p class="signals-form-help-block"><?php _e( 'Enable this option if you would like to use your custom form styles. The settings below will only be applicable when this option is turned on.', 'signals' ); ?></p>
40
+ </div>
41
+
42
+ <div class="signals-form-group">
43
+ <label for="signals_show_name" class="signals-strong pro-option">Show Name Field<sup>PRO</sup></label>
44
+ <input disabled="disabled" type="checkbox" class="signals-form-ios skip-save pro-option" name="signals_show_name" id="signals_show_name" value="1">
45
+ <p class="signals-form-help-block">It's preferable to ask for a name as it gives you the option to personalize communication later on. This is a <a href="#pro" class="csmm-change-tab">PRO feature</a>.</p>
46
+ </div>
47
  </div>
48
 
49
  <div class="signals-double-group signals-clearfix">
framework/admin/views/settings-pro.php ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="signals-tile" id="pro">
2
+ <div class="signals-tile-body">
3
+ <div class="signals-tile-title">Coming Soon &amp; Maintenance Mode PRO</div>
4
+ <p>PRO version of the plugin gives you acces tu numerous <a href="<?php echo csmm_generate_web_link('pro-header', '/features/'); ?>" target="_blank">advanced features</a> including best-in-class SEO options, gallery of 400,000+ images, 40+ themes, 10+ page modules, and refined access control options.</p>
5
+
6
+ <div class="signals-section-content">
7
+
8
+ <p style="text-align: center;"><b>Find out more about the PRO features on the plugin's site - <a href="<?php echo csmm_generate_web_link('find-out-more'); ?>" target="_blank">comingsoonwp.com</a></b></p>
9
+
10
+ <table id="features-table">
11
+ <tr>
12
+ <td>
13
+ <div class="home-box"><span>40+ Pixel Perfect Themes</span>
14
+ <p>Professional, easily editable <a href="#themes" class="csmm-change-tab">themes</a> that fit and adjust to any brand will enable you to build a page for your online or offline business in minutes. New themes are added weekly.</p>
15
+ </div>
16
+ </td>
17
+ <td>
18
+ <div class="home-box"><span>400,000+ Premium Hi-Resolution Images</span>
19
+ <p>Are you still googling for images? Good ones are costly, and others are low-res with watermarks? With our image library, the only thing you have to do is enter a search term and pick an image. Five seconds of work.</p>
20
+ </div>
21
+ </td>
22
+ <td>
23
+ <div class="home-box"><span>Advanced SEO Preview &amp; Analysis</span>
24
+ <p>Our SEO analytics tool provides actionable advice based on over 30 SEO signals analyzed on your page. With a bit of optimization, you'll be on the first position in search results in no time.</p>
25
+ </div>
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td>
30
+ <div class="home-box"><span>Drag &amp; Drop Builder that Doesn't Frustrate</span>
31
+ <p>Nobody has time to read a manual just to use a drag&amp;drop builder because it has 50% options that nobody needs. Our builder has only the options you need. It's fast and dead simple to use!</p>
32
+ </div>
33
+ </td>
34
+ <td>
35
+ <div class="home-box"><span>Advanced Access Rules</span>
36
+ <p>Want to show off the new website to a client? But you know they are not very "technical" and need a simple solution? Just send them a secret access link, and they can view the site while it's still in coming soon mode.</p>
37
+ </div>
38
+ </td>
39
+ <td>
40
+ <div class="home-box"><span>Connect any Email, CRM or Webinar System</span>
41
+ <p>Are you using a less popular email service provider, CRM or webinar platform that other plugins don't support? Well, we do support them! Our universal autoresponder system works with any 3rd party service.</p>
42
+ </div>
43
+ </td>
44
+ </tr>
45
+ </table>
46
+
47
+ <hr>
48
+
49
+ <table id="pricing-table">
50
+ <colgroup></colgroup>
51
+ <colgroup></colgroup>
52
+ <colgroup></colgroup>
53
+ <tbody>
54
+ <tr>
55
+ <td>
56
+ <h3>Lifetime<br>PRO License</h3>
57
+ <span>For single site owners who like paying only once</span>
58
+ </td>
59
+ <td>
60
+ <h3>Lifetime Unlimited<br>Agency License</h3>
61
+ <span>Best value for money</span>
62
+ </td>
63
+ <td>
64
+ <h3>Yearly<br>PRO License</h3>
65
+ <span>Pay only for the time you use the plugin</span>
66
+ </td>
67
+ </tr>
68
+ <tr>
69
+ <td>One Time Payment</td>
70
+ <td>One Time Payment</td>
71
+ <td>Yearly Payment</td>
72
+ </tr>
73
+ <tr>
74
+ <td>1 Personal or Client Site</td>
75
+ <td>Unlimited Client &amp; Personal Sites</td>
76
+ <td>1 Personal Site</td>
77
+ </tr>
78
+ <tr>
79
+ <td>Lifetime Support &amp; Updates</td>
80
+ <td>Lifetime Priority Support &amp; Updates</td>
81
+ <td>1 Year of Support &amp; Updates</td>
82
+ </tr>
83
+ <tr>
84
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
85
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
86
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
87
+ </tr>
88
+ <tr>
89
+ <td>400,000+ Hi-Resolution Images</td>
90
+ <td>400,000+ Hi-Resolution Images</td>
91
+ <td>400,000+ Hi-Resolution Images</td>
92
+ </tr>
93
+ <tr>
94
+ <td>20+ Templates</td>
95
+ <td>40+ Templates</td>
96
+ <td>20+ Templates</td>
97
+ </tr>
98
+ <tr>
99
+ <td>10+ Page Modules</td>
100
+ <td>10+ Page Modules</td>
101
+ <td>10+ Page Modules</td>
102
+ </tr>
103
+ <tr>
104
+ <td>All Current &amp; Future Features Included</td>
105
+ <td>All Current &amp; Future Features Included</td>
106
+ <td>All Current &amp; Future Features Included</td>
107
+ </tr>
108
+ <tr>
109
+ <td>
110
+ <a class="promo-button go-to-license-key" href="<?php echo csmm_generate_web_link('pricing-table-30-off', 'buy/', array('p' => 'pro-lifetime-welcome', 'r' => 'CSMM v' . csmm_get_plugin_version())); ?>" target="_blank">BUY NOW 30% OFF<br><del>$69</del> $48</a>
111
+ <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span> 100% No-Risk Money Back Guarantee</span>
112
+ </td>
113
+ <td>
114
+ <a class="promo-button go-to-license-key" href="<?php echo csmm_generate_web_link('pricing-table-30-off', 'buy/', array('p' => 'agency-lifetime-welcome', 'r' => 'CSMM v' . csmm_get_plugin_version())); ?>" target="_blank">BUY NOW 30% OFF<br><del>$199</del> $139</a>
115
+ <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span> 100% No-Risk Money Back Guarantee</span>
116
+ </td>
117
+ <td>
118
+ <a class="promo-button go-to-license-key" href="<?php echo csmm_generate_web_link('pricing-table', 'buy/', array('p' => 'pro-yearly', 'r' => 'CSMM v' . csmm_get_plugin_version())); ?>" target="_blank">BUY NOW<br>$19<small>/year</small></a>
119
+ <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span> 100% No-Risk Money Back Guarantee</span>
120
+ </td>
121
+ </tr>
122
+ </tbody>
123
+ </table>
124
+
125
+ <hr>
126
+
127
+ <div class="signals-double-group signals-clearfix">
128
+ <div class="signals-form-group">
129
+ <label for="signals_csmm_license_key" class="signals-strong"><?php _e( 'Activate Your PRO License', 'signals' ); ?></label>
130
+ <input type="text" name="license_key" id="signals_csmm_license_key" value="<?php echo esc_attr_e( stripslashes( $meta['license_key'] ) ); ?>" placeholder="License key, ie: 123456-123456-123456" class="signals-form-control">
131
+ <p class="signals-form-help-block">License key is located in the confirmation email you received after purchasing. In case of any problems, please contact <a href="#support" class="csmm-change-tab">support</a>. If you don't have a PRO license key - <a href="#pricing-table">get it now</a>.</p>
132
+
133
+ <?php
134
+ if (csmm_license::is_activated()) {
135
+ $plugin = plugin_basename(__FILE__);
136
+ $update_url = wp_nonce_url(admin_url('update.php?action=upgrade-plugin&amp;plugin=' . urlencode(CSMM_BASENAME)), 'upgrade-plugin_' . CSMM_BASENAME);
137
+ echo '<a href="' . $update_url . '" class="signals-btn signals-btn-red">Finish the upgrade process - update Coming Soon files to PRO</a>';
138
+ }
139
+ echo '<button style="margin-top: 10px;" type="submit" id="save-license" name="save-license" value="save-license" class="signals-btn">Save and Validate License Key</button>';
140
+ echo '<br><br>';
141
+
142
+ if (!empty($meta['license_key'])) {
143
+ if (csmm_license::is_activated()) {
144
+ if ($meta['license_expires'] == '2035-01-01') {
145
+ $valid = 'indefinitely';
146
+ } else {
147
+ $valid = 'until ' . date('F jS, Y', strtotime($meta['license_expires']));
148
+ if (date('Y-m-d') == $meta['license_expires']) {
149
+ $valid .= '; expires today';
150
+ } elseif (date('Y-m-d', time() + 30 * DAY_IN_SECONDS) > $meta['license_expires']) {
151
+ $tmp = (strtotime($meta['license_expires'] . date(' G:i:s')) - time()) / DAY_IN_SECONDS;
152
+ $valid .= '; expires in ' . round($tmp) . ' days';
153
+ }
154
+ }
155
+ echo 'License Status:
156
+ <b style="color: #66b317;">Active</b><br>
157
+ Type: ' . str_replace('pro', 'PRO', $meta['license_type']);
158
+ echo '<br>Valid ' . $valid . '';
159
+ } else {
160
+ echo 'License Status:
161
+ <b style="color: #ea1919;">Inactive</b>';
162
+ if (!empty($meta['license_type'])) {
163
+ echo '<br>Type: ' . $meta['license_type'];
164
+ }
165
+ if (!empty($meta['license_expires']) && $meta['license_expires'] != '1900-01-01' && $meta['license_expires'] != '1970-01-01') {
166
+ echo '<br>Expired on ' . date('F jS, Y', strtotime($meta['license_expires']));
167
+ }
168
+ }
169
+ }
170
+ ?>
171
+ </div>
172
+ </div>
173
+
174
+
175
+ </div>
176
+ </div>
177
+ </div><!-- #pro -->
framework/admin/views/settings-support.php CHANGED
@@ -25,20 +25,19 @@
25
  <p class="signals-form-help-block"><?php _e( 'You will receive support response on this email address.', 'signals' ); ?></p>
26
  </div>
27
 
28
- <div class="signals-form-group" style="border-bottom: none; padding-bottom: 0; display: none;">
29
  <label for="email_urgency" class="signals-strong"><?php _e( 'Priority', 'signals' ); ?></label>
30
- <select class="skip-save" id="email_urgency" name="email_urgency">
31
  <?php
32
  $email_options = array(
33
- array( 'val'=> 'low', 'label' => __('Low - this can really wait a day', 'signals' ) ),
34
- array( 'val'=> 'normal', 'label' => __('Normal', 'signals' ) ),
35
- array( 'val'=> 'urgent', 'label' => __('Urgent - my site is down', 'signals' ) ),
36
  );
37
-
38
- csmm_create_select_options($email_options, 'normal' ); ?>
39
  </select>
40
 
41
- <p class="signals-form-help-block"><?php _e( 'Choose the priority of your inquiry.', 'signals' ); ?></p>
42
  </div>
43
  </div>
44
 
25
  <p class="signals-form-help-block"><?php _e( 'You will receive support response on this email address.', 'signals' ); ?></p>
26
  </div>
27
 
28
+ <div class="signals-form-group" style="border-bottom: none; padding-bottom: 0;">
29
  <label for="email_urgency" class="signals-strong"><?php _e( 'Priority', 'signals' ); ?></label>
30
+ <select class="skip-save pro-option" id="email_urgency" name="email_urgency">
31
  <?php
32
  $email_options = array(
33
+ array( 'val'=> 'low', 'label' => __('Low', 'signals' ) ),
34
+ array( 'val'=> '-1', 'label' => __('Normal', 'signals' ) ),
35
+ array( 'val'=> '-1', 'label' => __('Urgent - my site is down', 'signals' ) ),
36
  );
37
+ csmm_create_select_options($email_options, 'low' ); ?>
 
38
  </select>
39
 
40
+ <p class="signals-form-help-block"><?php _e( 'We reply to all tickets as fast as possible. However, <a href="#pro" class="csmm-change-tab">PRO users</a> get to jump the queue.', 'signals' ); ?></p>
41
  </div>
42
  </div>
43
 
framework/admin/views/settings-themes.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
- $themes = array (
 
3
  0 =>
4
  array (
5
  'type' => 'CSMM PRO',
@@ -12,6 +13,28 @@ $themes = array (
12
  'name_clean' => 'aeroplane-company',
13
  ),
14
  1 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  array (
16
  'type' => 'CSMM PRO',
17
  'version' => '5.005',
@@ -22,7 +45,7 @@ $themes = array (
22
  'status' => 'agency',
23
  'name_clean' => 'bitcoin-miners',
24
  ),
25
- 2 =>
26
  array (
27
  'type' => 'CSMM PRO',
28
  'version' => '5.005',
@@ -33,7 +56,18 @@ $themes = array (
33
  'status' => 'agency',
34
  'name_clean' => 'blogging',
35
  ),
36
- 3 =>
 
 
 
 
 
 
 
 
 
 
 
37
  array (
38
  'type' => 'CSMM PRO',
39
  'version' => '5.001',
@@ -44,7 +78,7 @@ $themes = array (
44
  'status' => 'agency',
45
  'name_clean' => 'business-company',
46
  ),
47
- 4 =>
48
  array (
49
  'type' => 'CSMM PRO',
50
  'version' => '5.005',
@@ -55,7 +89,7 @@ $themes = array (
55
  'status' => 'agency',
56
  'name_clean' => 'coffee-shop',
57
  ),
58
- 5 =>
59
  array (
60
  'type' => 'CSMM PRO',
61
  'version' => '5.005',
@@ -66,18 +100,18 @@ $themes = array (
66
  'status' => 'pro',
67
  'name_clean' => 'default',
68
  ),
69
- 6 =>
70
  array (
71
  'type' => 'CSMM PRO',
72
- 'version' => '5.005',
73
- 'last_edit' => 'Sat, 24 Feb 2018 11:29:34 +0000',
74
  'name' => 'Dental Clinic',
75
  'description' => 'Andrea',
76
  'frontpage' => '1',
77
  'status' => 'agency',
78
  'name_clean' => 'dental-clinic',
79
  ),
80
- 7 =>
81
  array (
82
  'type' => 'CSMM PRO',
83
  'version' => '5.001',
@@ -88,18 +122,40 @@ $themes = array (
88
  'status' => 'agency',
89
  'name_clean' => 'dog-training-and-behavior-consulting',
90
  ),
91
- 8 =>
92
  array (
93
  'type' => 'CSMM PRO',
94
- 'version' => '5.0',
95
- 'last_edit' => 'Thu, 15 Feb 2018 12:49:10 +0000',
96
  'name' => 'Flower Shop',
97
- 'description' => 'Flower shop theme with a background image, video, progress bar and social module',
98
  'frontpage' => '1',
99
- 'status' => 'pro',
100
  'name_clean' => 'flower-shop',
101
  ),
102
- 9 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  array (
104
  'type' => 'CSMM PRO',
105
  'version' => '5.005',
@@ -110,7 +166,7 @@ $themes = array (
110
  'status' => 'pro',
111
  'name_clean' => 'lego-bricks',
112
  ),
113
- 10 =>
114
  array (
115
  'type' => 'CSMM PRO',
116
  'version' => '5.005',
@@ -121,7 +177,7 @@ $themes = array (
121
  'status' => 'agency',
122
  'name_clean' => 'lonely-road',
123
  ),
124
- 11 =>
125
  array (
126
  'type' => 'CSMM PRO',
127
  'version' => '5.001',
@@ -132,18 +188,18 @@ $themes = array (
132
  'status' => 'pro',
133
  'name_clean' => 'luxury-car',
134
  ),
135
- 12 =>
136
  array (
137
  'type' => 'CSMM PRO',
138
  'version' => '5.005',
139
- 'last_edit' => 'Mon, 26 Feb 2018 19:55:48 +0000',
140
  'name' => 'Maintenance Mode',
141
  'description' => 'Andrea',
142
  'frontpage' => '0',
143
  'status' => 'pro',
144
  'name_clean' => 'maintenance-mode',
145
  ),
146
- 13 =>
147
  array (
148
  'type' => 'CSMM PRO',
149
  'version' => '5.005',
@@ -154,7 +210,18 @@ $themes = array (
154
  'status' => 'agency',
155
  'name_clean' => 'makeup-artist-training',
156
  ),
157
- 14 =>
 
 
 
 
 
 
 
 
 
 
 
158
  array (
159
  'type' => 'CSMM PRO',
160
  'version' => '5.005',
@@ -165,7 +232,18 @@ $themes = array (
165
  'status' => 'pro',
166
  'name_clean' => 'modern-blog',
167
  ),
168
- 15 =>
 
 
 
 
 
 
 
 
 
 
 
169
  array (
170
  'type' => 'CSMM PRO',
171
  'version' => '5.001',
@@ -176,18 +254,40 @@ $themes = array (
176
  'status' => 'pro',
177
  'name_clean' => 'mountain-slide',
178
  ),
179
- 16 =>
180
  array (
181
  'type' => 'CSMM PRO',
182
- 'version' => '5.005',
183
- 'last_edit' => 'Fri, 23 Feb 2018 09:24:34 +0000',
184
- 'name' => 'Office Theme',
185
  'description' => 'Andrea',
186
- 'frontpage' => '1',
187
  'status' => 'pro',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  'name_clean' => 'office-theme',
189
  ),
190
- 17 =>
191
  array (
192
  'type' => 'CSMM PRO',
193
  'version' => '5.005',
@@ -198,7 +298,7 @@ $themes = array (
198
  'status' => 'agency',
199
  'name_clean' => 'online-learning',
200
  ),
201
- 18 =>
202
  array (
203
  'type' => 'CSMM PRO',
204
  'version' => '5.005',
@@ -209,7 +309,18 @@ $themes = array (
209
  'status' => 'pro',
210
  'name_clean' => 'pancake-house',
211
  ),
212
- 19 =>
 
 
 
 
 
 
 
 
 
 
 
213
  array (
214
  'type' => 'CSMM PRO',
215
  'version' => '5.001',
@@ -220,7 +331,7 @@ $themes = array (
220
  'status' => 'agency',
221
  'name_clean' => 'running-blog',
222
  ),
223
- 20 =>
224
  array (
225
  'type' => 'CSMM PRO',
226
  'version' => '5.005',
@@ -231,7 +342,18 @@ $themes = array (
231
  'status' => 'agency',
232
  'name_clean' => 'shoes-store',
233
  ),
234
- 21 =>
 
 
 
 
 
 
 
 
 
 
 
235
  array (
236
  'type' => 'CSMM PRO',
237
  'version' => '5.001',
@@ -242,7 +364,7 @@ $themes = array (
242
  'status' => 'pro',
243
  'name_clean' => 'snowboarding-blog',
244
  ),
245
- 22 =>
246
  array (
247
  'type' => 'CSMM PRO',
248
  'version' => '5.005',
@@ -253,7 +375,7 @@ $themes = array (
253
  'status' => 'agency',
254
  'name_clean' => 'the-big-city-newsletter',
255
  ),
256
- 23 =>
257
  array (
258
  'type' => 'CSMM PRO',
259
  'version' => '5.001',
@@ -264,7 +386,18 @@ $themes = array (
264
  'status' => 'pro',
265
  'name_clean' => 'travel-agency',
266
  ),
267
- 24 =>
 
 
 
 
 
 
 
 
 
 
 
268
  array (
269
  'type' => 'CSMM PRO',
270
  'version' => '5.001',
@@ -275,7 +408,7 @@ $themes = array (
275
  'status' => 'pro',
276
  'name_clean' => 'video-production',
277
  ),
278
- 25 =>
279
  array (
280
  'type' => 'CSMM PRO',
281
  'version' => '5.005',
@@ -286,7 +419,7 @@ $themes = array (
286
  'status' => 'agency',
287
  'name_clean' => 'webinar',
288
  ),
289
- 26 =>
290
  array (
291
  'type' => 'CSMM PRO',
292
  'version' => '5.005',
@@ -296,7 +429,18 @@ $themes = array (
296
  'frontpage' => '1',
297
  'status' => 'agency',
298
  'name_clean' => 'wedding-blog',
299
- )
 
 
 
 
 
 
 
 
 
 
 
300
  );
301
 
302
  array_unshift($themes, array('name' => 'Minimal', 'name_clean' => 'minimal', 'status' => 'free'));
@@ -306,22 +450,22 @@ array_unshift($themes, array('name' => 'Default', 'name_clean' => 'default', 'st
306
  <div class="signals-tile" id="themes">
307
  <div class="signals-tile-body">
308
  <div class="signals-tile-title">Themes</div>
309
- <p>TODO Once a theme is activated it can be fullly adjusted and modified. There are no "locked in" features. Please note that activating a theme overwrites all customizations done to the current design. Non-design settings such as access control are not affected.</p>
310
 
311
  <div class="signals-section-content">
312
  <?php
313
  foreach ($themes as $theme) {
314
  echo '<div class="theme-thumb" data-theme="' . $theme['name_clean'] . '">';
315
  if ($theme['status'] != 'free') {
316
- echo '<img src="' . CSMM_URL . '/framework/admin/img/themes/pro/' . $theme['name_clean'] . '.jpg" alt="' . $theme['name'] . '" title="' . $theme['name'] . '">';
317
  } else {
318
  echo '<img src="' . CSMM_URL . '/framework/admin/img/themes/' . $theme['name_clean'] . '.jpg" alt="' . $theme['name'] . '" title="' . $theme['name'] . '">';
319
  }
320
  echo '<span class="name">' . $theme['name'] . '</span>';
321
  echo '<span name="actions">';
322
  if ($theme['status'] != 'free') {
323
- echo '<a href="' . csmm_generate_web_link('get-theme-' . $theme['name_clean'], '/', array('coupon' => 'welcome')) . '" class="signals-btn" target="_blank">Get this theme</a>&nbsp; &nbsp;';
324
- echo '<a target="_blank" class="signals-btn signals-btn-secondary" href="' . csmm_generate_web_link('themes-preview-' . $theme['name_clean'], 'theme-preview', array('theme' => $theme['name_clean'])) . '">Preview</a>';
325
  } else {
326
  echo '<a href="' . add_query_arg(array('action' => 'csmm_activate_theme', 'theme' => $theme['name_clean'], 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php')) . '" class="signals-btn confirm-action" data-confirm="Are you sure you want to activate the selected theme? Customizations you made on the current design will be lost.">Activate</a>&nbsp; &nbsp;';
327
  }
@@ -330,7 +474,6 @@ array_unshift($themes, array('name' => 'Default', 'name_clean' => 'default', 'st
330
  echo '<div class="ribbon"><i>PRO</i></div>';
331
  }
332
  echo '</div>';
333
-
334
  } // foreach theme
335
  ?>
336
  </div>
1
  <?php
2
+ $themes =
3
+ array (
4
  0 =>
5
  array (
6
  'type' => 'CSMM PRO',
13
  'name_clean' => 'aeroplane-company',
14
  ),
15
  1 =>
16
+ array (
17
+ 'type' => 'CSMM PRO',
18
+ 'version' => '15.05',
19
+ 'last_edit' => 'Fri, 02 Mar 2018 12:43:04 +0000',
20
+ 'name' => 'Animated Clock',
21
+ 'description' => 'Andrea',
22
+ 'frontpage' => '0',
23
+ 'status' => 'pro',
24
+ 'name_clean' => 'animated-clock',
25
+ ),
26
+ 2 =>
27
+ array (
28
+ 'type' => 'CSMM PRO',
29
+ 'version' => '5.05',
30
+ 'last_edit' => 'Wed, 28 Feb 2018 10:30:46 +0000',
31
+ 'name' => 'Bicycle Race',
32
+ 'description' => 'Andrea',
33
+ 'frontpage' => '0',
34
+ 'status' => 'agency',
35
+ 'name_clean' => 'bicycle-race',
36
+ ),
37
+ 3 =>
38
  array (
39
  'type' => 'CSMM PRO',
40
  'version' => '5.005',
45
  'status' => 'agency',
46
  'name_clean' => 'bitcoin-miners',
47
  ),
48
+ 4 =>
49
  array (
50
  'type' => 'CSMM PRO',
51
  'version' => '5.005',
56
  'status' => 'agency',
57
  'name_clean' => 'blogging',
58
  ),
59
+ 5 =>
60
+ array (
61
+ 'type' => 'CSMM PRO',
62
+ 'version' => '5.005',
63
+ 'last_edit' => 'Tue, 27 Feb 2018 09:56:05 +0000',
64
+ 'name' => 'Book Lovers',
65
+ 'description' => 'Andrea',
66
+ 'frontpage' => '1',
67
+ 'status' => 'agency',
68
+ 'name_clean' => 'book-lovers',
69
+ ),
70
+ 6 =>
71
  array (
72
  'type' => 'CSMM PRO',
73
  'version' => '5.001',
78
  'status' => 'agency',
79
  'name_clean' => 'business-company',
80
  ),
81
+ 7 =>
82
  array (
83
  'type' => 'CSMM PRO',
84
  'version' => '5.005',
89
  'status' => 'agency',
90
  'name_clean' => 'coffee-shop',
91
  ),
92
+ 8 =>
93
  array (
94
  'type' => 'CSMM PRO',
95
  'version' => '5.005',
100
  'status' => 'pro',
101
  'name_clean' => 'default',
102
  ),
103
+ 9 =>
104
  array (
105
  'type' => 'CSMM PRO',
106
+ 'version' => '15.05',
107
+ 'last_edit' => 'Fri, 02 Mar 2018 13:12:54 +0000',
108
  'name' => 'Dental Clinic',
109
  'description' => 'Andrea',
110
  'frontpage' => '1',
111
  'status' => 'agency',
112
  'name_clean' => 'dental-clinic',
113
  ),
114
+ 10 =>
115
  array (
116
  'type' => 'CSMM PRO',
117
  'version' => '5.001',
122
  'status' => 'agency',
123
  'name_clean' => 'dog-training-and-behavior-consulting',
124
  ),
125
+ 11 =>
126
  array (
127
  'type' => 'CSMM PRO',
128
+ 'version' => '15.05',
129
+ 'last_edit' => 'Fri, 02 Mar 2018 12:33:55 +0000',
130
  'name' => 'Flower Shop',
131
+ 'description' => '',
132
  'frontpage' => '1',
133
+ 'status' => 'agency',
134
  'name_clean' => 'flower-shop',
135
  ),
136
+ 12 =>
137
+ array (
138
+ 'type' => 'CSMM PRO',
139
+ 'version' => '5.05',
140
+ 'last_edit' => 'Wed, 28 Feb 2018 11:20:03 +0000',
141
+ 'name' => 'Homemade Chocolate Gifts',
142
+ 'description' => 'Andrea',
143
+ 'frontpage' => '0',
144
+ 'status' => 'pro',
145
+ 'name_clean' => 'homemade-chocolate-gifts',
146
+ ),
147
+ 13 =>
148
+ array (
149
+ 'type' => 'CSMM PRO',
150
+ 'version' => '15.05',
151
+ 'last_edit' => 'Fri, 02 Mar 2018 12:59:44 +0000',
152
+ 'name' => 'Interior Design',
153
+ 'description' => 'Andrea',
154
+ 'frontpage' => '1',
155
+ 'status' => 'agency',
156
+ 'name_clean' => 'interior-design',
157
+ ),
158
+ 14 =>
159
  array (
160
  'type' => 'CSMM PRO',
161
  'version' => '5.005',
166
  'status' => 'pro',
167
  'name_clean' => 'lego-bricks',
168
  ),
169
+ 15 =>
170
  array (
171
  'type' => 'CSMM PRO',
172
  'version' => '5.005',
177
  'status' => 'agency',
178
  'name_clean' => 'lonely-road',
179
  ),
180
+ 16 =>
181
  array (
182
  'type' => 'CSMM PRO',
183
  'version' => '5.001',
188
  'status' => 'pro',
189
  'name_clean' => 'luxury-car',
190
  ),
191
+ 17 =>
192
  array (
193
  'type' => 'CSMM PRO',
194
  'version' => '5.005',
195
+ 'last_edit' => 'Mon, 26 Feb 2018 18:31:18 +0000',
196
  'name' => 'Maintenance Mode',
197
  'description' => 'Andrea',
198
  'frontpage' => '0',
199
  'status' => 'pro',
200
  'name_clean' => 'maintenance-mode',
201
  ),
202
+ 18 =>
203
  array (
204
  'type' => 'CSMM PRO',
205
  'version' => '5.005',
210
  'status' => 'agency',
211
  'name_clean' => 'makeup-artist-training',
212
  ),
213
+ 19 =>
214
+ array (
215
+ 'type' => 'CSMM PRO',
216
+ 'version' => '15.05',
217
+ 'last_edit' => 'Fri, 02 Mar 2018 11:54:45 +0000',
218
+ 'name' => 'Mobile Designer',
219
+ 'description' => 'Andrea',
220
+ 'frontpage' => '0',
221
+ 'status' => 'agency',
222
+ 'name_clean' => 'mobile-designer',
223
+ ),
224
+ 20 =>
225
  array (
226
  'type' => 'CSMM PRO',
227
  'version' => '5.005',
232
  'status' => 'pro',
233
  'name_clean' => 'modern-blog',
234
  ),
235
+ 21 =>
236
+ array (
237
+ 'type' => 'CSMM PRO',
238
+ 'version' => '15.05',
239
+ 'last_edit' => 'Fri, 02 Mar 2018 10:14:21 +0000',
240
+ 'name' => 'Modern Office',
241
+ 'description' => 'Andrea',
242
+ 'frontpage' => '0',
243
+ 'status' => 'agency',
244
+ 'name_clean' => 'modern-office',
245
+ ),
246
+ 22 =>
247
  array (
248
  'type' => 'CSMM PRO',
249
  'version' => '5.001',
254
  'status' => 'pro',
255
  'name_clean' => 'mountain-slide',
256
  ),
257
+ 23 =>
258
  array (
259
  'type' => 'CSMM PRO',
260
+ 'version' => '5.05',
261
+ 'last_edit' => 'Thu, 01 Mar 2018 10:49:52 +0000',
262
+ 'name' => 'Mountain',
263
  'description' => 'Andrea',
264
+ 'frontpage' => '0',
265
  'status' => 'pro',
266
+ 'name_clean' => 'mountain',
267
+ ),
268
+ 24 =>
269
+ array (
270
+ 'type' => 'CSMM PRO',
271
+ 'version' => '15.05',
272
+ 'last_edit' => 'Fri, 02 Mar 2018 10:17:02 +0000',
273
+ 'name' => 'Nature',
274
+ 'description' => 'Andrea',
275
+ 'frontpage' => '0',
276
+ 'status' => 'agency',
277
+ 'name_clean' => 'nature',
278
+ ),
279
+ 25 =>
280
+ array (
281
+ 'type' => 'CSMM PRO',
282
+ 'version' => '15.05',
283
+ 'last_edit' => 'Fri, 02 Mar 2018 12:35:44 +0000',
284
+ 'name' => 'Office Theme',
285
+ 'description' => '',
286
+ 'frontpage' => '1',
287
+ 'status' => 'agency',
288
  'name_clean' => 'office-theme',
289
  ),
290
+ 26 =>
291
  array (
292
  'type' => 'CSMM PRO',
293
  'version' => '5.005',
298
  'status' => 'agency',
299
  'name_clean' => 'online-learning',
300
  ),
301
+ 27 =>
302
  array (
303
  'type' => 'CSMM PRO',
304
  'version' => '5.005',
309
  'status' => 'pro',
310
  'name_clean' => 'pancake-house',
311
  ),
312
+ 28 =>
313
+ array (
314
+ 'type' => 'CSMM PRO',
315
+ 'version' => '5.05',
316
+ 'last_edit' => 'Wed, 28 Feb 2018 10:03:34 +0000',
317
+ 'name' => 'Parenting',
318
+ 'description' => 'Andrea',
319
+ 'frontpage' => '0',
320
+ 'status' => 'pro',
321
+ 'name_clean' => 'parenting',
322
+ ),
323
+ 29 =>
324
  array (
325
  'type' => 'CSMM PRO',
326
  'version' => '5.001',
331
  'status' => 'agency',
332
  'name_clean' => 'running-blog',
333
  ),
334
+ 30 =>
335
  array (
336
  'type' => 'CSMM PRO',
337
  'version' => '5.005',
342
  'status' => 'agency',
343
  'name_clean' => 'shoes-store',
344
  ),
345
+ 31 =>
346
+ array (
347
+ 'type' => 'CSMM PRO',
348
+ 'version' => '5.05',
349
+ 'last_edit' => 'Thu, 01 Mar 2018 11:33:14 +0000',
350
+ 'name' => 'Simple Beige Design',
351
+ 'description' => 'Andrea',
352
+ 'frontpage' => '0',
353
+ 'status' => 'pro',
354
+ 'name_clean' => 'simple-beige-design',
355
+ ),
356
+ 32 =>
357
  array (
358
  'type' => 'CSMM PRO',
359
  'version' => '5.001',
364
  'status' => 'pro',
365
  'name_clean' => 'snowboarding-blog',
366
  ),
367
+ 33 =>
368
  array (
369
  'type' => 'CSMM PRO',
370
  'version' => '5.005',
375
  'status' => 'agency',
376
  'name_clean' => 'the-big-city-newsletter',
377
  ),
378
+ 34 =>
379
  array (
380
  'type' => 'CSMM PRO',
381
  'version' => '5.001',
386
  'status' => 'pro',
387
  'name_clean' => 'travel-agency',
388
  ),
389
+ 35 =>
390
+ array (
391
+ 'type' => 'CSMM PRO',
392
+ 'version' => '15.05',
393
+ 'last_edit' => 'Fri, 02 Mar 2018 12:39:22 +0000',
394
+ 'name' => 'Travel Blog',
395
+ 'description' => 'Andrea',
396
+ 'frontpage' => '1',
397
+ 'status' => 'agency',
398
+ 'name_clean' => 'travel-blog',
399
+ ),
400
+ 36 =>
401
  array (
402
  'type' => 'CSMM PRO',
403
  'version' => '5.001',
408
  'status' => 'pro',
409
  'name_clean' => 'video-production',
410
  ),
411
+ 37 =>
412
  array (
413
  'type' => 'CSMM PRO',
414
  'version' => '5.005',
419
  'status' => 'agency',
420
  'name_clean' => 'webinar',
421
  ),
422
+ 38 =>
423
  array (
424
  'type' => 'CSMM PRO',
425
  'version' => '5.005',
429
  'frontpage' => '1',
430
  'status' => 'agency',
431
  'name_clean' => 'wedding-blog',
432
+ ),
433
+ 39 =>
434
+ array (
435
+ 'type' => 'CSMM PRO',
436
+ 'version' => '15.05',
437
+ 'last_edit' => 'Fri, 02 Mar 2018 12:36:42 +0000',
438
+ 'name' => 'Workplace',
439
+ 'description' => 'Andrea',
440
+ 'frontpage' => '1',
441
+ 'status' => 'agency',
442
+ 'name_clean' => 'workplace',
443
+ ),
444
  );
445
 
446
  array_unshift($themes, array('name' => 'Minimal', 'name_clean' => 'minimal', 'status' => 'free'));
450
  <div class="signals-tile" id="themes">
451
  <div class="signals-tile-body">
452
  <div class="signals-tile-title">Themes</div>
453
+ <p>Once a theme is activated it can be fullly adjusted and modified. There are no "locked in" features. Please note that activating a theme overwrites all customizations done to the current design. Non-design settings such as access control are not affected.</p>
454
 
455
  <div class="signals-section-content">
456
  <?php
457
  foreach ($themes as $theme) {
458
  echo '<div class="theme-thumb" data-theme="' . $theme['name_clean'] . '">';
459
  if ($theme['status'] != 'free') {
460
+ echo '<a href="' . csmm_generate_web_link('preview-theme-thumb-' . $theme['name_clean'], 'theme-preview', array('theme' => $theme['name_clean'])) . '" target="_blank"><img src="' . CSMM_URL . '/framework/admin/img/themes/pro/' . $theme['name_clean'] . '.jpg" alt="Preview ' . $theme['name'] . '" title="Preview ' . $theme['name'] . '"></a>';
461
  } else {
462
  echo '<img src="' . CSMM_URL . '/framework/admin/img/themes/' . $theme['name_clean'] . '.jpg" alt="' . $theme['name'] . '" title="' . $theme['name'] . '">';
463
  }
464
  echo '<span class="name">' . $theme['name'] . '</span>';
465
  echo '<span name="actions">';
466
  if ($theme['status'] != 'free') {
467
+ echo '<a href="#pro" class="signals-btn csmm-change-tab">Get this theme</a>&nbsp; &nbsp;';
468
+ echo '<a target="_blank" class="signals-btn signals-btn-secondary" href="' . csmm_generate_web_link('preview-theme-' . $theme['name_clean'], 'theme-preview', array('theme' => $theme['name_clean'])) . '">Preview</a>';
469
  } else {
470
  echo '<a href="' . add_query_arg(array('action' => 'csmm_activate_theme', 'theme' => $theme['name_clean'], 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php')) . '" class="signals-btn confirm-action" data-confirm="Are you sure you want to activate the selected theme? Customizations you made on the current design will be lost.">Activate</a>&nbsp; &nbsp;';
471
  }
474
  echo '<div class="ribbon"><i>PRO</i></div>';
475
  }
476
  echo '</div>';
 
477
  } // foreach theme
478
  ?>
479
  </div>
framework/admin/views/settings.php CHANGED
@@ -30,7 +30,7 @@ require_once 'header.php';
30
  if (!empty($current_user->user_firstname)) {
31
  $name = ' ' . $current_user->user_firstname;
32
  }
33
- $meta = get_option('signals_csmm_meta', false);
34
 
35
  if (!get_transient('csmm_rate_hide')
36
  && (time() - $meta['first_install_gmt']) > (DAY_IN_SECONDS / 2)) {
@@ -56,7 +56,8 @@ require_once 'header.php';
56
  <li><a href="#design"><?php _e( 'Design', 'signals' ); ?></a></li>
57
  <li><a href="#form"><?php _e( 'Form', 'signals' ); ?></a></li>
58
  <li><a href="#advanced"><?php _e( 'Advanced', 'signals' ); ?></a></li>
59
- <li><a href="#support"><?php _e( 'Support', 'signals' ); ?></a></li>
 
60
  </ul>
61
  </div><!-- .signals-float-left -->
62
 
@@ -70,7 +71,8 @@ require_once 'header.php';
70
  require_once 'settings-design.php';
71
  require_once 'settings-form.php';
72
  require_once 'settings-advanced.php';
73
- require_once 'settings-support.php';
 
74
  ?>
75
  </div><!-- .signals-float-right -->
76
 
30
  if (!empty($current_user->user_firstname)) {
31
  $name = ' ' . $current_user->user_firstname;
32
  }
33
+ $meta = csmm_get_meta();
34
 
35
  if (!get_transient('csmm_rate_hide')
36
  && (time() - $meta['first_install_gmt']) > (DAY_IN_SECONDS / 2)) {
56
  <li><a href="#design"><?php _e( 'Design', 'signals' ); ?></a></li>
57
  <li><a href="#form"><?php _e( 'Form', 'signals' ); ?></a></li>
58
  <li><a href="#advanced"><?php _e( 'Advanced', 'signals' ); ?></a></li>
59
+ <li><a href="#support"><?php _e( 'Support', 'signals' ); ?></a></li>
60
+ <li><a style="color: #fe2929;" href="#pro"><b><?php _e( 'PRO', 'signals' ); ?></b></a></li>
61
  </ul>
62
  </div><!-- .signals-float-left -->
63
 
71
  require_once 'settings-design.php';
72
  require_once 'settings-form.php';
73
  require_once 'settings-advanced.php';
74
+ require_once 'settings-support.php';
75
+ require_once 'settings-pro.php';
76
  ?>
77
  </div><!-- .signals-float-right -->
78
 
framework/init.php CHANGED
@@ -111,9 +111,11 @@ class CSMM {
111
  } // class csmm
112
 
113
  add_action('init', array('CSMM', 'init'));
 
114
 
115
 
116
- // helper function to generate tagged buy links
 
117
  function csmm_generate_web_link($placement = '', $page = '/', $params = array(), $anchor = '') {
118
  $base_url = 'https://comingsoonwp.com';
119
 
111
  } // class csmm
112
 
113
  add_action('init', array('CSMM', 'init'));
114
+ add_action('init', array('csmm_license', 'init'));
115
 
116
 
117
+
118
+ // helper function to generate tagged buy links
119
  function csmm_generate_web_link($placement = '', $page = '/', $params = array(), $anchor = '') {
120
  $base_url = 'https://comingsoonwp.com';
121
 
framework/public/init.php CHANGED
@@ -34,7 +34,7 @@ function csmm_plugin_init() {
34
 
35
 
36
  // Checking for the server protocol status
37
- if ( isset( $_SERVER['HTTPS'] ) === true ) {
38
  $signals_protocol = 'https';
39
  } else {
40
  $signals_protocol = 'http';
@@ -42,7 +42,7 @@ function csmm_plugin_init() {
42
 
43
 
44
  // This is the server address of the current page
45
- $signals_server_url = $signals_protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
46
 
47
 
48
  // Checking for the custom_login_url value
34
 
35
 
36
  // Checking for the server protocol status
37
+ if ( isset($_SERVER['HTTPS']) === true ) {
38
  $signals_protocol = 'https';
39
  } else {
40
  $signals_protocol = 'http';
42
 
43
 
44
  // This is the server address of the current page
45
+ @$signals_server_url = $signals_protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
46
 
47
 
48
  // Checking for the custom_login_url value
framework/public/views/html.php CHANGED
@@ -34,15 +34,15 @@
34
  <?php
35
 
36
  // analytics
37
- if (csmm_convert_ga($options['analytics'])) {
38
- echo '<!-- Global site tag (gtag.js) - Google Analytics -->
39
- <script async src="https://www.googletagmanager.com/gtag/js?id=' . csmm_convert_ga($options['analytics']) . '"></script>
40
- <script>
41
- window.dataLayer = window.dataLayer || [];
42
- function gtag(){dataLayer.push(arguments);}
43
- gtag(\'js\', new Date());
44
- gtag(\'config\', \'' . csmm_convert_ga($options['analytics']) . '\');
45
- </script>' . "\r\n";
46
  }
47
  ?>
48
  </head>
@@ -78,7 +78,7 @@ if (csmm_convert_ga($options['analytics'])) {
78
 
79
  if ( '' === $signals_email ) {
80
  $code = 'danger';
81
- $response = __( 'Please provide your email address.', 'signals' );
82
  } else {
83
  $signals_email = filter_var( strtolower( trim( $signals_email ) ), FILTER_SANITIZE_EMAIL );
84
 
34
  <?php
35
 
36
  // analytics
37
+ if (csmm_convert_ga($options['analytics'])) {
38
+ echo "<script>
39
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
40
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
41
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
42
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
43
+ ga('create', '" . csmm_convert_ga($options['analytics']) . "', 'auto');
44
+ ga('send', 'pageview');
45
+ </script>";
46
  }
47
  ?>
48
  </head>
78
 
79
  if ( '' === $signals_email ) {
80
  $code = 'danger';
81
+ $response = $options['message_noemail'];
82
  } else {
83
  $signals_email = filter_var( strtolower( trim( $signals_email ) ), FILTER_SANITIZE_EMAIL );
84
 
minimal-coming-soon-maintenance-mode.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Minimal Coming Soon & Maintenance Mode
4
  * Plugin URI: https://wordpress.org/plugins/minimal-coming-soon-maintenance-mode/
5
  * Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
6
- * Version: 1.55
7
  * Author: WebFactory
8
  * Author URI: https://www.webfactoryltd.com
9
  * License: GPLv3
@@ -52,7 +52,7 @@ function csmm_default_options() {
52
  'header_text' => 'Our site is coming soon',
53
  'secondary_text' => 'We are doing some maintenance on our site. It won\'t take long, we promise. Come back and visit us again in a few days. Thank you for your patience!',
54
  'antispam_text' => 'And yes, we hate spam too!',
55
- 'custom_login_url' => '',
56
  'show_logged_in' => '1',
57
  'exclude_se' => '1',
58
  'arrange' => 'logo,header,secondary,form,html',
@@ -119,6 +119,19 @@ function csmm_get_options() {
119
  } // csmm_get_options
120
 
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  /**
123
  * For the plugin activation & de-activation.
124
  * We are doing nothing over here.
@@ -177,6 +190,7 @@ function csmm_plugin_page() {
177
  */
178
 
179
  require CSMM_PATH . 'framework/init.php';
 
180
 
181
  if (is_admin()) {
182
  require CSMM_PATH . 'framework/admin/init.php';
3
  * Plugin Name: Minimal Coming Soon & Maintenance Mode
4
  * Plugin URI: https://wordpress.org/plugins/minimal-coming-soon-maintenance-mode/
5
  * Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
6
+ * Version: 1.60
7
  * Author: WebFactory
8
  * Author URI: https://www.webfactoryltd.com
9
  * License: GPLv3
52
  'header_text' => 'Our site is coming soon',
53
  'secondary_text' => 'We are doing some maintenance on our site. It won\'t take long, we promise. Come back and visit us again in a few days. Thank you for your patience!',
54
  'antispam_text' => 'And yes, we hate spam too!',
55
+ 'custom_login_url' => '/login/',
56
  'show_logged_in' => '1',
57
  'exclude_se' => '1',
58
  'arrange' => 'logo,header,secondary,form,html',
119
  } // csmm_get_options
120
 
121
 
122
+ function csmm_get_meta() {
123
+ $default['license_type'] = '';
124
+ $default['license_expires'] = '';
125
+ $default['license_active'] = false;
126
+ $default['license_key'] = '';
127
+
128
+ $meta = get_option('signals_csmm_meta', array());
129
+ $meta = array_merge($default, $meta);
130
+
131
+ return $meta;
132
+ } // csmm_get_options
133
+
134
+
135
  /**
136
  * For the plugin activation & de-activation.
137
  * We are doing nothing over here.
190
  */
191
 
192
  require CSMM_PATH . 'framework/init.php';
193
+ require CSMM_PATH . 'framework/admin/license.php';
194
 
195
  if (is_admin()) {
196
  require CSMM_PATH . 'framework/admin/init.php';
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: coming soon, coming soon page, launch page, maintenance mode, mailchimp, c
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
  Tested up to: 4.9
7
- Stable tag: 1.55
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -67,15 +67,22 @@ Yes and no. When activated it enables itself across the entire WP-MU network.
67
 
68
  == Screenshots ==
69
 
70
- 1. Simple maintenance page
71
- 2. Coming soon page
72
- 3. Fully responsive design
73
- 4. Mobile optimized admin panel of the plugin
74
- 5. Get support from within the plugin
 
75
 
76
 
77
  == Changelog ==
78
 
 
 
 
 
 
 
79
  = 1.55 =
80
  * 2018-02-27
81
  * added preview to admin bar status/menu
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
  Tested up to: 4.9
7
+ Stable tag: 1.60
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
67
 
68
  == Screenshots ==
69
 
70
+ 1. Fast & intuitive interface lets you create coming soon pages in minutes
71
+ 2. Simple maintenance page
72
+ 3. Coming soon page
73
+ 4. Fully responsive design
74
+ 5. Mobile optimized admin panel
75
+ 6. Get support from within the plugin
76
 
77
 
78
  == Changelog ==
79
 
80
+ = 1.60 =
81
+ * 2018-03-06
82
+ * minor improvements
83
+ * bug fixes
84
+ * pro activation from plugin
85
+
86
  = 1.55 =
87
  * 2018-02-27
88
  * added preview to admin bar status/menu