Minimal Coming Soon & Maintenance Mode - Version 2.18

Version Description

  • 2020-08-20
  • bug fixes
Download this release

Release Info

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

Code changes from version 2.17 to 2.18

Files changed (185) hide show
  1. framework/admin/css/admin.css +969 -92
  2. framework/admin/css/sweetalert2.min.css +6 -0
  3. framework/admin/img/anim_logo.gif +0 -0
  4. framework/admin/img/themes/pro/aeroplane-company.jpg +0 -0
  5. framework/admin/img/themes/pro/air-balloon.jpg +0 -0
  6. framework/admin/img/themes/pro/animated-clock.jpg +0 -0
  7. framework/admin/img/themes/pro/architecture-inc.jpg +0 -0
  8. framework/admin/img/themes/pro/architecture.jpg +0 -0
  9. framework/admin/img/themes/pro/art-gallery.jpg +0 -0
  10. framework/admin/img/themes/pro/auto-service.jpg +0 -0
  11. framework/admin/img/themes/pro/bakery.jpg +0 -0
  12. framework/admin/img/themes/pro/banking-app.jpg +0 -0
  13. framework/admin/img/themes/pro/beach.jpg +0 -0
  14. framework/admin/img/themes/pro/bicycle-race.jpg +0 -0
  15. framework/admin/img/themes/pro/bike-shop.jpg +0 -0
  16. framework/admin/img/themes/pro/bitcoin-miners.jpg +0 -0
  17. framework/admin/img/themes/pro/black-friday.jpg +0 -0
  18. framework/admin/img/themes/pro/blogging.jpg +0 -0
  19. framework/admin/img/themes/pro/blue-ocean.jpg +0 -0
  20. framework/admin/img/themes/pro/body-transformation.jpg +0 -0
  21. framework/admin/img/themes/pro/bodybuilding.jpg +0 -0
  22. framework/admin/img/themes/pro/book-lovers.jpg +0 -0
  23. framework/admin/img/themes/pro/business-company.jpg +0 -0
  24. framework/admin/img/themes/pro/business-consulting-video.jpg +0 -0
  25. framework/admin/img/themes/pro/business-consulting.jpg +0 -0
  26. framework/admin/img/themes/pro/business-launch.jpg +0 -0
  27. framework/admin/img/themes/pro/business-meeting-video.jpg +0 -0
  28. framework/admin/img/themes/pro/business.jpg +0 -0
  29. framework/admin/img/themes/pro/cafe.jpg +0 -0
  30. framework/admin/img/themes/pro/chatbot.jpg +0 -0
  31. framework/admin/img/themes/pro/christmas-decor.jpg +0 -0
  32. framework/admin/img/themes/pro/church.jpg +0 -0
  33. framework/admin/img/themes/pro/city-nighttime.jpg +0 -0
  34. framework/admin/img/themes/pro/cityscape.jpg +0 -0
  35. framework/admin/img/themes/pro/clothing-trends.jpg +0 -0
  36. framework/admin/img/themes/pro/clouds-screensaver-video.jpg +0 -0
  37. framework/admin/img/themes/pro/coffee-shop.jpg +0 -0
  38. framework/admin/img/themes/pro/cold-lake.jpg +0 -0
  39. framework/admin/img/themes/pro/computer-repair-service.jpg +0 -0
  40. framework/admin/img/themes/pro/concert.jpg +0 -0
  41. framework/admin/img/themes/pro/conference-event.jpg +0 -0
  42. framework/admin/img/themes/pro/construction-company.jpg +0 -0
  43. framework/admin/img/themes/pro/creative-design.jpg +0 -0
  44. framework/admin/img/themes/pro/custom-decor.jpg +0 -0
  45. framework/admin/img/themes/pro/cyber-security.jpg +0 -0
  46. framework/admin/img/themes/pro/default.jpg +0 -0
  47. framework/admin/img/themes/pro/dental-clinic.jpg +0 -0
  48. framework/admin/img/themes/pro/digital-agency.jpg +0 -0
  49. framework/admin/img/themes/pro/dog-shelter.jpg +0 -0
  50. framework/admin/img/themes/pro/dog-training-and-behavior-consulting.jpg +0 -0
  51. framework/admin/img/themes/pro/donation.jpg +0 -0
  52. framework/admin/img/themes/pro/ecommerce.jpg +0 -0
  53. framework/admin/img/themes/pro/employment.jpg +0 -0
  54. framework/admin/img/themes/pro/essay-writing-service.jpg +0 -0
  55. framework/admin/img/themes/pro/fall-video.jpg +0 -0
  56. framework/admin/img/themes/pro/fashion.jpg +0 -0
  57. framework/admin/img/themes/pro/financial-counselling.jpg +0 -0
  58. framework/admin/img/themes/pro/financial-district.jpg +0 -0
  59. framework/admin/img/themes/pro/fitness-e-shop.jpg +0 -0
  60. framework/admin/img/themes/pro/florium.jpg +0 -0
  61. framework/admin/img/themes/pro/flower-shop.jpg +0 -0
  62. framework/admin/img/themes/pro/food-blog.jpg +0 -0
  63. framework/admin/img/themes/pro/food-store.jpg +0 -0
  64. framework/admin/img/themes/pro/foodie.jpg +0 -0
  65. framework/admin/img/themes/pro/football.jpg +0 -0
  66. framework/admin/img/themes/pro/frozen-nature.jpg +0 -0
  67. framework/admin/img/themes/pro/future-technology.jpg +0 -0
  68. framework/admin/img/themes/pro/graphic-design.jpg +0 -0
  69. framework/admin/img/themes/pro/greenlife.jpg +0 -0
  70. framework/admin/img/themes/pro/halloween.jpg +0 -0
  71. framework/admin/img/themes/pro/healthy-eating.jpg +0 -0
  72. framework/admin/img/themes/pro/hexagons-video.jpg +0 -0
  73. framework/admin/img/themes/pro/holiday-resort.jpg +0 -0
  74. framework/admin/img/themes/pro/home-design.jpg +0 -0
  75. framework/admin/img/themes/pro/homemade-chocolate-gifts.jpg +0 -0
  76. framework/admin/img/themes/pro/hosting.jpg +0 -0
  77. framework/admin/img/themes/pro/ice-cream-shop.jpg +0 -0
  78. framework/admin/img/themes/pro/in-design.jpg +0 -0
  79. framework/admin/img/themes/pro/inspy-romance.jpg +0 -0
  80. framework/admin/img/themes/pro/interior-design.jpg +0 -0
  81. framework/admin/img/themes/pro/it-conference.jpg +0 -0
  82. framework/admin/img/themes/pro/journey-video.jpg +0 -0
  83. framework/admin/img/themes/pro/keyword-research.jpg +0 -0
  84. framework/admin/img/themes/pro/kids-center.jpg +0 -0
  85. framework/admin/img/themes/pro/kids-innovation-program.jpg +0 -0
  86. framework/admin/img/themes/pro/ladies-accessories.jpg +0 -0
  87. framework/admin/img/themes/pro/lego-bricks.jpg +0 -0
  88. framework/admin/img/themes/pro/loneliness.jpg +0 -0
  89. framework/admin/img/themes/pro/lonely-road.jpg +0 -0
  90. framework/admin/img/themes/pro/luxury-car.jpg +0 -0
  91. framework/admin/img/themes/pro/maintenance-mode.jpg +0 -0
  92. framework/admin/img/themes/pro/makeup-artist-training.jpg +0 -0
  93. framework/admin/img/themes/pro/marketing-webinar.jpg +0 -0
  94. framework/admin/img/themes/pro/metrics-video.jpg +0 -0
  95. framework/admin/img/themes/pro/misty-forest-video.jpg +0 -0
  96. framework/admin/img/themes/pro/mobile-app.jpg +0 -0
  97. framework/admin/img/themes/pro/mobile-designer.jpg +0 -0
  98. framework/admin/img/themes/pro/mobile-meeting.jpg +0 -0
  99. framework/admin/img/themes/pro/modern-blog.jpg +0 -0
  100. framework/admin/img/themes/pro/modern-office.jpg +0 -0
  101. framework/admin/img/themes/pro/modern-recipes.jpg +0 -0
  102. framework/admin/img/themes/pro/mountain-slide.jpg +0 -0
  103. framework/admin/img/themes/pro/mountain.jpg +0 -0
  104. framework/admin/img/themes/pro/movie-trailer-video.jpg +0 -0
  105. framework/admin/img/themes/pro/music.jpg +0 -0
  106. framework/admin/img/themes/pro/nature.jpg +0 -0
  107. framework/admin/img/themes/pro/non-profit-organization.jpg +0 -0
  108. framework/admin/img/themes/pro/nutritionist.jpg +0 -0
  109. framework/admin/img/themes/pro/office-meeting-video.jpg +0 -0
  110. framework/admin/img/themes/pro/office-theme.jpg +0 -0
  111. framework/admin/img/themes/pro/online-food-delivery.jpg +0 -0
  112. framework/admin/img/themes/pro/online-learning.jpg +0 -0
  113. framework/admin/img/themes/pro/online-shopping.jpg +0 -0
  114. framework/admin/img/themes/pro/organic-cosmetics.jpg +0 -0
  115. framework/admin/img/themes/pro/pancake-house.jpg +0 -0
  116. framework/admin/img/themes/pro/parenting.jpg +0 -0
  117. framework/admin/img/themes/pro/passage.jpg +0 -0
  118. framework/admin/img/themes/pro/peaceful-river.jpg +0 -0
  119. framework/admin/img/themes/pro/personal-trainer.jpg +0 -0
  120. framework/admin/img/themes/pro/photo-studio.jpg +0 -0
  121. framework/admin/img/themes/pro/photography.jpg +0 -0
  122. framework/admin/img/themes/pro/plumbing.jpg +0 -0
  123. framework/admin/img/themes/pro/podcast.jpg +0 -0
  124. framework/admin/img/themes/pro/portfolio.jpg +0 -0
  125. framework/admin/img/themes/pro/restaurant.jpg +0 -0
  126. framework/admin/img/themes/pro/romantic-travels.jpg +0 -0
  127. framework/admin/img/themes/pro/running-blog.jpg +0 -0
  128. framework/admin/img/themes/pro/running-video.jpg +0 -0
  129. framework/admin/img/themes/pro/scholar-university.jpg +0 -0
  130. framework/admin/img/themes/pro/seo-digital-marketing.jpg +0 -0
  131. framework/admin/img/themes/pro/shoes-store.jpg +0 -0
  132. framework/admin/img/themes/pro/simple-beige-design.jpg +0 -0
  133. framework/admin/img/themes/pro/skin-care.jpg +0 -0
  134. framework/admin/img/themes/pro/skincare.jpg +0 -0
  135. framework/admin/img/themes/pro/snow-screensaver-video.jpg +0 -0
  136. framework/admin/img/themes/pro/snowboarding-blog.jpg +0 -0
  137. framework/admin/img/themes/pro/snowy-mountain.jpg +0 -0
  138. framework/admin/img/themes/pro/snowy-oasis.jpg +0 -0
  139. framework/admin/img/themes/pro/social-media-service.jpg +0 -0
  140. framework/admin/img/themes/pro/social-media.jpg +0 -0
  141. framework/admin/img/themes/pro/spa-beauty-studio.jpg +0 -0
  142. framework/admin/img/themes/pro/spa.jpg +0 -0
  143. framework/admin/img/themes/pro/spring-sale.jpg +0 -0
  144. framework/admin/img/themes/pro/spring.jpg +0 -0
  145. framework/admin/img/themes/pro/startup.jpg +0 -0
  146. framework/admin/img/themes/pro/statistics-survey.jpg +0 -0
  147. framework/admin/img/themes/pro/studio-design.jpg +0 -0
  148. framework/admin/img/themes/pro/stylish-workplace.jpg +0 -0
  149. framework/admin/img/themes/pro/tattoo-studio.jpg +0 -0
  150. framework/admin/img/themes/pro/tech.jpg +0 -0
  151. framework/admin/img/themes/pro/techexpo.jpg +0 -0
  152. framework/admin/img/themes/pro/technology.jpg +0 -0
  153. framework/admin/img/themes/pro/telecommunication.jpg +0 -0
  154. framework/admin/img/themes/pro/the-big-city-newsletter.jpg +0 -0
  155. framework/admin/img/themes/pro/the-sunny-view.jpg +0 -0
  156. framework/admin/img/themes/pro/theatre.jpg +0 -0
  157. framework/admin/img/themes/pro/travel-agency.jpg +0 -0
  158. framework/admin/img/themes/pro/travel-blog.jpg +0 -0
  159. framework/admin/img/themes/pro/tulips.jpg +0 -0
  160. framework/admin/img/themes/pro/valentines-day.jpg +0 -0
  161. framework/admin/img/themes/pro/video-production.jpg +0 -0
  162. framework/admin/img/themes/pro/virtual-assistant-service.jpg +0 -0
  163. framework/admin/img/themes/pro/virtual-reality.jpg +0 -0
  164. framework/admin/img/themes/pro/walking-away-video.jpg +0 -0
  165. framework/admin/img/themes/pro/web-security.jpg +0 -0
  166. framework/admin/img/themes/pro/webinar.jpg +0 -0
  167. framework/admin/img/themes/pro/wedding-blog.jpg +0 -0
  168. framework/admin/img/themes/pro/wedding.jpg +0 -0
  169. framework/admin/img/themes/pro/white-orchids.jpg +0 -0
  170. framework/admin/img/themes/pro/winter-sale.jpg +0 -0
  171. framework/admin/img/themes/pro/working-out.jpg +0 -0
  172. framework/admin/img/themes/pro/workplace.jpg +0 -0
  173. framework/admin/img/themes/pro/writing-service-video.jpg +0 -0
  174. framework/admin/init.php +290 -268
  175. framework/admin/js/admin.js +491 -345
  176. framework/admin/js/plugins.js +16 -0
  177. framework/admin/js/wf-licensing.js +132 -0
  178. framework/admin/license.php +71 -157
  179. framework/admin/views/settings-pro.php +258 -281
  180. framework/admin/views/settings-themes.php +606 -178
  181. framework/admin/views/settings.php +101 -96
  182. framework/init.php +0 -2
  183. framework/wf-licensing.php +762 -0
  184. minimal-coming-soon-maintenance-mode.php +4 -2
  185. readme.txt +8 -4
framework/admin/css/admin.css CHANGED
@@ -28,7 +28,8 @@
28
  margin: 0;
29
  margin-left: -20px !important;
30
  }
31
- .signals-fix-wp38 {}
 
32
  .signals-header {
33
  padding: 20px;
34
  background: #ffffff;
@@ -76,17 +77,17 @@
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;
@@ -192,9 +193,9 @@
192
  border-left: 2px solid #fe2929;
193
  }
194
 
195
- .signals-main-menu li a:focus{
196
- -webkit-box-shadow:none;
197
- box-shadow:none;
198
  }
199
 
200
  .signals-mobile-menu {
@@ -283,7 +284,7 @@
283
  .theme-thumb .ribbon::after {
284
  position: absolute;
285
  z-index: -1;
286
- content: '';
287
  display: block;
288
  }
289
  .theme-thumb .ribbon i {
@@ -308,7 +309,7 @@
308
  }
309
  .csmm-layout-builder {
310
  display: inline-block;
311
- width: 100%;;
312
  min-height: 60px;
313
  vertical-align: top;
314
  position: relative;
@@ -507,11 +508,12 @@
507
  border: 1px dashed #ff0000;
508
  background-color: #ffffffb1;
509
  }
510
- .csmm-layout-builder li.ui-sortable-helper .actions-center{
511
  display: none;
512
  }
513
 
514
- li.module-placeholder, #arrange-items li.module-placeholder {
 
515
  border: 1px dashed #ff0000;
516
  height: 80px;
517
  width: 100%;
@@ -607,14 +609,17 @@ dd {
607
  border-radius: 4px;
608
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
609
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
610
- -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
611
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
 
612
  }
613
  .signals-form-control:focus {
614
  border-color: #66afe9;
615
  outline: 0;
616
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
617
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
 
 
618
  }
619
  .signals-form-control:-moz-placeholder {
620
  color: #999999;
@@ -754,7 +759,7 @@ textarea.signals-form-input-lg {
754
  box-shadow: none;
755
  text-shadow: none;
756
  border-radius: 3px 3px 3px 3px;
757
- border: 1px solid #F0DBB4;
758
  -webkit-transition: all 0.2s linear 0s;
759
  transition: all 0.2s linear 0s;
760
  display: block;
@@ -808,7 +813,7 @@ textarea.signals-form-input-lg {
808
  .signals-btn:active {
809
  background-color: #0090d9;
810
  color: #ffffff;
811
- opacity: .8;
812
  }
813
 
814
  .signals-btn-red {
@@ -830,7 +835,7 @@ textarea.signals-form-input-lg {
830
  .signals-btn-secondary:active {
831
  background-color: #f7f7f7;
832
  color: #555;
833
- opacity: .8;
834
  border: thin solid #bbb;
835
  }
836
 
@@ -849,28 +854,28 @@ textarea.signals-form-input-lg {
849
  /* Upload process for the panel */
850
 
851
  .signals-upload-element {
852
- border: 2px dashed #eeeeee;
853
- margin-top: 20px;
854
- padding: 14px 0;
855
- text-align: center;
856
  }
857
  .signals-upload-element span.signals-preview-area {
858
- display: block;
859
- font-size: 12px;
860
- color: #898989;
861
- margin: 10px;
862
  }
863
  .signals-upload-element span.signals-preview-area img {
864
- display: inline-block;
865
- max-width: 100%;
866
- max-height: 300px;
867
  }
868
  #signals-remove-image,
869
  #signals-remove-image:hover,
870
  #signals-remove-image:focus {
871
- margin-left: 5px;
872
- line-height: 26px;
873
- color: red;
874
  }
875
 
876
  .home-box {
@@ -895,18 +900,20 @@ textarea.signals-form-input-lg {
895
  }
896
 
897
  .video-container {
898
- position:relative;
899
- padding-bottom:56.25%;
900
- height:0;
901
- overflow:hidden;
902
  }
903
 
904
- .video-container iframe, .video-container object, .video-container embed {
905
- position:absolute;
906
- top:0;
907
- left:0;
908
- width:100%;
909
- height:100%;
 
 
910
  }
911
 
912
  option[value="-1"] {
@@ -1020,7 +1027,8 @@ option[value="-1"] {
1020
  position: relative;
1021
  }
1022
 
1023
- #upsell-notice .button-flat:active, #upsell-notice .button-flat:hover {
 
1024
  color: black;
1025
  }
1026
 
@@ -1078,7 +1086,8 @@ option[value="-1"] {
1078
  font-weight: 600;
1079
  }
1080
 
1081
- input.color, input.jscolor {
 
1082
  width: 100px;
1083
  }
1084
 
@@ -1115,7 +1124,7 @@ input.color, input.jscolor {
1115
  color: #fff;
1116
  }
1117
 
1118
- .mm-seo-progress{
1119
  display: block;
1120
  box-sizing: border-box;
1121
  width: 99%;
@@ -1125,19 +1134,18 @@ input.color, input.jscolor {
1125
  -webkit-appearance: none;
1126
  -moz-appearance: none;
1127
  appearance: none;
1128
- border: 1px solid #DDD;
1129
  }
1130
 
1131
-
1132
- .mm-seo-progress-warning .mm-seo-progress-bar{
1133
  background: #ffb200;
1134
- width:40px;
1135
  max-width: 100%;
1136
  height: 100%;
1137
  }
1138
- .mm-seo-progress-good .mm-seo-progress-bar{
1139
  background: #64bd63;
1140
- width:40px;
1141
  max-width: 100%;
1142
  height: 100%;
1143
  }
@@ -1183,7 +1191,10 @@ input.color, input.jscolor {
1183
  width: 100%;
1184
  }
1185
 
1186
- #pricing-table, #pricing-table tr, #pricing-table td, #pricing-table h3 {
 
 
 
1187
  margin: 0;
1188
  padding: 0;
1189
  border: 0;
@@ -1191,7 +1202,7 @@ input.color, input.jscolor {
1191
  border-collapse: collapse;
1192
  }
1193
  #pricing-table tr:first-child td {
1194
- background-color: #EC414D;
1195
  padding: 10px;
1196
  text-align: center;
1197
  width: 33%;
@@ -1204,7 +1215,7 @@ input.color, input.jscolor {
1204
  display: inline-block;
1205
  }
1206
  #pricing-table tr:last-child td {
1207
- border-top: 2px solid #EC414D;
1208
  border-bottom: none;
1209
  }
1210
  #pricing-table h3 {
@@ -1215,9 +1226,9 @@ input.color, input.jscolor {
1215
  }
1216
  #pricing-table td {
1217
  padding: 12px 15px;
1218
- border-bottom: solid thin #EC414D;
1219
  text-align: center;
1220
- background-color: #f1f1f1
1221
  }
1222
  #pricing-table tr td:first-child {
1223
  border-right: 30px solid #fff;
@@ -1226,7 +1237,7 @@ input.color, input.jscolor {
1226
  border-left: 30px solid #fff;
1227
  }
1228
  #pricing-table .dashicons {
1229
- color: #EC414D;
1230
  }
1231
  #pricing-table .dashicons.dashicons-no {
1232
  color: #000;
@@ -1237,7 +1248,7 @@ input.color, input.jscolor {
1237
  }
1238
  #pricing-table .promo-button {
1239
  color: #fff;
1240
- background: #EC414D;
1241
  padding: 10px 5px;
1242
  margin: 0px 0 10px 0;
1243
  text-align: center;
@@ -1261,31 +1272,31 @@ input.color, input.jscolor {
1261
  font-weight: 400;
1262
  }
1263
  #pricing-table .promo-button small {
1264
- font-size: x-small;
1265
- line-height: 0px;
1266
  }
1267
 
1268
  hr {
1269
  margin: 30px 0;
1270
- background-color: #EC414D;
1271
  height: 3px;
1272
  }
1273
 
1274
  .footer-buttons-left {
1275
- margin: 0;
1276
- padding: 0 20px 0 10px;
1277
- display: inline-block;
1278
  }
1279
 
1280
  .footer-buttons-right {
1281
- margin: 0;
1282
- padding: 5px 10px 0 10px;
1283
- display: inline-block;
1284
- right: 10px;
1285
- left: auto;
1286
- position: fixed;
1287
- color: #666;
1288
- font-style: italic;
1289
  }
1290
 
1291
  .csmm-image-picker {
@@ -1295,36 +1306,36 @@ hr {
1295
  display: block;
1296
  top: 2%;
1297
  left: 2%;
1298
- background: #FFF;
1299
  z-index: 99999;
1300
  box-shadow: 0px 0px 0px 1000px #0000004d;
1301
- padding:6px;
1302
  }
1303
 
1304
- .csmm-image-picker-image{
1305
- border:3px solid transparent;
1306
- float:left;
1307
  margin: 4px;
1308
  line-height: 0px;
1309
  }
1310
 
1311
  .csmm-image-picker-image_ad {
1312
- border:3px solid transparent;
1313
- float:left;
1314
  margin: 4px;
1315
  line-height: 0px;
1316
  }
1317
 
1318
  .csmm-image-picker-image:hover,
1319
- .csmm-image-picker-image_ad:hover{
1320
- border:3px solid #0090d9;
1321
- float:left;
1322
  margin: 4px;
1323
- cursor:pointer;
1324
  }
1325
 
1326
- .csmm-image-picker-image img{
1327
- height:160px;
1328
  }
1329
 
1330
  .csmm-image-picker-content {
@@ -1341,7 +1352,7 @@ hr {
1341
  box-sizing: border-box;
1342
  }
1343
 
1344
- .csmm-image-picker-title{
1345
  position: absolute;
1346
  padding: 0 20px;
1347
  left: 0px;
@@ -1350,7 +1361,865 @@ hr {
1350
  }
1351
 
1352
  /* background image filters */
1353
- .aden{position:relative;-webkit-filter:hue-rotate(-20deg) contrast(.9) saturate(.85) brightness(1.2);filter:hue-rotate(-20deg) contrast(.9) saturate(.85) brightness(1.2)}.aden:after,.aden:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.aden img{width:100%;z-index:1}.aden:before{z-index:2}.aden:after{z-index:3}.aden::after{background:-webkit-linear-gradient(left,rgba(66,10,14,.2),transparent);background:linear-gradient(to right,rgba(66,10,14,.2),transparent);mix-blend-mode:darken}.gingham::after,.perpetua::after,.reyes::after{mix-blend-mode:soft-light}.inkwell{position:relative;-webkit-filter:sepia(.3) contrast(1.1) brightness(1.1) grayscale(1);filter:sepia(.3) contrast(1.1) brightness(1.1) grayscale(1)}.inkwell:after,.inkwell:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.inkwell img{width:100%;z-index:1}.inkwell:before{z-index:2}.inkwell:after{z-index:3}.perpetua{position:relative}.perpetua:after,.perpetua:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.perpetua img{width:100%;z-index:1}.perpetua:before{z-index:2}.perpetua:after{z-index:3}.perpetua::after{background:-webkit-linear-gradient(top,#005b9a,#e6c13d);background:linear-gradient(to bottom,#005b9a,#e6c13d);opacity:.5}.reyes{position:relative;-webkit-filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75);filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75)}.reyes:after,.reyes:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.reyes img{width:100%;z-index:1}.reyes:before{z-index:2}.reyes:after{z-index:3}.reyes::after{background:#efcdad;opacity:.5}.gingham{position:relative;-webkit-filter:brightness(1.05) hue-rotate(-10deg);filter:brightness(1.05) hue-rotate(-10deg)}.gingham:after,.gingham:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.gingham img{width:100%;z-index:1}.gingham:before{z-index:2}.gingham:after{z-index:3}.gingham::after{background:#e6e6fa}.toaster{position:relative;-webkit-filter:contrast(1.5) brightness(.9);filter:contrast(1.5) brightness(.9)}.toaster:after,.toaster:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.toaster img{width:100%;z-index:1}.toaster:before{z-index:2}.toaster:after{z-index:3}.toaster::after{background:-webkit-radial-gradient(circle,#804e0f,#3b003b);background:radial-gradient(circle,#804e0f,#3b003b);mix-blend-mode:screen}.walden{position:relative;-webkit-filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6);filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6)}.walden:after,.walden:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.walden img{width:100%;z-index:1}.walden:before{z-index:2}.walden:after{z-index:3}.walden::after{background:#04c;mix-blend-mode:screen;opacity:.3}.hudson{position:relative;-webkit-filter:brightness(1.2) contrast(.9) saturate(1.1);filter:brightness(1.2) contrast(.9) saturate(1.1)}.hudson:after,.hudson:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.hudson img{width:100%;z-index:1}.hudson:before{z-index:2}.hudson:after{z-index:3}.hudson::after{background:-webkit-radial-gradient(circle,#a6b1ff 50%,#342134);background:radial-gradient(circle,#a6b1ff 50%,#342134);mix-blend-mode:multiply;opacity:.5}.earlybird{position:relative;-webkit-filter:contrast(.9) sepia(.2);filter:contrast(.9) sepia(.2)}.earlybird:after,.earlybird:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.earlybird img{width:100%;z-index:1}.earlybird:before{z-index:2}.earlybird:after{z-index:3}.earlybird::after{background:-webkit-radial-gradient(circle,#d0ba8e 20%,#360309 85%,#1d0210 100%);background:radial-gradient(circle,#d0ba8e 20%,#360309 85%,#1d0210 100%);mix-blend-mode:overlay}.mayfair{position:relative;-webkit-filter:contrast(1.1) saturate(1.1);filter:contrast(1.1) saturate(1.1)}.mayfair:after,.mayfair:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.mayfair img{width:100%;z-index:1}.mayfair:before{z-index:2}.mayfair:after{z-index:3}.mayfair::after{background:-webkit-radial-gradient(40% 40%,circle,rgba(255,255,255,.8),rgba(255,200,200,.6),#111 60%);background:radial-gradient(circle at 40% 40%,rgba(255,255,255,.8),rgba(255,200,200,.6),#111 60%);mix-blend-mode:overlay;opacity:.4}.lofi{position:relative;-webkit-filter:saturate(1.1) contrast(1.5);filter:saturate(1.1) contrast(1.5)}.lofi:after,.lofi:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.lofi img{width:100%;z-index:1}.lofi:before{z-index:2}.lofi:after{z-index:3}.lofi::after{background:-webkit-radial-gradient(circle,transparent 70%,#222 150%);background:radial-gradient(circle,transparent 70%,#222 150%);mix-blend-mode:multiply}._1977{position:relative;-webkit-filter:contrast(1.1) brightness(1.1) saturate(1.3);filter:contrast(1.1) brightness(1.1) saturate(1.3)}._1977:after,._1977:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}._1977 img{width:100%;z-index:1}._1977:before{z-index:2}._1977:after{z-index:3;background:rgba(243,106,188,.3);mix-blend-mode:screen}.brooklyn{position:relative;-webkit-filter:contrast(.9) brightness(1.1);filter:contrast(.9) brightness(1.1)}.brooklyn:after,.brooklyn:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.brooklyn img{width:100%;z-index:1}.brooklyn:before{z-index:2}.brooklyn:after{z-index:3}.brooklyn::after{background:-webkit-radial-gradient(circle,rgba(168,223,193,.4) 70%,#c4b7c8);background:radial-gradient(circle,rgba(168,223,193,.4) 70%,#c4b7c8);mix-blend-mode:overlay}.xpro2{position:relative;-webkit-filter:sepia(.3);filter:sepia(.3)}.xpro2:after,.xpro2:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.xpro2 img{width:100%;z-index:1}.xpro2:before{z-index:2}.xpro2:after{z-index:3}.xpro2::after{background:-webkit-radial-gradient(circle,#e6e7e0 40%,rgba(43,42,161,.6) 110%);background:radial-gradient(circle,#e6e7e0 40%,rgba(43,42,161,.6) 110%);mix-blend-mode:color-burn}.nashville{position:relative;-webkit-filter:sepia(.2) contrast(1.2) brightness(1.05) saturate(1.2);filter:sepia(.2) contrast(1.2) brightness(1.05) saturate(1.2)}.nashville:after,.nashville:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.nashville img{width:100%;z-index:1}.nashville:before{z-index:2}.nashville:after{z-index:3}.nashville::after{background:rgba(0,70,150,.4);mix-blend-mode:lighten}.nashville::before{background:rgba(247,176,153,.56);mix-blend-mode:darken}.lark{position:relative;-webkit-filter:contrast(.9);filter:contrast(.9)}.lark:after,.lark:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.lark img{width:100%;z-index:1}.lark:before{z-index:2}.lark:after{z-index:3}.lark::after{background:rgba(242,242,242,.8);mix-blend-mode:darken}.lark::before{background:#22253f;mix-blend-mode:color-dodge}.moon{position:relative;-webkit-filter:grayscale(1) contrast(1.1) brightness(1.1);filter:grayscale(1) contrast(1.1) brightness(1.1)}.moon:after,.moon:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.moon img{width:100%;z-index:1}.moon:before{z-index:2}.moon:after{z-index:3}.moon::before{background:#a0a0a0;mix-blend-mode:soft-light}.moon::after{background:#383838;mix-blend-mode:lighten}.clarendon{position:relative;-webkit-filter:contrast(1.2) saturate(1.35);filter:contrast(1.2) saturate(1.35)}.clarendon:after,.clarendon:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.clarendon img{width:100%;z-index:1}.clarendon:before{z-index:2;background:rgba(127,187,227,.2);mix-blend-mode:overlay}.clarendon:after{z-index:3}.willow{position:relative;-webkit-filter:grayscale(.5) contrast(.95) brightness(.9);filter:grayscale(.5) contrast(.95) brightness(.9)}.willow:after,.willow:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.willow img{width:100%;z-index:1}.willow:before{z-index:2}.willow:after{z-index:3}.willow::before{background-color:radial-gradient(40%,circle,#d4a9af 55%,#000 150%);mix-blend-mode:overlay}.willow::after{background-color:#d8cdcb;mix-blend-mode:color}.rise{position:relative;-webkit-filter:brightness(1.05) sepia(.2) contrast(.9) saturate(.9);filter:brightness(1.05) sepia(.2) contrast(.9) saturate(.9)}.rise:after,.rise:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.rise img{width:100%;z-index:1}.rise:before{z-index:2}.rise:after{z-index:3}.rise::after{background:-webkit-radial-gradient(circle,rgba(232,197,152,.8),transparent 90%);background:radial-gradient(circle,rgba(232,197,152,.8),transparent 90%);mix-blend-mode:overlay;opacity:.6}.rise::before{background:-webkit-radial-gradient(circle,rgba(236,205,169,.15) 55%,rgba(50,30,7,.4));background:radial-gradient(circle,rgba(236,205,169,.15) 55%,rgba(50,30,7,.4));mix-blend-mode:multiply}.slumber{position:relative;-webkit-filter:saturate(.66) brightness(1.05);filter:saturate(.66) brightness(1.05)}.slumber:after,.slumber:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.slumber img{width:100%;z-index:1}.slumber:before{z-index:2}.slumber:after{z-index:3}.slumber::after{background:rgba(125,105,24,.5);mix-blend-mode:soft-light}.slumber::before{background:rgba(69,41,12,.4);mix-blend-mode:lighten}.brannan{position:relative;-webkit-filter:sepia(.5) contrast(1.4);filter:sepia(.5) contrast(1.4)}.brannan:after,.brannan:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.brannan img{width:100%;z-index:1}.brannan:before{z-index:2}.brannan:after{z-index:3}.brannan::after{background-color:rgba(161,44,199,.31);mix-blend-mode:lighten}.valencia{position:relative;-webkit-filter:contrast(1.08) brightness(1.08) sepia(.08);filter:contrast(1.08) brightness(1.08) sepia(.08)}.valencia:after,.valencia:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.valencia img{width:100%;z-index:1}.valencia:before{z-index:2}.valencia:after{z-index:3}.valencia::after{background:#3a0339;mix-blend-mode:exclusion;opacity:.5}.kelvin{position:relative}.kelvin:after,.kelvin:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.kelvin img{width:100%;z-index:1}.kelvin:before{z-index:2}.kelvin:after{z-index:3}.kelvin::after{background:#b77d21;mix-blend-mode:overlay}.kelvin::before{background:#382c34;mix-blend-mode:color-dodge}.maven{position:relative;-webkit-filter:sepia(.25) brightness(.95) contrast(.95) saturate(1.5);filter:sepia(.25) brightness(.95) contrast(.95) saturate(1.5)}.maven:after,.maven:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.maven img{width:100%;z-index:1}.maven:before{z-index:2}.maven:after{z-index:3;background:rgba(3,230,26,.2);mix-blend-mode:hue}.stinson{position:relative;-webkit-filter:contrast(.75) saturate(.85) brightness(1.15);filter:contrast(.75) saturate(.85) brightness(1.15)}.stinson:after,.stinson:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}.stinson img{width:100%;z-index:1}.stinson:before{z-index:2}.stinson:after{z-index:3}.stinson::before{background:rgba(240,149,128,.2);mix-blend-mode:soft-light}.blackwhite { -webkit-filter: grayscale(100%); filter: grayscale(100%); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1354
 
1355
  /* mailoptin upsell dialog */
1356
  .csmm-mailoptin-upsell-dialog .ui-dialog-titlebar {
@@ -1449,7 +2318,7 @@ option.mailoptin-promo {
1449
 
1450
  #support-hero .button {
1451
  color: #fff;
1452
- background: #EC414D;
1453
  padding: 15px 10px;
1454
  margin: 0px 0 10px 0;
1455
  text-align: center;
@@ -1471,3 +2340,11 @@ option.mailoptin-promo {
1471
  margin-left: 14px;
1472
  line-height: 150%;
1473
  }
 
 
 
 
 
 
 
 
28
  margin: 0;
29
  margin-left: -20px !important;
30
  }
31
+ .signals-fix-wp38 {
32
+ }
33
  .signals-header {
34
  padding: 20px;
35
  background: #ffffff;
77
  cursor: pointer;
78
  }
79
  .csmm-status-wrapper .csmm-status-btn {
80
+ padding: 4px 7px;
81
+ display: inline-block;
82
+ color: #666;
83
  }
84
  .csmm-status-wrapper.on .csmm-status-on {
85
+ background: #64bd63;
86
+ color: #fff;
87
  }
88
  .csmm-status-wrapper.off .csmm-status-off {
89
+ background: #fe2929;
90
+ color: #fff;
91
  }
92
  .signals-body {
93
  padding: 30px 20px 30px 20px;
193
  border-left: 2px solid #fe2929;
194
  }
195
 
196
+ .signals-main-menu li a:focus {
197
+ -webkit-box-shadow: none;
198
+ box-shadow: none;
199
  }
200
 
201
  .signals-mobile-menu {
284
  .theme-thumb .ribbon::after {
285
  position: absolute;
286
  z-index: -1;
287
+ content: "";
288
  display: block;
289
  }
290
  .theme-thumb .ribbon i {
309
  }
310
  .csmm-layout-builder {
311
  display: inline-block;
312
+ width: 100%;
313
  min-height: 60px;
314
  vertical-align: top;
315
  position: relative;
508
  border: 1px dashed #ff0000;
509
  background-color: #ffffffb1;
510
  }
511
+ .csmm-layout-builder li.ui-sortable-helper .actions-center {
512
  display: none;
513
  }
514
 
515
+ li.module-placeholder,
516
+ #arrange-items li.module-placeholder {
517
  border: 1px dashed #ff0000;
518
  height: 80px;
519
  width: 100%;
609
  border-radius: 4px;
610
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
611
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
612
+ -webkit-transition: border-color ease-in-out 0.15s,
613
+ box-shadow ease-in-out 0.15s;
614
+ transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
615
  }
616
  .signals-form-control:focus {
617
  border-color: #66afe9;
618
  outline: 0;
619
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
620
+ 0 0 8px rgba(102, 175, 233, 0.6);
621
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
622
+ 0 0 8px rgba(102, 175, 233, 0.6);
623
  }
624
  .signals-form-control:-moz-placeholder {
625
  color: #999999;
759
  box-shadow: none;
760
  text-shadow: none;
761
  border-radius: 3px 3px 3px 3px;
762
+ border: 1px solid #f0dbb4;
763
  -webkit-transition: all 0.2s linear 0s;
764
  transition: all 0.2s linear 0s;
765
  display: block;
813
  .signals-btn:active {
814
  background-color: #0090d9;
815
  color: #ffffff;
816
+ opacity: 0.8;
817
  }
818
 
819
  .signals-btn-red {
835
  .signals-btn-secondary:active {
836
  background-color: #f7f7f7;
837
  color: #555;
838
+ opacity: 0.8;
839
  border: thin solid #bbb;
840
  }
841
 
854
  /* Upload process for the panel */
855
 
856
  .signals-upload-element {
857
+ border: 2px dashed #eeeeee;
858
+ margin-top: 20px;
859
+ padding: 14px 0;
860
+ text-align: center;
861
  }
862
  .signals-upload-element span.signals-preview-area {
863
+ display: block;
864
+ font-size: 12px;
865
+ color: #898989;
866
+ margin: 10px;
867
  }
868
  .signals-upload-element span.signals-preview-area img {
869
+ display: inline-block;
870
+ max-width: 100%;
871
+ max-height: 300px;
872
  }
873
  #signals-remove-image,
874
  #signals-remove-image:hover,
875
  #signals-remove-image:focus {
876
+ margin-left: 5px;
877
+ line-height: 26px;
878
+ color: red;
879
  }
880
 
881
  .home-box {
900
  }
901
 
902
  .video-container {
903
+ position: relative;
904
+ padding-bottom: 56.25%;
905
+ height: 0;
906
+ overflow: hidden;
907
  }
908
 
909
+ .video-container iframe,
910
+ .video-container object,
911
+ .video-container embed {
912
+ position: absolute;
913
+ top: 0;
914
+ left: 0;
915
+ width: 100%;
916
+ height: 100%;
917
  }
918
 
919
  option[value="-1"] {
1027
  position: relative;
1028
  }
1029
 
1030
+ #upsell-notice .button-flat:active,
1031
+ #upsell-notice .button-flat:hover {
1032
  color: black;
1033
  }
1034
 
1086
  font-weight: 600;
1087
  }
1088
 
1089
+ input.color,
1090
+ input.jscolor {
1091
  width: 100px;
1092
  }
1093
 
1124
  color: #fff;
1125
  }
1126
 
1127
+ .mm-seo-progress {
1128
  display: block;
1129
  box-sizing: border-box;
1130
  width: 99%;
1134
  -webkit-appearance: none;
1135
  -moz-appearance: none;
1136
  appearance: none;
1137
+ border: 1px solid #ddd;
1138
  }
1139
 
1140
+ .mm-seo-progress-warning .mm-seo-progress-bar {
 
1141
  background: #ffb200;
1142
+ width: 40px;
1143
  max-width: 100%;
1144
  height: 100%;
1145
  }
1146
+ .mm-seo-progress-good .mm-seo-progress-bar {
1147
  background: #64bd63;
1148
+ width: 40px;
1149
  max-width: 100%;
1150
  height: 100%;
1151
  }
1191
  width: 100%;
1192
  }
1193
 
1194
+ #pricing-table,
1195
+ #pricing-table tr,
1196
+ #pricing-table td,
1197
+ #pricing-table h3 {
1198
  margin: 0;
1199
  padding: 0;
1200
  border: 0;
1202
  border-collapse: collapse;
1203
  }
1204
  #pricing-table tr:first-child td {
1205
+ background-color: #ec414d;
1206
  padding: 10px;
1207
  text-align: center;
1208
  width: 33%;
1215
  display: inline-block;
1216
  }
1217
  #pricing-table tr:last-child td {
1218
+ border-top: 2px solid #ec414d;
1219
  border-bottom: none;
1220
  }
1221
  #pricing-table h3 {
1226
  }
1227
  #pricing-table td {
1228
  padding: 12px 15px;
1229
+ border-bottom: solid thin #ec414d;
1230
  text-align: center;
1231
+ background-color: #f1f1f1;
1232
  }
1233
  #pricing-table tr td:first-child {
1234
  border-right: 30px solid #fff;
1237
  border-left: 30px solid #fff;
1238
  }
1239
  #pricing-table .dashicons {
1240
+ color: #ec414d;
1241
  }
1242
  #pricing-table .dashicons.dashicons-no {
1243
  color: #000;
1248
  }
1249
  #pricing-table .promo-button {
1250
  color: #fff;
1251
+ background: #ec414d;
1252
  padding: 10px 5px;
1253
  margin: 0px 0 10px 0;
1254
  text-align: center;
1272
  font-weight: 400;
1273
  }
1274
  #pricing-table .promo-button small {
1275
+ font-size: x-small;
1276
+ line-height: 0px;
1277
  }
1278
 
1279
  hr {
1280
  margin: 30px 0;
1281
+ background-color: #ec414d;
1282
  height: 3px;
1283
  }
1284
 
1285
  .footer-buttons-left {
1286
+ margin: 0;
1287
+ padding: 0 20px 0 10px;
1288
+ display: inline-block;
1289
  }
1290
 
1291
  .footer-buttons-right {
1292
+ margin: 0;
1293
+ padding: 5px 10px 0 10px;
1294
+ display: inline-block;
1295
+ right: 10px;
1296
+ left: auto;
1297
+ position: fixed;
1298
+ color: #666;
1299
+ font-style: italic;
1300
  }
1301
 
1302
  .csmm-image-picker {
1306
  display: block;
1307
  top: 2%;
1308
  left: 2%;
1309
+ background: #fff;
1310
  z-index: 99999;
1311
  box-shadow: 0px 0px 0px 1000px #0000004d;
1312
+ padding: 6px;
1313
  }
1314
 
1315
+ .csmm-image-picker-image {
1316
+ border: 3px solid transparent;
1317
+ float: left;
1318
  margin: 4px;
1319
  line-height: 0px;
1320
  }
1321
 
1322
  .csmm-image-picker-image_ad {
1323
+ border: 3px solid transparent;
1324
+ float: left;
1325
  margin: 4px;
1326
  line-height: 0px;
1327
  }
1328
 
1329
  .csmm-image-picker-image:hover,
1330
+ .csmm-image-picker-image_ad:hover {
1331
+ border: 3px solid #0090d9;
1332
+ float: left;
1333
  margin: 4px;
1334
+ cursor: pointer;
1335
  }
1336
 
1337
+ .csmm-image-picker-image img {
1338
+ height: 160px;
1339
  }
1340
 
1341
  .csmm-image-picker-content {
1352
  box-sizing: border-box;
1353
  }
1354
 
1355
+ .csmm-image-picker-title {
1356
  position: absolute;
1357
  padding: 0 20px;
1358
  left: 0px;
1361
  }
1362
 
1363
  /* background image filters */
1364
+ .aden {
1365
+ position: relative;
1366
+ -webkit-filter: hue-rotate(-20deg) contrast(0.9) saturate(0.85)
1367
+ brightness(1.2);
1368
+ filter: hue-rotate(-20deg) contrast(0.9) saturate(0.85) brightness(1.2);
1369
+ }
1370
+ .aden:after,
1371
+ .aden:before {
1372
+ content: "";
1373
+ display: block;
1374
+ height: 100%;
1375
+ width: 100%;
1376
+ top: 0;
1377
+ left: 0;
1378
+ position: absolute;
1379
+ pointer-events: none;
1380
+ }
1381
+ .aden img {
1382
+ width: 100%;
1383
+ z-index: 1;
1384
+ }
1385
+ .aden:before {
1386
+ z-index: 2;
1387
+ }
1388
+ .aden:after {
1389
+ z-index: 3;
1390
+ }
1391
+ .aden::after {
1392
+ background: -webkit-linear-gradient(left, rgba(66, 10, 14, 0.2), transparent);
1393
+ background: linear-gradient(to right, rgba(66, 10, 14, 0.2), transparent);
1394
+ mix-blend-mode: darken;
1395
+ }
1396
+ .gingham::after,
1397
+ .perpetua::after,
1398
+ .reyes::after {
1399
+ mix-blend-mode: soft-light;
1400
+ }
1401
+ .inkwell {
1402
+ position: relative;
1403
+ -webkit-filter: sepia(0.3) contrast(1.1) brightness(1.1) grayscale(1);
1404
+ filter: sepia(0.3) contrast(1.1) brightness(1.1) grayscale(1);
1405
+ }
1406
+ .inkwell:after,
1407
+ .inkwell:before {
1408
+ content: "";
1409
+ display: block;
1410
+ height: 100%;
1411
+ width: 100%;
1412
+ top: 0;
1413
+ left: 0;
1414
+ position: absolute;
1415
+ pointer-events: none;
1416
+ }
1417
+ .inkwell img {
1418
+ width: 100%;
1419
+ z-index: 1;
1420
+ }
1421
+ .inkwell:before {
1422
+ z-index: 2;
1423
+ }
1424
+ .inkwell:after {
1425
+ z-index: 3;
1426
+ }
1427
+ .perpetua {
1428
+ position: relative;
1429
+ }
1430
+ .perpetua:after,
1431
+ .perpetua:before {
1432
+ content: "";
1433
+ display: block;
1434
+ height: 100%;
1435
+ width: 100%;
1436
+ top: 0;
1437
+ left: 0;
1438
+ position: absolute;
1439
+ pointer-events: none;
1440
+ }
1441
+ .perpetua img {
1442
+ width: 100%;
1443
+ z-index: 1;
1444
+ }
1445
+ .perpetua:before {
1446
+ z-index: 2;
1447
+ }
1448
+ .perpetua:after {
1449
+ z-index: 3;
1450
+ }
1451
+ .perpetua::after {
1452
+ background: -webkit-linear-gradient(top, #005b9a, #e6c13d);
1453
+ background: linear-gradient(to bottom, #005b9a, #e6c13d);
1454
+ opacity: 0.5;
1455
+ }
1456
+ .reyes {
1457
+ position: relative;
1458
+ -webkit-filter: sepia(0.22) brightness(1.1) contrast(0.85) saturate(0.75);
1459
+ filter: sepia(0.22) brightness(1.1) contrast(0.85) saturate(0.75);
1460
+ }
1461
+ .reyes:after,
1462
+ .reyes:before {
1463
+ content: "";
1464
+ display: block;
1465
+ height: 100%;
1466
+ width: 100%;
1467
+ top: 0;
1468
+ left: 0;
1469
+ position: absolute;
1470
+ pointer-events: none;
1471
+ }
1472
+ .reyes img {
1473
+ width: 100%;
1474
+ z-index: 1;
1475
+ }
1476
+ .reyes:before {
1477
+ z-index: 2;
1478
+ }
1479
+ .reyes:after {
1480
+ z-index: 3;
1481
+ }
1482
+ .reyes::after {
1483
+ background: #efcdad;
1484
+ opacity: 0.5;
1485
+ }
1486
+ .gingham {
1487
+ position: relative;
1488
+ -webkit-filter: brightness(1.05) hue-rotate(-10deg);
1489
+ filter: brightness(1.05) hue-rotate(-10deg);
1490
+ }
1491
+ .gingham:after,
1492
+ .gingham:before {
1493
+ content: "";
1494
+ display: block;
1495
+ height: 100%;
1496
+ width: 100%;
1497
+ top: 0;
1498
+ left: 0;
1499
+ position: absolute;
1500
+ pointer-events: none;
1501
+ }
1502
+ .gingham img {
1503
+ width: 100%;
1504
+ z-index: 1;
1505
+ }
1506
+ .gingham:before {
1507
+ z-index: 2;
1508
+ }
1509
+ .gingham:after {
1510
+ z-index: 3;
1511
+ }
1512
+ .gingham::after {
1513
+ background: #e6e6fa;
1514
+ }
1515
+ .toaster {
1516
+ position: relative;
1517
+ -webkit-filter: contrast(1.5) brightness(0.9);
1518
+ filter: contrast(1.5) brightness(0.9);
1519
+ }
1520
+ .toaster:after,
1521
+ .toaster:before {
1522
+ content: "";
1523
+ display: block;
1524
+ height: 100%;
1525
+ width: 100%;
1526
+ top: 0;
1527
+ left: 0;
1528
+ position: absolute;
1529
+ pointer-events: none;
1530
+ }
1531
+ .toaster img {
1532
+ width: 100%;
1533
+ z-index: 1;
1534
+ }
1535
+ .toaster:before {
1536
+ z-index: 2;
1537
+ }
1538
+ .toaster:after {
1539
+ z-index: 3;
1540
+ }
1541
+ .toaster::after {
1542
+ background: -webkit-radial-gradient(circle, #804e0f, #3b003b);
1543
+ background: radial-gradient(circle, #804e0f, #3b003b);
1544
+ mix-blend-mode: screen;
1545
+ }
1546
+ .walden {
1547
+ position: relative;
1548
+ -webkit-filter: brightness(1.1) hue-rotate(-10deg) sepia(0.3) saturate(1.6);
1549
+ filter: brightness(1.1) hue-rotate(-10deg) sepia(0.3) saturate(1.6);
1550
+ }
1551
+ .walden:after,
1552
+ .walden:before {
1553
+ content: "";
1554
+ display: block;
1555
+ height: 100%;
1556
+ width: 100%;
1557
+ top: 0;
1558
+ left: 0;
1559
+ position: absolute;
1560
+ pointer-events: none;
1561
+ }
1562
+ .walden img {
1563
+ width: 100%;
1564
+ z-index: 1;
1565
+ }
1566
+ .walden:before {
1567
+ z-index: 2;
1568
+ }
1569
+ .walden:after {
1570
+ z-index: 3;
1571
+ }
1572
+ .walden::after {
1573
+ background: #04c;
1574
+ mix-blend-mode: screen;
1575
+ opacity: 0.3;
1576
+ }
1577
+ .hudson {
1578
+ position: relative;
1579
+ -webkit-filter: brightness(1.2) contrast(0.9) saturate(1.1);
1580
+ filter: brightness(1.2) contrast(0.9) saturate(1.1);
1581
+ }
1582
+ .hudson:after,
1583
+ .hudson:before {
1584
+ content: "";
1585
+ display: block;
1586
+ height: 100%;
1587
+ width: 100%;
1588
+ top: 0;
1589
+ left: 0;
1590
+ position: absolute;
1591
+ pointer-events: none;
1592
+ }
1593
+ .hudson img {
1594
+ width: 100%;
1595
+ z-index: 1;
1596
+ }
1597
+ .hudson:before {
1598
+ z-index: 2;
1599
+ }
1600
+ .hudson:after {
1601
+ z-index: 3;
1602
+ }
1603
+ .hudson::after {
1604
+ background: -webkit-radial-gradient(circle, #a6b1ff 50%, #342134);
1605
+ background: radial-gradient(circle, #a6b1ff 50%, #342134);
1606
+ mix-blend-mode: multiply;
1607
+ opacity: 0.5;
1608
+ }
1609
+ .earlybird {
1610
+ position: relative;
1611
+ -webkit-filter: contrast(0.9) sepia(0.2);
1612
+ filter: contrast(0.9) sepia(0.2);
1613
+ }
1614
+ .earlybird:after,
1615
+ .earlybird:before {
1616
+ content: "";
1617
+ display: block;
1618
+ height: 100%;
1619
+ width: 100%;
1620
+ top: 0;
1621
+ left: 0;
1622
+ position: absolute;
1623
+ pointer-events: none;
1624
+ }
1625
+ .earlybird img {
1626
+ width: 100%;
1627
+ z-index: 1;
1628
+ }
1629
+ .earlybird:before {
1630
+ z-index: 2;
1631
+ }
1632
+ .earlybird:after {
1633
+ z-index: 3;
1634
+ }
1635
+ .earlybird::after {
1636
+ background: -webkit-radial-gradient(
1637
+ circle,
1638
+ #d0ba8e 20%,
1639
+ #360309 85%,
1640
+ #1d0210 100%
1641
+ );
1642
+ background: radial-gradient(circle, #d0ba8e 20%, #360309 85%, #1d0210 100%);
1643
+ mix-blend-mode: overlay;
1644
+ }
1645
+ .mayfair {
1646
+ position: relative;
1647
+ -webkit-filter: contrast(1.1) saturate(1.1);
1648
+ filter: contrast(1.1) saturate(1.1);
1649
+ }
1650
+ .mayfair:after,
1651
+ .mayfair:before {
1652
+ content: "";
1653
+ display: block;
1654
+ height: 100%;
1655
+ width: 100%;
1656
+ top: 0;
1657
+ left: 0;
1658
+ position: absolute;
1659
+ pointer-events: none;
1660
+ }
1661
+ .mayfair img {
1662
+ width: 100%;
1663
+ z-index: 1;
1664
+ }
1665
+ .mayfair:before {
1666
+ z-index: 2;
1667
+ }
1668
+ .mayfair:after {
1669
+ z-index: 3;
1670
+ }
1671
+ .mayfair::after {
1672
+ background: -webkit-radial-gradient(
1673
+ 40% 40%,
1674
+ circle,
1675
+ rgba(255, 255, 255, 0.8),
1676
+ rgba(255, 200, 200, 0.6),
1677
+ #111 60%
1678
+ );
1679
+ background: radial-gradient(
1680
+ circle at 40% 40%,
1681
+ rgba(255, 255, 255, 0.8),
1682
+ rgba(255, 200, 200, 0.6),
1683
+ #111 60%
1684
+ );
1685
+ mix-blend-mode: overlay;
1686
+ opacity: 0.4;
1687
+ }
1688
+ .lofi {
1689
+ position: relative;
1690
+ -webkit-filter: saturate(1.1) contrast(1.5);
1691
+ filter: saturate(1.1) contrast(1.5);
1692
+ }
1693
+ .lofi:after,
1694
+ .lofi:before {
1695
+ content: "";
1696
+ display: block;
1697
+ height: 100%;
1698
+ width: 100%;
1699
+ top: 0;
1700
+ left: 0;
1701
+ position: absolute;
1702
+ pointer-events: none;
1703
+ }
1704
+ .lofi img {
1705
+ width: 100%;
1706
+ z-index: 1;
1707
+ }
1708
+ .lofi:before {
1709
+ z-index: 2;
1710
+ }
1711
+ .lofi:after {
1712
+ z-index: 3;
1713
+ }
1714
+ .lofi::after {
1715
+ background: -webkit-radial-gradient(circle, transparent 70%, #222 150%);
1716
+ background: radial-gradient(circle, transparent 70%, #222 150%);
1717
+ mix-blend-mode: multiply;
1718
+ }
1719
+ ._1977 {
1720
+ position: relative;
1721
+ -webkit-filter: contrast(1.1) brightness(1.1) saturate(1.3);
1722
+ filter: contrast(1.1) brightness(1.1) saturate(1.3);
1723
+ }
1724
+ ._1977:after,
1725
+ ._1977:before {
1726
+ content: "";
1727
+ display: block;
1728
+ height: 100%;
1729
+ width: 100%;
1730
+ top: 0;
1731
+ left: 0;
1732
+ position: absolute;
1733
+ pointer-events: none;
1734
+ }
1735
+ ._1977 img {
1736
+ width: 100%;
1737
+ z-index: 1;
1738
+ }
1739
+ ._1977:before {
1740
+ z-index: 2;
1741
+ }
1742
+ ._1977:after {
1743
+ z-index: 3;
1744
+ background: rgba(243, 106, 188, 0.3);
1745
+ mix-blend-mode: screen;
1746
+ }
1747
+ .brooklyn {
1748
+ position: relative;
1749
+ -webkit-filter: contrast(0.9) brightness(1.1);
1750
+ filter: contrast(0.9) brightness(1.1);
1751
+ }
1752
+ .brooklyn:after,
1753
+ .brooklyn:before {
1754
+ content: "";
1755
+ display: block;
1756
+ height: 100%;
1757
+ width: 100%;
1758
+ top: 0;
1759
+ left: 0;
1760
+ position: absolute;
1761
+ pointer-events: none;
1762
+ }
1763
+ .brooklyn img {
1764
+ width: 100%;
1765
+ z-index: 1;
1766
+ }
1767
+ .brooklyn:before {
1768
+ z-index: 2;
1769
+ }
1770
+ .brooklyn:after {
1771
+ z-index: 3;
1772
+ }
1773
+ .brooklyn::after {
1774
+ background: -webkit-radial-gradient(
1775
+ circle,
1776
+ rgba(168, 223, 193, 0.4) 70%,
1777
+ #c4b7c8
1778
+ );
1779
+ background: radial-gradient(circle, rgba(168, 223, 193, 0.4) 70%, #c4b7c8);
1780
+ mix-blend-mode: overlay;
1781
+ }
1782
+ .xpro2 {
1783
+ position: relative;
1784
+ -webkit-filter: sepia(0.3);
1785
+ filter: sepia(0.3);
1786
+ }
1787
+ .xpro2:after,
1788
+ .xpro2:before {
1789
+ content: "";
1790
+ display: block;
1791
+ height: 100%;
1792
+ width: 100%;
1793
+ top: 0;
1794
+ left: 0;
1795
+ position: absolute;
1796
+ pointer-events: none;
1797
+ }
1798
+ .xpro2 img {
1799
+ width: 100%;
1800
+ z-index: 1;
1801
+ }
1802
+ .xpro2:before {
1803
+ z-index: 2;
1804
+ }
1805
+ .xpro2:after {
1806
+ z-index: 3;
1807
+ }
1808
+ .xpro2::after {
1809
+ background: -webkit-radial-gradient(
1810
+ circle,
1811
+ #e6e7e0 40%,
1812
+ rgba(43, 42, 161, 0.6) 110%
1813
+ );
1814
+ background: radial-gradient(circle, #e6e7e0 40%, rgba(43, 42, 161, 0.6) 110%);
1815
+ mix-blend-mode: color-burn;
1816
+ }
1817
+ .nashville {
1818
+ position: relative;
1819
+ -webkit-filter: sepia(0.2) contrast(1.2) brightness(1.05) saturate(1.2);
1820
+ filter: sepia(0.2) contrast(1.2) brightness(1.05) saturate(1.2);
1821
+ }
1822
+ .nashville:after,
1823
+ .nashville:before {
1824
+ content: "";
1825
+ display: block;
1826
+ height: 100%;
1827
+ width: 100%;
1828
+ top: 0;
1829
+ left: 0;
1830
+ position: absolute;
1831
+ pointer-events: none;
1832
+ }
1833
+ .nashville img {
1834
+ width: 100%;
1835
+ z-index: 1;
1836
+ }
1837
+ .nashville:before {
1838
+ z-index: 2;
1839
+ }
1840
+ .nashville:after {
1841
+ z-index: 3;
1842
+ }
1843
+ .nashville::after {
1844
+ background: rgba(0, 70, 150, 0.4);
1845
+ mix-blend-mode: lighten;
1846
+ }
1847
+ .nashville::before {
1848
+ background: rgba(247, 176, 153, 0.56);
1849
+ mix-blend-mode: darken;
1850
+ }
1851
+ .lark {
1852
+ position: relative;
1853
+ -webkit-filter: contrast(0.9);
1854
+ filter: contrast(0.9);
1855
+ }
1856
+ .lark:after,
1857
+ .lark:before {
1858
+ content: "";
1859
+ display: block;
1860
+ height: 100%;
1861
+ width: 100%;
1862
+ top: 0;
1863
+ left: 0;
1864
+ position: absolute;
1865
+ pointer-events: none;
1866
+ }
1867
+ .lark img {
1868
+ width: 100%;
1869
+ z-index: 1;
1870
+ }
1871
+ .lark:before {
1872
+ z-index: 2;
1873
+ }
1874
+ .lark:after {
1875
+ z-index: 3;
1876
+ }
1877
+ .lark::after {
1878
+ background: rgba(242, 242, 242, 0.8);
1879
+ mix-blend-mode: darken;
1880
+ }
1881
+ .lark::before {
1882
+ background: #22253f;
1883
+ mix-blend-mode: color-dodge;
1884
+ }
1885
+ .moon {
1886
+ position: relative;
1887
+ -webkit-filter: grayscale(1) contrast(1.1) brightness(1.1);
1888
+ filter: grayscale(1) contrast(1.1) brightness(1.1);
1889
+ }
1890
+ .moon:after,
1891
+ .moon:before {
1892
+ content: "";
1893
+ display: block;
1894
+ height: 100%;
1895
+ width: 100%;
1896
+ top: 0;
1897
+ left: 0;
1898
+ position: absolute;
1899
+ pointer-events: none;
1900
+ }
1901
+ .moon img {
1902
+ width: 100%;
1903
+ z-index: 1;
1904
+ }
1905
+ .moon:before {
1906
+ z-index: 2;
1907
+ }
1908
+ .moon:after {
1909
+ z-index: 3;
1910
+ }
1911
+ .moon::before {
1912
+ background: #a0a0a0;
1913
+ mix-blend-mode: soft-light;
1914
+ }
1915
+ .moon::after {
1916
+ background: #383838;
1917
+ mix-blend-mode: lighten;
1918
+ }
1919
+ .clarendon {
1920
+ position: relative;
1921
+ -webkit-filter: contrast(1.2) saturate(1.35);
1922
+ filter: contrast(1.2) saturate(1.35);
1923
+ }
1924
+ .clarendon:after,
1925
+ .clarendon:before {
1926
+ content: "";
1927
+ display: block;
1928
+ height: 100%;
1929
+ width: 100%;
1930
+ top: 0;
1931
+ left: 0;
1932
+ position: absolute;
1933
+ pointer-events: none;
1934
+ }
1935
+ .clarendon img {
1936
+ width: 100%;
1937
+ z-index: 1;
1938
+ }
1939
+ .clarendon:before {
1940
+ z-index: 2;
1941
+ background: rgba(127, 187, 227, 0.2);
1942
+ mix-blend-mode: overlay;
1943
+ }
1944
+ .clarendon:after {
1945
+ z-index: 3;
1946
+ }
1947
+ .willow {
1948
+ position: relative;
1949
+ -webkit-filter: grayscale(0.5) contrast(0.95) brightness(0.9);
1950
+ filter: grayscale(0.5) contrast(0.95) brightness(0.9);
1951
+ }
1952
+ .willow:after,
1953
+ .willow:before {
1954
+ content: "";
1955
+ display: block;
1956
+ height: 100%;
1957
+ width: 100%;
1958
+ top: 0;
1959
+ left: 0;
1960
+ position: absolute;
1961
+ pointer-events: none;
1962
+ }
1963
+ .willow img {
1964
+ width: 100%;
1965
+ z-index: 1;
1966
+ }
1967
+ .willow:before {
1968
+ z-index: 2;
1969
+ }
1970
+ .willow:after {
1971
+ z-index: 3;
1972
+ }
1973
+ .willow::before {
1974
+ background-color: radial-gradient(40%, circle, #d4a9af 55%, #000 150%);
1975
+ mix-blend-mode: overlay;
1976
+ }
1977
+ .willow::after {
1978
+ background-color: #d8cdcb;
1979
+ mix-blend-mode: color;
1980
+ }
1981
+ .rise {
1982
+ position: relative;
1983
+ -webkit-filter: brightness(1.05) sepia(0.2) contrast(0.9) saturate(0.9);
1984
+ filter: brightness(1.05) sepia(0.2) contrast(0.9) saturate(0.9);
1985
+ }
1986
+ .rise:after,
1987
+ .rise:before {
1988
+ content: "";
1989
+ display: block;
1990
+ height: 100%;
1991
+ width: 100%;
1992
+ top: 0;
1993
+ left: 0;
1994
+ position: absolute;
1995
+ pointer-events: none;
1996
+ }
1997
+ .rise img {
1998
+ width: 100%;
1999
+ z-index: 1;
2000
+ }
2001
+ .rise:before {
2002
+ z-index: 2;
2003
+ }
2004
+ .rise:after {
2005
+ z-index: 3;
2006
+ }
2007
+ .rise::after {
2008
+ background: -webkit-radial-gradient(
2009
+ circle,
2010
+ rgba(232, 197, 152, 0.8),
2011
+ transparent 90%
2012
+ );
2013
+ background: radial-gradient(
2014
+ circle,
2015
+ rgba(232, 197, 152, 0.8),
2016
+ transparent 90%
2017
+ );
2018
+ mix-blend-mode: overlay;
2019
+ opacity: 0.6;
2020
+ }
2021
+ .rise::before {
2022
+ background: -webkit-radial-gradient(
2023
+ circle,
2024
+ rgba(236, 205, 169, 0.15) 55%,
2025
+ rgba(50, 30, 7, 0.4)
2026
+ );
2027
+ background: radial-gradient(
2028
+ circle,
2029
+ rgba(236, 205, 169, 0.15) 55%,
2030
+ rgba(50, 30, 7, 0.4)
2031
+ );
2032
+ mix-blend-mode: multiply;
2033
+ }
2034
+ .slumber {
2035
+ position: relative;
2036
+ -webkit-filter: saturate(0.66) brightness(1.05);
2037
+ filter: saturate(0.66) brightness(1.05);
2038
+ }
2039
+ .slumber:after,
2040
+ .slumber:before {
2041
+ content: "";
2042
+ display: block;
2043
+ height: 100%;
2044
+ width: 100%;
2045
+ top: 0;
2046
+ left: 0;
2047
+ position: absolute;
2048
+ pointer-events: none;
2049
+ }
2050
+ .slumber img {
2051
+ width: 100%;
2052
+ z-index: 1;
2053
+ }
2054
+ .slumber:before {
2055
+ z-index: 2;
2056
+ }
2057
+ .slumber:after {
2058
+ z-index: 3;
2059
+ }
2060
+ .slumber::after {
2061
+ background: rgba(125, 105, 24, 0.5);
2062
+ mix-blend-mode: soft-light;
2063
+ }
2064
+ .slumber::before {
2065
+ background: rgba(69, 41, 12, 0.4);
2066
+ mix-blend-mode: lighten;
2067
+ }
2068
+ .brannan {
2069
+ position: relative;
2070
+ -webkit-filter: sepia(0.5) contrast(1.4);
2071
+ filter: sepia(0.5) contrast(1.4);
2072
+ }
2073
+ .brannan:after,
2074
+ .brannan:before {
2075
+ content: "";
2076
+ display: block;
2077
+ height: 100%;
2078
+ width: 100%;
2079
+ top: 0;
2080
+ left: 0;
2081
+ position: absolute;
2082
+ pointer-events: none;
2083
+ }
2084
+ .brannan img {
2085
+ width: 100%;
2086
+ z-index: 1;
2087
+ }
2088
+ .brannan:before {
2089
+ z-index: 2;
2090
+ }
2091
+ .brannan:after {
2092
+ z-index: 3;
2093
+ }
2094
+ .brannan::after {
2095
+ background-color: rgba(161, 44, 199, 0.31);
2096
+ mix-blend-mode: lighten;
2097
+ }
2098
+ .valencia {
2099
+ position: relative;
2100
+ -webkit-filter: contrast(1.08) brightness(1.08) sepia(0.08);
2101
+ filter: contrast(1.08) brightness(1.08) sepia(0.08);
2102
+ }
2103
+ .valencia:after,
2104
+ .valencia:before {
2105
+ content: "";
2106
+ display: block;
2107
+ height: 100%;
2108
+ width: 100%;
2109
+ top: 0;
2110
+ left: 0;
2111
+ position: absolute;
2112
+ pointer-events: none;
2113
+ }
2114
+ .valencia img {
2115
+ width: 100%;
2116
+ z-index: 1;
2117
+ }
2118
+ .valencia:before {
2119
+ z-index: 2;
2120
+ }
2121
+ .valencia:after {
2122
+ z-index: 3;
2123
+ }
2124
+ .valencia::after {
2125
+ background: #3a0339;
2126
+ mix-blend-mode: exclusion;
2127
+ opacity: 0.5;
2128
+ }
2129
+ .kelvin {
2130
+ position: relative;
2131
+ }
2132
+ .kelvin:after,
2133
+ .kelvin:before {
2134
+ content: "";
2135
+ display: block;
2136
+ height: 100%;
2137
+ width: 100%;
2138
+ top: 0;
2139
+ left: 0;
2140
+ position: absolute;
2141
+ pointer-events: none;
2142
+ }
2143
+ .kelvin img {
2144
+ width: 100%;
2145
+ z-index: 1;
2146
+ }
2147
+ .kelvin:before {
2148
+ z-index: 2;
2149
+ }
2150
+ .kelvin:after {
2151
+ z-index: 3;
2152
+ }
2153
+ .kelvin::after {
2154
+ background: #b77d21;
2155
+ mix-blend-mode: overlay;
2156
+ }
2157
+ .kelvin::before {
2158
+ background: #382c34;
2159
+ mix-blend-mode: color-dodge;
2160
+ }
2161
+ .maven {
2162
+ position: relative;
2163
+ -webkit-filter: sepia(0.25) brightness(0.95) contrast(0.95) saturate(1.5);
2164
+ filter: sepia(0.25) brightness(0.95) contrast(0.95) saturate(1.5);
2165
+ }
2166
+ .maven:after,
2167
+ .maven:before {
2168
+ content: "";
2169
+ display: block;
2170
+ height: 100%;
2171
+ width: 100%;
2172
+ top: 0;
2173
+ left: 0;
2174
+ position: absolute;
2175
+ pointer-events: none;
2176
+ }
2177
+ .maven img {
2178
+ width: 100%;
2179
+ z-index: 1;
2180
+ }
2181
+ .maven:before {
2182
+ z-index: 2;
2183
+ }
2184
+ .maven:after {
2185
+ z-index: 3;
2186
+ background: rgba(3, 230, 26, 0.2);
2187
+ mix-blend-mode: hue;
2188
+ }
2189
+ .stinson {
2190
+ position: relative;
2191
+ -webkit-filter: contrast(0.75) saturate(0.85) brightness(1.15);
2192
+ filter: contrast(0.75) saturate(0.85) brightness(1.15);
2193
+ }
2194
+ .stinson:after,
2195
+ .stinson:before {
2196
+ content: "";
2197
+ display: block;
2198
+ height: 100%;
2199
+ width: 100%;
2200
+ top: 0;
2201
+ left: 0;
2202
+ position: absolute;
2203
+ pointer-events: none;
2204
+ }
2205
+ .stinson img {
2206
+ width: 100%;
2207
+ z-index: 1;
2208
+ }
2209
+ .stinson:before {
2210
+ z-index: 2;
2211
+ }
2212
+ .stinson:after {
2213
+ z-index: 3;
2214
+ }
2215
+ .stinson::before {
2216
+ background: rgba(240, 149, 128, 0.2);
2217
+ mix-blend-mode: soft-light;
2218
+ }
2219
+ .blackwhite {
2220
+ -webkit-filter: grayscale(100%);
2221
+ filter: grayscale(100%);
2222
+ }
2223
 
2224
  /* mailoptin upsell dialog */
2225
  .csmm-mailoptin-upsell-dialog .ui-dialog-titlebar {
2318
 
2319
  #support-hero .button {
2320
  color: #fff;
2321
+ background: #ec414d;
2322
  padding: 15px 10px;
2323
  margin: 0px 0 10px 0;
2324
  text-align: center;
2340
  margin-left: 14px;
2341
  line-height: 150%;
2342
  }
2343
+
2344
+ #tab-pro label {
2345
+ vertical-align: inherit;
2346
+ font-weight: 500;
2347
+ min-width: 95px;
2348
+ display: inline-block;
2349
+ padding: 2px 0;
2350
+ }
framework/admin/css/sweetalert2.min.css ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /*
2
+ SweetAlert2
3
+ https://github.com/sweetalert2/sweetalert2
4
+ MIT License
5
+ */
6
+ .swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:"";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar{position:absolute;bottom:0;left:0;width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-webkit-input-placeholder,.swal2-input::-webkit-input-placeholder,.swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}
framework/admin/img/anim_logo.gif ADDED
Binary file
framework/admin/img/themes/pro/aeroplane-company.jpg CHANGED
Binary file
framework/admin/img/themes/pro/air-balloon.jpg CHANGED
Binary file
framework/admin/img/themes/pro/animated-clock.jpg CHANGED
Binary file
framework/admin/img/themes/pro/architecture-inc.jpg CHANGED
Binary file
framework/admin/img/themes/pro/architecture.jpg CHANGED
Binary file
framework/admin/img/themes/pro/art-gallery.jpg CHANGED
Binary file
framework/admin/img/themes/pro/auto-service.jpg CHANGED
Binary file
framework/admin/img/themes/pro/bakery.jpg CHANGED
Binary file
framework/admin/img/themes/pro/banking-app.jpg ADDED
Binary file
framework/admin/img/themes/pro/beach.jpg CHANGED
Binary file
framework/admin/img/themes/pro/bicycle-race.jpg CHANGED
Binary file
framework/admin/img/themes/pro/bike-shop.jpg CHANGED
Binary file
framework/admin/img/themes/pro/bitcoin-miners.jpg CHANGED
Binary file
framework/admin/img/themes/pro/black-friday.jpg CHANGED
Binary file
framework/admin/img/themes/pro/blogging.jpg CHANGED
Binary file
framework/admin/img/themes/pro/blue-ocean.jpg CHANGED
Binary file
framework/admin/img/themes/pro/body-transformation.jpg CHANGED
Binary file
framework/admin/img/themes/pro/bodybuilding.jpg ADDED
Binary file
framework/admin/img/themes/pro/book-lovers.jpg CHANGED
Binary file
framework/admin/img/themes/pro/business-company.jpg CHANGED
Binary file
framework/admin/img/themes/pro/business-consulting-video.jpg ADDED
Binary file
framework/admin/img/themes/pro/business-consulting.jpg ADDED
Binary file
framework/admin/img/themes/pro/business-launch.jpg ADDED
Binary file
framework/admin/img/themes/pro/business-meeting-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/business.jpg CHANGED
Binary file
framework/admin/img/themes/pro/cafe.jpg CHANGED
Binary file
framework/admin/img/themes/pro/chatbot.jpg ADDED
Binary file
framework/admin/img/themes/pro/christmas-decor.jpg CHANGED
Binary file
framework/admin/img/themes/pro/church.jpg CHANGED
Binary file
framework/admin/img/themes/pro/city-nighttime.jpg CHANGED
Binary file
framework/admin/img/themes/pro/cityscape.jpg CHANGED
Binary file
framework/admin/img/themes/pro/clothing-trends.jpg ADDED
Binary file
framework/admin/img/themes/pro/clouds-screensaver-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/coffee-shop.jpg CHANGED
Binary file
framework/admin/img/themes/pro/cold-lake.jpg CHANGED
Binary file
framework/admin/img/themes/pro/computer-repair-service.jpg CHANGED
Binary file
framework/admin/img/themes/pro/concert.jpg CHANGED
Binary file
framework/admin/img/themes/pro/conference-event.jpg CHANGED
Binary file
framework/admin/img/themes/pro/construction-company.jpg CHANGED
Binary file
framework/admin/img/themes/pro/creative-design.jpg CHANGED
Binary file
framework/admin/img/themes/pro/custom-decor.jpg CHANGED
Binary file
framework/admin/img/themes/pro/cyber-security.jpg ADDED
Binary file
framework/admin/img/themes/pro/default.jpg CHANGED
Binary file
framework/admin/img/themes/pro/dental-clinic.jpg CHANGED
Binary file
framework/admin/img/themes/pro/digital-agency.jpg ADDED
Binary file
framework/admin/img/themes/pro/dog-shelter.jpg CHANGED
Binary file
framework/admin/img/themes/pro/dog-training-and-behavior-consulting.jpg CHANGED
Binary file
framework/admin/img/themes/pro/donation.jpg ADDED
Binary file
framework/admin/img/themes/pro/ecommerce.jpg ADDED
Binary file
framework/admin/img/themes/pro/employment.jpg CHANGED
Binary file
framework/admin/img/themes/pro/essay-writing-service.jpg CHANGED
Binary file
framework/admin/img/themes/pro/fall-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/fashion.jpg CHANGED
Binary file
framework/admin/img/themes/pro/financial-counselling.jpg ADDED
Binary file
framework/admin/img/themes/pro/financial-district.jpg CHANGED
Binary file
framework/admin/img/themes/pro/fitness-e-shop.jpg CHANGED
Binary file
framework/admin/img/themes/pro/florium.jpg ADDED
Binary file
framework/admin/img/themes/pro/flower-shop.jpg CHANGED
Binary file
framework/admin/img/themes/pro/food-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/food-store.jpg ADDED
Binary file
framework/admin/img/themes/pro/foodie.jpg ADDED
Binary file
framework/admin/img/themes/pro/football.jpg CHANGED
Binary file
framework/admin/img/themes/pro/frozen-nature.jpg CHANGED
Binary file
framework/admin/img/themes/pro/future-technology.jpg CHANGED
Binary file
framework/admin/img/themes/pro/graphic-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/greenlife.jpg CHANGED
Binary file
framework/admin/img/themes/pro/halloween.jpg CHANGED
Binary file
framework/admin/img/themes/pro/healthy-eating.jpg CHANGED
Binary file
framework/admin/img/themes/pro/hexagons-video.jpg ADDED
Binary file
framework/admin/img/themes/pro/holiday-resort.jpg CHANGED
Binary file
framework/admin/img/themes/pro/home-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/homemade-chocolate-gifts.jpg CHANGED
Binary file
framework/admin/img/themes/pro/hosting.jpg CHANGED
Binary file
framework/admin/img/themes/pro/ice-cream-shop.jpg CHANGED
Binary file
framework/admin/img/themes/pro/in-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/inspy-romance.jpg CHANGED
Binary file
framework/admin/img/themes/pro/interior-design.jpg CHANGED
Binary file
framework/admin/img/themes/pro/it-conference.jpg CHANGED
Binary file
framework/admin/img/themes/pro/journey-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/keyword-research.jpg ADDED
Binary file
framework/admin/img/themes/pro/kids-center.jpg ADDED
Binary file
framework/admin/img/themes/pro/kids-innovation-program.jpg CHANGED
Binary file
framework/admin/img/themes/pro/ladies-accessories.jpg CHANGED
Binary file
framework/admin/img/themes/pro/lego-bricks.jpg CHANGED
Binary file
framework/admin/img/themes/pro/loneliness.jpg CHANGED
Binary file
framework/admin/img/themes/pro/lonely-road.jpg CHANGED
Binary file
framework/admin/img/themes/pro/luxury-car.jpg CHANGED
Binary file
framework/admin/img/themes/pro/maintenance-mode.jpg CHANGED
Binary file
framework/admin/img/themes/pro/makeup-artist-training.jpg CHANGED
Binary file
framework/admin/img/themes/pro/marketing-webinar.jpg ADDED
Binary file
framework/admin/img/themes/pro/metrics-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/misty-forest-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/mobile-app.jpg ADDED
Binary file
framework/admin/img/themes/pro/mobile-designer.jpg CHANGED
Binary file
framework/admin/img/themes/pro/mobile-meeting.jpg CHANGED
Binary file
framework/admin/img/themes/pro/modern-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/modern-office.jpg CHANGED
Binary file
framework/admin/img/themes/pro/modern-recipes.jpg CHANGED
Binary file
framework/admin/img/themes/pro/mountain-slide.jpg CHANGED
Binary file
framework/admin/img/themes/pro/mountain.jpg CHANGED
Binary file
framework/admin/img/themes/pro/movie-trailer-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/music.jpg CHANGED
Binary file
framework/admin/img/themes/pro/nature.jpg CHANGED
Binary file
framework/admin/img/themes/pro/non-profit-organization.jpg ADDED
Binary file
framework/admin/img/themes/pro/nutritionist.jpg ADDED
Binary file
framework/admin/img/themes/pro/office-meeting-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/office-theme.jpg CHANGED
Binary file
framework/admin/img/themes/pro/online-food-delivery.jpg ADDED
Binary file
framework/admin/img/themes/pro/online-learning.jpg CHANGED
Binary file
framework/admin/img/themes/pro/online-shopping.jpg CHANGED
Binary file
framework/admin/img/themes/pro/organic-cosmetics.jpg CHANGED
Binary file
framework/admin/img/themes/pro/pancake-house.jpg CHANGED
Binary file
framework/admin/img/themes/pro/parenting.jpg CHANGED
Binary file
framework/admin/img/themes/pro/passage.jpg CHANGED
Binary file
framework/admin/img/themes/pro/peaceful-river.jpg CHANGED
Binary file
framework/admin/img/themes/pro/personal-trainer.jpg CHANGED
Binary file
framework/admin/img/themes/pro/photo-studio.jpg ADDED
Binary file
framework/admin/img/themes/pro/photography.jpg CHANGED
Binary file
framework/admin/img/themes/pro/plumbing.jpg CHANGED
Binary file
framework/admin/img/themes/pro/podcast.jpg CHANGED
Binary file
framework/admin/img/themes/pro/portfolio.jpg ADDED
Binary file
framework/admin/img/themes/pro/restaurant.jpg CHANGED
Binary file
framework/admin/img/themes/pro/romantic-travels.jpg CHANGED
Binary file
framework/admin/img/themes/pro/running-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/running-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/scholar-university.jpg CHANGED
Binary file
framework/admin/img/themes/pro/seo-digital-marketing.jpg CHANGED
Binary file
framework/admin/img/themes/pro/shoes-store.jpg CHANGED
Binary file
framework/admin/img/themes/pro/simple-beige-design.jpg CHANGED
Binary file
framework/admin/img/themes/pro/skin-care.jpg ADDED
Binary file
framework/admin/img/themes/pro/skincare.jpg CHANGED
Binary file
framework/admin/img/themes/pro/snow-screensaver-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/snowboarding-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/snowy-mountain.jpg CHANGED
Binary file
framework/admin/img/themes/pro/snowy-oasis.jpg CHANGED
Binary file
framework/admin/img/themes/pro/social-media-service.jpg CHANGED
Binary file
framework/admin/img/themes/pro/social-media.jpg ADDED
Binary file
framework/admin/img/themes/pro/spa-beauty-studio.jpg CHANGED
Binary file
framework/admin/img/themes/pro/spa.jpg CHANGED
Binary file
framework/admin/img/themes/pro/spring-sale.jpg ADDED
Binary file
framework/admin/img/themes/pro/spring.jpg CHANGED
Binary file
framework/admin/img/themes/pro/startup.jpg CHANGED
Binary file
framework/admin/img/themes/pro/statistics-survey.jpg ADDED
Binary file
framework/admin/img/themes/pro/studio-design.jpg ADDED
Binary file
framework/admin/img/themes/pro/stylish-workplace.jpg CHANGED
Binary file
framework/admin/img/themes/pro/tattoo-studio.jpg ADDED
Binary file
framework/admin/img/themes/pro/tech.jpg ADDED
Binary file
framework/admin/img/themes/pro/techexpo.jpg CHANGED
Binary file
framework/admin/img/themes/pro/technology.jpg CHANGED
Binary file
framework/admin/img/themes/pro/telecommunication.jpg CHANGED
Binary file
framework/admin/img/themes/pro/the-big-city-newsletter.jpg CHANGED
Binary file
framework/admin/img/themes/pro/the-sunny-view.jpg CHANGED
Binary file
framework/admin/img/themes/pro/theatre.jpg CHANGED
Binary file
framework/admin/img/themes/pro/travel-agency.jpg CHANGED
Binary file
framework/admin/img/themes/pro/travel-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/tulips.jpg CHANGED
Binary file
framework/admin/img/themes/pro/valentines-day.jpg CHANGED
Binary file
framework/admin/img/themes/pro/video-production.jpg CHANGED
Binary file
framework/admin/img/themes/pro/virtual-assistant-service.jpg CHANGED
Binary file
framework/admin/img/themes/pro/virtual-reality.jpg ADDED
Binary file
framework/admin/img/themes/pro/walking-away-video.jpg CHANGED
Binary file
framework/admin/img/themes/pro/web-security.jpg ADDED
Binary file
framework/admin/img/themes/pro/webinar.jpg CHANGED
Binary file
framework/admin/img/themes/pro/wedding-blog.jpg CHANGED
Binary file
framework/admin/img/themes/pro/wedding.jpg ADDED
Binary file
framework/admin/img/themes/pro/white-orchids.jpg CHANGED
Binary file
framework/admin/img/themes/pro/winter-sale.jpg ADDED
Binary file
framework/admin/img/themes/pro/working-out.jpg CHANGED
Binary file
framework/admin/img/themes/pro/workplace.jpg CHANGED
Binary file
framework/admin/img/themes/pro/writing-service-video.jpg CHANGED
Binary file
framework/admin/init.php CHANGED
@@ -9,36 +9,37 @@
9
  */
10
 
11
  if (!defined('WPINC')) {
12
- die;
13
  }
14
 
15
- function csmm_add_menu() {
16
- if(current_user_can('administrator')) {
17
- // Adding to the plugin panel link to the settings menu
18
- $signals_csmm_menu = add_options_page (
19
- __( 'Minimal Coming Soon & Maintenance Mode', 'signals' ),
20
- __( 'Maintenance Mode', 'signals' ),
21
- 'manage_options',
22
- 'maintenance_mode_options',
23
- 'csmm_admin_settings'
24
- );
25
-
26
- // Loading the JS conditionally
27
- add_action( 'load-' . $signals_csmm_menu, 'csmm_load_scripts' );
28
- add_action( 'admin_action_csmm_install_mailoptin', 'csmm_install_mailoptin' );
29
- }
30
-
31
  }
32
- add_action( 'admin_menu', 'csmm_add_menu' );
33
 
34
 
35
- function csmm_is_plugin_installed( $slug ) {
36
- if ( ! function_exists( 'get_plugins' ) ) {
 
37
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
38
  }
39
  $all_plugins = get_plugins();
40
 
41
- if ( !empty( $all_plugins[$slug] ) ) {
42
  return true;
43
  } else {
44
  return false;
@@ -46,52 +47,55 @@ function csmm_is_plugin_installed( $slug ) {
46
  }
47
 
48
 
49
- function csmm_featured_plugins_tab($args) {
 
50
  add_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);
51
 
52
  return $args;
53
- } // featured_plugins_tab
54
 
55
- function csmm_add_plugin_favs($plugin_slug, $res) {
 
56
  // check if plugin is already on the list
57
  if (!empty($res->plugins) && is_array($res->plugins)) {
58
- foreach ($res->plugins as $plugin) {
59
- if (is_object($plugin) && !empty($plugin->slug) && $plugin->slug == $plugin_slug) {
60
- return $res;
61
- }
62
- } // foreach
63
  }
64
 
65
  $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug);
66
 
67
  if (!$plugin_info) {
68
- $plugin_info = plugins_api('plugin_information', array(
69
- 'slug' => $plugin_slug,
70
- 'is_ssl' => is_ssl(),
71
- 'fields' => array(
72
- 'banners' => true,
73
- 'reviews' => true,
74
- 'downloaded' => true,
75
- 'active_installs' => true,
76
- 'icons' => true,
77
- 'short_description' => true,
78
- )
79
- ));
80
- if (!is_wp_error($plugin_info) && is_object($plugin_info)) {
81
- set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7);
82
- }
83
  }
84
 
85
  if (!empty($res->plugins) && is_array($res->plugins) && $plugin_info && is_object($plugin_info)) {
86
- array_unshift($res->plugins, $plugin_info);
87
  }
88
 
89
  return $res;
90
- } // csmm_add_plugins_favs
91
 
92
 
93
- // add our plugins to recommended list
94
- function csmm_plugins_api_result($res, $action, $args) {
 
95
  remove_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);
96
 
97
  $res = csmm_add_plugin_favs('wp-force-ssl', $res);
@@ -99,207 +103,224 @@ function csmm_is_plugin_installed( $slug ) {
99
  $res = csmm_add_plugin_favs('eps-301-redirects', $res);
100
 
101
  return $res;
102
- } // plugins_api_result
103
 
104
 
105
  // disabled till further notice
106
- function csmm_chat_available() {
107
- if (0 && date('Y-m-d') >= '2018-10-01' && date('Y-m-d') <= '2018-10-14') {
108
- return true;
109
- } else {
110
- return false;
111
- }
 
112
  } // csmm_chat_available
113
 
114
  // enqueue JS and CSS files
115
- function csmm_admin_scripts() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
- wp_register_style( 'csmm-admin-base', CSMM_URL . '/framework/admin/css/admin.css', false, csmm_get_plugin_version() );
 
118
 
119
- wp_register_script('csmm-webfonts', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js', false );
120
- wp_register_script('csmm-admin-editor', CSMM_URL . '/framework/admin/js/editor/ace.js', false, csmm_get_plugin_version(), true );
121
- wp_register_script('csmm-admin-color', CSMM_URL . '/framework/admin/js/colorpicker/jscolor.js', false, csmm_get_plugin_version(), true );
122
- wp_register_script('csmm-admin-plugins', CSMM_URL . '/framework/admin/js/plugins.js', 'jquery', csmm_get_plugin_version(), true);
123
- wp_register_script('csmm-admin-base', CSMM_URL . '/framework/admin/js/admin.js', 'jquery', csmm_get_plugin_version(), true);
124
-
125
- $mm_js_vars = array(
126
- 'mm_url' => 'https://assets.comingsoonwp.com/free-backgrounds/',
127
- 'mm_base_url' => CSMM_URL,
128
- 'mm_notice_nonce' => wp_create_nonce('csmm_notice_nonce'),
129
- 'mm_mo_title' => '<img alt="' . __('MailOptin', 'signals') . '" title="' . __('MailOptin', 'signals') . '" src="' . CSMM_URL . '/framework/admin/img/mailoptin-logo-white.png' . '">',
130
- 'mm_mo_install_url' => add_query_arg( array('action' => 'csmm_install_mailoptin'), admin_url('admin.php') ),
131
- 'mm_images' => array('ad_themes.png', 'joshua-coleman-1476380-unsplash.jpg', 'joshua-coleman-623077-unsplash.jpg', 'samuel-zeller-379406-unsplash.jpg', 'ad_more-images.png', 'william-daigneault-733670-unsplash.jpg', 'yuriy-bogdanov-428617-unsplash.jpg', 'john-cobb-13961-unsplash.jpg', 'aaron-burden-189321-unsplash.jpg', 'alberto-restifo-4510-unsplash.jpg', 'amy-humphries-227515-unsplash.jpg', 'anders-jilden-89745-unsplash.jpg', 'art-by-lonfeldt-1064207-unsplash.jpg', 'brenda-godinez-229718-unsplash.jpg', 'ad_more-images.png', 'brooke-lark-229136-unsplash.jpg', 'carmine-de-fazio-31543-unsplash.jpg', 'denys-nevozhai-100695-unsplash.jpg', 'dustin-lee-19667-unsplash.jpg', 'elena-prokofyeva-17909-unsplash.jpg', 'fezbot2000-278419-unsplash.jpg', 'glenn-carstens-peters-190592-unsplash.jpg', 'greg-rakozy-38802-unsplash.jpg', 'henry-be-99471-unsplash.jpg', 'hoach-le-dinh-91879-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'ian-schneider-108618-unsplash.jpg', 'jakub-sejkora-42069-unsplash.jpg', 'jesus-kiteque-224069-unsplash.jpg', 'joanna-kosinska-44214-unsplash.jpg', 'jonathan-bean-37632-unsplash.jpg', 'ad_themes.png', 'kimon-maritz-193428-unsplash.jpg', 'matthew-henry-49707-unsplash.jpg', 'ng-32703-unsplash.jpg', 'nitish-meena-37745-unsplash.jpg', 'osman-rana-1064081-unsplash.jpg', 'patrick-tomasso-208114-unsplash.jpg', 'patrick-tomasso-71909-unsplash.jpg', 'pawel-czerwinski-1060762-unsplash.jpg', 'rachael-gorjestani-282049-unsplash.jpg', 'rawpixel-191102-unsplash.jpg', 'sarah-dorweiler-211779-unsplash.jpg', 'stefan-stefancik-105374-unsplash.jpg', 'steven-wei-124690-unsplash.jpg', 'sunrise-1756274.jpg', 'teddy-kelley-106391-unsplash.jpg', 'thought-catalog-214785-unsplash.jpg', 'ad_custom-image.png', 'brooke-lark-356767-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'jeremy-bishop-334996-unsplash.jpg', 'martin-reisch-185835-unsplash.jpg', 'simon-matzinger-320332-unsplash.jpg', 'trevor-cole-393228-unsplash.jpg', 'verne-ho-237626-unsplash.jpg', 'ad_more-images.png','annie-spratt-1369965-unsplash.jpg', 'jonathan-borba-1339221-unsplash.jpg', 'lana-guillemet-1373193-unsplash.jpg', 'nazar-sharafutdinov-1373782-unsplash.jpg', 'pawel-czerwinski-1373010-unsplash.jpg', 'fancycrave-284224-unsplash.jpg', 'joshua-coleman-1394520-unsplash.jpg', 'robert-bye-103196-unsplash.jpg', 'tim-patch-1020411-unsplash.jpg', 'william-daigneault-691488-unsplash.jpg'),
132
- );
133
- wp_localize_script( 'csmm-admin-base', 'mm_js_vars', $mm_js_vars );
134
-
135
- wp_enqueue_style( 'csmm-admin-base' );
136
-
137
- wp_enqueue_script( 'csmm-webfonts' );
138
- wp_enqueue_script( 'csmm-admin-editor' );
139
- wp_enqueue_script( 'csmm-admin-color' );
140
- wp_enqueue_script( 'csmm-admin-plugins' );
141
- wp_enqueue_script( 'csmm-admin-base' );
142
-
143
- wp_enqueue_style('wp-jquery-ui-dialog');
144
- wp_enqueue_script('jquery-ui-dialog');
145
-
146
- // For the upload option using media uploader
147
- wp_enqueue_media();
148
  }
149
 
150
 
151
  // Scripts & styles for the plugin
152
- function csmm_load_scripts() {
153
- add_action( 'admin_enqueue_scripts', 'csmm_admin_scripts' );
 
154
  }
155
 
156
 
157
  // add settings link to plugins page
158
- function csmm_plugin_action_links($links) {
159
- $settings_link = '<a href="' . admin_url('options-general.php?page=maintenance_mode_options') . '" title="Minimal Coming Soon &amp; Maintenance Mode Settings">Settings</a>';
 
160
 
161
- array_unshift($links, $settings_link);
162
 
163
- return $links;
164
  } // csmm_plugin_action_links
165
 
166
 
167
  // add links to plugin's description in plugins table
168
- function csmm_plugin_meta_links($links, $file) {
169
- $support_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode" title="Get help">Support</a>';
170
- $rate_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?filter=5#new-post" title="Let others know how you like the plugin">Rate the plugin ★★★★★</a>';
171
-
172
- if ($file == CSMM_BASENAME) {
173
- $links[] = $support_link;
174
- $links[] = $rate_link;
175
- }
 
176
 
177
- return $links;
178
  } // csmm_plugin_meta_links
179
 
180
 
181
  // permanently dismiss a pointer
182
- function csmm_dismiss_pointer_ajax() {
183
- check_ajax_referer('csmm_dismiss_pointer');
 
184
 
185
- $disabled_pointers = get_option(CSMM_POINTERS);
186
- $pointer = trim(sanitize_key($_POST['pointer']));
187
 
188
- $disabled_pointers[$pointer] = true;
189
- update_option(CSMM_POINTERS, $disabled_pointers);
190
 
191
- wp_send_json_success();
192
  } // dismiss_pointer_ajax
193
 
194
 
195
  // reset all pointers to default state - visible
196
- function csmm_get_pointers() {
197
- $pointers = array();
 
198
 
199
- $pointers['welcome'] = array('target' => '#menu-settings', 'edge' => 'left', 'align' => 'right', 'content' => 'Thank you for installing the <b style="font-weight: 800;">Minimal Coming Soon &amp; Maintenance Mode</b> plugin! Please open <a href="' . admin_url('options-general.php?page=maintenance_mode_options'). '">Settings - Maintenance Mode</a> to create a beautiful coming soon or maintenance mode page.');
200
- $pointers['getting_started'] = array('target' => '#main-status', 'edge' => 'bottom', 'align' => 'left', 'content' => 'Make sure you <b>enable Maintenance Mode</b> so it\'s visible to your visitors. If you just want to preview it, use the preview button on the bottom of the page.');
201
 
202
- return $pointers;
203
  } // csmm_get_pointers
204
 
205
 
206
- function csmm_enqueue_pointers($hook) {
207
- $pointers = array();
208
- $all_pointers = csmm_get_pointers();
209
- $disabled_pointers = get_option(CSMM_POINTERS);
210
-
211
- // auto remove welcome pointer when options are opened
212
- // disabled
213
- if (false && empty($disabled_pointers['welcome']) && 'settings_page_maintenance_mode_options' == $hook) {
214
- $disabled_pointers['welcome'] = true;
215
- update_option(CSMM_POINTERS, $disabled_pointers);
216
- }
217
 
218
- // temp remove
219
- if ('settings_page_maintenance_mode_options' == $hook) {
220
- $disabled_pointers['welcome'] = true;
221
- }
 
 
222
 
223
- foreach ($all_pointers as $tmp_key => $tmp_val) {
224
- if (empty($disabled_pointers[$tmp_key])) {
225
- $pointers[$tmp_key] = $tmp_val;
226
  }
227
- } // foreach
228
 
229
- if (empty($pointers)) {
230
- return;
231
- }
 
 
 
 
 
 
232
 
233
- $pointers['_nonce_dismiss_pointer'] = wp_create_nonce('csmm_dismiss_pointer');
234
- wp_enqueue_script('wp-pointer');
235
- wp_enqueue_script('csmm-pointers', CSMM_URL . '/framework/admin/js/pointers.js', array('jquery'), csmm_get_plugin_version(), true);
236
- wp_enqueue_style('wp-pointer');
237
- wp_localize_script('wp-pointer', 'csmm_pointers', $pointers);
238
  } // csmm_enqueue_pointers
239
 
240
 
241
- function csmm_plugin_admin_init() {
242
- if (!is_admin()) {
243
- return;
244
- }
 
245
 
246
- $meta = get_option('signals_csmm_meta', array());
247
- if (!isset($meta['first_version']) || !isset($meta['first_install'])) {
248
- $meta['first_version'] = csmm_get_plugin_version();
249
- $meta['first_install_gmt'] = time();
250
- $meta['first_install'] = current_time('timestamp');
251
- update_option('signals_csmm_meta', $meta);
252
- }
 
 
 
253
 
254
- add_filter('plugin_action_links_' . CSMM_BASENAME, 'csmm_plugin_action_links');
255
- add_filter('plugin_row_meta', 'csmm_plugin_meta_links', 10, 2);
256
 
257
- add_action('admin_enqueue_scripts', 'csmm_enqueue_pointers', 100, 1);
258
 
259
- add_action('admin_action_csmm_activate_theme', 'csmm_activate_theme');
260
 
261
- add_filter('install_plugins_table_api_args_featured', 'csmm_featured_plugins_tab');
262
  } // csmm_plugin_admin_init
263
 
264
- add_action( 'init', 'csmm_plugin_admin_init' );
265
 
266
  // Including file for the management panel
267
  require_once CSMM_PATH . 'framework/admin/settings.php';
268
 
269
- function csmm_create_select_options($options, $selected = null, $output = true) {
 
270
  $out = "\n";
271
 
272
- if(!is_array($selected)) {
273
- $selected = array($selected);
274
  }
275
 
276
  foreach ($options as $tmp) {
277
- $data = '';
278
- if (isset($tmp['disabled'])) {
279
- $data .= ' disabled="disabled" ';
280
- }
281
- if (in_array($tmp['val'], $selected)) {
282
- $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
283
- } else {
284
- $out .= "<option value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
285
- }
286
  } // foreach
287
 
288
  if ($output) {
289
- echo $out;
290
  } else {
291
- return $out;
292
  }
293
- } // csmm_create_select_options
294
 
295
 
296
- function csmm_activate_theme() {
 
297
  if (!current_user_can('administrator')) {
298
- wp_die('You don\'t have privileges to run this action.');
299
  }
300
 
301
  if (false == wp_verify_nonce(@$_GET['_wpnonce'], 'csmm_activate_theme')) {
302
- wp_die('Please click back, reload the page and try to activate the theme again.');
303
  }
304
 
305
  $themes = array();
@@ -307,116 +328,117 @@ function csmm_activate_theme() {
307
  $settings = csmm_get_options();
308
 
309
  $themes['default'] = array(
310
- 'header_text' => 'Our site is coming soon',
311
- '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!',
312
- 'antispam_text' => 'And yes, we hate spam too!',
313
- 'arrange' => 'logo,header,secondary,form,html',
314
- 'logo' => CSMM_URL . '/framework/public/img/mm-logo.png',
315
- 'favicon' => CSMM_URL . '/framework/public/img/mm-favicon.png',
316
- 'bg_cover' => CSMM_URL . '/framework/public/img/mountain-bg.jpg',
317
- 'content_overlay' => 1,
318
- 'content_width' => '600',
319
- 'bg_color' => 'FFFFFF',
320
- 'content_position' => 'center',
321
- 'content_alignment' => 'left',
322
- 'header_font' => 'Karla',
323
- 'secondary_font' => 'Karla',
324
- 'header_font_size' => '28',
325
- 'secondary_font_size' => '14',
326
- 'header_font_color' => 'FFFFFF',
327
- 'secondary_font_color' => 'FFFFFF',
328
- 'antispam_font_size' => '13',
329
- 'antispam_font_color' => 'BBBBBB',
330
- 'input_text' => 'Enter your best email address',
331
- 'button_text' => 'Subscribe',
332
- 'ignore_form_styles' => 1,
333
- 'input_font_size' => '13',
334
- 'button_font_size' => '12',
335
- 'input_font_color' => 'FFFFFF',
336
- 'button_font_color' => 'FFFFFF',
337
- 'input_bg' => '',
338
- 'button_bg' => '0F0F0F',
339
- 'input_bg_hover' => '',
340
- 'button_bg_hover' => '0A0A0A',
341
- 'input_border' => 'EEEEEE',
342
- 'button_border' => '0F0F0F',
343
- 'input_border_hover' => 'BBBBBB',
344
- 'button_border_hover' => '0A0A0A',
345
- 'success_background' => '90C695',
346
- 'success_color' => 'FFFFFF',
347
- 'error_background' => 'E08283',
348
- 'error_color' => 'FFFFFF',
349
- 'disable_settings' => '2',
350
- 'custom_html' => '',
351
- 'custom_css' => ''
352
  );
353
 
354
  $themes['minimal'] = array(
355
- 'header_text' => 'Maintenance Mode',
356
- '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!',
357
- 'antispam_text' => 'And yes, we hate spam too!',
358
- 'arrange' => 'logo,header,secondary,form,html',
359
- 'logo' => CSMM_URL . '/framework/public/img/mm-logo.png',
360
- 'favicon' => CSMM_URL . '/framework/public/img/mm-favicon.png',
361
- 'bg_cover' => '',
362
- 'content_overlay' => 0,
363
- 'content_width' => '600',
364
- 'bg_color' => 'FFFFFF',
365
- 'content_position' => 'center',
366
- 'content_alignment' => 'left',
367
- 'header_font' => 'Karla',
368
- 'secondary_font' => 'Karla',
369
- 'header_font_size' => '28',
370
- 'secondary_font_size' => '14',
371
- 'header_font_color' => '111111',
372
- 'secondary_font_color' => '111111',
373
- 'antispam_font_size' => '13',
374
- 'antispam_font_color' => 'BBBBBB',
375
- 'input_text' => 'Enter your best email address',
376
- 'button_text' => 'Subscribe',
377
- 'ignore_form_styles' => 1,
378
- 'input_font_size' => '13',
379
- 'button_font_size' => '12',
380
- 'input_font_color' => '111111',
381
- 'button_font_color' => 'FFFFFF',
382
- 'input_bg' => '',
383
- 'button_bg' => '0F0F0F',
384
- 'input_bg_hover' => '',
385
- 'button_bg_hover' => '0A0A0A',
386
- 'input_border' => 'EEEEEE',
387
- 'button_border' => '0F0F0F',
388
- 'input_border_hover' => 'BBBBBB',
389
- 'button_border_hover' => '0A0A0A',
390
- 'success_background' => '90C695',
391
- 'success_color' => '111111',
392
- 'error_background' => 'E08283',
393
- 'error_color' => '111111',
394
- 'disable_settings' => '2',
395
- 'custom_html' => '',
396
- 'custom_css' => '.logo { filter: grayscale(100%); } .logo-container { text-align: left; }'
397
  );
398
 
399
 
400
  if (empty($themes[$theme])) {
401
- set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>Error loading theme! Theme data not found. Please contact support.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
402
  } else {
403
- $settings = array_merge($settings, $themes[$theme]);
404
- update_option('signals_csmm_options', $settings);
405
 
406
- set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>' . ucfirst($theme) . ' theme has been activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
407
  }
408
 
409
  if (!empty($_GET['redirect'])) {
410
- wp_safe_redirect(esc_url($_GET['redirect']));
411
  } else {
412
- wp_safe_redirect(admin_url());
413
  }
414
 
415
  exit;
416
- } // activate_theme
417
 
418
 
419
- function csmm_export_settings() {
 
420
  $filename = str_replace(array('http://', 'https://'), '', home_url());
421
  $filename = str_replace(array('/', '\\', '.'), '-', $filename);
422
  $filename .= '-' . date('Y-m-d') . '-csmm.txt';
@@ -440,4 +462,4 @@ function csmm_export_settings() {
440
 
441
  echo $out;
442
  exit;
443
- } // export_settings
9
  */
10
 
11
  if (!defined('WPINC')) {
12
+ die;
13
  }
14
 
15
+ function csmm_add_menu()
16
+ {
17
+ if (current_user_can('administrator')) {
18
+ // Adding to the plugin panel link to the settings menu
19
+ $signals_csmm_menu = add_options_page(
20
+ __('Minimal Coming Soon & Maintenance Mode', 'signals'),
21
+ __('Maintenance Mode', 'signals'),
22
+ 'manage_options',
23
+ 'maintenance_mode_options',
24
+ 'csmm_admin_settings'
25
+ );
26
+
27
+ // Loading the JS conditionally
28
+ add_action('load-' . $signals_csmm_menu, 'csmm_load_scripts');
29
+ add_action('admin_action_csmm_install_mailoptin', 'csmm_install_mailoptin');
30
+ }
31
  }
32
+ add_action('admin_menu', 'csmm_add_menu');
33
 
34
 
35
+ function csmm_is_plugin_installed($slug)
36
+ {
37
+ if (!function_exists('get_plugins')) {
38
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
39
  }
40
  $all_plugins = get_plugins();
41
 
42
+ if (!empty($all_plugins[$slug])) {
43
  return true;
44
  } else {
45
  return false;
47
  }
48
 
49
 
50
+ function csmm_featured_plugins_tab($args)
51
+ {
52
  add_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);
53
 
54
  return $args;
55
+ } // featured_plugins_tab
56
 
57
+ function csmm_add_plugin_favs($plugin_slug, $res)
58
+ {
59
  // check if plugin is already on the list
60
  if (!empty($res->plugins) && is_array($res->plugins)) {
61
+ foreach ($res->plugins as $plugin) {
62
+ if (is_object($plugin) && !empty($plugin->slug) && $plugin->slug == $plugin_slug) {
63
+ return $res;
64
+ }
65
+ } // foreach
66
  }
67
 
68
  $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug);
69
 
70
  if (!$plugin_info) {
71
+ $plugin_info = plugins_api('plugin_information', array(
72
+ 'slug' => $plugin_slug,
73
+ 'is_ssl' => is_ssl(),
74
+ 'fields' => array(
75
+ 'banners' => true,
76
+ 'reviews' => true,
77
+ 'downloaded' => true,
78
+ 'active_installs' => true,
79
+ 'icons' => true,
80
+ 'short_description' => true,
81
+ )
82
+ ));
83
+ if (!is_wp_error($plugin_info) && is_object($plugin_info)) {
84
+ set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7);
85
+ }
86
  }
87
 
88
  if (!empty($res->plugins) && is_array($res->plugins) && $plugin_info && is_object($plugin_info)) {
89
+ array_unshift($res->plugins, $plugin_info);
90
  }
91
 
92
  return $res;
93
+ } // csmm_add_plugins_favs
94
 
95
 
96
+ // add our plugins to recommended list
97
+ function csmm_plugins_api_result($res, $action, $args)
98
+ {
99
  remove_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);
100
 
101
  $res = csmm_add_plugin_favs('wp-force-ssl', $res);
103
  $res = csmm_add_plugin_favs('eps-301-redirects', $res);
104
 
105
  return $res;
106
+ } // plugins_api_result
107
 
108
 
109
  // disabled till further notice
110
+ function csmm_chat_available()
111
+ {
112
+ if (0 && date('Y-m-d') >= '2018-10-01' && date('Y-m-d') <= '2018-10-14') {
113
+ return true;
114
+ } else {
115
+ return false;
116
+ }
117
  } // csmm_chat_available
118
 
119
  // enqueue JS and CSS files
120
+ function csmm_admin_scripts()
121
+ {
122
+
123
+ wp_register_style('csmm-admin-base', CSMM_URL . '/framework/admin/css/admin.css', false, csmm_get_plugin_version());
124
+ wp_register_style('csmm-admin-swal', CSMM_URL . '/framework/admin/css/sweetalert2.min.css', false, csmm_get_plugin_version());
125
+
126
+ wp_register_script('csmm-webfonts', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js', false);
127
+ wp_register_script('csmm-admin-editor', CSMM_URL . '/framework/admin/js/editor/ace.js', false, csmm_get_plugin_version(), true);
128
+ wp_register_script('csmm-admin-color', CSMM_URL . '/framework/admin/js/colorpicker/jscolor.js', false, csmm_get_plugin_version(), true);
129
+ wp_register_script('csmm-admin-plugins', CSMM_URL . '/framework/admin/js/plugins.js', 'jquery', csmm_get_plugin_version(), true);
130
+ wp_register_script('csmm-admin-base', CSMM_URL . '/framework/admin/js/admin.js', 'jquery', csmm_get_plugin_version(), true);
131
+
132
+ $mm_js_vars = array(
133
+ 'mm_url' => 'https://assets.comingsoonwp.com/free-backgrounds/',
134
+ 'mm_base_url' => CSMM_URL,
135
+ 'mm_notice_nonce' => wp_create_nonce('csmm_notice_nonce'),
136
+ 'mm_mo_title' => '<img alt="' . __('MailOptin', 'signals') . '" title="' . __('MailOptin', 'signals') . '" src="' . CSMM_URL . '/framework/admin/img/mailoptin-logo-white.png' . '">',
137
+ 'mm_mo_install_url' => add_query_arg(array('action' => 'csmm_install_mailoptin'), admin_url('admin.php')),
138
+ 'mm_images' => array('ad_themes.png', 'joshua-coleman-1476380-unsplash.jpg', 'joshua-coleman-623077-unsplash.jpg', 'samuel-zeller-379406-unsplash.jpg', 'ad_more-images.png', 'william-daigneault-733670-unsplash.jpg', 'yuriy-bogdanov-428617-unsplash.jpg', 'john-cobb-13961-unsplash.jpg', 'aaron-burden-189321-unsplash.jpg', 'alberto-restifo-4510-unsplash.jpg', 'amy-humphries-227515-unsplash.jpg', 'anders-jilden-89745-unsplash.jpg', 'art-by-lonfeldt-1064207-unsplash.jpg', 'brenda-godinez-229718-unsplash.jpg', 'ad_more-images.png', 'brooke-lark-229136-unsplash.jpg', 'carmine-de-fazio-31543-unsplash.jpg', 'denys-nevozhai-100695-unsplash.jpg', 'dustin-lee-19667-unsplash.jpg', 'elena-prokofyeva-17909-unsplash.jpg', 'fezbot2000-278419-unsplash.jpg', 'glenn-carstens-peters-190592-unsplash.jpg', 'greg-rakozy-38802-unsplash.jpg', 'henry-be-99471-unsplash.jpg', 'hoach-le-dinh-91879-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'ian-schneider-108618-unsplash.jpg', 'jakub-sejkora-42069-unsplash.jpg', 'jesus-kiteque-224069-unsplash.jpg', 'joanna-kosinska-44214-unsplash.jpg', 'jonathan-bean-37632-unsplash.jpg', 'ad_themes.png', 'kimon-maritz-193428-unsplash.jpg', 'matthew-henry-49707-unsplash.jpg', 'ng-32703-unsplash.jpg', 'nitish-meena-37745-unsplash.jpg', 'osman-rana-1064081-unsplash.jpg', 'patrick-tomasso-208114-unsplash.jpg', 'patrick-tomasso-71909-unsplash.jpg', 'pawel-czerwinski-1060762-unsplash.jpg', 'rachael-gorjestani-282049-unsplash.jpg', 'rawpixel-191102-unsplash.jpg', 'sarah-dorweiler-211779-unsplash.jpg', 'stefan-stefancik-105374-unsplash.jpg', 'steven-wei-124690-unsplash.jpg', 'sunrise-1756274.jpg', 'teddy-kelley-106391-unsplash.jpg', 'thought-catalog-214785-unsplash.jpg', 'ad_custom-image.png', 'brooke-lark-356767-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'jeremy-bishop-334996-unsplash.jpg', 'martin-reisch-185835-unsplash.jpg', 'simon-matzinger-320332-unsplash.jpg', 'trevor-cole-393228-unsplash.jpg', 'verne-ho-237626-unsplash.jpg', 'ad_more-images.png', 'annie-spratt-1369965-unsplash.jpg', 'jonathan-borba-1339221-unsplash.jpg', 'lana-guillemet-1373193-unsplash.jpg', 'nazar-sharafutdinov-1373782-unsplash.jpg', 'pawel-czerwinski-1373010-unsplash.jpg', 'fancycrave-284224-unsplash.jpg', 'joshua-coleman-1394520-unsplash.jpg', 'robert-bye-103196-unsplash.jpg', 'tim-patch-1020411-unsplash.jpg', 'william-daigneault-691488-unsplash.jpg'),
139
+ 'loader_image' => CSMM_URL . '/framework/admin/img/anim_logo.gif'
140
+ );
141
+ wp_localize_script('csmm-admin-base', 'mm_js_vars', $mm_js_vars);
142
 
143
+ wp_enqueue_style('csmm-admin-base');
144
+ wp_enqueue_style('csmm-admin-swal');
145
 
146
+ wp_enqueue_script('csmm-webfonts');
147
+ wp_enqueue_script('csmm-admin-editor');
148
+ wp_enqueue_script('csmm-admin-color');
149
+ wp_enqueue_script('csmm-admin-plugins');
150
+ wp_enqueue_script('csmm-admin-base');
151
+
152
+ wp_enqueue_style('wp-jquery-ui-dialog');
153
+ wp_enqueue_script('jquery-ui-dialog');
154
+
155
+ // For the upload option using media uploader
156
+ wp_enqueue_media();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  }
158
 
159
 
160
  // Scripts & styles for the plugin
161
+ function csmm_load_scripts()
162
+ {
163
+ add_action('admin_enqueue_scripts', 'csmm_admin_scripts');
164
  }
165
 
166
 
167
  // add settings link to plugins page
168
+ function csmm_plugin_action_links($links)
169
+ {
170
+ $settings_link = '<a href="' . admin_url('options-general.php?page=maintenance_mode_options') . '" title="Minimal Coming Soon &amp; Maintenance Mode Settings">Settings</a>';
171
 
172
+ array_unshift($links, $settings_link);
173
 
174
+ return $links;
175
  } // csmm_plugin_action_links
176
 
177
 
178
  // add links to plugin's description in plugins table
179
+ function csmm_plugin_meta_links($links, $file)
180
+ {
181
+ $support_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode" title="Get help">Support</a>';
182
+ $rate_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?filter=5#new-post" title="Let others know how you like the plugin">Rate the plugin ★★★★★</a>';
183
+
184
+ if ($file == CSMM_BASENAME) {
185
+ $links[] = $support_link;
186
+ $links[] = $rate_link;
187
+ }
188
 
189
+ return $links;
190
  } // csmm_plugin_meta_links
191
 
192
 
193
  // permanently dismiss a pointer
194
+ function csmm_dismiss_pointer_ajax()
195
+ {
196
+ check_ajax_referer('csmm_dismiss_pointer');
197
 
198
+ $disabled_pointers = get_option(CSMM_POINTERS);
199
+ $pointer = trim(sanitize_key($_POST['pointer']));
200
 
201
+ $disabled_pointers[$pointer] = true;
202
+ update_option(CSMM_POINTERS, $disabled_pointers);
203
 
204
+ wp_send_json_success();
205
  } // dismiss_pointer_ajax
206
 
207
 
208
  // reset all pointers to default state - visible
209
+ function csmm_get_pointers()
210
+ {
211
+ $pointers = array();
212
 
213
+ $pointers['welcome'] = array('target' => '#menu-settings', 'edge' => 'left', 'align' => 'right', 'content' => 'Thank you for installing the <b style="font-weight: 800;">Minimal Coming Soon &amp; Maintenance Mode</b> plugin! Please open <a href="' . admin_url('options-general.php?page=maintenance_mode_options') . '">Settings - Maintenance Mode</a> to create a beautiful coming soon or maintenance mode page.');
214
+ $pointers['getting_started'] = array('target' => '#main-status', 'edge' => 'bottom', 'align' => 'left', 'content' => 'Make sure you <b>enable Maintenance Mode</b> so it\'s visible to your visitors. If you just want to preview it, use the preview button on the bottom of the page.');
215
 
216
+ return $pointers;
217
  } // csmm_get_pointers
218
 
219
 
220
+ function csmm_enqueue_pointers($hook)
221
+ {
222
+ $pointers = array();
223
+ $all_pointers = csmm_get_pointers();
224
+ $disabled_pointers = get_option(CSMM_POINTERS);
 
 
 
 
 
 
225
 
226
+ // auto remove welcome pointer when options are opened
227
+ // disabled
228
+ if (false && empty($disabled_pointers['welcome']) && 'settings_page_maintenance_mode_options' == $hook) {
229
+ $disabled_pointers['welcome'] = true;
230
+ update_option(CSMM_POINTERS, $disabled_pointers);
231
+ }
232
 
233
+ // temp remove
234
+ if ('settings_page_maintenance_mode_options' == $hook) {
235
+ $disabled_pointers['welcome'] = true;
236
  }
 
237
 
238
+ foreach ($all_pointers as $tmp_key => $tmp_val) {
239
+ if (empty($disabled_pointers[$tmp_key])) {
240
+ $pointers[$tmp_key] = $tmp_val;
241
+ }
242
+ } // foreach
243
+
244
+ if (empty($pointers)) {
245
+ return;
246
+ }
247
 
248
+ $pointers['_nonce_dismiss_pointer'] = wp_create_nonce('csmm_dismiss_pointer');
249
+ wp_enqueue_script('wp-pointer');
250
+ wp_enqueue_script('csmm-pointers', CSMM_URL . '/framework/admin/js/pointers.js', array('jquery'), csmm_get_plugin_version(), true);
251
+ wp_enqueue_style('wp-pointer');
252
+ wp_localize_script('wp-pointer', 'csmm_pointers', $pointers);
253
  } // csmm_enqueue_pointers
254
 
255
 
256
+ function csmm_plugin_admin_init()
257
+ {
258
+ if (!is_admin()) {
259
+ return;
260
+ }
261
 
262
+ $meta = get_option('signals_csmm_meta', array());
263
+ if (!is_array($meta)) {
264
+ $meta = array();
265
+ }
266
+ if (!isset($meta['first_version']) || !isset($meta['first_install'])) {
267
+ $meta['first_version'] = csmm_get_plugin_version();
268
+ $meta['first_install_gmt'] = time();
269
+ $meta['first_install'] = current_time('timestamp');
270
+ update_option('signals_csmm_meta', $meta);
271
+ }
272
 
273
+ add_filter('plugin_action_links_' . CSMM_BASENAME, 'csmm_plugin_action_links');
274
+ add_filter('plugin_row_meta', 'csmm_plugin_meta_links', 10, 2);
275
 
276
+ add_action('admin_enqueue_scripts', 'csmm_enqueue_pointers', 100, 1);
277
 
278
+ add_action('admin_action_csmm_activate_theme', 'csmm_activate_theme');
279
 
280
+ add_filter('install_plugins_table_api_args_featured', 'csmm_featured_plugins_tab');
281
  } // csmm_plugin_admin_init
282
 
283
+ add_action('init', 'csmm_plugin_admin_init');
284
 
285
  // Including file for the management panel
286
  require_once CSMM_PATH . 'framework/admin/settings.php';
287
 
288
+ function csmm_create_select_options($options, $selected = null, $output = true)
289
+ {
290
  $out = "\n";
291
 
292
+ if (!is_array($selected)) {
293
+ $selected = array($selected);
294
  }
295
 
296
  foreach ($options as $tmp) {
297
+ $data = '';
298
+ if (isset($tmp['disabled'])) {
299
+ $data .= ' disabled="disabled" ';
300
+ }
301
+ if (in_array($tmp['val'], $selected)) {
302
+ $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
303
+ } else {
304
+ $out .= "<option value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";
305
+ }
306
  } // foreach
307
 
308
  if ($output) {
309
+ echo $out;
310
  } else {
311
+ return $out;
312
  }
313
+ } // csmm_create_select_options
314
 
315
 
316
+ function csmm_activate_theme()
317
+ {
318
  if (!current_user_can('administrator')) {
319
+ wp_die('You don\'t have privileges to run this action.');
320
  }
321
 
322
  if (false == wp_verify_nonce(@$_GET['_wpnonce'], 'csmm_activate_theme')) {
323
+ wp_die('Please click back, reload the page and try to activate the theme again.');
324
  }
325
 
326
  $themes = array();
328
  $settings = csmm_get_options();
329
 
330
  $themes['default'] = array(
331
+ 'header_text' => 'Our site is coming soon',
332
+ '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!',
333
+ 'antispam_text' => 'And yes, we hate spam too!',
334
+ 'arrange' => 'logo,header,secondary,form,html',
335
+ 'logo' => CSMM_URL . '/framework/public/img/mm-logo.png',
336
+ 'favicon' => CSMM_URL . '/framework/public/img/mm-favicon.png',
337
+ 'bg_cover' => CSMM_URL . '/framework/public/img/mountain-bg.jpg',
338
+ 'content_overlay' => 1,
339
+ 'content_width' => '600',
340
+ 'bg_color' => 'FFFFFF',
341
+ 'content_position' => 'center',
342
+ 'content_alignment' => 'left',
343
+ 'header_font' => 'Karla',
344
+ 'secondary_font' => 'Karla',
345
+ 'header_font_size' => '28',
346
+ 'secondary_font_size' => '14',
347
+ 'header_font_color' => 'FFFFFF',
348
+ 'secondary_font_color' => 'FFFFFF',
349
+ 'antispam_font_size' => '13',
350
+ 'antispam_font_color' => 'BBBBBB',
351
+ 'input_text' => 'Enter your best email address',
352
+ 'button_text' => 'Subscribe',
353
+ 'ignore_form_styles' => 1,
354
+ 'input_font_size' => '13',
355
+ 'button_font_size' => '12',
356
+ 'input_font_color' => 'FFFFFF',
357
+ 'button_font_color' => 'FFFFFF',
358
+ 'input_bg' => '',
359
+ 'button_bg' => '0F0F0F',
360
+ 'input_bg_hover' => '',
361
+ 'button_bg_hover' => '0A0A0A',
362
+ 'input_border' => 'EEEEEE',
363
+ 'button_border' => '0F0F0F',
364
+ 'input_border_hover' => 'BBBBBB',
365
+ 'button_border_hover' => '0A0A0A',
366
+ 'success_background' => '90C695',
367
+ 'success_color' => 'FFFFFF',
368
+ 'error_background' => 'E08283',
369
+ 'error_color' => 'FFFFFF',
370
+ 'disable_settings' => '2',
371
+ 'custom_html' => '',
372
+ 'custom_css' => ''
373
  );
374
 
375
  $themes['minimal'] = array(
376
+ 'header_text' => 'Maintenance Mode',
377
+ '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!',
378
+ 'antispam_text' => 'And yes, we hate spam too!',
379
+ 'arrange' => 'logo,header,secondary,form,html',
380
+ 'logo' => CSMM_URL . '/framework/public/img/mm-logo.png',
381
+ 'favicon' => CSMM_URL . '/framework/public/img/mm-favicon.png',
382
+ 'bg_cover' => '',
383
+ 'content_overlay' => 0,
384
+ 'content_width' => '600',
385
+ 'bg_color' => 'FFFFFF',
386
+ 'content_position' => 'center',
387
+ 'content_alignment' => 'left',
388
+ 'header_font' => 'Karla',
389
+ 'secondary_font' => 'Karla',
390
+ 'header_font_size' => '28',
391
+ 'secondary_font_size' => '14',
392
+ 'header_font_color' => '111111',
393
+ 'secondary_font_color' => '111111',
394
+ 'antispam_font_size' => '13',
395
+ 'antispam_font_color' => 'BBBBBB',
396
+ 'input_text' => 'Enter your best email address',
397
+ 'button_text' => 'Subscribe',
398
+ 'ignore_form_styles' => 1,
399
+ 'input_font_size' => '13',
400
+ 'button_font_size' => '12',
401
+ 'input_font_color' => '111111',
402
+ 'button_font_color' => 'FFFFFF',
403
+ 'input_bg' => '',
404
+ 'button_bg' => '0F0F0F',
405
+ 'input_bg_hover' => '',
406
+ 'button_bg_hover' => '0A0A0A',
407
+ 'input_border' => 'EEEEEE',
408
+ 'button_border' => '0F0F0F',
409
+ 'input_border_hover' => 'BBBBBB',
410
+ 'button_border_hover' => '0A0A0A',
411
+ 'success_background' => '90C695',
412
+ 'success_color' => '111111',
413
+ 'error_background' => 'E08283',
414
+ 'error_color' => '111111',
415
+ 'disable_settings' => '2',
416
+ 'custom_html' => '',
417
+ 'custom_css' => '.logo { filter: grayscale(100%); } .logo-container { text-align: left; }'
418
  );
419
 
420
 
421
  if (empty($themes[$theme])) {
422
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>Error loading theme! Theme data not found. Please contact support.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
423
  } else {
424
+ $settings = array_merge($settings, $themes[$theme]);
425
+ update_option('signals_csmm_options', $settings);
426
 
427
+ set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>' . ucfirst($theme) . ' theme has been activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);
428
  }
429
 
430
  if (!empty($_GET['redirect'])) {
431
+ wp_safe_redirect(esc_url($_GET['redirect']));
432
  } else {
433
+ wp_safe_redirect(admin_url());
434
  }
435
 
436
  exit;
437
+ } // activate_theme
438
 
439
 
440
+ function csmm_export_settings()
441
+ {
442
  $filename = str_replace(array('http://', 'https://'), '', home_url());
443
  $filename = str_replace(array('/', '\\', '.'), '-', $filename);
444
  $filename .= '-' . date('Y-m-d') . '-csmm.txt';
462
 
463
  echo $out;
464
  exit;
465
+ } // export_settings
framework/admin/js/admin.js CHANGED
@@ -6,103 +6,128 @@
6
 
7
  var csmm_chat_loaded = false;
8
 
9
- function reloadFont( $fontValue ) {
10
-
11
- WebFont.load( {
12
- google: {
13
- families: [$fontValue]
14
- }
15
- } );
16
-
17
  }
18
 
19
- function changeFont( $font ) {
20
-
21
- var $fontValue = $font.val();
22
-
23
- reloadFont( $fontValue );
24
- $font.parent().find( 'h3' ).css( 'font-family', $fontValue );
25
 
 
 
26
  }
27
 
28
  // upload function
29
- function getUploader( $text, $target ) {
30
-
31
- var custom_uploader;
32
 
33
- // If the uploader object has already been created, reopen the dialog
34
- if( custom_uploader ) {
35
- custom_uploader.open();
36
- return;
37
- }
38
-
39
- // Extend the wp.media object
40
- custom_uploader = wp.media.frames.file_frame = wp.media( {
41
- title: $text,
42
- button: {
43
- text: $text
44
- },
45
- multiple: false
46
- } );
47
-
48
- // When a file is selected, grab the URL and set it as the text field's value
49
- custom_uploader.on( 'select', function() {
50
- var attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
51
 
52
- $target.parent().find( 'input' ).val( attachment.url );
53
- $target.parent().find( '.signals-preview-area' ).html( '<img src="' + attachment.url + '" />' );
54
- $target.parent().find( '.signals-upload-append' ).html( '&nbsp;<a href="javascript: void(0);" class="signals-remove-image">Remove</a>' );
 
 
 
 
 
55
 
56
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
- // Open the uploader dialog
59
- custom_uploader.open();
60
  }
61
 
62
  function csmm_change_tab(tab_name) {
63
- tab_name = '#' + tab_name.replace('#', '');
64
 
65
- jQuery('.signals-main-menu li a[href="' + tab_name + '"]').trigger('click');
66
  window.scrollTo(0, 0);
67
  } // csmm_change_tab
68
 
69
  function getMMUploader($text, $target) {
70
- var html = '<div class="csmm-image-picker"><div class="csmm-image-picker-title"><h1>'+$text+'</h1></div><button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text">Close media panel</span></span></button>';
 
 
 
71
  html += '<div class="csmm-image-picker-content">';
72
- for(i in mm_js_vars.mm_images) {
73
- if (mm_js_vars.mm_images[i].substring(0, 3) == 'ad_') {
74
- html+= '<div class="csmm-image-picker-image_ad"><img src="' + mm_js_vars.mm_base_url + '/framework/admin/img/' + mm_js_vars.mm_images[i] + '" /></div>';
 
 
 
 
 
75
  } else {
76
- html+= '<div class="csmm-image-picker-image" data-image="'+mm_js_vars.mm_url+mm_js_vars.mm_images[i]+'"><img src="'+mm_js_vars.mm_url+'thumbs/'+mm_js_vars.mm_images[i]+'" /></div>';
 
 
 
 
 
 
 
 
77
  }
78
  } // for
79
- html +='</div>';
80
- html +='</div>';
81
- jQuery('.csmm-image-picker').remove();
82
- jQuery('body').append(html);
83
-
84
- jQuery('body').on('click', '.csmm-image-picker-image',function() {
85
- var image_url = jQuery(this).data('image');
86
- $target.parent().find( 'input' ).val( image_url );
87
- $target.parent().find( '.signals-preview-area' ).html( '<img src="' + image_url + '" />' );
88
- $target.parent().find( '.signals-upload-append' ).html( '&nbsp;<a href="javascript: void(0);" class="signals-remove-image">Remove</a>' );
89
- jQuery('.csmm-image-picker').remove();
90
- });
 
 
 
 
 
 
 
 
91
  } // getMMuploader
92
 
93
-
94
- (function( $ ) {
95
- $('body').on('click','.media-modal-close', function() {
96
- $('.csmm-image-picker').remove();
97
  });
98
 
99
- $('body').on('click','.csmm-image-picker-image_ad', function(e) {
100
- $('.csmm-image-picker').remove();
101
- csmm_change_tab('pro');
102
  e.preventDefault();
103
  });
104
 
105
- $('.csmm-open-chat').on('click', function(e) {
106
  e.preventDefault();
107
  // disabled till further notice
108
  return false;
@@ -111,381 +136,495 @@ function getMMUploader($text, $target) {
111
  Beacon("open");
112
  } else {
113
  csmm_chat_loaded = true;
114
- $('body').append('<script type="text/javascript">!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});</script><script type="text/javascript">window.Beacon("init", "8dea34f8-a21a-4390-923e-c55b82340cc9"); Beacon("open"); </script>');
 
 
115
  }
116
 
117
  return false;
118
  });
119
 
 
 
 
 
 
120
 
121
- // css and html editor
122
- function getEditor( $editorID, $textareaID, $mode ) {
123
-
124
- if( $( '#' + $editorID ).length > 0 ) {
125
- var editor = ace.edit( $editorID ),
126
- $textarea = $( '#' + $textareaID ).hide();
127
 
128
- editor.getSession().setValue( $textarea.val() );
129
-
130
- editor.getSession().on( 'change', function () {
131
- $textarea.val( editor.getSession().getValue() );
132
- } );
133
 
134
- editor.getSession().setMode( 'ace/mode/' + $mode );
135
- //editor.setTheme( 'ace/theme/xcode' );
136
- editor.getSession().setUseWrapMode( true );
137
- editor.getSession().setWrapLimitRange( null, null );
138
- editor.renderer.setShowPrintMargin( null );
139
 
140
- editor.session.setUseSoftTabs( null );
141
- }
142
- }
143
 
144
  // auto remove notices
145
- window.setTimeout(function() { $('.signals-alert').fadeOut(); }, 1000 * 15);
146
-
147
- // WP native uploader
148
- $( document ).on( 'click', '.signals-upload', function( e ) {
149
 
 
 
150
  e.preventDefault();
151
- if($(this).hasClass('signals-upload-bg')){
152
- getMMUploader( 'Select Image', $( this ) );
153
  } else {
154
- getUploader( 'Select Image', $( this ) );
155
  }
156
- } );
157
-
158
- // Removing photo from the canvas and emptying the text field
159
- $( document ).on( 'click', '.signals-remove-image', function( e ) {
160
 
161
- e.preventDefault();
 
 
162
 
163
- $( this ).parent().parent().find( 'input' ).val( '' );
164
- $( this ).parent().parent().find( '.signals-preview-area' ).html( 'Select an image' );
165
- $( this ).hide();
 
 
 
 
 
166
 
167
- } );
 
 
 
 
 
 
 
 
 
 
 
 
 
168
 
169
- // on dom ready
170
- $( document ).ready( function() {
171
 
 
 
172
  // hide nags from other plugins
173
- $('#wpbody-content .notice-warning, #wpbody-content .update-nag, #wpbody-content .notice-error, #wpbody-content .notice-info, #wpbody-content .error, #wpbody-content .updated').hide();
 
 
174
 
175
- $( document ).on( 'click', '#mm_rate_cancel', function(e) {
176
  e.preventDefault();
177
 
178
- $('#rating-notice').fadeOut();
179
- $.get(ajaxurl, {'action': 'csmm_rate_hide', '_ajax_nonce': mm_js_vars.mm_notice_nonce});
 
 
 
180
 
181
  return false;
182
- } );
183
 
184
- $( document ).on( 'click', '#mm_welcome_cancel', function(e) {
185
  e.preventDefault();
186
 
187
- $('#upsell-notice').fadeOut();
188
- $.get(ajaxurl, {'action': 'csmm_welcome_hide', '_ajax_nonce': mm_js_vars.mm_notice_nonce});
 
 
 
189
 
190
  return false;
191
- } );
192
 
193
- $( document ).on( 'click', '#mm_olduser_cancel', function(e) {
194
  e.preventDefault();
195
 
196
- $('#upsell-notice').fadeOut();
197
- $.get(ajaxurl, {'action': 'csmm_olduser_hide', '_ajax_nonce': mm_js_vars.mm_notice_nonce});
 
 
 
198
 
199
  return false;
200
- } );
201
 
202
- // google fonts
203
- $( '.signals-google-fonts' ).each( function() {
 
 
 
204
 
205
- var $font = $( this );
206
- changeFont( $font );
 
 
207
 
208
- } );
 
 
 
 
 
 
 
 
 
 
 
 
209
 
210
- $( document ).on( 'change', '.signals-google-fonts', function() {
 
 
 
211
 
212
- var $font = $( this );
213
- changeFont( $font );
 
 
 
 
 
 
 
 
 
 
214
 
215
- } );
 
 
 
 
 
 
 
 
216
 
217
- // license key field on enter
218
- $('#signals_csmm_license_key').on('keypress', function(e) {
219
- if (e.which == 13) {
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  e.preventDefault();
221
- $('#save-license').trigger('click');
222
  }
223
  });
224
 
225
- $('.pro-option').on('click change', function(e) {
226
- if ($(this).is('select') && $(this).val() != '-1') {
227
  return true;
228
  }
229
 
230
- if ($(this).is('select')) {
231
- $(this).find('option').attr('selected', '');
232
- $(this).find('option').first().attr('selected', 'selected');
233
  }
234
  $(this).blur();
235
 
236
- csmm_change_tab('pro');
237
  e.preventDefault();
238
 
239
  return false;
240
  });
241
 
242
- $(document).on('click', '.open-mailoptin-upsell', function(e) {
243
  e.preventDefault();
244
 
245
  $(this).blur();
246
 
247
- $('#csmm-mailoptin-upsell-dialog').dialog('open');
248
  return false;
249
  });
250
 
251
- $('#mail_system_to_use').on('change', function(e) {
252
-
253
  var mailsystem = $(this).val();
254
- if(mailsystem == 'mc'){
255
- $('#mailoptin-wrapper').hide();
256
- $('#mailchimp-wrapper').show();
257
- } else if(mailsystem == 'mo'){
258
- $('#mailoptin-wrapper').show();
259
- $('#mailchimp-wrapper').hide();
260
  }
261
-
262
-
263
  });
264
 
265
-
266
-
267
  // upsell dialog init
268
- $('#csmm-mailoptin-upsell-dialog').dialog({'dialogClass': 'wp-dialog csmm-dialog csmm-mailoptin-upsell-dialog',
269
- 'modal': 1,
270
- 'resizable': false,
271
- 'title': 'Start Collecting Leads and Subscribers',
272
- 'zIndex': 9999,
273
- 'width': 550,
274
- 'height': 'auto',
275
- 'show': 'fade',
276
- 'hide': 'fade',
277
- 'open': function(event, ui) {
 
278
  csmm_fix_dialog_close(event, ui);
279
- $(this).siblings().find('span.ui-dialog-title').html(mm_js_vars.mm_mo_title);
 
 
 
280
  },
281
- 'close': function(event, ui) { },
282
- 'autoOpen': false,
283
- 'closeOnEscape': true
284
  });
285
 
286
- $(window).resize(function(e){
287
- $('#csmm-mailoptin-upsell-dialog').dialog("option", "position", {my: "center", at: "center", of: window});
 
 
 
 
288
  });
289
 
290
-
291
- jQuery('#install-mailoptin').on('click',function(e){
292
- $('#csmm-mailoptin-upsell-dialog').dialog('close');
293
- jQuery('body').append('<div style="width:550px;height:450px; position:fixed;top:10%;left:50%;margin-left:-275px; color:#444; background-color: #fbfbfb;border:1px solid #DDD; border-radius:4px;box-shadow: 0px 0px 0px 4000px rgba(0, 0, 0, 0.85);z-index: 9999999;"><iframe src="'+mm_js_vars.mm_mo_install_url+'" style="width:100%;height:100%;border:none;" /></div>');
294
- jQuery('#wpwrap').css('pointer-events', 'none');
 
 
 
295
  e.preventDefault();
296
  return false;
297
  });
298
 
299
  function csmm_fix_dialog_close(event, ui) {
300
- jQuery('.ui-widget-overlay').bind('click', function(){
301
- jQuery('#' + event.target.id).dialog('close');
302
  });
303
  } // csmm_fix_dialog_close
304
 
305
- $('#background_image_filter').on('change', function(e) {
306
- filter = $(this).val();
307
- image = $('#background-preview img');
308
- if (!image.length) {
309
- return;
310
- }
 
311
 
312
- $(image).removeClass();
313
- $(image).addClass(filter);
314
- }).trigger('change');
315
-
316
- $('#mail_system_to_use').on('change', function(e) {
317
- if ($(this).val() == 'mc') {
318
- $('#csmm-setting-form-mo').hide();
319
- $('#csmm-setting-form-mc').show();
320
- } else if ($(this).val() == 'mo') {
321
- $('#csmm-setting-form-mc').hide();
322
- $('#csmm-setting-form-mo').show();
323
- }
324
- }).trigger('change');
 
 
 
325
 
326
- $('#header-status').on('click', function(e) {
327
  e.preventDefault();
328
- window.location = $(this).data('action-url');
329
  });
330
 
331
- $('#arrange-items2').on('click', function(e) {
332
  e.preventDefault();
333
- csmm_change_tab('pro');
334
 
335
  return false;
336
  });
337
 
338
  // zebra on pricing table, per column
339
- $('#pricing-table').find('tr').each(function(index) {
340
- $(this).find('td').eq(1).addClass('hover');
341
- if (index == 0 || index == 11) {
342
- return true;
343
- }
344
- $(this).find('td:not(.not-available)').eq(1).html('<span class="dashicons dashicons-yes"></span> ' + $(this).find('td').eq(1).html());
345
- });
346
-
347
-
348
- $('#signals_csmm_title, #signals_csmm_description').on('change keyup', function() {
349
- var title_lenght = $('#signals_csmm_title').val().length;
350
- var title_bar_width = Math.round(title_lenght/60*100);
351
- if(title_bar_width>100) title_bar_width = 100;
352
- $('#mm-seo-progress-title .mm-seo-progress-bar').css('width',title_bar_width+'%');
353
-
354
- if(title_bar_width == 100){
355
- $('#mm-seo-progress-title').removeClass('mm-seo-progress-good');
356
- $('#mm-seo-progress-title').addClass('mm-seo-progress-warning');
357
- } else if(title_bar_width<80){
358
- $('#mm-seo-progress-title').removeClass('mm-seo-progress-good');
359
- $('#mm-seo-progress-title').addClass('mm-seo-progress-warning');
360
- } else {
361
- $('#mm-seo-progress-title').removeClass('mm-seo-progress-warning');
362
- $('#mm-seo-progress-title').addClass('mm-seo-progress-good');
363
- }
364
 
365
- var description_lenght = $('#signals_csmm_description').val().length;
366
- var description_bar_width = Math.round(description_lenght/300*100);
367
- if(description_bar_width>100) description_bar_width = 100;
368
- $('#mm-seo-progress-description .mm-seo-progress-bar').css('width',description_bar_width+'%');
369
-
370
- if(description_bar_width == 100) {
371
- $('#mm-seo-progress-description').removeClass('mm-seo-progress-good');
372
- $('#mm-seo-progress-description').addClass('mm-seo-progress-warning');
373
- } else if(description_bar_width < 36) {
374
- $('#mm-seo-progress-description').removeClass('mm-seo-progress-good');
375
- $('#mm-seo-progress-description').addClass('mm-seo-progress-warning');
376
- } else {
377
- $('#mm-seo-progress-description').removeClass('mm-seo-progress-warning');
378
- $('#mm-seo-progress-description').addClass('mm-seo-progress-good');
379
- }
380
- }).trigger('change');
 
 
 
 
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
 
383
  // reposition main on/off button on window resize and load
384
- $(window).on('resize', function(e) {
385
- if ($('.signals-float-right').width() >= 1200) {
386
- position = 1113;
387
- } else {
388
- position = parseInt($('.signals-float-right').width() - 87, 10);
389
- }
390
- $('#header-right').css('left', position + 'px');
391
- }).trigger('resize');
 
 
392
 
393
- $('.signals-cnt-fix').on('click', '.switchery', function(e) {
394
- if($(this).prev('input.pro-option').length != 0) {
395
- csmm_change_tab('pro');
396
 
397
  e.preventDefault();
398
  return false;
399
  }
400
  });
401
 
402
- // ios switches
403
- var elements = Array.prototype.slice.call(document.querySelectorAll('.signals-form-ios'));
404
- elements.forEach(function(html) {
405
- var switchery = new Switchery(html);
406
- });
 
 
407
 
408
  // sortable
409
- var el = document.getElementById( 'arrange-items' );
410
- var sortable = Sortable.create( el, {
411
  animation: 150,
412
- dataIdAttr: 'data-id',
413
  store: {
414
  get: function (sortable) {
415
- var order = localStorage.getItem(sortable.options.group);
416
- return order ? order.split('|') : [];
417
  },
418
- set: function( sortable ) {
419
  var order = sortable.toArray();
420
- $( '#signals_csmm_arrange' ).val( order );
421
- }
422
- }
423
- } );
424
 
425
  // css and html editor
426
- getEditor( 'signals_csmm_html_editor', 'signals_csmm_html', 'html' );
427
- getEditor( 'signals_csmm_css_editor', 'signals_csmm_css', 'css' );
428
-
429
- $('.csmm-change-tab').on('click', function(e) {
430
  e.preventDefault();
431
 
432
- tab_name = $(this).attr('href');
433
  csmm_change_tab(tab_name);
434
 
435
- if ($(this).data('anchor')) {
436
- $('html,body').animate({scrollTop: $('#' + $(this).data('anchor')).offset().top},'slow');
 
 
 
437
  }
438
 
439
  return false;
440
  });
441
 
442
- // tabs
443
- var $state = $.cookie( 'signals_csmm_menu' );
444
-
445
- if( $state ) {
446
- $( '.signals-main-menu li a' ).removeClass( 'active' );
447
- $( 'a[href="' + $state + '"]' ).addClass( 'active' );
448
- $( $state ).show();
449
- } else {
450
- $( '.signals-main-menu li:first a' ).addClass( 'active' );
451
- $( '.signals-tile:first' ).show();
452
- }
453
 
454
- $( '.signals-main-menu li a' ).click( function(e) {
 
 
 
 
 
 
 
455
 
 
456
  e.preventDefault();
457
 
458
- $.removeCookie( 'signals_csmm_menu', { path: '/' } );
459
 
460
- var $selector = $( this );
461
- var $tab = $selector.attr( 'href' );
462
 
463
- $( '.signals-main-menu li a' ).removeClass( 'active' );
464
- $selector.addClass( 'active' );
465
 
466
- $( '.signals-tile' ).hide();
467
- $( $tab ).show();
468
- $.cookie( 'signals_csmm_menu', $tab, { path: '/' } );
469
-
470
- } );
471
-
472
- $( '.signals-mobile-menu a' ).click( function() {
473
- $( '.signals-main-menu' ).slideToggle();
474
- } );
475
 
 
 
 
476
 
477
  // dismiss notice
478
- $('.signals-alert .notice-dismiss').on('click', function(e) {
479
  e.preventDefault();
480
 
481
- $(this).parents('.signals-alert').fadeOut();
482
 
483
  return false;
484
  });
485
 
486
  // helper for linking anchors in different tabs
487
- $('.signals-cnt-fix').on('click', '.confirm-action', function(e) {
488
- message = $(this).data('confirm');
489
 
490
  if (!message || confirm(message)) {
491
  return true;
@@ -495,12 +634,18 @@ function getMMUploader($text, $target) {
495
  }
496
  }); // confirm action before link click
497
 
498
-
499
  // alert user of unsaved changes when doing preview
500
- old_settings = $('form.signals-admin-form *').not('.skip-save').serialize();
501
- $('#csmm-preview').on('click', function(e) {
502
- if ($('form.signals-admin-form *').not('.skip-save').serialize() != old_settings) {
503
- if (!confirm('There are unsaved changes that will not be visible in the preview. Please save changes first.\nContinue?')) {
 
 
 
 
 
 
 
504
  e.preventDefault();
505
  return false;
506
  }
@@ -510,49 +655,50 @@ function getMMUploader($text, $target) {
510
  });
511
 
512
  if (!Date.now) {
513
- Date.now = function() { return new Date().getTime(); }
514
- }
 
 
515
 
516
- function mm_update_timer() {
517
- out = '';
518
- timer = jQuery('.mm-countdown');
519
 
520
- if (timer.length == 0) {
521
- clearInterval(mm_countdown_interval);
522
- }
523
 
524
- now = Math.round(new Date().getTime()/1000);
525
- timer_end = jQuery(timer).data('endtime');
526
- delta = timer_end - now;
527
- seconds = Math.floor( (delta) % 60 );
528
- minutes = Math.floor( (delta/60) % 60 );
529
- hours = Math.floor( (delta/(60*60)) % 24 );
530
 
531
- if (delta <= 0) {
532
- clearInterval(mm_countdown_interval);
533
- }
534
-
535
- if (hours) {
536
- out += hours + 'h ';
537
- }
538
- if (minutes || out) {
539
- out += minutes + 'min ';
540
- }
541
- if (seconds || out) {
542
- out += seconds + 'sec';
543
- }
544
- if (delta <= 0 || !out) {
545
- out = ' - no longer available';
546
- }
547
 
548
- jQuery(timer).html(out);
 
 
 
 
 
 
 
 
 
 
 
549
 
550
- return true;
551
- } // mm_update_timer
552
 
553
- if (jQuery('.mm-countdown').length) {
554
- mm_countdown_interval = setInterval(mm_update_timer, 1000);
555
- }
556
- }); // on ready
557
 
558
- })( jQuery );
 
 
 
 
6
 
7
  var csmm_chat_loaded = false;
8
 
9
+ function reloadFont($fontValue) {
10
+ WebFont.load({
11
+ google: {
12
+ families: [$fontValue],
13
+ },
14
+ });
 
 
15
  }
16
 
17
+ function changeFont($font) {
18
+ var $fontValue = $font.val();
 
 
 
 
19
 
20
+ reloadFont($fontValue);
21
+ $font.parent().find("h3").css("font-family", $fontValue);
22
  }
23
 
24
  // upload function
25
+ function getUploader($text, $target) {
26
+ var custom_uploader;
 
27
 
28
+ // If the uploader object has already been created, reopen the dialog
29
+ if (custom_uploader) {
30
+ custom_uploader.open();
31
+ return;
32
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
+ // Extend the wp.media object
35
+ custom_uploader = wp.media.frames.file_frame = wp.media({
36
+ title: $text,
37
+ button: {
38
+ text: $text,
39
+ },
40
+ multiple: false,
41
+ });
42
 
43
+ // When a file is selected, grab the URL and set it as the text field's value
44
+ custom_uploader.on("select", function () {
45
+ var attachment = custom_uploader.state().get("selection").first().toJSON();
46
+
47
+ $target.parent().find("input").val(attachment.url);
48
+ $target
49
+ .parent()
50
+ .find(".signals-preview-area")
51
+ .html('<img src="' + attachment.url + '" />');
52
+ $target
53
+ .parent()
54
+ .find(".signals-upload-append")
55
+ .html(
56
+ '&nbsp;<a href="javascript: void(0);" class="signals-remove-image">Remove</a>'
57
+ );
58
+ });
59
 
60
+ // Open the uploader dialog
61
+ custom_uploader.open();
62
  }
63
 
64
  function csmm_change_tab(tab_name) {
65
+ tab_name = "#" + tab_name.replace("#", "");
66
 
67
+ jQuery('.signals-main-menu li a[href="' + tab_name + '"]').trigger("click");
68
  window.scrollTo(0, 0);
69
  } // csmm_change_tab
70
 
71
  function getMMUploader($text, $target) {
72
+ var html =
73
+ '<div class="csmm-image-picker"><div class="csmm-image-picker-title"><h1>' +
74
+ $text +
75
+ '</h1></div><button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text">Close media panel</span></span></button>';
76
  html += '<div class="csmm-image-picker-content">';
77
+ for (i in mm_js_vars.mm_images) {
78
+ if (mm_js_vars.mm_images[i].substring(0, 3) == "ad_") {
79
+ html +=
80
+ '<div class="csmm-image-picker-image_ad"><img src="' +
81
+ mm_js_vars.mm_base_url +
82
+ "/framework/admin/img/" +
83
+ mm_js_vars.mm_images[i] +
84
+ '" /></div>';
85
  } else {
86
+ html +=
87
+ '<div class="csmm-image-picker-image" data-image="' +
88
+ mm_js_vars.mm_url +
89
+ mm_js_vars.mm_images[i] +
90
+ '"><img src="' +
91
+ mm_js_vars.mm_url +
92
+ "thumbs/" +
93
+ mm_js_vars.mm_images[i] +
94
+ '" /></div>';
95
  }
96
  } // for
97
+ html += "</div>";
98
+ html += "</div>";
99
+ jQuery(".csmm-image-picker").remove();
100
+ jQuery("body").append(html);
101
+
102
+ jQuery("body").on("click", ".csmm-image-picker-image", function () {
103
+ var image_url = jQuery(this).data("image");
104
+ $target.parent().find("input").val(image_url);
105
+ $target
106
+ .parent()
107
+ .find(".signals-preview-area")
108
+ .html('<img src="' + image_url + '" />');
109
+ $target
110
+ .parent()
111
+ .find(".signals-upload-append")
112
+ .html(
113
+ '&nbsp;<a href="javascript: void(0);" class="signals-remove-image">Remove</a>'
114
+ );
115
+ jQuery(".csmm-image-picker").remove();
116
+ });
117
  } // getMMuploader
118
 
119
+ (function ($) {
120
+ $("body").on("click", ".media-modal-close", function () {
121
+ $(".csmm-image-picker").remove();
 
122
  });
123
 
124
+ $("body").on("click", ".csmm-image-picker-image_ad", function (e) {
125
+ $(".csmm-image-picker").remove();
126
+ csmm_change_tab("pro");
127
  e.preventDefault();
128
  });
129
 
130
+ $(".csmm-open-chat").on("click", function (e) {
131
  e.preventDefault();
132
  // disabled till further notice
133
  return false;
136
  Beacon("open");
137
  } else {
138
  csmm_chat_loaded = true;
139
+ $("body").append(
140
+ '<script type="text/javascript">!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});</script><script type="text/javascript">window.Beacon("init", "8dea34f8-a21a-4390-923e-c55b82340cc9"); Beacon("open"); </script>'
141
+ );
142
  }
143
 
144
  return false;
145
  });
146
 
147
+ // css and html editor
148
+ function getEditor($editorID, $textareaID, $mode) {
149
+ if ($("#" + $editorID).length > 0) {
150
+ var editor = ace.edit($editorID),
151
+ $textarea = $("#" + $textareaID).hide();
152
 
153
+ editor.getSession().setValue($textarea.val());
 
 
 
 
 
154
 
155
+ editor.getSession().on("change", function () {
156
+ $textarea.val(editor.getSession().getValue());
157
+ });
 
 
158
 
159
+ editor.getSession().setMode("ace/mode/" + $mode);
160
+ //editor.setTheme( 'ace/theme/xcode' );
161
+ editor.getSession().setUseWrapMode(true);
162
+ editor.getSession().setWrapLimitRange(null, null);
163
+ editor.renderer.setShowPrintMargin(null);
164
 
165
+ editor.session.setUseSoftTabs(null);
166
+ }
167
+ }
168
 
169
  // auto remove notices
170
+ window.setTimeout(function () {
171
+ $(".signals-alert").fadeOut();
172
+ }, 1000 * 15);
 
173
 
174
+ // WP native uploader
175
+ $(document).on("click", ".signals-upload", function (e) {
176
  e.preventDefault();
177
+ if ($(this).hasClass("signals-upload-bg")) {
178
+ getMMUploader("Select Image", $(this));
179
  } else {
180
+ getUploader("Select Image", $(this));
181
  }
182
+ });
 
 
 
183
 
184
+ // Removing photo from the canvas and emptying the text field
185
+ $(document).on("click", ".signals-remove-image", function (e) {
186
+ e.preventDefault();
187
 
188
+ $(this).parent().parent().find("input").val("");
189
+ $(this)
190
+ .parent()
191
+ .parent()
192
+ .find(".signals-preview-area")
193
+ .html("Select an image");
194
+ $(this).hide();
195
+ });
196
 
197
+ function block_ui(message) {
198
+ tmp = csmm_swal.fire({
199
+ text: message,
200
+ type: false,
201
+ imageUrl: mm_js_vars.loader_image,
202
+ imageWidth: 100,
203
+ imageHeight: 100,
204
+ imageAlt: message,
205
+ allowOutsideClick: false,
206
+ allowEscapeKey: false,
207
+ allowEnterKey: false,
208
+ showConfirmButton: false,
209
+ timerProgressBar: true,
210
+ });
211
 
212
+ return tmp;
213
+ } // block_ui
214
 
215
+ // on dom ready
216
+ $(document).ready(function () {
217
  // hide nags from other plugins
218
+ $(
219
+ "#wpbody-content .notice-warning, #wpbody-content .update-nag, #wpbody-content .notice-error, #wpbody-content .notice-info, #wpbody-content .error, #wpbody-content .updated"
220
+ ).hide();
221
 
222
+ $(document).on("click", "#mm_rate_cancel", function (e) {
223
  e.preventDefault();
224
 
225
+ $("#rating-notice").fadeOut();
226
+ $.get(ajaxurl, {
227
+ action: "csmm_rate_hide",
228
+ _ajax_nonce: mm_js_vars.mm_notice_nonce,
229
+ });
230
 
231
  return false;
232
+ });
233
 
234
+ $(document).on("click", "#mm_welcome_cancel", function (e) {
235
  e.preventDefault();
236
 
237
+ $("#upsell-notice").fadeOut();
238
+ $.get(ajaxurl, {
239
+ action: "csmm_welcome_hide",
240
+ _ajax_nonce: mm_js_vars.mm_notice_nonce,
241
+ });
242
 
243
  return false;
244
+ });
245
 
246
+ $(document).on("click", "#mm_olduser_cancel", function (e) {
247
  e.preventDefault();
248
 
249
+ $("#upsell-notice").fadeOut();
250
+ $.get(ajaxurl, {
251
+ action: "csmm_olduser_hide",
252
+ _ajax_nonce: mm_js_vars.mm_notice_nonce,
253
+ });
254
 
255
  return false;
256
+ });
257
 
258
+ // google fonts
259
+ $(".signals-google-fonts").each(function () {
260
+ var $font = $(this);
261
+ changeFont($font);
262
+ });
263
 
264
+ $(document).on("change", ".signals-google-fonts", function () {
265
+ var $font = $(this);
266
+ changeFont($font);
267
+ });
268
 
269
+ // helper for scrolling to anchor
270
+ $(".settings_page_maintenance_mode_options").on(
271
+ "click",
272
+ ".scrollto",
273
+ function (e) {
274
+ e.preventDefault();
275
+
276
+ // get the link anchor and scroll to it
277
+ target = this.href.split("#")[1];
278
+ if (target) {
279
+ console.log('Scroll to '+target);
280
+ $.scrollTo("#" + target, 500, { offset: { top: -50, left: 0 } });
281
+ }
282
 
283
+ $(this).blur();
284
+ return false;
285
+ }
286
+ ); // scroll to anchor helper
287
 
288
+ $("#csmm_save_license").on("click", function (e) {
289
+ e.preventDefault();
290
+ block_ui("Validating. Please wait...");
291
+ button = this;
292
+ safe_refresh = true;
293
+
294
+ wf_csmm_licensing_verify_licence_ajax(
295
+ "csmm",
296
+ $("#signals_csmm_license_key").val(),
297
+ button
298
+ );
299
+ });
300
 
301
+ $("#csmm_keyless_activation").on("click", function (e) {
302
+ e.preventDefault();
303
+ block_ui("Validating. Please wait...");
304
+ button = this;
305
+ safe_refresh = true;
306
+
307
+ wf_csmm_licensing_verify_licence_ajax("csmm", "keyless", button);
308
+ return;
309
+ });
310
 
311
+ $("#csmm_deactivate_license").on("click", function (e) {
312
+ e.preventDefault();
313
+ block_ui("Deactivating. Please wait...");
314
+ button = this;
315
+ safe_refresh = true;
316
+
317
+ wf_csmm_licensing_deactivate_licence_ajax(
318
+ "csmm",
319
+ $("#signals_csmm_license_key").val(),
320
+ button
321
+ );
322
+ return;
323
+ });
324
+
325
+ $("#signals_csmm_license_key").on("keypress", function (e) {
326
+ if (e.keyCode == 13) {
327
  e.preventDefault();
328
+ $("#csmm_save_license").trigger("click");
329
  }
330
  });
331
 
332
+ $(".pro-option").on("click change", function (e) {
333
+ if ($(this).is("select") && $(this).val() != "-1") {
334
  return true;
335
  }
336
 
337
+ if ($(this).is("select")) {
338
+ $(this).find("option").attr("selected", "");
339
+ $(this).find("option").first().attr("selected", "selected");
340
  }
341
  $(this).blur();
342
 
343
+ csmm_change_tab("pro");
344
  e.preventDefault();
345
 
346
  return false;
347
  });
348
 
349
+ $(document).on("click", ".open-mailoptin-upsell", function (e) {
350
  e.preventDefault();
351
 
352
  $(this).blur();
353
 
354
+ $("#csmm-mailoptin-upsell-dialog").dialog("open");
355
  return false;
356
  });
357
 
358
+ $("#mail_system_to_use").on("change", function (e) {
 
359
  var mailsystem = $(this).val();
360
+ if (mailsystem == "mc") {
361
+ $("#mailoptin-wrapper").hide();
362
+ $("#mailchimp-wrapper").show();
363
+ } else if (mailsystem == "mo") {
364
+ $("#mailoptin-wrapper").show();
365
+ $("#mailchimp-wrapper").hide();
366
  }
 
 
367
  });
368
 
 
 
369
  // upsell dialog init
370
+ $("#csmm-mailoptin-upsell-dialog").dialog({
371
+ dialogClass: "wp-dialog csmm-dialog csmm-mailoptin-upsell-dialog",
372
+ modal: 1,
373
+ resizable: false,
374
+ title: "Start Collecting Leads and Subscribers",
375
+ zIndex: 9999,
376
+ width: 550,
377
+ height: "auto",
378
+ show: "fade",
379
+ hide: "fade",
380
+ open: function (event, ui) {
381
  csmm_fix_dialog_close(event, ui);
382
+ $(this)
383
+ .siblings()
384
+ .find("span.ui-dialog-title")
385
+ .html(mm_js_vars.mm_mo_title);
386
  },
387
+ close: function (event, ui) {},
388
+ autoOpen: false,
389
+ closeOnEscape: true,
390
  });
391
 
392
+ $(window).resize(function (e) {
393
+ $("#csmm-mailoptin-upsell-dialog").dialog("option", "position", {
394
+ my: "center",
395
+ at: "center",
396
+ of: window,
397
+ });
398
  });
399
 
400
+ jQuery("#install-mailoptin").on("click", function (e) {
401
+ $("#csmm-mailoptin-upsell-dialog").dialog("close");
402
+ jQuery("body").append(
403
+ '<div style="width:550px;height:450px; position:fixed;top:10%;left:50%;margin-left:-275px; color:#444; background-color: #fbfbfb;border:1px solid #DDD; border-radius:4px;box-shadow: 0px 0px 0px 4000px rgba(0, 0, 0, 0.85);z-index: 9999999;"><iframe src="' +
404
+ mm_js_vars.mm_mo_install_url +
405
+ '" style="width:100%;height:100%;border:none;" /></div>'
406
+ );
407
+ jQuery("#wpwrap").css("pointer-events", "none");
408
  e.preventDefault();
409
  return false;
410
  });
411
 
412
  function csmm_fix_dialog_close(event, ui) {
413
+ jQuery(".ui-widget-overlay").bind("click", function () {
414
+ jQuery("#" + event.target.id).dialog("close");
415
  });
416
  } // csmm_fix_dialog_close
417
 
418
+ $("#background_image_filter")
419
+ .on("change", function (e) {
420
+ filter = $(this).val();
421
+ image = $("#background-preview img");
422
+ if (!image.length) {
423
+ return;
424
+ }
425
 
426
+ $(image).removeClass();
427
+ $(image).addClass(filter);
428
+ })
429
+ .trigger("change");
430
+
431
+ $("#mail_system_to_use")
432
+ .on("change", function (e) {
433
+ if ($(this).val() == "mc") {
434
+ $("#csmm-setting-form-mo").hide();
435
+ $("#csmm-setting-form-mc").show();
436
+ } else if ($(this).val() == "mo") {
437
+ $("#csmm-setting-form-mc").hide();
438
+ $("#csmm-setting-form-mo").show();
439
+ }
440
+ })
441
+ .trigger("change");
442
 
443
+ $("#header-status").on("click", function (e) {
444
  e.preventDefault();
445
+ window.location = $(this).data("action-url");
446
  });
447
 
448
+ $("#arrange-items2").on("click", function (e) {
449
  e.preventDefault();
450
+ csmm_change_tab("pro");
451
 
452
  return false;
453
  });
454
 
455
  // zebra on pricing table, per column
456
+ $("#pricing-table")
457
+ .find("tr")
458
+ .each(function (index) {
459
+ $(this).find("td").eq(1).addClass("hover");
460
+ if (index == 0 || index == 14) {
461
+ return true;
462
+ }
463
+ $(this)
464
+ .find("td:not(.not-available)")
465
+ .eq(1)
466
+ .html(
467
+ '<span class="dashicons dashicons-yes"></span> ' +
468
+ $(this).find("td").eq(1).html()
469
+ );
470
+ });
 
 
 
 
 
 
 
 
 
 
471
 
472
+ $("#signals_csmm_title, #signals_csmm_description")
473
+ .on("change keyup", function () {
474
+ var title_lenght = $("#signals_csmm_title").val().length;
475
+ var title_bar_width = Math.round((title_lenght / 60) * 100);
476
+ if (title_bar_width > 100) title_bar_width = 100;
477
+ $("#mm-seo-progress-title .mm-seo-progress-bar").css(
478
+ "width",
479
+ title_bar_width + "%"
480
+ );
481
+
482
+ if (title_bar_width == 100) {
483
+ $("#mm-seo-progress-title").removeClass("mm-seo-progress-good");
484
+ $("#mm-seo-progress-title").addClass("mm-seo-progress-warning");
485
+ } else if (title_bar_width < 80) {
486
+ $("#mm-seo-progress-title").removeClass("mm-seo-progress-good");
487
+ $("#mm-seo-progress-title").addClass("mm-seo-progress-warning");
488
+ } else {
489
+ $("#mm-seo-progress-title").removeClass("mm-seo-progress-warning");
490
+ $("#mm-seo-progress-title").addClass("mm-seo-progress-good");
491
+ }
492
 
493
+ var description_lenght = $("#signals_csmm_description").val().length;
494
+ var description_bar_width = Math.round(
495
+ (description_lenght / 300) * 100
496
+ );
497
+ if (description_bar_width > 100) description_bar_width = 100;
498
+ $("#mm-seo-progress-description .mm-seo-progress-bar").css(
499
+ "width",
500
+ description_bar_width + "%"
501
+ );
502
+
503
+ if (description_bar_width == 100) {
504
+ $("#mm-seo-progress-description").removeClass("mm-seo-progress-good");
505
+ $("#mm-seo-progress-description").addClass("mm-seo-progress-warning");
506
+ } else if (description_bar_width < 36) {
507
+ $("#mm-seo-progress-description").removeClass("mm-seo-progress-good");
508
+ $("#mm-seo-progress-description").addClass("mm-seo-progress-warning");
509
+ } else {
510
+ $("#mm-seo-progress-description").removeClass(
511
+ "mm-seo-progress-warning"
512
+ );
513
+ $("#mm-seo-progress-description").addClass("mm-seo-progress-good");
514
+ }
515
+ })
516
+ .trigger("change");
517
 
518
  // reposition main on/off button on window resize and load
519
+ $(window)
520
+ .on("resize", function (e) {
521
+ if ($(".signals-float-right").width() >= 1200) {
522
+ position = 1113;
523
+ } else {
524
+ position = parseInt($(".signals-float-right").width() - 87, 10);
525
+ }
526
+ $("#header-right").css("left", position + "px");
527
+ })
528
+ .trigger("resize");
529
 
530
+ $(".signals-cnt-fix").on("click", ".switchery", function (e) {
531
+ if ($(this).prev("input.pro-option").length != 0) {
532
+ csmm_change_tab("pro");
533
 
534
  e.preventDefault();
535
  return false;
536
  }
537
  });
538
 
539
+ // ios switches
540
+ var elements = Array.prototype.slice.call(
541
+ document.querySelectorAll(".signals-form-ios")
542
+ );
543
+ elements.forEach(function (html) {
544
+ var switchery = new Switchery(html);
545
+ });
546
 
547
  // sortable
548
+ var el = document.getElementById("arrange-items");
549
+ var sortable = Sortable.create(el, {
550
  animation: 150,
551
+ dataIdAttr: "data-id",
552
  store: {
553
  get: function (sortable) {
554
+ var order = localStorage.getItem(sortable.options.group);
555
+ return order ? order.split("|") : [];
556
  },
557
+ set: function (sortable) {
558
  var order = sortable.toArray();
559
+ $("#signals_csmm_arrange").val(order);
560
+ },
561
+ },
562
+ });
563
 
564
  // css and html editor
565
+ getEditor("signals_csmm_html_editor", "signals_csmm_html", "html");
566
+ getEditor("signals_csmm_css_editor", "signals_csmm_css", "css");
567
+
568
+ $(".csmm-change-tab").on("click", function (e) {
569
  e.preventDefault();
570
 
571
+ tab_name = $(this).attr("href");
572
  csmm_change_tab(tab_name);
573
 
574
+ if ($(this).data("anchor")) {
575
+ $("html,body").animate(
576
+ { scrollTop: $("#" + $(this).data("anchor")).offset().top },
577
+ "slow"
578
+ );
579
  }
580
 
581
  return false;
582
  });
583
 
584
+ // tabs
585
+ var $state = $.cookie("signals_csmm_menu");
 
 
 
 
 
 
 
 
 
586
 
587
+ if ($state) {
588
+ $(".signals-main-menu li a").removeClass("active");
589
+ $('a[href="' + $state + '"]').addClass("active");
590
+ $($state).show();
591
+ } else {
592
+ $(".signals-main-menu li:first a").addClass("active");
593
+ $(".signals-tile:first").show();
594
+ }
595
 
596
+ $(".signals-main-menu li a").click(function (e) {
597
  e.preventDefault();
598
 
599
+ $.removeCookie("signals_csmm_menu", { path: "/" });
600
 
601
+ var $selector = $(this);
602
+ var $tab = $selector.attr("href");
603
 
604
+ $(".signals-main-menu li a").removeClass("active");
605
+ $selector.addClass("active");
606
 
607
+ $(".signals-tile").hide();
608
+ $($tab).show();
609
+ $.cookie("signals_csmm_menu", $tab, { path: "/" });
610
+ });
 
 
 
 
 
611
 
612
+ $(".signals-mobile-menu a").click(function () {
613
+ $(".signals-main-menu").slideToggle();
614
+ });
615
 
616
  // dismiss notice
617
+ $(".signals-alert .notice-dismiss").on("click", function (e) {
618
  e.preventDefault();
619
 
620
+ $(this).parents(".signals-alert").fadeOut();
621
 
622
  return false;
623
  });
624
 
625
  // helper for linking anchors in different tabs
626
+ $(".signals-cnt-fix").on("click", ".confirm-action", function (e) {
627
+ message = $(this).data("confirm");
628
 
629
  if (!message || confirm(message)) {
630
  return true;
634
  }
635
  }); // confirm action before link click
636
 
 
637
  // alert user of unsaved changes when doing preview
638
+ old_settings = $("form.signals-admin-form *").not(".skip-save").serialize();
639
+ $("#csmm-preview").on("click", function (e) {
640
+ if (
641
+ $("form.signals-admin-form *").not(".skip-save").serialize() !=
642
+ old_settings
643
+ ) {
644
+ if (
645
+ !confirm(
646
+ "There are unsaved changes that will not be visible in the preview. Please save changes first.\nContinue?"
647
+ )
648
+ ) {
649
  e.preventDefault();
650
  return false;
651
  }
655
  });
656
 
657
  if (!Date.now) {
658
+ Date.now = function () {
659
+ return new Date().getTime();
660
+ };
661
+ }
662
 
663
+ function mm_update_timer() {
664
+ out = "";
665
+ timer = jQuery(".mm-countdown");
666
 
667
+ if (timer.length == 0) {
668
+ clearInterval(mm_countdown_interval);
669
+ }
670
 
671
+ now = Math.round(new Date().getTime() / 1000);
672
+ timer_end = jQuery(timer).data("endtime");
673
+ delta = timer_end - now;
674
+ seconds = Math.floor(delta % 60);
675
+ minutes = Math.floor((delta / 60) % 60);
676
+ hours = Math.floor((delta / (60 * 60)) % 24);
677
 
678
+ if (delta <= 0) {
679
+ clearInterval(mm_countdown_interval);
680
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
681
 
682
+ if (hours) {
683
+ out += hours + "h ";
684
+ }
685
+ if (minutes || out) {
686
+ out += minutes + "min ";
687
+ }
688
+ if (seconds || out) {
689
+ out += seconds + "sec";
690
+ }
691
+ if (delta <= 0 || !out) {
692
+ out = " - no longer available";
693
+ }
694
 
695
+ jQuery(timer).html(out);
 
696
 
697
+ return true;
698
+ } // mm_update_timer
 
 
699
 
700
+ if (jQuery(".mm-countdown").length) {
701
+ mm_countdown_interval = setInterval(mm_update_timer, 1000);
702
+ }
703
+ }); // on ready
704
+ })(jQuery);
framework/admin/js/plugins.js CHANGED
@@ -34,3 +34,19 @@
34
  !function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){this.el=a,this.options=b=s({},b),a[J]=this;var d={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0};for(var e in d)!(e in b)&&(b[e]=d[e]);var g=b.group;g&&"object"==typeof g||(g=b.group={name:g}),["pull","put"].forEach(function(a){a in g||(g[a]=!0)}),b.groups=" "+g.name+(g.put.join?" "+g.put.join(" "):"")+" ";for(var h in this)"_"===h.charAt(0)&&(this[h]=c(this,this[h]));f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),f(a,"dragover",this),f(a,"dragenter",this),R.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){v&&v.state!==a&&(i(v,"display",a?"none":""),!a&&v.state&&w.insertBefore(v,t),v.state=a)}function c(a,b){var c=Q.call(arguments,2);return b.bind?b.bind.apply(b,[a].concat(c)):function(){return b.apply(a,c.concat(Q.call(arguments)))}}function d(a,b,c){if(a){c=c||L,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function e(a){a.dataTransfer.dropEffect="move",a.preventDefault()}function f(a,b,c){a.addEventListener(b,c,!1)}function g(a,b,c){a.removeEventListener(b,c,!1)}function h(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(I," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(I," ")}}function i(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return L.defaultView&&L.defaultView.getComputedStyle?c=L.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function j(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function k(a,b,c,d,e,f,g){var h=L.createEvent("Event"),i=(a||b[J]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=v,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function l(a,b,c,d,e,f){var g,h,i=a[J],j=i.options.onMove;return j&&(g=L.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),h=j.call(i,g)),h}function m(a){a.draggable=!1}function n(){O=!1}function o(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return b.clientY-(d.top+d.height)>5&&c}function p(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function q(a){for(var b=0;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H={},I=/\s+/g,J="Sortable"+(new Date).getTime(),K=window,L=K.document,M=K.parseInt,N=!!("draggable"in L.createElement("div")),O=!1,P=Math.abs,Q=[].slice,R=[],S=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(z!==c&&(y=b.scroll,z=c,y===!0)){y=c;do if(y.offsetWidth<y.scrollWidth||y.offsetHeight<y.scrollHeight)break;while(y=y.parentNode)}y&&(d=y,e=y.getBoundingClientRect(),f=(P(e.right-j)<=h)-(P(e.left-j)<=h),g=(P(e.bottom-k)<=h)-(P(e.top-k)<=h)),f||g||(f=(h>=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=K)),(H.vx!==f||H.vy!==g||H.el!==d)&&(H.el=d,H.vx=f,H.vy=g,clearInterval(H.pid),d&&(H.pid=setInterval(function(){d===K?K.scrollTo(K.pageXOffset+f*i,K.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30);return a.prototype={constructor:a,_onTapStart:function(a){var b=this,c=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,j=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=d(h,e.draggable,c))){if(C=q(h),"function"==typeof j){if(j.call(this,a,h,this))return k(b,i,"filter",h,c,C),void a.preventDefault()}else if(j&&(j=j.split(",").some(function(a){return a=d(i,a.trim(),c),a?(k(b,a,"filter",h,c,C),!0):void 0})))return void a.preventDefault();(!e.handle||d(i,e.handle,c))&&this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,e=this,g=e.el,h=e.options,i=g.ownerDocument;c&&!t&&c.parentNode===g&&(F=a,w=g,t=c,x=t.nextSibling,E=h.group,d=function(){e._disableDelayedDrag(),t.draggable=!0,h.ignore.split(",").forEach(function(a){j(t,a.trim(),m)}),e._triggerDragStart(b)},f(i,"mouseup",e._onDrop),f(i,"touchend",e._onDrop),f(i,"touchcancel",e._onDrop),h.delay?(f(i,"mousemove",e._disableDelayedDrag),f(i,"touchmove",e._disableDelayedDrag),e._dragStartTimer=setTimeout(d,h.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),g(a,"mousemove",this._disableDelayedDrag),g(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(F={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(F,"touch")):N?(f(t,"dragend",this),f(w,"dragstart",this._onDragStart)):this._onDragStart(F,!0);try{L.selection?L.selection.empty():window.getSelection().removeAllRanges()}catch(b){}},_dragStarted:function(){w&&t&&(h(t,this.options.ghostClass,!0),a.active=this,k(this,w,"start",t,w,C))},_emulateDragOver:function(){if(G){i(u,"display","none");var a=L.elementFromPoint(G.clientX,G.clientY),b=a,c=" "+this.options.group.name,d=R.length;if(b)do{if(b[J]&&b[J].options.groups.indexOf(c)>-1){for(;d--;)R[d]({clientX:G.clientX,clientY:G.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);i(u,"display","")}},_onTouchMove:function(a){if(F){var b=a.touches?a.touches[0]:a,c=b.clientX-F.clientX,d=b.clientY-F.clientY,e=a.touches?"translate3d("+c+"px,"+d+"px,0)":"translate("+c+"px,"+d+"px)";G=b,i(u,"webkitTransform",e),i(u,"mozTransform",e),i(u,"msTransform",e),i(u,"transform",e),a.preventDefault()}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;if(this._offUpEvents(),"clone"==E.pull&&(v=t.cloneNode(!0),i(v,"display","none"),w.insertBefore(v,t)),b){var e,g=t.getBoundingClientRect(),h=i(t);u=t.cloneNode(!0),i(u,"top",g.top-M(h.marginTop,10)),i(u,"left",g.left-M(h.marginLeft,10)),i(u,"width",g.width),i(u,"height",g.height),i(u,"opacity","0.8"),i(u,"position","fixed"),i(u,"zIndex","100000"),w.appendChild(u),e=u.getBoundingClientRect(),i(u,"width",2*g.width-e.width),i(u,"height",2*g.height-e.height),"touch"===b?(f(L,"touchmove",this._onTouchMove),f(L,"touchend",this._onDrop),f(L,"touchcancel",this._onDrop)):(f(L,"mousemove",this._onTouchMove),f(L,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,150)}else c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),f(L,"drop",this);setTimeout(this._dragStarted,0)},_onDragOver:function(a){var c,e,f,g=this.el,h=this.options,j=h.group,k=j.put,m=E===j,p=h.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!h.dragoverBubble&&a.stopPropagation()),E&&!h.disabled&&(m?p||(f=!w.contains(t)):E.pull&&k&&(E.name===j.name||k.indexOf&&~k.indexOf(E.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(S(a,h,this.el),O)return;if(c=d(a.target,h.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(v||x?w.insertBefore(t,v||x):p||w.appendChild(t));if(0===g.children.length||g.children[0]===u||g===a.target&&(c=o(g,a))){if(c){if(c.animated)return;r=c.getBoundingClientRect()}b(m),l(w,g,t,e,c,r)!==!1&&(g.appendChild(t),this._animate(e,t),c&&this._animate(r,c))}else if(c&&!c.animated&&c!==t&&void 0!==c.parentNode[J]){A!==c&&(A=c,B=i(c));var q,r=c.getBoundingClientRect(),s=r.right-r.left,y=r.bottom-r.top,z=/left|right|inline/.test(B.cssFloat+B.display),C=c.offsetWidth>t.offsetWidth,D=c.offsetHeight>t.offsetHeight,F=(z?(a.clientX-r.left)/s:(a.clientY-r.top)/y)>.5,G=c.nextElementSibling,H=l(w,g,t,e,c,r);H!==!1&&(O=!0,setTimeout(n,30),b(m),q=1===H||-1===H?1===H:z?c.previousElementSibling===t&&!C||F&&C:G!==t&&!D||F&&D,q&&!G?g.appendChild(t):c.parentNode.insertBefore(t,q?G:c),this._animate(e,t),this._animate(r,c))}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();i(b,"transition","none"),i(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,i(b,"transition","all "+c+"ms"),i(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){i(b,"transition",""),i(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;g(L,"touchmove",this._onTouchMove),g(a,"mouseup",this._onDrop),g(a,"touchend",this._onDrop),g(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(H.pid),clearTimeout(this._dragStartTimer),g(L,"drop",this),g(L,"mousemove",this._onTouchMove),g(c,"dragstart",this._onDragStart),this._offUpEvents(),b&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation(),u&&u.parentNode.removeChild(u),t&&(g(t,"dragend",this),m(t),h(t,this.options.ghostClass,!1),w!==t.parentNode?(D=q(t),k(null,t.parentNode,"sort",t,w,C,D),k(this,w,"sort",t,w,C,D),k(null,t.parentNode,"add",t,w,C,D),k(this,w,"remove",t,w,C,D)):(v&&v.parentNode.removeChild(v),t.nextSibling!==x&&(D=q(t),k(this,w,"update",t,w,C,D),k(this,w,"sort",t,w,C,D))),a.active&&(k(this,w,"end",t,w,C,D),this.save())),w=t=u=x=v=y=z=F=G=A=B=E=a.active=null)},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),e(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],c=this.el.children,e=0,f=c.length,g=this.options;f>e;e++)a=c[e],d(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||p(a));return b},sort:function(a){var b={},c=this.el;this.toArray().forEach(function(a,e){var f=c.children[e];d(f,this.options.draggable,c)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(c.removeChild(b[a]),c.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return d(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:void(c[a]=b)},destroy:function(){var a=this.el;a[J]=null,g(a,"mousedown",this._onTapStart),g(a,"touchstart",this._onTapStart),g(a,"dragover",this),g(a,"dragenter",this),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),R.splice(R.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:f,off:g,css:i,find:j,bind:c,is:function(a,b){return!!d(a,b,a)},extend:s,throttle:r,closest:d,toggleClass:h,index:q},a.version="1.2.1",a.create=function(b,c){return new a(b,c)},a});
35
 
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  !function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){this.el=a,this.options=b=s({},b),a[J]=this;var d={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0};for(var e in d)!(e in b)&&(b[e]=d[e]);var g=b.group;g&&"object"==typeof g||(g=b.group={name:g}),["pull","put"].forEach(function(a){a in g||(g[a]=!0)}),b.groups=" "+g.name+(g.put.join?" "+g.put.join(" "):"")+" ";for(var h in this)"_"===h.charAt(0)&&(this[h]=c(this,this[h]));f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),f(a,"dragover",this),f(a,"dragenter",this),R.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){v&&v.state!==a&&(i(v,"display",a?"none":""),!a&&v.state&&w.insertBefore(v,t),v.state=a)}function c(a,b){var c=Q.call(arguments,2);return b.bind?b.bind.apply(b,[a].concat(c)):function(){return b.apply(a,c.concat(Q.call(arguments)))}}function d(a,b,c){if(a){c=c||L,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")(?=\\s)","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function e(a){a.dataTransfer.dropEffect="move",a.preventDefault()}function f(a,b,c){a.addEventListener(b,c,!1)}function g(a,b,c){a.removeEventListener(b,c,!1)}function h(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(I," ").replace(" "+b+" "," ");a.className=(d+(c?" "+b:"")).replace(I," ")}}function i(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return L.defaultView&&L.defaultView.getComputedStyle?c=L.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function j(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function k(a,b,c,d,e,f,g){var h=L.createEvent("Event"),i=(a||b[J]).options,j="on"+c.charAt(0).toUpperCase()+c.substr(1);h.initEvent(c,!0,!0),h.to=b,h.from=e||b,h.item=d||b,h.clone=v,h.oldIndex=f,h.newIndex=g,b.dispatchEvent(h),i[j]&&i[j].call(a,h)}function l(a,b,c,d,e,f){var g,h,i=a[J],j=i.options.onMove;return j&&(g=L.createEvent("Event"),g.initEvent("move",!0,!0),g.to=b,g.from=a,g.dragged=c,g.draggedRect=d,g.related=e||b,g.relatedRect=f||b.getBoundingClientRect(),h=j.call(i,g)),h}function m(a){a.draggable=!1}function n(){O=!1}function o(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return b.clientY-(d.top+d.height)>5&&c}function p(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function q(a){for(var b=0;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function r(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}function s(a,b){if(a&&b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}var t,u,v,w,x,y,z,A,B,C,D,E,F,G,H={},I=/\s+/g,J="Sortable"+(new Date).getTime(),K=window,L=K.document,M=K.parseInt,N=!!("draggable"in L.createElement("div")),O=!1,P=Math.abs,Q=[].slice,R=[],S=r(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(z!==c&&(y=b.scroll,z=c,y===!0)){y=c;do if(y.offsetWidth<y.scrollWidth||y.offsetHeight<y.scrollHeight)break;while(y=y.parentNode)}y&&(d=y,e=y.getBoundingClientRect(),f=(P(e.right-j)<=h)-(P(e.left-j)<=h),g=(P(e.bottom-k)<=h)-(P(e.top-k)<=h)),f||g||(f=(h>=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=K)),(H.vx!==f||H.vy!==g||H.el!==d)&&(H.el=d,H.vx=f,H.vy=g,clearInterval(H.pid),d&&(H.pid=setInterval(function(){d===K?K.scrollTo(K.pageXOffset+f*i,K.pageYOffset+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30);return a.prototype={constructor:a,_onTapStart:function(a){var b=this,c=this.el,e=this.options,f=a.type,g=a.touches&&a.touches[0],h=(g||a).target,i=h,j=e.filter;if(!("mousedown"===f&&0!==a.button||e.disabled)&&(h=d(h,e.draggable,c))){if(C=q(h),"function"==typeof j){if(j.call(this,a,h,this))return k(b,i,"filter",h,c,C),void a.preventDefault()}else if(j&&(j=j.split(",").some(function(a){return a=d(i,a.trim(),c),a?(k(b,a,"filter",h,c,C),!0):void 0})))return void a.preventDefault();(!e.handle||d(i,e.handle,c))&&this._prepareDragStart(a,g,h)}},_prepareDragStart:function(a,b,c){var d,e=this,g=e.el,h=e.options,i=g.ownerDocument;c&&!t&&c.parentNode===g&&(F=a,w=g,t=c,x=t.nextSibling,E=h.group,d=function(){e._disableDelayedDrag(),t.draggable=!0,h.ignore.split(",").forEach(function(a){j(t,a.trim(),m)}),e._triggerDragStart(b)},f(i,"mouseup",e._onDrop),f(i,"touchend",e._onDrop),f(i,"touchcancel",e._onDrop),h.delay?(f(i,"mousemove",e._disableDelayedDrag),f(i,"touchmove",e._disableDelayedDrag),e._dragStartTimer=setTimeout(d,h.delay)):d())},_disableDelayedDrag:function(){var a=this.el.ownerDocument;clearTimeout(this._dragStartTimer),g(a,"mousemove",this._disableDelayedDrag),g(a,"touchmove",this._disableDelayedDrag)},_triggerDragStart:function(a){a?(F={target:t,clientX:a.clientX,clientY:a.clientY},this._onDragStart(F,"touch")):N?(f(t,"dragend",this),f(w,"dragstart",this._onDragStart)):this._onDragStart(F,!0);try{L.selection?L.selection.empty():window.getSelection().removeAllRanges()}catch(b){}},_dragStarted:function(){w&&t&&(h(t,this.options.ghostClass,!0),a.active=this,k(this,w,"start",t,w,C))},_emulateDragOver:function(){if(G){i(u,"display","none");var a=L.elementFromPoint(G.clientX,G.clientY),b=a,c=" "+this.options.group.name,d=R.length;if(b)do{if(b[J]&&b[J].options.groups.indexOf(c)>-1){for(;d--;)R[d]({clientX:G.clientX,clientY:G.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);i(u,"display","")}},_onTouchMove:function(a){if(F){var b=a.touches?a.touches[0]:a,c=b.clientX-F.clientX,d=b.clientY-F.clientY,e=a.touches?"translate3d("+c+"px,"+d+"px,0)":"translate("+c+"px,"+d+"px)";G=b,i(u,"webkitTransform",e),i(u,"mozTransform",e),i(u,"msTransform",e),i(u,"transform",e),a.preventDefault()}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;if(this._offUpEvents(),"clone"==E.pull&&(v=t.cloneNode(!0),i(v,"display","none"),w.insertBefore(v,t)),b){var e,g=t.getBoundingClientRect(),h=i(t);u=t.cloneNode(!0),i(u,"top",g.top-M(h.marginTop,10)),i(u,"left",g.left-M(h.marginLeft,10)),i(u,"width",g.width),i(u,"height",g.height),i(u,"opacity","0.8"),i(u,"position","fixed"),i(u,"zIndex","100000"),w.appendChild(u),e=u.getBoundingClientRect(),i(u,"width",2*g.width-e.width),i(u,"height",2*g.height-e.height),"touch"===b?(f(L,"touchmove",this._onTouchMove),f(L,"touchend",this._onDrop),f(L,"touchcancel",this._onDrop)):(f(L,"mousemove",this._onTouchMove),f(L,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,150)}else c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,t)),f(L,"drop",this);setTimeout(this._dragStarted,0)},_onDragOver:function(a){var c,e,f,g=this.el,h=this.options,j=h.group,k=j.put,m=E===j,p=h.sort;if(void 0!==a.preventDefault&&(a.preventDefault(),!h.dragoverBubble&&a.stopPropagation()),E&&!h.disabled&&(m?p||(f=!w.contains(t)):E.pull&&k&&(E.name===j.name||k.indexOf&&~k.indexOf(E.name)))&&(void 0===a.rootEl||a.rootEl===this.el)){if(S(a,h,this.el),O)return;if(c=d(a.target,h.draggable,g),e=t.getBoundingClientRect(),f)return b(!0),void(v||x?w.insertBefore(t,v||x):p||w.appendChild(t));if(0===g.children.length||g.children[0]===u||g===a.target&&(c=o(g,a))){if(c){if(c.animated)return;r=c.getBoundingClientRect()}b(m),l(w,g,t,e,c,r)!==!1&&(g.appendChild(t),this._animate(e,t),c&&this._animate(r,c))}else if(c&&!c.animated&&c!==t&&void 0!==c.parentNode[J]){A!==c&&(A=c,B=i(c));var q,r=c.getBoundingClientRect(),s=r.right-r.left,y=r.bottom-r.top,z=/left|right|inline/.test(B.cssFloat+B.display),C=c.offsetWidth>t.offsetWidth,D=c.offsetHeight>t.offsetHeight,F=(z?(a.clientX-r.left)/s:(a.clientY-r.top)/y)>.5,G=c.nextElementSibling,H=l(w,g,t,e,c,r);H!==!1&&(O=!0,setTimeout(n,30),b(m),q=1===H||-1===H?1===H:z?c.previousElementSibling===t&&!C||F&&C:G!==t&&!D||F&&D,q&&!G?g.appendChild(t):c.parentNode.insertBefore(t,q?G:c),this._animate(e,t),this._animate(r,c))}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();i(b,"transition","none"),i(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,i(b,"transition","all "+c+"ms"),i(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){i(b,"transition",""),i(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){var a=this.el.ownerDocument;g(L,"touchmove",this._onTouchMove),g(a,"mouseup",this._onDrop),g(a,"touchend",this._onDrop),g(a,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(H.pid),clearTimeout(this._dragStartTimer),g(L,"drop",this),g(L,"mousemove",this._onTouchMove),g(c,"dragstart",this._onDragStart),this._offUpEvents(),b&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation(),u&&u.parentNode.removeChild(u),t&&(g(t,"dragend",this),m(t),h(t,this.options.ghostClass,!1),w!==t.parentNode?(D=q(t),k(null,t.parentNode,"sort",t,w,C,D),k(this,w,"sort",t,w,C,D),k(null,t.parentNode,"add",t,w,C,D),k(this,w,"remove",t,w,C,D)):(v&&v.parentNode.removeChild(v),t.nextSibling!==x&&(D=q(t),k(this,w,"update",t,w,C,D),k(this,w,"sort",t,w,C,D))),a.active&&(k(this,w,"end",t,w,C,D),this.save())),w=t=u=x=v=y=z=F=G=A=B=E=a.active=null)},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?t&&(this._onDragOver(a),e(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],c=this.el.children,e=0,f=c.length,g=this.options;f>e;e++)a=c[e],d(a,g.draggable,this.el)&&b.push(a.getAttribute(g.dataIdAttr)||p(a));return b},sort:function(a){var b={},c=this.el;this.toArray().forEach(function(a,e){var f=c.children[e];d(f,this.options.draggable,c)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(c.removeChild(b[a]),c.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return d(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:void(c[a]=b)},destroy:function(){var a=this.el;a[J]=null,g(a,"mousedown",this._onTapStart),g(a,"touchstart",this._onTapStart),g(a,"dragover",this),g(a,"dragenter",this),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),R.splice(R.indexOf(this._onDragOver),1),this._onDrop(),this.el=a=null}},a.utils={on:f,off:g,css:i,find:j,bind:c,is:function(a,b){return!!d(a,b,a)},extend:s,throttle:r,closest:d,toggleClass:h,index:q},a.version="1.2.1",a.create=function(b,c){return new a(b,c)},a});
35
 
36
 
37
+ /*
38
+ CSMM_Sweetalert2
39
+ https://github.com/Sweetalert2/Sweetalert2
40
+ MIT License
41
+ */
42
+
43
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).csmm_Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function a(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function l(t,e,n){return(l=function(){if("undefined"!=typeof Reflect&&Reflect.construct&&!Reflect.construct.sham){if("function"==typeof Proxy)return 1;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),1}catch(t){return}}}()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&u(i,n.prototype),i}).apply(null,arguments)}function d(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function p(t,e,n){return(p="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var o=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(o){var i=Object.getOwnPropertyDescriptor(o,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function f(e){return Object.keys(e).map(function(t){return e[t]})}function m(t){return Array.prototype.slice.call(t)}function v(t){console.error("".concat(V," ").concat(t))}function h(t,e){var n;n='"'.concat(t,'" is deprecated and will be removed in the next major release. Please use "').concat(e,'" instead.'),-1===D.indexOf(n)&&(D.push(n),R(n))}function g(t){return t&&Promise.resolve(t)===t}function b(t){return t instanceof Element||"object"===r(e=t)&&e.jquery;var e}function t(t){var e={};for(var n in t)e[t[n]]="swal2-"+t[n];return e}function y(t){var e=z();return e?e.querySelector(t):null}function e(t){return y(".".concat(t))}function n(){var t=W();return m(t.querySelectorAll(".".concat(_.icon)))}function w(){var t=n().filter(function(t){return dt(t)});return t.length?t[0]:null}function C(){return e(_.title)}function k(){return e(_.content)}function x(){return e(_.image)}function P(){return e(_["progress-steps"])}function A(){return e(_["validation-message"])}function B(){return y(".".concat(_.actions," .").concat(_.confirm))}function T(){return y(".".concat(_.actions," .").concat(_.cancel))}function E(){return e(_.actions)}function S(){return e(_.header)}function L(){return e(_.footer)}function O(){return e(_["timer-progress-bar"])}function M(){return e(_.close)}function H(){var t=m(W().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(t,e){return t=parseInt(t.getAttribute("tabindex")),(e=parseInt(e.getAttribute("tabindex")))<t?1:t<e?-1:0}),e=m(W().querySelectorAll('\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex="0"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n')).filter(function(t){return"-1"!==t.getAttribute("tabindex")});return function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(t.concat(e)).filter(function(t){return dt(t)})}function I(){return!K()&&!document.body.classList.contains(_["no-backdrop"])}function j(t,e){if(e){for(var n=e.split(/\s+/),o=0;o<n.length;o++)if(!t.classList.contains(n[o]))return;return 1}}function q(t,e,n){var o,i;if(i=e,m((o=t).classList).forEach(function(t){-1===f(_).indexOf(t)&&-1===f(F).indexOf(t)&&-1===f(i.showClass).indexOf(t)&&o.classList.remove(t)}),e.customClass&&e.customClass[n]){if("string"!=typeof e.customClass[n]&&!e.customClass[n].forEach)return R("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(r(e.customClass[n]),'"'));st(t,e.customClass[n])}}var V="SweetAlert2:",R=function(t){console.warn("".concat(V," ").concat(t))},D=[],N=function(t){return"function"==typeof t?t():t},U=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),_=t(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","toast-column","show","hide","close","title","header","content","html-container","actions","confirm","cancel","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),F=t(["success","warning","info","question","error"]),z=function(){return document.body.querySelector(".".concat(_.container))},W=function(){return e(_.popup)},K=function(){return document.body.classList.contains(_["toast-shown"])},Y={previousBodyPadding:null};function Z(t,e){if(!e)return null;switch(e){case"select":case"textarea":case"file":return lt(t,_[e]);case"checkbox":return t.querySelector(".".concat(_.checkbox," input"));case"radio":return t.querySelector(".".concat(_.radio," input:checked"))||t.querySelector(".".concat(_.radio," input:first-child"));case"range":return t.querySelector(".".concat(_.range," input"));default:return lt(t,_.input)}}function Q(t){if(t.focus(),"file"!==t.type){var e=t.value;t.value="",t.value=e}}function $(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach(function(e){t.forEach?t.forEach(function(t){n?t.classList.add(e):t.classList.remove(e)}):n?t.classList.add(e):t.classList.remove(e)}))}function J(t,e,n){n||0===parseInt(n)?t.style[e]="number"==typeof n?"".concat(n,"px"):n:t.style.removeProperty(e)}function X(t,e){var n=1<arguments.length&&void 0!==e?e:"flex";t.style.opacity="",t.style.display=n}function G(t){t.style.opacity="",t.style.display="none"}function tt(t,e,n){e?X(t,n):G(t)}function et(t){var e=window.getComputedStyle(t),n=parseFloat(e.getPropertyValue("animation-duration")||"0"),o=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0<n||0<o}function nt(t,e){var n=1<arguments.length&&void 0!==e&&e,o=O();dt(o)&&(n&&(o.style.transition="none",o.style.width="100%"),setTimeout(function(){o.style.transition="width ".concat(t/1e3,"s linear"),o.style.width="0%"},10))}function ot(){return"undefined"==typeof window||"undefined"==typeof document}function it(t){Xe.isVisible()&&ct!==t.target.value&&Xe.resetValidationMessage(),ct=t.target.value}function rt(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?mt(t,e):t&&(e.innerHTML=t)}function at(t,e){var n=E(),o=B(),i=T();e.showConfirmButton||e.showCancelButton||G(n),q(n,e,"actions"),vt(o,"confirm",e),vt(i,"cancel",e),e.buttonsStyling?function(t,e,n){st([t,e],_.styled),n.confirmButtonColor&&(t.style.backgroundColor=n.confirmButtonColor);n.cancelButtonColor&&(e.style.backgroundColor=n.cancelButtonColor);var o=window.getComputedStyle(t).getPropertyValue("background-color");t.style.borderLeftColor=o,t.style.borderRightColor=o}(o,i,e):(ut([o,i],_.styled),o.style.backgroundColor=o.style.borderLeftColor=o.style.borderRightColor="",i.style.backgroundColor=i.style.borderLeftColor=i.style.borderRightColor=""),e.reverseButtons&&o.parentNode.insertBefore(i,o)}var ct,st=function(t,e){$(t,e,!0)},ut=function(t,e){$(t,e,!1)},lt=function(t,e){for(var n=0;n<t.childNodes.length;n++)if(j(t.childNodes[n],e))return t.childNodes[n]},dt=function(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))},pt='\n <div aria-labelledby="'.concat(_.title,'" aria-describedby="').concat(_.content,'" class="').concat(_.popup,'" tabindex="-1">\n <div class="').concat(_.header,'">\n <ul class="').concat(_["progress-steps"],'"></ul>\n <div class="').concat(_.icon," ").concat(F.error,'"></div>\n <div class="').concat(_.icon," ").concat(F.question,'"></div>\n <div class="').concat(_.icon," ").concat(F.warning,'"></div>\n <div class="').concat(_.icon," ").concat(F.info,'"></div>\n <div class="').concat(_.icon," ").concat(F.success,'"></div>\n <img class="').concat(_.image,'" />\n <h2 class="').concat(_.title,'" id="').concat(_.title,'"></h2>\n <button type="button" class="').concat(_.close,'"></button>\n </div>\n <div class="').concat(_.content,'">\n <div id="').concat(_.content,'" class="').concat(_["html-container"],'"></div>\n <input class="').concat(_.input,'" />\n <input type="file" class="').concat(_.file,'" />\n <div class="').concat(_.range,'">\n <input type="range" />\n <output></output>\n </div>\n <select class="').concat(_.select,'"></select>\n <div class="').concat(_.radio,'"></div>\n <label for="').concat(_.checkbox,'" class="').concat(_.checkbox,'">\n <input type="checkbox" />\n <span class="').concat(_.label,'"></span>\n </label>\n <textarea class="').concat(_.textarea,'"></textarea>\n <div class="').concat(_["validation-message"],'" id="').concat(_["validation-message"],'"></div>\n </div>\n <div class="').concat(_.actions,'">\n <button type="button" class="').concat(_.confirm,'">OK</button>\n <button type="button" class="').concat(_.cancel,'">Cancel</button>\n </div>\n <div class="').concat(_.footer,'"></div>\n <div class="').concat(_["timer-progress-bar"],'"></div>\n </div>\n').replace(/(^|\n)\s*/g,""),ft=function(t){var e,n=!!(e=z())&&(e.parentNode.removeChild(e),ut([document.documentElement,document.body],[_["no-backdrop"],_["toast-shown"],_["has-column"]]),!0);if(ot())v("SweetAlert2 requires document to initialize");else{var o=document.createElement("div");o.className=_.container,n&&st(o,_["no-transition"]),o.innerHTML=pt;var i,r,a,c,s,u,l,d,p,f,m,h,g="string"==typeof(i=t.target)?document.querySelector(i):i;g.appendChild(o),r=t,(a=W()).setAttribute("role",r.toast?"alert":"dialog"),a.setAttribute("aria-live",r.toast?"polite":"assertive"),r.toast||a.setAttribute("aria-modal","true"),c=g,"rtl"===window.getComputedStyle(c).direction&&st(z(),_.rtl),s=k(),u=lt(s,_.input),l=lt(s,_.file),d=s.querySelector(".".concat(_.range," input")),p=s.querySelector(".".concat(_.range," output")),f=lt(s,_.select),m=s.querySelector(".".concat(_.checkbox," input")),h=lt(s,_.textarea),u.oninput=it,l.onchange=it,f.onchange=it,m.onchange=it,h.oninput=it,d.oninput=function(t){it(t),p.value=d.value},d.onchange=function(t){it(t),d.nextSibling.value=d.value}}},mt=function(t,e){t.jquery?ht(e,t):e.innerHTML=t.toString()},ht=function(t,e){if(t.innerHTML="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},gt=function(){if(ot())return!1;var t=document.createElement("div"),e={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&void 0!==t.style[n])return e[n];return!1}();function vt(t,e,n){var o;tt(t,n["show".concat((o=e).charAt(0).toUpperCase()+o.slice(1),"Button")],"inline-block"),t.innerHTML=n["".concat(e,"ButtonText")],t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=_[e],q(t,n,"".concat(e,"Button")),st(t,n["".concat(e,"ButtonClass")])}function bt(t,e){var n=z();if(n){var o,i,r,a;o=n,"string"==typeof(i=e.backdrop)?o.style.background=i:i||st([document.documentElement,document.body],_["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&R('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),r=n,(a=e.position)in _?st(r,_[a]):(R('The "position" parameter is not valid, defaulting to "center"'),st(r,_.center)),function(t,e){if(e&&"string"==typeof e){var n="grow-".concat(e);n in _&&st(t,_[n])}}(n,e.grow),q(n,e,"container");var c=document.body.getAttribute("data-swal2-queue-step");c&&(n.setAttribute("data-queue-step",c),document.body.removeAttribute("data-swal2-queue-step"))}}function yt(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}var wt={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Ct=["input","file","range","select","radio","checkbox","textarea"],kt=function(t){if(!Bt[t.input])return v('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=At(t.input),n=Bt[t.input](e,t);X(n),setTimeout(function(){Q(n)})},xt=function(t,e){var n=Z(k(),t);if(n)for(var o in!function(t){for(var e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;-1===["type","value","style"].indexOf(n)&&t.removeAttribute(n)}}(n),e)"range"===t&&"placeholder"===o||n.setAttribute(o,e[o])},Pt=function(t){var e=At(t.input);t.customClass&&st(e,t.customClass.input)},At=function(t){var e=_[t]?_[t]:_.input;return lt(k(),e)},Bt={};Bt.text=Bt.email=Bt.password=Bt.number=Bt.tel=Bt.url=function(t,e){return"string"==typeof e.inputValue||"number"==typeof e.inputValue?t.value=e.inputValue:g(e.inputValue)||R('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(r(e.inputValue),'"')),yt(t,e),t.type=e.input,t},Bt.file=function(t,e){return yt(t,e),t},Bt.range=function(t,e){var n=t.querySelector("input"),o=t.querySelector("output");return n.value=e.inputValue,n.type=e.input,o.value=e.inputValue,t},Bt.select=function(t,e){if(t.innerHTML="",e.inputPlaceholder){var n=document.createElement("option");n.innerHTML=e.inputPlaceholder,n.value="",n.disabled=!0,n.selected=!0,t.appendChild(n)}return t},Bt.radio=function(t){return t.innerHTML="",t},Bt.checkbox=function(t,e){var n=Z(k(),"checkbox");return n.value=1,n.id=_.checkbox,n.checked=Boolean(e.inputValue),t.querySelector("span").innerHTML=e.inputPlaceholder,t},Bt.textarea=function(e,t){if(e.value=t.inputValue,yt(e,t),"MutationObserver"in window){var n=parseInt(window.getComputedStyle(W()).width),o=parseInt(window.getComputedStyle(W()).paddingLeft)+parseInt(window.getComputedStyle(W()).paddingRight);new MutationObserver(function(){var t=e.offsetWidth+o;W().style.width=n<t?"".concat(t,"px"):null}).observe(e,{attributes:!0,attributeFilter:["style"]})}return e};function Tt(t,e){var n,o,i,r,a,c=k().querySelector("#".concat(_.content));e.html?(rt(e.html,c),X(c,"block")):e.text?(c.textContent=e.text,X(c,"block")):G(c),n=t,o=e,i=k(),r=wt.innerParams.get(n),a=!r||o.input!==r.input,Ct.forEach(function(t){var e=_[t],n=lt(i,e);xt(t,o.inputAttributes),n.className=e,a&&G(n)}),o.input&&(a&&kt(o),Pt(o)),q(k(),e,"content")}function Et(){return z().getAttribute("data-queue-step")}function St(t,s){var u=P();if(!s.progressSteps||0===s.progressSteps.length)return G(u);X(u),u.innerHTML="";var l=parseInt(void 0===s.currentProgressStep?Et():s.currentProgressStep);l>=s.progressSteps.length&&R("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),s.progressSteps.forEach(function(t,e){var n,o,i,r,a=(n=t,o=document.createElement("li"),st(o,_["progress-step"]),o.innerHTML=n,o);if(u.appendChild(a),e===l&&st(a,_["active-progress-step"]),e!==s.progressSteps.length-1){var c=(i=t,r=document.createElement("li"),st(r,_["progress-step-line"]),i.progressStepsDistance&&(r.style.width=i.progressStepsDistance),r);u.appendChild(c)}})}function Lt(t,e){var n,o,i,r,a=S();q(a,e,"header"),St(0,e),function(t,e){var n=wt.innerParams.get(t);if(n&&e.icon===n.icon&&w())q(w(),e,"icon");else if(Ht(),e.icon)if(-1!==Object.keys(F).indexOf(e.icon)){var o=y(".".concat(_.icon,".").concat(F[e.icon]));X(o),jt(o,e),It(),q(o,e,"icon"),st(o,e.showClass.icon)}else v('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"'))}(t,e),function(t){var e=x();if(!t.imageUrl)return G(e);X(e),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),J(e,"width",t.imageWidth),J(e,"height",t.imageHeight),e.className=_.image,q(e,t,"image")}(e),n=e,o=C(),tt(o,n.title||n.titleText),n.title&&rt(n.title,o),n.titleText&&(o.innerText=n.titleText),q(o,n,"title"),i=e,(r=M()).innerHTML=i.closeButtonHtml,q(r,i,"closeButton"),tt(r,i.showCloseButton),r.setAttribute("aria-label",i.closeButtonAriaLabel)}function Ot(t,e){var n,o,i,r;n=e,o=W(),J(o,"width",n.width),J(o,"padding",n.padding),n.background&&(o.style.background=n.background),Rt(o,n),bt(0,e),Lt(t,e),Tt(t,e),at(0,e),i=e,r=L(),tt(r,i.footer),i.footer&&rt(i.footer,r),q(r,i,"footer"),"function"==typeof e.onRender&&e.onRender(W())}function Mt(){return B()&&B().click()}var Ht=function(){for(var t=n(),e=0;e<t.length;e++)G(t[e])},It=function(){for(var t=W(),e=window.getComputedStyle(t).getPropertyValue("background-color"),n=t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),o=0;o<n.length;o++)n[o].style.backgroundColor=e},jt=function(t,e){if(t.innerHTML="",e.iconHtml)t.innerHTML=qt(e.iconHtml);else if("success"===e.icon)t.innerHTML='\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n ';else if("error"===e.icon)t.innerHTML='\n <span class="swal2-x-mark">\n <span class="swal2-x-mark-line-left"></span>\n <span class="swal2-x-mark-line-right"></span>\n </span>\n ';else{t.innerHTML=qt({question:"?",warning:"!",info:"i"}[e.icon])}},qt=function(t){return'<div class="'.concat(_["icon-content"],'">').concat(t,"</div>")},Vt=[],Rt=function(t,e){t.className="".concat(_.popup," ").concat(dt(t)?e.showClass.popup:""),e.toast?(st([document.documentElement,document.body],_["toast-shown"]),st(t,_.toast)):st(t,_.modal),q(t,e,"popup"),"string"==typeof e.customClass&&st(t,e.customClass),e.icon&&st(t,_["icon-".concat(e.icon)])};function Dt(){var t=W();t||Xe.fire(),t=W();var e=E(),n=B();X(e),X(n,"inline-block"),st([t,e],_.loading),n.disabled=!0,t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()}function Nt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;Wt.restoreFocusTimeout=setTimeout(function(){Wt.previousActiveElement&&Wt.previousActiveElement.focus?(Wt.previousActiveElement.focus(),Wt.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Ut(){if(Wt.timeout)return function(){var t=O(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),o=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(o,"%")}(),Wt.timeout.stop()}function _t(){if(Wt.timeout){var t=Wt.timeout.start();return nt(t),t}}function Ft(t){return Object.prototype.hasOwnProperty.call(Kt,t)}function zt(t){return Zt[t]}var Wt={},Kt={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:void 0,target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showCancelButton:!1,preConfirm:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"&times;",closeButtonAriaLabel:"Close this dialog",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,onRender:void 0,onClose:void 0,onAfterClose:void 0,onDestroy:void 0,scrollbarPadding:!0},Yt=["title","titleText","text","html","icon","hideClass","customClass","allowOutsideClick","allowEscapeKey","showConfirmButton","showCancelButton","confirmButtonText","confirmButtonAriaLabel","confirmButtonColor","cancelButtonText","cancelButtonAriaLabel","cancelButtonColor","buttonsStyling","reverseButtons","imageUrl","imageWidth","imageHeight","imageAlt","progressSteps","currentProgressStep"],Zt={animation:'showClass" and "hideClass'},Qt=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusCancel","heightAuto","keydownListenerCapture"],$t=Object.freeze({isValidParameter:Ft,isUpdatableParameter:function(t){return-1!==Yt.indexOf(t)},isDeprecatedParameter:zt,argsToParams:function(o){var i={};return"object"!==r(o[0])||b(o[0])?["title","html","icon"].forEach(function(t,e){var n=o[e];"string"==typeof n||b(n)?i[t]=n:void 0!==n&&v("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(n)))}):c(i,o[0]),i},isVisible:function(){return dt(W())},clickConfirm:Mt,clickCancel:function(){return T()&&T().click()},getContainer:z,getPopup:W,getTitle:C,getContent:k,getHtmlContainer:function(){return e(_["html-container"])},getImage:x,getIcon:w,getIcons:n,getCloseButton:M,getActions:E,getConfirmButton:B,getCancelButton:T,getHeader:S,getFooter:L,getTimerProgressBar:O,getFocusableElements:H,getValidationMessage:A,isLoading:function(){return W().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return l(this,e)},mixin:function(n){return function(t){function e(){return o(this,e),d(this,s(e).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(e,t),a(e,[{key:"_main",value:function(t){return p(s(e.prototype),"_main",this).call(this,c({},n,t))}}]),e}(this)},queue:function(t){var r=this;Vt=t;function a(t,e){Vt=[],t(e)}var c=[];return new Promise(function(i){!function e(n,o){n<Vt.length?(document.body.setAttribute("data-swal2-queue-step",n),r.fire(Vt[n]).then(function(t){void 0!==t.value?(c.push(t.value),e(n+1,o)):a(i,{dismiss:t.dismiss})})):a(i,{value:c})}(0)})},getQueueStep:Et,insertQueueStep:function(t,e){return e&&e<Vt.length?Vt.splice(e,0,t):Vt.push(t)},deleteQueueStep:function(t){void 0!==Vt[t]&&Vt.splice(t,1)},showLoading:Dt,enableLoading:Dt,getTimerLeft:function(){return Wt.timeout&&Wt.timeout.getTimerLeft()},stopTimer:Ut,resumeTimer:_t,toggleTimer:function(){var t=Wt.timeout;return t&&(t.running?Ut:_t)()},increaseTimer:function(t){if(Wt.timeout){var e=Wt.timeout.increase(t);return nt(e,!0),e}},isTimerRunning:function(){return Wt.timeout&&Wt.timeout.isRunning()}});function Jt(){var t=wt.innerParams.get(this);if(t){var e=wt.domCache.get(this);t.showConfirmButton||(G(e.confirmButton),t.showCancelButton||G(e.actions)),ut([e.popup,e.actions],_.loading),e.popup.removeAttribute("aria-busy"),e.popup.removeAttribute("data-loading"),e.confirmButton.disabled=!1,e.cancelButton.disabled=!1}}function Xt(){null===Y.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(Y.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(Y.previousBodyPadding+function(){var t=document.createElement("div");t.className=_["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function Gt(){return!!window.MSInputMethodContext&&!!document.documentMode}function te(){var t=z(),e=W();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var ee=function(){var n,o=z();o.ontouchstart=function(t){var e;n=t.target===o||!((e=o).scrollHeight>e.clientHeight)&&"INPUT"!==t.target.tagName},o.ontouchmove=function(t){n&&(t.preventDefault(),t.stopPropagation())}},ne={swalPromiseResolve:new WeakMap};function oe(t,e,n,o){n?ae(t,o):(Nt().then(function(){return ae(t,o)}),Wt.keydownTarget.removeEventListener("keydown",Wt.keydownHandler,{capture:Wt.keydownListenerCapture}),Wt.keydownHandlerAdded=!1),e.parentNode&&!document.body.getAttribute("data-swal2-queue-step")&&e.parentNode.removeChild(e),I()&&(null!==Y.previousBodyPadding&&(document.body.style.paddingRight="".concat(Y.previousBodyPadding,"px"),Y.previousBodyPadding=null),function(){if(j(document.body,_.iosfix)){var t=parseInt(document.body.style.top,10);ut(document.body,_.iosfix),document.body.style.top="",document.body.scrollTop=-1*t}}(),"undefined"!=typeof window&&Gt()&&window.removeEventListener("resize",te),m(document.body.children).forEach(function(t){t.hasAttribute("data-previous-aria-hidden")?(t.setAttribute("aria-hidden",t.getAttribute("data-previous-aria-hidden")),t.removeAttribute("data-previous-aria-hidden")):t.removeAttribute("aria-hidden")})),ut([document.documentElement,document.body],[_.shown,_["height-auto"],_["no-backdrop"],_["toast-shown"],_["toast-column"]])}function ie(t){var e=W();if(e){var n=wt.innerParams.get(this);if(n&&!j(e,n.hideClass.popup)){var o=ne.swalPromiseResolve.get(this);ut(e,n.showClass.popup),st(e,n.hideClass.popup);var i=z();ut(i,n.showClass.backdrop),st(i,n.hideClass.backdrop),function(t,e,n){var o=z(),i=gt&&et(e),r=n.onClose,a=n.onAfterClose;if(r!==null&&typeof r==="function"){r(e)}if(i){re(t,e,o,a)}else{oe(t,o,K(),a)}}(this,e,n),o(t||{})}}}var re=function(t,e,n,o){Wt.swalCloseEventFinishedCallback=oe.bind(null,t,n,K(),o),e.addEventListener(gt,function(t){t.target===e&&(Wt.swalCloseEventFinishedCallback(),delete Wt.swalCloseEventFinishedCallback)})},ae=function(t,e){setTimeout(function(){"function"==typeof e&&e(),t._destroy()})};function ce(t,e,n){var o=wt.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function se(t,e){if(!t)return!1;if("radio"===t.type)for(var n=t.parentNode.parentNode.querySelectorAll("input"),o=0;o<n.length;o++)n[o].disabled=e;else t.disabled=e}var ue=function(){function n(t,e){o(this,n),this.callback=t,this.remaining=e,this.running=!1,this.start()}return a(n,[{key:"start",value:function(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}},{key:"stop",value:function(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=new Date-this.started),this.remaining}},{key:"increase",value:function(t){var e=this.running;return e&&this.stop(),this.remaining+=t,e&&this.start(),this.remaining}},{key:"getTimerLeft",value:function(){return this.running&&(this.stop(),this.start()),this.remaining}},{key:"isRunning",value:function(){return this.running}}]),n}(),le={email:function(t,e){return/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function de(t){var e,n;(e=t).inputValidator||Object.keys(le).forEach(function(t){e.input===t&&(e.inputValidator=le[t])}),t.showLoaderOnConfirm&&!t.preConfirm&&R("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),t.animation=N(t.animation),(n=t).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(R('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof t.title&&(t.title=t.title.split("\n").join("<br />")),ft(t)}function pe(t){var e=z(),n=W();"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n),xe(e,n,t),Ce(e,n),I()&&ke(e,t.scrollbarPadding),K()||Wt.previousActiveElement||(Wt.previousActiveElement=document.activeElement),"function"==typeof t.onOpen&&setTimeout(function(){return t.onOpen(n)}),ut(e,_["no-transition"])}function fe(t){var e=W();if(t.target===e){var n=z();e.removeEventListener(gt,fe),n.style.overflowY="auto"}}function me(t,e){"select"===e.input||"radio"===e.input?Te(t,e):-1!==["text","email","number","tel","textarea"].indexOf(e.input)&&g(e.inputValue)&&Ee(t,e)}function he(t,e){t.disableButtons(),e.input?Oe(t,e):Me(t,e,!0)}function ge(t,e){t.disableButtons(),e(U.cancel)}function ve(t,e){t.closePopup({value:e})}function be(e,t,n,o){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1),n.toast||(t.keydownHandler=function(t){return je(e,t,o)},t.keydownTarget=n.keydownListenerCapture?window:W(),t.keydownListenerCapture=n.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}function ye(t,e,n){var o=H(),i=0;if(i<o.length)return(e+=n)===o.length?e=0:-1===e&&(e=o.length-1),o[e].focus();W().focus()}function we(t,e,n){wt.innerParams.get(t).toast?Ne(t,e,n):(_e(e),Fe(e),ze(t,e,n))}var Ce=function(t,e){gt&&et(e)?(t.style.overflowY="hidden",e.addEventListener(gt,fe)):t.style.overflowY="auto"},ke=function(t,e){!function(){if((/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1<navigator.maxTouchPoints)&&!j(document.body,_.iosfix)){var t=document.body.scrollTop;document.body.style.top="".concat(-1*t,"px"),st(document.body,_.iosfix),ee()}}(),"undefined"!=typeof window&&Gt()&&(te(),window.addEventListener("resize",te)),m(document.body.children).forEach(function(t){t===z()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,z())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))}),e&&Xt(),setTimeout(function(){t.scrollTop=0})},xe=function(t,e,n){st(t,n.showClass.backdrop),X(e),st(e,n.showClass.popup),st([document.documentElement,document.body],_.shown),n.heightAuto&&n.backdrop&&!n.toast&&st([document.documentElement,document.body],_["height-auto"])},Pe=function(t){return t.checked?1:0},Ae=function(t){return t.checked?t.value:null},Be=function(t){return t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},Te=function(e,n){function o(t){return Se[n.input](i,Le(t),n)}var i=k();g(n.inputOptions)?(Dt(),n.inputOptions.then(function(t){e.hideLoading(),o(t)})):"object"===r(n.inputOptions)?o(n.inputOptions):v("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(n.inputOptions)))},Ee=function(e,n){var o=e.getInput();G(o),n.inputValue.then(function(t){o.value="number"===n.input?parseFloat(t)||0:"".concat(t),X(o),o.focus(),e.hideLoading()}).catch(function(t){v("Error in inputValue promise: ".concat(t)),o.value="",X(o),o.focus(),e.hideLoading()})},Se={select:function(t,e,i){var r=lt(t,_.select);e.forEach(function(t){var e=t[0],n=t[1],o=document.createElement("option");o.value=e,o.innerHTML=n,i.inputValue.toString()===e.toString()&&(o.selected=!0),r.appendChild(o)}),r.focus()},radio:function(t,e,a){var c=lt(t,_.radio);e.forEach(function(t){var e=t[0],n=t[1],o=document.createElement("input"),i=document.createElement("label");o.type="radio",o.name=_.radio,o.value=e,a.inputValue.toString()===e.toString()&&(o.checked=!0);var r=document.createElement("span");r.innerHTML=n,r.className=_.label,i.appendChild(o),i.appendChild(r),c.appendChild(i)});var n=c.querySelectorAll("input");n.length&&n[0].focus()}},Le=function(e){var n=[];return"undefined"!=typeof Map&&e instanceof Map?e.forEach(function(t,e){n.push([e,t])}):Object.keys(e).forEach(function(t){n.push([t,e[t]])}),n},Oe=function(e,n){var o=function(t,e){var n=t.getInput();if(!n)return null;switch(e.input){case"checkbox":return Pe(n);case"radio":return Ae(n);case"file":return Be(n);default:return e.inputAutoTrim?n.value.trim():n.value}}(e,n);n.inputValidator?(e.disableInput(),Promise.resolve().then(function(){return n.inputValidator(o,n.validationMessage)}).then(function(t){e.enableButtons(),e.enableInput(),t?e.showValidationMessage(t):Me(e,n,o)})):e.getInput().checkValidity()?Me(e,n,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Me=function(e,t,n){(t.showLoaderOnConfirm&&Dt(),t.preConfirm)?(e.resetValidationMessage(),Promise.resolve().then(function(){return t.preConfirm(n,t.validationMessage)}).then(function(t){dt(A())||!1===t?e.hideLoading():ve(e,void 0===t?n:t)})):ve(e,n)},He=["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Left","Right","Up","Down"],Ie=["Escape","Esc"],je=function(t,e,n){var o=wt.innerParams.get(t);o.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?qe(t,e,o):"Tab"===e.key?Ve(e,o):-1!==He.indexOf(e.key)?Re():-1!==Ie.indexOf(e.key)&&De(e,o,n)},qe=function(t,e,n){if(!e.isComposing&&e.target&&t.getInput()&&e.target.outerHTML===t.getInput().outerHTML){if(-1!==["textarea","file"].indexOf(n.input))return;Mt(),e.preventDefault()}},Ve=function(t){for(var e=t.target,n=H(),o=-1,i=0;i<n.length;i++)if(e===n[i]){o=i;break}t.shiftKey?ye(0,o,-1):ye(0,o,1),t.stopPropagation(),t.preventDefault()},Re=function(){var t=B(),e=T();document.activeElement===t&&dt(e)?e.focus():document.activeElement===e&&dt(t)&&t.focus()},De=function(t,e,n){N(e.allowEscapeKey)&&(t.preventDefault(),n(U.esc))},Ne=function(e,t,n){t.popup.onclick=function(){var t=wt.innerParams.get(e);t.showConfirmButton||t.showCancelButton||t.showCloseButton||t.input||n(U.close)}},Ue=!1,_e=function(e){e.popup.onmousedown=function(){e.container.onmouseup=function(t){e.container.onmouseup=void 0,t.target===e.container&&(Ue=!0)}}},Fe=function(e){e.container.onmousedown=function(){e.popup.onmouseup=function(t){e.popup.onmouseup=void 0,t.target!==e.popup&&!e.popup.contains(t.target)||(Ue=!0)}}},ze=function(n,o,i){o.container.onclick=function(t){var e=wt.innerParams.get(n);Ue?Ue=!1:t.target===o.container&&N(e.allowOutsideClick)&&i(U.backdrop)}};var We=function(t,e,n){var o=O();G(o),e.timer&&(t.timeout=new ue(function(){n("timer"),delete t.timeout},e.timer),e.timerProgressBar&&(X(o),setTimeout(function(){t.timeout.running&&nt(e.timer)})))},Ke=function(t,e){if(!e.toast)return N(e.allowEnterKey)?e.focusCancel&&dt(t.cancelButton)?t.cancelButton.focus():e.focusConfirm&&dt(t.confirmButton)?t.confirmButton.focus():void ye(0,-1,1):Ye()},Ye=function(){document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};var Ze,Qe=function(t){for(var e in t)t[e]=new WeakMap},$e=Object.freeze({hideLoading:Jt,disableLoading:Jt,getInput:function(t){var e=wt.innerParams.get(t||this),n=wt.domCache.get(t||this);return n?Z(n.content,e.input):null},close:ie,closePopup:ie,closeModal:ie,closeToast:ie,enableButtons:function(){ce(this,["confirmButton","cancelButton"],!1)},disableButtons:function(){ce(this,["confirmButton","cancelButton"],!0)},enableInput:function(){return se(this.getInput(),!1)},disableInput:function(){return se(this.getInput(),!0)},showValidationMessage:function(t){var e=wt.domCache.get(this);e.validationMessage.innerHTML=t;var n=window.getComputedStyle(e.popup);e.validationMessage.style.marginLeft="-".concat(n.getPropertyValue("padding-left")),e.validationMessage.style.marginRight="-".concat(n.getPropertyValue("padding-right")),X(e.validationMessage);var o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedBy",_["validation-message"]),Q(o),st(o,_.inputerror))},resetValidationMessage:function(){var t=wt.domCache.get(this);t.validationMessage&&G(t.validationMessage);var e=this.getInput();e&&(e.removeAttribute("aria-invalid"),e.removeAttribute("aria-describedBy"),ut(e,_.inputerror))},getProgressSteps:function(){return wt.domCache.get(this).progressSteps},_main:function(t){!function(t){for(var e in t)Ft(i=e)||R('Unknown parameter "'.concat(i,'"')),t.toast&&(o=e,-1!==Qt.indexOf(o)&&R('The parameter "'.concat(o,'" is incompatible with toasts'))),zt(n=e)&&h(n,zt(n));var n,o,i}(t),Wt.currentInstance&&Wt.currentInstance._destroy(),Wt.currentInstance=this;var e=function(t){var e=c({},Kt.showClass,t.showClass),n=c({},Kt.hideClass,t.hideClass),o=c({},Kt,t);if(o.showClass=e,o.hideClass=n,t.animation===false){o.showClass={popup:"",backdrop:"swal2-backdrop-show swal2-noanimation"};o.hideClass={}}return o}(t);de(e),Object.freeze(e),Wt.timeout&&(Wt.timeout.stop(),delete Wt.timeout),clearTimeout(Wt.restoreFocusTimeout);var n=function(t){var e={popup:W(),container:z(),content:k(),actions:E(),confirmButton:B(),cancelButton:T(),closeButton:M(),validationMessage:A(),progressSteps:P()};return wt.domCache.set(t,e),e}(this);return Ot(this,e),wt.innerParams.set(this,e),function(n,o,i){return new Promise(function(t){var e=function t(e){n.closePopup({dismiss:e})};ne.swalPromiseResolve.set(n,t);We(Wt,i,e);o.confirmButton.onclick=function(){return he(n,i)};o.cancelButton.onclick=function(){return ge(n,e)};o.closeButton.onclick=function(){return e(U.close)};we(n,o,e);be(n,Wt,i,e);if(i.toast&&(i.input||i.footer||i.showCloseButton)){st(document.body,_["toast-column"])}else{ut(document.body,_["toast-column"])}me(n,i);pe(i);Ke(o,i);o.container.scrollTop=0})}(this,n,e)},update:function(e){var t=W(),n=wt.innerParams.get(this);if(!t||j(t,n.hideClass.popup))return R("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");var o={};Object.keys(e).forEach(function(t){Xe.isUpdatableParameter(t)?o[t]=e[t]:R('Invalid parameter to update: "'.concat(t,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js'))});var i=c({},n,o);Ot(this,i),wt.innerParams.set(this,i),Object.defineProperties(this,{params:{value:c({},this.params,e),writable:!1,enumerable:!0}})},_destroy:function(){var t=wt.domCache.get(this),e=wt.innerParams.get(this);e&&(t.popup&&Wt.swalCloseEventFinishedCallback&&(Wt.swalCloseEventFinishedCallback(),delete Wt.swalCloseEventFinishedCallback),Wt.deferDisposalTimer&&(clearTimeout(Wt.deferDisposalTimer),delete Wt.deferDisposalTimer),"function"==typeof e.onDestroy&&e.onDestroy(),delete this.params,delete Wt.keydownHandler,delete Wt.keydownTarget,Qe(wt),Qe(ne))}});function Je(){if("undefined"!=typeof window){"undefined"==typeof Promise&&v("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)"),Ze=this;for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o=Object.freeze(this.constructor.argsToParams(e));Object.defineProperties(this,{params:{value:o,writable:!1,enumerable:!0,configurable:!0}});var i=this._main(this.params);wt.promise.set(this,i)}}Je.prototype.then=function(t){return wt.promise.get(this).then(t)},Je.prototype.finally=function(t){return wt.promise.get(this).finally(t)},c(Je.prototype,$e),c(Je,$t),Object.keys($e).forEach(function(t){Je[t]=function(){if(Ze)return Ze[t].apply(Ze,arguments)}}),Je.DismissReason=U,Je.version="9.10.0";var Xe=Je;return Xe.default=Xe}),void 0!==this&&this.csmm_Sweetalert2&&(this.csmm_swal=this.csmm_sweetAlert=this.csmm_Swal=this.csmm_SweetAlert=this.csmm_Sweetalert2);
44
+
45
+ /**
46
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
47
+ * Licensed under MIT
48
+ * @author Ariel Flesler
49
+ * @version 2.1.2
50
+ */
51
+ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
52
+
framework/admin/js/wf-licensing.js ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function wf_csmm_licensing_verify_licence_ajax(prefix, license_key, button) {
2
+
3
+ data = window['wf_licensing_' + prefix];
4
+ if (!data) {
5
+ alert('Licensing data is missing. Please reload the page and try again.');
6
+ return;
7
+ }
8
+
9
+ jQuery(button).addClass('loading');
10
+
11
+ jQuery
12
+ .post(
13
+ ajaxurl,
14
+ {
15
+ action: 'wf_licensing_' + prefix + '_validate',
16
+ license_key: license_key,
17
+ _ajax_nonce: data.nonce,
18
+ _rand: Math.floor(Math.random() * 9999) + 1
19
+ },
20
+ function(response) {
21
+ if (data.debug) {
22
+ console.log('Validate license, first try: ', response);
23
+ }
24
+ if (response.success) {
25
+ location.reload();
26
+ } else {
27
+ wf_csmm_licensing_verify_licence_ajax_alternative(data.prefix, license_key, button);
28
+ }
29
+ }
30
+ )
31
+ .fail(function() {
32
+ alert('Undocumented error. Please reload the page and try again.');
33
+ })
34
+ .always(function() {
35
+ jQuery(button).removeClass('loading');
36
+ });
37
+ } // wf_csmm_licensing_verify_licence_ajax
38
+
39
+ function wf_csmm_licensing_deactivate_licence_ajax(prefix, license_key, button) {
40
+ data = window['wf_licensing_' + prefix];
41
+ if (!data) {
42
+ alert('Licensing data is missing. Please reload the page and try again.');
43
+ return;
44
+ }
45
+
46
+ jQuery(button).addClass('loading');
47
+
48
+ jQuery
49
+ .post(
50
+ ajaxurl,
51
+ {
52
+ action: 'wf_licensing_' + prefix + '_deactivate',
53
+ license_key: license_key,
54
+ _ajax_nonce: data.nonce,
55
+ _rand: Math.floor(Math.random() * 9999) + 1
56
+ },
57
+ function(response) {
58
+ if (data.debug) {
59
+ console.log('Deactivate license, first try: ', response);
60
+ }
61
+ if (response.success) {
62
+ location.reload();
63
+ } else {
64
+ wf_csmm_licensing_deactivate_licence_ajax_alternative(data.prefix, license_key, button);
65
+ }
66
+ }
67
+ )
68
+ .fail(function() {
69
+ alert('Undocumented error. Please reload the page and try again.');
70
+ })
71
+ .always(function() {
72
+ jQuery(button).removeClass('loading');
73
+ });
74
+ } // wf_csmm_licensing_deactivate_licence_ajax
75
+
76
+ function wf_csmm_licensing_deactivate_licence_ajax_alternative(prefix, licence_key) {
77
+ console.log('deactivate alternative');
78
+ }
79
+
80
+ function wf_csmm_licensing_verify_licence_ajax_alternative(prefix, licence_key) {
81
+ data = window['wf_licensing_' + prefix];
82
+ if (!data) {
83
+ alert('Licensing data is missing. Please reload the page and try again.');
84
+ return;
85
+ }
86
+ data.request_data.license_key = licence_key;
87
+
88
+ jQuery
89
+ .get(data.licensing_endpoint, data.request_data, function(response) {
90
+ if (data.debug) {
91
+ console.log('Validate license, second try: ', response);
92
+ }
93
+ if (response.data) {
94
+ jQuery
95
+ .post(
96
+ ajaxurl,
97
+ {
98
+ action: 'wf_licensing_' + prefix + '_save',
99
+ license_key: licence_key,
100
+ success: response.success,
101
+ data: response.data,
102
+ _ajax_nonce: data.nonce
103
+ },
104
+ function(response) {
105
+ if (response.success) {
106
+ location.reload();
107
+ } else {
108
+ alert('Undocumented error. Please reload the page and try again.');
109
+ }
110
+ }
111
+ )
112
+ .fail(function() {
113
+ alert('Undocumented error. Please reload the page and try again');
114
+ })
115
+ .always(function() {
116
+ jQuery(button).removeClass('loading');
117
+ });
118
+
119
+ /*
120
+ if (!response.success && response.data) {
121
+ alert(response.data);
122
+ }
123
+ */
124
+ }
125
+ })
126
+ .fail(function() {
127
+ alert('Undocumented error. Please reload the page and try again.');
128
+ })
129
+ .always(function() {
130
+ jQuery(button).removeClass('loading');
131
+ });
132
+ } // wf_csmm_licensing_verify_licence_ajax_alternative
framework/admin/license.php CHANGED
@@ -9,183 +9,97 @@ if (!defined('WPINC')) {
9
  die;
10
  }
11
 
12
- class csmm_license {
13
- static $licensing_servers = array('https://license1.comingsoonwp.com/', 'https://license2.comingsoonwp.com/');
14
-
15
-
16
- // hook things up
17
- static function init() {
18
- if (is_admin()) {
19
- add_filter('pre_set_site_transient_update_plugins', array(__CLASS__, 'update_filter'));
20
- add_filter('plugins_api', array(__CLASS__, 'update_details'), 100, 3);
21
- }
22
- } // init
23
-
24
-
25
- // get plugin info for lightbox
26
- static function update_details($result, $action, $args) {
27
- if (!self::is_activated()) {
28
- return $result;
 
 
29
  }
30
 
31
- static $response = false;
32
- $options = csmm_get_meta();
33
- $plugin = 'minimal-coming-soon-maintenance-mode';
34
 
35
- if ($action != 'plugin_information' || empty($args->slug) || ($args->slug != $plugin)) {
36
- return $result;
37
- }
38
-
39
- if(empty($response) || is_wp_error($response)) {
40
- $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
41
- $request_args = array('action' => 'plugin_information',
42
- 'request_details' => serialize($args),
43
- 'timestamp' => time(),
44
- 'codebase' => 'free',
45
- 'version' => csmm_get_plugin_version(),
46
- 'license_key' => $options['license_key'],
47
- 'license_expires' => $options['license_expires'],
48
- 'license_type' => $options['license_type'],
49
- 'license_active' => $options['license_active'],
50
- 'site' => get_home_url());
51
-
52
- $url = add_query_arg($request_args, self::$licensing_servers[0]);
53
- $response = wp_remote_get(esc_url_raw($url), $request_params);
54
-
55
- if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
56
- $url = add_query_arg($request_args, self::$licensing_servers[1]);
57
- $response = wp_remote_get(esc_url_raw($url), $request_params);
58
- }
59
- } // if !$response
60
-
61
- if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
62
- $res = new WP_Error('plugins_api_failed', __('An unexpected HTTP error occurred during the API request.', 'csmm'), $response->get_error_message());
63
  } else {
64
- $res = json_decode(wp_remote_retrieve_body($response), false);
65
-
66
- if (!is_object($res)) {
67
- $res = new WP_Error('plugins_api_failed', __('Invalid API respone.', 'csmm'), wp_remote_retrieve_body($response));
68
- } else {
69
- $res->sections = (array) $res->sections;
70
- $res->banners = (array) $res->banners;
71
- $res->icons = (array) $res->icons;
72
- }
73
- }
74
-
75
- return $res;
76
- } // update_details
77
-
78
-
79
- // get info on new plugin version if one exists
80
- static function update_filter($current) {
81
- if (!self::is_activated()) {
82
- return $current;
83
  }
 
 
84
 
85
- static $response = false;
86
- $options = csmm_get_meta();
87
- $plugin = 'minimal-coming-soon-maintenance-mode/minimal-coming-soon-maintenance-mode.php';
88
-
89
- if(empty($response) || is_wp_error($response)) {
90
- $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
91
- $request_args = array('action' => 'update_info',
92
- 'timestamp' => time(),
93
- 'codebase' => 'free',
94
- 'version' => csmm_get_plugin_version(),
95
- 'license_key' => $options['license_key'],
96
- 'license_expires' => $options['license_expires'],
97
- 'license_type' => $options['license_type'],
98
- 'license_active' => $options['license_active'],
99
- 'site' => get_home_url());
100
-
101
- $url = add_query_arg($request_args, self::$licensing_servers[0]);
102
- $response = wp_remote_get(esc_url_raw($url), $request_params);
103
-
104
- if (is_wp_error($response)) {
105
- $url = add_query_arg($request_args, self::$licensing_servers[1]);
106
- $response = wp_remote_get(esc_url_raw($url), $request_params);
107
- }
108
- } // if !$response
109
-
110
- if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
111
- $data = json_decode(wp_remote_retrieve_body($response), false);
112
- if (empty($current)) {
113
- $current = new stdClass();
114
- }
115
- if (empty($current->response)) {
116
- $current->response = array();
117
- }
118
- if (!empty($data) && is_object($data)) {
119
- $data->icons = (array) $data->icons;
120
- $data->banners = (array) $data->banners;
121
- $current->response[$plugin] = $data;
122
- }
123
- }
124
 
125
- return $current;
126
- } // update_filter
 
 
127
 
128
 
129
- // check if license key is valid and not expired
130
- static function is_activated() {
131
- $options = csmm_get_meta();
132
 
133
- if (!empty($options['license_active']) && $options['license_active'] === true &&
134
- !empty($options['license_expires']) && $options['license_expires'] >= date('Y-m-d')) {
135
- return true;
136
- } else {
137
- return false;
138
  }
139
- } // is_activated
140
 
 
 
141
 
142
- // check if activation code is valid
143
- static function validate_license_key($code) {
144
- $out = array('success' => false, 'license_active' => false, 'license_key' => $code, 'error' => '', 'license_type' => '', 'license_expires' => '1900-01-01');
145
- $result = self::query_licensing_server('validate_license', array('license_key' => $code));
146
-
147
- if (false === $result) {
148
- $out['error'] = 'Unable to contact licensing server. Please try again in a few moments.';
149
- } elseif (!is_array($result['data']) || sizeof($result['data']) != 4) {
150
- $out['error'] = 'Invalid response from licensing server. Please try again later.';
151
  } else {
152
- $out['success'] = true;
153
- $out = array_merge($out, $result['data']);
154
- set_site_transient('update_plugins', null);
155
  }
156
-
157
- return $out;
158
- } // validate_license_key
159
 
160
 
161
- // run any query on licensing server
162
- static function query_licensing_server($action, $data = array(), $method = 'GET', $array_response = true) {
163
- $options = csmm_get_meta();
164
- $request_params = array('sslverify' => false, 'timeout' => 25, 'redirection' => 2);
165
- $default_data = array('license_key' => $options['license_key'],
166
- 'code_base' => 'free',
167
- '_rand' => rand(1000, 9999),
168
- 'version' => csmm_get_plugin_version(),
169
- 'site' => get_home_url());
170
 
171
- $request_data = array_merge($default_data, $data, array('action' => $action));
172
-
173
- $url = add_query_arg($request_data, self::$licensing_servers[0]);
174
- $response = wp_remote_get(esc_url_raw($url), $request_params);
175
 
176
- if (is_wp_error($response) || !($body = wp_remote_retrieve_body($response)) || !($result = @json_decode($body, $array_response))) {
177
- $url = add_query_arg($request_data, self::$licensing_servers[1]);
178
- $response = wp_remote_get(esc_url_raw($url), $request_params);
179
- $body = wp_remote_retrieve_body($response);
180
- $result = @json_decode($body, $array_response);
181
  }
 
 
 
 
182
 
183
- $result['success'] = true;
 
 
184
 
185
- if (!is_array($result) || !isset($result['success'])) {
186
- return false;
187
- } else {
188
- return $result;
189
  }
190
- } // query_licensing_server
191
- } // class csmm_license
 
9
  die;
10
  }
11
 
12
+ global $csmm_lc;
13
+
14
+ $csmm_lc = new WF_Licensing_CSMM(array(
15
+ 'prefix' => 'csmm',
16
+ 'licensing_servers' => array('https://dashboard.comingsoonwp.com/api/'),
17
+ 'version' => csmm_get_plugin_version(),
18
+ 'plugin_file' => CSMM_FILE,
19
+ 'skip_hooks' => false,
20
+ 'disable_remote' => false,
21
+ 'debug' => true,
22
+ 'js_folder' => plugin_dir_url(CSMM_FILE) . 'framework/admin/js/'
23
+ ));
24
+
25
+ csmm_update_license_storage();
26
+
27
+ add_action('wf_licensing_' . $csmm_lc->prefix . 'validate_ajax', function ($license_key, $result) {
28
+ if (empty($license_key)) {
29
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-info"><strong>License key saved.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
30
+ return;
31
  }
32
 
33
+ global $csmm_lc;
34
+ $license = $csmm_lc->get_license();
 
35
 
36
+ if ($result == true) {
37
+ if (empty($license['error'])) {
38
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-success"><strong>License key saved and activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
39
+ delete_transient('_site_transient_update_plugins');
40
+ } else {
41
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-danger"><strong>License not active.</strong> ' . $license['error'] . '<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
42
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  } else {
44
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-danger"><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>', 60);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
+ }, 10, 2);
47
+ // validate_ajax
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ add_action('wf_licensing_' . $csmm_lc->prefix . 'deactivate_ajax', function ($old_license, $result) {
51
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-info"><strong>License has been deactivated.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
52
+ }, 10, 2);
53
+ // deactivate_ajax
54
 
55
 
56
+ add_action('wf_licensing_' . $csmm_lc->prefix . 'save_ajax', function ($out) {
57
+ if (empty($out['license_key'])) {
58
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-info"><strong>License key saved.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
59
 
60
+ return;
 
 
 
 
61
  }
 
62
 
63
+ global $csmm_lc;
64
+ $license = $csmm_lc->get_license();
65
 
66
+ if (empty($out['error'])) {
67
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-success"><strong>License key saved and activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
 
 
 
 
 
 
 
68
  } else {
69
+ set_transient('signals_csmm_err_' . get_current_user_id(), '<div class="csmm-alert csmm-alert-danger"><strong>License not active.</strong> ' . $out['error'] . '<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 60);
 
 
70
  }
71
+ }, 10, 1);
72
+ // save_ajax
 
73
 
74
 
75
+ function csmm_update_license_storage()
76
+ {
77
+ global $csmm_lc;
78
+ $meta = csmm_get_meta();
79
+ $new = array();
 
 
 
 
80
 
81
+ // nothing to update
82
+ if (empty($meta['license_key'])) {
83
+ return false;
84
+ }
85
 
86
+ $new['license_key'] = $meta['license_key'];
87
+ if ($meta['license_active']) {
88
+ $new['error'] = '';
89
+ } else {
90
+ $new['error'] = 'Unknown error. Please reactivate the license.';
91
  }
92
+ $new['valid_until'] = $meta['license_expires'];
93
+ $new['last_check'] = time();
94
+ $new['name'] = $meta['license_type'];
95
+ $new['meta'] = array();
96
 
97
+ if ($csmm_lc->update_license($new)) {
98
+ unset($meta['license_key'], $meta['license_type'], $meta['license_expires'], $meta['license_active']);
99
+ update_option('signals_csmm_meta', $meta);
100
 
101
+ return true;
 
 
 
102
  }
103
+
104
+ return false;
105
+ } // csmm_update_license_storage
framework/admin/views/settings-pro.php CHANGED
@@ -1,302 +1,279 @@
1
  <?php
2
 
3
  if (!defined('WPINC')) {
4
- die;
5
  }
6
 
7
  ?>
8
 
9
  <div class="signals-tile" id="pro">
10
- <div class="signals-tile-body">
11
- <div class="signals-tile-title">Coming Soon &amp; Maintenance Mode PRO - Save time &amp; money when building pages</div>
12
- <p>PRO version of the plugin gives you access to numerous <a href="<?php echo csmm_generate_web_link('pro-header', '/features/'); ?>"
13
- target="_blank">advanced features</a> including best-in-class SEO options, gallery of over a million images, 100+ themes, 10+ page modules, and
14
- refined access control options.</p>
15
 
16
- <div class="signals-section-content">
17
- <?php
18
- if (csmm_chat_available()) {
19
- ?>
20
- <p class="below-pricing">Our agents are online and available for any questions you have about the PRO version! <a
21
- title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;"
22
- class="dashicons dashicons-format-chat"></span> <strong>Chat with Live Support</strong></a></p>
23
- <?php
24
- }
25
- ?>
26
 
27
- <table id="features-table">
28
- <tr>
29
- <td>
30
- <div class="home-box"><span>100+ Pixel Perfect Themes</span>
31
- <p>Professional, easily editable <a href="#themes" class="csmm-change-tab">themes</a> that fit and adjust to any brand will enable you
32
- to build a page for your online or offline business in minutes. New themes are added weekly.</p>
33
- </div>
34
- </td>
35
- <td>
36
- <div class="home-box"><span>One Million Premium Hi-Resolution Images</span>
37
- <p>Are you still googling for images? Good ones are costly, and others are low-res with watermarks? With our image library, the only
38
- thing you have to do is enter a search term and pick an image. Five seconds of work.</p>
39
- </div>
40
- </td>
41
- <td>
42
- <div class="home-box"><span>Advanced SEO Preview &amp; Analysis</span>
43
- <p>Our SEO analytics tool provides actionable advice based on over 30 SEO signals analyzed on your page. With a bit of optimization,
44
- you'll be on the first position in search results in no time.</p>
45
- </div>
46
- </td>
47
- </tr>
48
- <tr>
49
- <td>
50
- <div class="home-box"><span>Drag &amp; Drop Builder that Doesn't Frustrate</span>
51
- <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
52
- only the options you need. It's fast and dead simple to use!</p>
53
- </div>
54
- </td>
55
- <td>
56
- <div class="home-box"><span>Advanced Access Rules</span>
57
- <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
58
- secret access link, and they can view the site while it's still in coming soon mode.</p>
59
- </div>
60
- </td>
61
- <td>
62
- <div class="home-box"><span>Connect any Email, CRM or Webinar System</span>
63
- <p>Are you using a less popular email service provider, CRM or webinar platform that other plugins don't support? Well, we do support
64
- them! Our universal autoresponder system works with any 3rd party service.</p>
65
- </div>
66
- </td>
67
- </tr>
68
- </table>
69
 
70
- <p class="below-pricing">Find out more about the <b>PRO features</b> on the plugin's site - <a
71
- href="<?php echo csmm_generate_web_link('find-out-more'); ?>" target="_blank">comingsoonwp.com</a></p>
72
 
73
- <hr id="pricing-table-above">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
- <table id="pricing-table">
76
- <colgroup></colgroup>
77
- <colgroup></colgroup>
78
- <colgroup></colgroup>
79
- <tbody>
80
- <tr>
81
- <td>
82
- <h3>Lifetime<br>Agency License</h3>
83
- <span>Best value for money</span>
84
- </td>
85
- <td>
86
- <h3>Lifetime<br>PRO License</h3>
87
- <span>For single site owners who like paying only once</span>
88
- <div class="corner-ribbon">Most<br>Popular</div>
89
- </td>
90
- <td>
91
- <h3>Personal<br>PRO License</h3>
92
- <span>Pay only for the time you use the plugin</span>
93
- </td>
94
- </tr>
95
- <tr>
96
- <td>One Time Payment</td>
97
- <td>One Time Payment</td>
98
- <td>Monthly / Yearly Payment</td>
99
- </tr>
100
- <tr>
101
- <td>100 Client or Personal Sites (sites can be changed)</td>
102
- <td>1 Personal or Client Site</td>
103
- <td>1 Personal or Client Site</td>
104
- </tr>
105
- <tr>
106
- <td><b>White-Label License Mode</b></td>
107
- <td class="not-available">n/a</td>
108
- <td class="not-available">n/a</td>
109
- </tr>
110
- <tr>
111
- <td>Lifetime Priority Support &amp; Updates</td>
112
- <td>Lifetime Support &amp; Updates</td>
113
- <td>1 Year/Month of Support &amp; Updates</td>
114
- </tr>
115
- <tr>
116
- <td>Advanced SEO Preview &amp; Anaylsis</td>
117
- <td>Advanced SEO Preview &amp; Anaylsis</td>
118
- <td>Advanced SEO Preview &amp; Anaylsis</td>
119
- </tr>
120
- <tr>
121
- <td>1 Million Hi-Resolution Images</td>
122
- <td>1 Million Hi-Resolution Images</td>
123
- <td>1 Million Hi-Resolution Images</td>
124
- </tr>
125
- <tr>
126
- <td>60+ PRO Templates</td>
127
- <td>60+ PRO Templates</td>
128
- <td>60+ PRO Templates</td>
129
- </tr>
130
- <tr>
131
- <td><b>60+ Extra Agency Templates = 120+ Templates</b></td>
132
- <td class="not-available">n/a</td>
133
- <td class="not-available">n/a</td>
134
- </tr>
135
- <tr>
136
- <td>10+ Page Modules</td>
137
- <td>10+ Page Modules</td>
138
- <td>10+ Page Modules</td>
139
- </tr>
140
- <tr>
141
- <td>All Current &amp; Future Features Included</td>
142
- <td>All Current &amp; Future Features Included</td>
143
- <td>All Current &amp; Future Features Included</td>
144
- </tr>
145
- <tr>
146
- <?php
147
- $meta = csmm_get_meta();
148
- $promo_delta = HOUR_IN_SECONDS;
149
- $promo_delta2 = DAY_IN_SECONDS * 28;
150
- if ((time() - $meta['first_install_gmt']) < $promo_delta) {
151
- ?>
152
- <td>
153
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
154
- href="https://gum.co/csmm-agency-lifetime/welcome/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>"
155
- target="_blank">BUY NOW - $60 OFF<br><del>$199</del> $139<br><span style="font-weight: normal;">Discount ends in <span
156
- class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
157
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
158
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
159
- 100% No-Risk Money Back Guarantee</span>
160
- </td>
161
- <td>
162
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
163
- href="https://gum.co/csmm-pro-lifetime/welcome/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>"
164
- target="_blank">BUY NOW - 25% OFF<br><del>$79</del> $59<br><span style="font-weight: normal;">Discount ends in <span
165
- class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
166
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
167
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
168
- 100% No-Risk Money Back Guarantee</span>
169
- </td>
170
- <td>
171
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
172
- href="https://gum.co/csmm-pro-yearly/welcome/?yearly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$39</del> $29<small>/year</small><br><span style="font-weight: normal;">Discount ends in <span
173
- class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
174
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
175
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
176
- 100% No-Risk Money Back Guarantee</span>
177
- </td>
178
- <?php
179
- } elseif ((time() - $meta['first_install_gmt']) > $promo_delta2) {
180
- ?>
181
- <td>
182
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
183
- href="https://gum.co/csmm-agency-lifetime/olduser/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>"
184
- target="_blank">BUY NOW - $60 OFF<br><del>$199</del> $139</a>
185
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
186
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
187
- 100% No-Risk Money Back Guarantee</span>
188
- </td>
189
- <td>
190
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
191
- href="https://gum.co/csmm-pro-lifetime/olduser/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>"
192
- target="_blank">BUY NOW - 25% OFF<br><del>$79</del> $59</a>
193
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
194
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
195
- 100% No-Risk Money Back Guarantee</span>
196
- </td>
197
- <td>
198
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
199
- href="https://gum.co/csmm-pro-yearly/olduser/?yearly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$39</del> $29<small>/year</small></a>
200
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
201
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
202
- 100% No-Risk Money Back Guarantee</span>
203
- </td>
204
  <?php
205
- } else {
206
- ?>
207
- <td>
208
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
209
- href="https://gum.co/csmm-agency-lifetime/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
210
- NOW<br>$199</a>
211
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
212
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
213
- 100% No-Risk Money Back Guarantee</span>
214
- </td>
215
- <td>
216
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
217
- href="https://gum.co/csmm-pro-lifetime/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
218
- NOW<br>$79</a>
219
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
220
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
221
- 100% No-Risk Money Back Guarantee</span>
222
- </td>
223
- <td>
224
- <a data-gumroad-single-product="true" class="promo-button go-to-license-key"
225
- href="https://gum.co/csmm-pro-yearly/?yearly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
226
- NOW<br>$39<small>/year</small></a>
227
- <span class="instant-download"><span class="dashicons dashicons-yes"></span> Secure payment<br><span
228
- class="dashicons dashicons-yes"></span> Instant activation from WordPress admin<br><span class="dashicons dashicons-yes"></span>
229
- 100% No-Risk Money Back Guarantee</span>
230
- </td>
231
  <?php
232
- }
233
- ?>
234
- </tr>
235
- </tbody>
236
- </table>
237
 
238
- <?php
239
- if (csmm_chat_available()) {
240
- ?>
241
- <p class="below-pricing">Our agents are online and available for any questions you have about the PRO version! <a
242
- title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;"
243
- class="dashicons dashicons-format-chat"></span> <strong>Chat with Live Support</strong></a></p>
244
- <?php
245
- }
246
- ?>
247
- <hr>
248
 
249
- <div class="signals-double-group signals-clearfix">
250
- <div class="signals-form-group">
251
- <label for="signals_csmm_license_key" class="signals-strong"><?php _e( 'Activate Your PRO License', 'signals' ); ?></label>
252
- <input type="text" name="license_key" id="signals_csmm_license_key"
253
- value="<?php echo esc_attr_e( stripslashes( $meta['license_key'] ) ); ?>" placeholder="License key, ie: 123456-123456-123456"
254
- class="signals-form-control">
255
- <p class="signals-form-help-block">License key is located in the confirmation email you received after purchasing. In case of any problems,
256
- 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
257
- it now</a>.</p>
258
 
259
- <?php
260
- if (csmm_license::is_activated()) {
261
- $plugin = plugin_basename(__FILE__);
262
- $update_url = wp_nonce_url(admin_url('update.php?action=upgrade-plugin&amp;plugin=' . urlencode(CSMM_BASENAME)), 'upgrade-plugin_' . CSMM_BASENAME);
263
- echo '<a href="' . $update_url . '" class="signals-btn signals-btn-red">Finish the upgrade process - update Coming Soon files to PRO</a>';
264
- }
265
- 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>';
266
- echo '<br><br>';
267
 
268
- if (!empty($meta['license_key'])) {
269
- if (csmm_license::is_activated()) {
270
- if ($meta['license_expires'] == '2035-01-01') {
271
- $valid = 'indefinitely';
272
- } else {
273
- $valid = 'until ' . date('F jS, Y', strtotime($meta['license_expires']));
274
- if (date('Y-m-d') == $meta['license_expires']) {
275
- $valid .= '; expires today';
276
- } elseif (date('Y-m-d', time() + 30 * DAY_IN_SECONDS) > $meta['license_expires']) {
277
- $tmp = (strtotime($meta['license_expires'] . date(' G:i:s')) - time()) / DAY_IN_SECONDS;
278
- $valid .= '; expires in ' . round($tmp) . ' days';
279
- }
280
- }
281
- echo 'License Status:
282
- <b style="color: #66b317;">Active</b><br>
283
- Type: ' . str_replace('pro', 'PRO', $meta['license_type']);
284
- echo '<br>Valid ' . $valid . '';
285
- } else {
286
- echo 'License Status:
287
- <b style="color: #ea1919;">Inactive</b>';
288
- if (!empty($meta['license_type'])) {
289
- echo '<br>Type: ' . $meta['license_type'];
290
- }
291
- if (!empty($meta['license_expires']) && $meta['license_expires'] != '1900-01-01' && $meta['license_expires'] != '1970-01-01') {
292
- echo '<br>Expired on ' . date('F jS, Y', strtotime($meta['license_expires']));
293
- }
294
- }
295
- }
296
- ?>
297
- </div>
298
- </div>
299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  </div>
301
- </div>
302
- </div><!-- #pro -->
1
  <?php
2
 
3
  if (!defined('WPINC')) {
4
+ die;
5
  }
6
 
7
  ?>
8
 
9
  <div class="signals-tile" id="pro">
10
+ <div class="signals-tile-body">
11
+ <div class="signals-tile-title">Coming Soon &amp; Maintenance Mode PRO - Save time &amp; money when building pages</div>
12
+ <p>PRO version of the plugin gives you access to 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 over a million images, 100+ themes, 10+ page modules, and
13
+ refined access control options.</p>
 
14
 
15
+ <div class="signals-section-content">
16
+ <?php
17
+ if (csmm_chat_available()) {
18
+ ?>
19
+ <p class="below-pricing">Our agents are online and available for any questions you have about the PRO version! <a title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;" class="dashicons dashicons-format-chat"></span> <strong>Chat with Live Support</strong></a></p>
20
+ <?php
21
+ }
22
+ ?>
 
 
23
 
24
+ <table id="features-table">
25
+ <tr>
26
+ <td>
27
+ <div class="home-box"><span>150+ Pixel Perfect Themes</span>
28
+ <p>Professional, easily editable <a href="#themes" class="csmm-change-tab">themes</a> that fit and adjust to any brand will enable you
29
+ to build a page for your online or offline business in minutes. 4 new themes are added every month.</p>
30
+ </div>
31
+ </td>
32
+ <td>
33
+ <div class="home-box"><span>Over Two Million Premium HD Images</span>
34
+ <p>Are you still googling for images? Good ones are costly, and others are low-res with watermarks? With our image library, the only
35
+ thing you have to do is enter a search term and pick an image. Five seconds of work.</p>
36
+ </div>
37
+ </td>
38
+ <td>
39
+ <div class="home-box"><span>Advanced SEO Preview &amp; Analysis</span>
40
+ <p>Our SEO analytics tool provides actionable advice based on over 30 SEO signals analyzed on your page. With a bit of optimization,
41
+ you'll be on the first position in search results in no time.</p>
42
+ </div>
43
+ </td>
44
+ </tr>
45
+ <tr>
46
+ <td>
47
+ <div class="home-box"><span>Drag &amp; Drop Builder that Doesn't Frustrate</span>
48
+ <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
49
+ only the options you need. It's fast and dead simple to use!</p>
50
+ </div>
51
+ </td>
52
+ <td>
53
+ <div class="home-box"><span>Advanced Access Rules</span>
54
+ <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
55
+ secret access link, and they can view the site while it's still in coming soon mode.</p>
56
+ </div>
57
+ </td>
58
+ <td>
59
+ <div class="home-box"><span>Connect any Email, CRM or Webinar System</span>
60
+ <p>Are you using a less popular email service provider, CRM or webinar platform that other plugins don't support? Well, we do support
61
+ them! Our universal autoresponder system works with any 3rd party service.</p>
62
+ </div>
63
+ </td>
64
+ </tr>
65
+ </table>
66
 
67
+ <p class="below-pricing">Find out more about the <b>PRO features</b> on the plugin's site - <a href="<?php echo csmm_generate_web_link('find-out-more'); ?>" target="_blank">comingsoonwp.com</a></p>
 
68
 
69
+ <hr id="pricing-table-above">
70
+
71
+ <table id="pricing-table">
72
+ <colgroup></colgroup>
73
+ <colgroup></colgroup>
74
+ <colgroup></colgroup>
75
+ <tbody>
76
+ <tr>
77
+ <td>
78
+ <h3>Lifetime<br>Agency License</h3>
79
+ <span>Best value for money</span>
80
+ </td>
81
+ <td>
82
+ <h3>Lifetime<br>PRO License</h3>
83
+ <span>For single site owners who like paying only once</span>
84
+ <div class="corner-ribbon">Most<br>Popular</div>
85
+ </td>
86
+ <td>
87
+ <h3>Personal<br>PRO License</h3>
88
+ <span>Pay only for the time you use the plugin</span>
89
+ </td>
90
+ </tr>
91
+ <tr>
92
+ <td>One Time Payment</td>
93
+ <td>One Time Payment</td>
94
+ <td>Monthly / Yearly Payment</td>
95
+ </tr>
96
+ <tr>
97
+ <td>100 Client or Personal Sites (sites can be changed)</td>
98
+ <td>1 Personal or Client Site</td>
99
+ <td>1 Personal or Client Site</td>
100
+ </tr>
101
+ <tr>
102
+ <td>Dashboard for managing sites &amp; licenses</td>
103
+ <td>Dashboard for managing sites &amp; licenses</td>
104
+ <td>Dashboard for managing sites &amp; licenses</td>
105
+ </tr>
106
+ <tr>
107
+ <td><b>Remote sites stats</b></td>
108
+ <td class="not-available">n/a</td>
109
+ <td class="not-available">n/a</td>
110
+ </tr>
111
+ <tr>
112
+ <td><b>White-Label License Mode</b></td>
113
+ <td class="not-available">n/a</td>
114
+ <td class="not-available">n/a</td>
115
+ </tr>
116
+ <tr>
117
+ <td><b>Full Rebranding Rights</b></td>
118
+ <td class="not-available">n/a</td>
119
+ <td class="not-available">n/a</td>
120
+ </tr>
121
+ <tr>
122
+ <td>Lifetime Priority Support &amp; Updates</td>
123
+ <td>Lifetime Support &amp; Updates</td>
124
+ <td>1 Year/Month of Support &amp; Updates</td>
125
+ </tr>
126
+ <tr>
127
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
128
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
129
+ <td>Advanced SEO Preview &amp; Anaylsis</td>
130
+ </tr>
131
+ <tr>
132
+ <td>2+ Million Hi-Resolution Images</td>
133
+ <td>2+ Million Hi-Resolution Images</td>
134
+ <td>2+ Million Hi-Resolution Images</td>
135
+ </tr>
136
+ <tr>
137
+ <td>75+ PRO Templates</td>
138
+ <td>75+ PRO Templates</td>
139
+ <td>75+ PRO Templates</td>
140
+ </tr>
141
+ <tr>
142
+ <td><b>75+ Extra Agency Templates = 150+ Templates</b></td>
143
+ <td class="not-available">n/a</td>
144
+ <td class="not-available">n/a</td>
145
+ </tr>
146
+ <tr>
147
+ <td>10+ Page Modules</td>
148
+ <td>10+ Page Modules</td>
149
+ <td>10+ Page Modules</td>
150
+ </tr>
151
+ <tr>
152
+ <td>All Current &amp; Future Features Included</td>
153
+ <td>All Current &amp; Future Features Included</td>
154
+ <td>All Current &amp; Future Features Included</td>
155
+ </tr>
156
+ <tr>
157
+ <?php
158
+ $meta = csmm_get_meta();
159
+ $promo_delta = HOUR_IN_SECONDS;
160
+ $promo_delta2 = DAY_IN_SECONDS * 28;
161
+ if ((time() - $meta['first_install_gmt']) < $promo_delta) {
162
+ ?>
163
+ <td>
164
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-agency-lifetime/welcome/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - $60 OFF<br><del>$199</del> $139<br><span style="font-weight: normal;">Discount ends in <span class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
165
+ <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>
166
+ 100% No-Risk Money Back Guarantee</span>
167
+ </td>
168
+ <td>
169
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-lifetime/welcome/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$79</del> $59<br><span style="font-weight: normal;">Discount ends in <span class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
170
+ <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>
171
+ 100% No-Risk Money Back Guarantee</span>
172
+ </td>
173
+ <td>
174
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-yearly/welcome/?monthly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$7.99</del> $5.99<small> /month</small><br><span style="font-weight: normal;">Discount ends in <span class="mm-countdown" data-endtime="<?php echo $meta['first_install_gmt'] + $promo_delta; ?>" style="">59 min</span></span></a>
175
+ <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>
176
+ 100% No-Risk Money Back Guarantee</span>
177
+ </td>
178
+ <?php
179
+ } elseif ((time() - $meta['first_install_gmt']) > $promo_delta2) {
180
+ ?>
181
+ <td>
182
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-agency-lifetime/olduser/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - $60 OFF<br><del>$199</del> $139</a>
183
+ <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>
184
+ 100% No-Risk Money Back Guarantee</span>
185
+ </td>
186
+ <td>
187
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-lifetime/olduser/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$79</del> $59</a>
188
+ <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>
189
+ 100% No-Risk Money Back Guarantee</span>
190
+ </td>
191
+ <td>
192
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-yearly/olduser/?monthly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY NOW - 25% OFF<br><del>$7.99</del> $5.99<small> /month</small></a>
193
+ <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>
194
+ 100% No-Risk Money Back Guarantee</span>
195
+ </td>
196
+ <?php
197
+ } else {
198
+ ?>
199
+ <td>
200
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-agency-lifetime/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
201
+ NOW<br>$199</a>
202
+ <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>
203
+ 100% No-Risk Money Back Guarantee</span>
204
+ </td>
205
+ <td>
206
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-lifetime/?wanted=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
207
+ NOW<br>$79</a>
208
+ <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>
209
+ 100% No-Risk Money Back Guarantee</span>
210
+ </td>
211
+ <td>
212
+ <a data-gumroad-single-product="true" class="promo-button go-to-license-key" href="https://gum.co/csmm-pro-yearly/?yearly=true&plugin_info=CSMM+v<?php echo csmm_get_plugin_version(); ?>" target="_blank">BUY
213
+ NOW<br>$39<small>/year</small></a>
214
+ <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>
215
+ 100% No-Risk Money Back Guarantee</span>
216
+ </td>
217
+ <?php
218
+ }
219
+ ?>
220
+ </tr>
221
+ </tbody>
222
+ </table>
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  <?php
225
+ if (csmm_chat_available()) {
226
+ ?>
227
+ <p class="below-pricing">Our agents are online and available for any questions you have about the PRO version! <a title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;" class="dashicons dashicons-format-chat"></span> <strong>Chat with Live Support</strong></a></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  <?php
229
+ }
230
+ ?>
231
+ <hr>
 
 
232
 
 
 
 
 
 
 
 
 
 
 
233
 
234
+ <div class="signals-form-group" id="tab-pro">
235
+ <?php
236
+ global $csmm_lc;
237
+ echo '<p>The License key is visible on the confirmation screen, right after purchasing. You can also find it in the confirmation email sent to the email address provided on purchase. Or use keys created with the <a href="https://dashboard.comingsoonwp.com/licenses/" target="_blank">license manager</a>.</p>
238
+ <p>If you don\'t have a license - <a class="scrollto" href="#pricing-table">purchase one now</a>. In case of problems with the license please <a href="' . csmm_generate_web_link('pro-tab-license', '/contact/') . '" target="_blank">contact support</a>.</p>';
 
 
 
 
239
 
240
+ echo '<hr>';
241
+ echo '<p><label for="csmm-license-key">License Key: </label><input class="regular-text" type="text" id="signals_csmm_license_key" value="' . ($csmm_lc->get_license('license_key') != 'keyless' ? esc_attr($csmm_lc->get_license('license_key')) : '') . '" placeholder="12345678-12345678-12345678-12345678">';
 
 
 
 
 
 
242
 
243
+ echo '<br><label>Status: </label>';
244
+ if ($csmm_lc->is_active()) {
245
+ $license_formatted = $csmm_lc->get_license_formatted();
246
+ echo '<b style="color: #66b317;">Active</b><br>
247
+ <label>Type: </label>' . $license_formatted['name_long'];
248
+ echo '<br><label>Valid: </label>' . $license_formatted['valid_until'];
249
+
250
+ $plugin = plugin_basename(CSMM_FILE);
251
+ $update_url = wp_nonce_url(admin_url('update.php?action=upgrade-plugin&amp;plugin=' . urlencode($plugin)), 'upgrade-plugin_' . $plugin);
252
+ echo '<p class="center">Thank you for purchasing Coming Soon &amp; Maintenance Mode PRO! <b>Your license has been verified and activated.</b> ';
253
+ echo 'Please <b>click the button below</b> to update plugin files to the PRO version.</p>';
254
+ echo '<p><a href="' . esc_url($update_url) . '" class="button button-primary"><b>Update Coming Soon &amp; Maintenance Mode files to PRO &amp; finish the activation</b></a></p>';
255
+ } else { // not active
256
+ echo '<strong style="color: #ea1919;">Inactive</strong>';
257
+ if (!empty($csmm_lc->get_license('error'))) {
258
+ echo '<br><label>Error: </label>' . $csmm_lc->get_license('error');
259
+ }
260
+ }
261
+ echo '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
262
 
263
+ echo '<p>';
264
+ if ($csmm_lc->is_active()) {
265
+ echo '<a href="#" id="csmm_save_license" data-text-wait="Validating. Please wait." class="signals-btn">Save &amp; Revalidate License</a>';
266
+ echo '&nbsp; &nbsp;<a href="#" id="csmm_deactivate_license" data-text-wait="Deactivating. Please wait." class="signals-btn signals-btn-red">Deactivate License</a>';
267
+ } else {
268
+ echo '<a href="#" id="csmm_save_license" data-text-wait="Activating. Please wait." class="signals-btn">Save &amp; Activate License</a>';
269
+ echo '&nbsp; &nbsp;<a href="#" data-text-wait="Activating. Please wait." class="signals-btn signals-btn-secondary" id="csmm_keyless_activation">Keyless Activation</a>';
270
+ }
271
+ echo '</p>';
272
+ echo '<p class="mb0"><i>By attempting to activate a license you agree to share the following data with <a target="_blank" href="https://www.webfactoryltd.com/">WebFactory Ltd</a>: license key, site URL, site title, site WP version, and Coming Soon &amp; Maintenance Mode (free) version.</i>';
273
+ echo '</p>';
274
+ ?>
275
+ </div>
276
+
277
+ </div>
278
  </div>
279
+ </div><!-- #pro -->
 
framework/admin/views/settings-themes.php CHANGED
@@ -5,9 +5,8 @@ if (!defined('WPINC')) {
5
  }
6
 
7
  $themes =
8
-
9
  array (
10
- 0 =>
11
  array (
12
  'type' => 'CSMM PRO',
13
  'version' => '5.005',
@@ -18,7 +17,7 @@ array (
18
  'status' => 'pro',
19
  'name_clean' => 'aeroplane-company',
20
  ),
21
- 1 =>
22
  array (
23
  'type' => 'CSMM PRO',
24
  'version' => '15.17',
@@ -29,18 +28,18 @@ array (
29
  'status' => 'agency',
30
  'name_clean' => 'air-balloon',
31
  ),
32
- 2 =>
33
  array (
34
  'type' => 'CSMM PRO',
35
- 'version' => '15.05',
36
- 'last_edit' => 'Fri, 02 Mar 2018 12:43:04 +0000',
37
  'name' => 'Animated Clock',
38
  'description' => 'Andrea',
39
  'frontpage' => '0',
40
  'status' => 'pro',
41
  'name_clean' => 'animated-clock',
42
  ),
43
- 3 =>
44
  array (
45
  'type' => 'CSMM PRO',
46
  'version' => '15.17',
@@ -51,7 +50,7 @@ array (
51
  'status' => 'pro',
52
  'name_clean' => 'architecture-inc',
53
  ),
54
- 4 =>
55
  array (
56
  'type' => 'CSMM PRO',
57
  'version' => '15.17',
@@ -62,10 +61,10 @@ array (
62
  'status' => 'agency',
63
  'name_clean' => 'architecture',
64
  ),
65
- 5 =>
66
  array (
67
  'type' => 'CSMM PRO',
68
- 'version' => '15.17',
69
  'last_edit' => 'Sun, 07 Jul 2019 16:22:50 +0000',
70
  'name' => 'Art Gallery',
71
  'description' => '',
@@ -73,7 +72,7 @@ array (
73
  'status' => 'pro',
74
  'name_clean' => 'art-gallery',
75
  ),
76
- 6 =>
77
  array (
78
  'type' => 'CSMM PRO',
79
  'version' => '15.17',
@@ -84,7 +83,7 @@ array (
84
  'status' => 'agency',
85
  'name_clean' => 'auto-service',
86
  ),
87
- 7 =>
88
  array (
89
  'type' => 'CSMM PRO',
90
  'version' => '15.17',
@@ -95,7 +94,18 @@ array (
95
  'status' => 'pro',
96
  'name_clean' => 'bakery',
97
  ),
98
- 8 =>
 
 
 
 
 
 
 
 
 
 
 
99
  array (
100
  'type' => 'CSMM PRO',
101
  'version' => '15.17',
@@ -106,7 +116,7 @@ array (
106
  'status' => 'pro',
107
  'name_clean' => 'beach',
108
  ),
109
- 9 =>
110
  array (
111
  'type' => 'CSMM PRO',
112
  'version' => '5.05',
@@ -117,7 +127,7 @@ array (
117
  'status' => 'agency',
118
  'name_clean' => 'bicycle-race',
119
  ),
120
- 10 =>
121
  array (
122
  'type' => 'CSMM PRO',
123
  'version' => '15.17',
@@ -128,7 +138,7 @@ array (
128
  'status' => 'pro',
129
  'name_clean' => 'bike-shop',
130
  ),
131
- 11 =>
132
  array (
133
  'type' => 'CSMM PRO',
134
  'version' => '5.005',
@@ -139,18 +149,18 @@ array (
139
  'status' => 'agency',
140
  'name_clean' => 'bitcoin-miners',
141
  ),
142
- 12 =>
143
  array (
144
  'type' => 'CSMM PRO',
145
- 'version' => '15.17',
146
  'last_edit' => 'Mon, 21 Oct 2019 12:55:24 +0000',
147
  'name' => 'Black Friday',
148
  'description' => '',
149
- 'frontpage' => '1',
150
  'status' => 'pro',
151
  'name_clean' => 'black-friday',
152
  ),
153
- 13 =>
154
  array (
155
  'type' => 'CSMM PRO',
156
  'version' => '15.17',
@@ -161,7 +171,7 @@ array (
161
  'status' => 'agency',
162
  'name_clean' => 'blogging',
163
  ),
164
- 14 =>
165
  array (
166
  'type' => 'CSMM PRO',
167
  'version' => '15.17',
@@ -172,7 +182,7 @@ array (
172
  'status' => 'agency',
173
  'name_clean' => 'blue-ocean',
174
  ),
175
- 15 =>
176
  array (
177
  'type' => 'CSMM PRO',
178
  'version' => '15.17',
@@ -183,7 +193,18 @@ array (
183
  'status' => 'pro',
184
  'name_clean' => 'body-transformation',
185
  ),
186
- 16 =>
 
 
 
 
 
 
 
 
 
 
 
187
  array (
188
  'type' => 'CSMM PRO',
189
  'version' => '5.005',
@@ -194,21 +215,54 @@ array (
194
  'status' => 'agency',
195
  'name_clean' => 'book-lovers',
196
  ),
197
- 17 =>
198
  array (
199
  'type' => 'CSMM PRO',
200
- 'version' => '5.001',
201
- 'last_edit' => 'Thu, 15 Feb 2018 16:24:58 +0000',
202
  'name' => 'Business Company',
203
  'description' => '',
204
  'frontpage' => '0',
205
  'status' => 'agency',
206
  'name_clean' => 'business-company',
207
  ),
208
- 18 =>
 
 
 
 
 
 
 
 
 
 
 
209
  array (
210
  'type' => 'CSMM PRO',
211
  'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  'last_edit' => 'Sun, 16 Jun 2019 20:05:59 +0000',
213
  'name' => 'Business Meeting (Video)',
214
  'description' => '',
@@ -216,18 +270,18 @@ array (
216
  'status' => 'agency',
217
  'name_clean' => 'business-meeting-video',
218
  ),
219
- 19 =>
220
  array (
221
  'type' => 'CSMM PRO',
222
- 'version' => '15.17',
223
  'last_edit' => 'Wed, 25 Apr 2018 11:06:41 +0000',
224
  'name' => 'Business',
225
- 'description' => 'Andrea',
226
  'frontpage' => '1',
227
  'status' => 'agency',
228
  'name_clean' => 'business',
229
  ),
230
- 20 =>
231
  array (
232
  'type' => 'CSMM PRO',
233
  'version' => '15.17',
@@ -238,7 +292,18 @@ array (
238
  'status' => 'agency',
239
  'name_clean' => 'cafe',
240
  ),
241
- 21 =>
 
 
 
 
 
 
 
 
 
 
 
242
  array (
243
  'type' => 'CSMM PRO',
244
  'version' => '15.17',
@@ -249,7 +314,7 @@ array (
249
  'status' => 'pro',
250
  'name_clean' => 'christmas-decor',
251
  ),
252
- 22 =>
253
  array (
254
  'type' => 'CSMM PRO',
255
  'version' => '15.17',
@@ -260,10 +325,10 @@ array (
260
  'status' => 'pro',
261
  'name_clean' => 'church',
262
  ),
263
- 23 =>
264
  array (
265
  'type' => 'CSMM PRO',
266
- 'version' => '15.17',
267
  'last_edit' => 'Sun, 10 Mar 2019 11:24:47 +0000',
268
  'name' => 'City Nighttime',
269
  'description' => '',
@@ -271,7 +336,7 @@ array (
271
  'status' => 'pro',
272
  'name_clean' => 'city-nighttime',
273
  ),
274
- 24 =>
275
  array (
276
  'type' => 'CSMM PRO',
277
  'version' => '15.17',
@@ -282,7 +347,18 @@ array (
282
  'status' => 'agency',
283
  'name_clean' => 'cityscape',
284
  ),
285
- 25 =>
 
 
 
 
 
 
 
 
 
 
 
286
  array (
287
  'type' => 'CSMM PRO',
288
  'version' => '5.14',
@@ -293,7 +369,7 @@ array (
293
  'status' => 'agency',
294
  'name_clean' => 'clouds-screensaver-video',
295
  ),
296
- 26 =>
297
  array (
298
  'type' => 'CSMM PRO',
299
  'version' => '5.005',
@@ -304,10 +380,10 @@ array (
304
  'status' => 'agency',
305
  'name_clean' => 'coffee-shop',
306
  ),
307
- 27 =>
308
  array (
309
  'type' => 'CSMM PRO',
310
- 'version' => '15.17',
311
  'last_edit' => 'Fri, 04 May 2018 08:57:40 +0000',
312
  'name' => 'Cold Lake',
313
  'description' => '',
@@ -315,7 +391,7 @@ array (
315
  'status' => 'agency',
316
  'name_clean' => 'cold-lake',
317
  ),
318
- 28 =>
319
  array (
320
  'type' => 'CSMM PRO',
321
  'version' => '15.17',
@@ -326,7 +402,7 @@ array (
326
  'status' => 'agency',
327
  'name_clean' => 'computer-repair-service',
328
  ),
329
- 29 =>
330
  array (
331
  'type' => 'CSMM PRO',
332
  'version' => '15.17',
@@ -337,7 +413,7 @@ array (
337
  'status' => 'pro',
338
  'name_clean' => 'concert',
339
  ),
340
- 30 =>
341
  array (
342
  'type' => 'CSMM PRO',
343
  'version' => '15.17',
@@ -348,7 +424,7 @@ array (
348
  'status' => 'pro',
349
  'name_clean' => 'conference-event',
350
  ),
351
- 31 =>
352
  array (
353
  'type' => 'CSMM PRO',
354
  'version' => '15.17',
@@ -359,7 +435,7 @@ array (
359
  'status' => 'agency',
360
  'name_clean' => 'construction-company',
361
  ),
362
- 32 =>
363
  array (
364
  'type' => 'CSMM PRO',
365
  'version' => '15.17',
@@ -370,7 +446,7 @@ array (
370
  'status' => 'agency',
371
  'name_clean' => 'creative-design',
372
  ),
373
- 33 =>
374
  array (
375
  'type' => 'CSMM PRO',
376
  'version' => '15.17',
@@ -381,7 +457,18 @@ array (
381
  'status' => 'agency',
382
  'name_clean' => 'custom-decor',
383
  ),
384
- 34 =>
 
 
 
 
 
 
 
 
 
 
 
385
  array (
386
  'type' => 'CSMM PRO',
387
  'version' => '5.005',
@@ -392,7 +479,7 @@ array (
392
  'status' => 'pro',
393
  'name_clean' => 'default',
394
  ),
395
- 35 =>
396
  array (
397
  'type' => 'CSMM PRO',
398
  'version' => '15.17',
@@ -403,7 +490,18 @@ array (
403
  'status' => 'agency',
404
  'name_clean' => 'dental-clinic',
405
  ),
406
- 36 =>
 
 
 
 
 
 
 
 
 
 
 
407
  array (
408
  'type' => 'CSMM PRO',
409
  'version' => '15.17',
@@ -414,7 +512,7 @@ array (
414
  'status' => 'pro',
415
  'name_clean' => 'dog-shelter',
416
  ),
417
- 37 =>
418
  array (
419
  'type' => 'CSMM PRO',
420
  'version' => '5.001',
@@ -425,7 +523,29 @@ array (
425
  'status' => 'agency',
426
  'name_clean' => 'dog-training-and-behavior-consulting',
427
  ),
428
- 38 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  array (
430
  'type' => 'CSMM PRO',
431
  'version' => '15.17',
@@ -436,7 +556,7 @@ array (
436
  'status' => 'pro',
437
  'name_clean' => 'employment',
438
  ),
439
- 39 =>
440
  array (
441
  'type' => 'CSMM PRO',
442
  'version' => '15.17',
@@ -447,7 +567,7 @@ array (
447
  'status' => 'agency',
448
  'name_clean' => 'essay-writing-service',
449
  ),
450
- 40 =>
451
  array (
452
  'type' => 'CSMM PRO',
453
  'version' => '15.17',
@@ -458,7 +578,7 @@ array (
458
  'status' => 'pro',
459
  'name_clean' => 'fall-video',
460
  ),
461
- 41 =>
462
  array (
463
  'type' => 'CSMM PRO',
464
  'version' => '15.17',
@@ -469,7 +589,18 @@ array (
469
  'status' => 'agency',
470
  'name_clean' => 'fashion',
471
  ),
472
- 42 =>
 
 
 
 
 
 
 
 
 
 
 
473
  array (
474
  'type' => 'CSMM PRO',
475
  'version' => '15.17',
@@ -480,7 +611,7 @@ array (
480
  'status' => 'pro',
481
  'name_clean' => 'financial-district',
482
  ),
483
- 43 =>
484
  array (
485
  'type' => 'CSMM PRO',
486
  'version' => '15.17',
@@ -491,7 +622,18 @@ array (
491
  'status' => 'agency',
492
  'name_clean' => 'fitness-e-shop',
493
  ),
494
- 44 =>
 
 
 
 
 
 
 
 
 
 
 
495
  array (
496
  'type' => 'CSMM PRO',
497
  'version' => '15.05',
@@ -502,7 +644,7 @@ array (
502
  'status' => 'agency',
503
  'name_clean' => 'flower-shop',
504
  ),
505
- 45 =>
506
  array (
507
  'type' => 'CSMM PRO',
508
  'version' => '15.17',
@@ -513,10 +655,32 @@ array (
513
  'status' => 'pro',
514
  'name_clean' => 'food-blog',
515
  ),
516
- 46 =>
517
  array (
518
  'type' => 'CSMM PRO',
519
- 'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
  'last_edit' => 'Mon, 18 Jun 2018 16:40:10 +0000',
521
  'name' => 'Football',
522
  'description' => '',
@@ -524,7 +688,7 @@ array (
524
  'status' => 'pro',
525
  'name_clean' => 'football',
526
  ),
527
- 47 =>
528
  array (
529
  'type' => 'CSMM PRO',
530
  'version' => '15.17',
@@ -535,7 +699,7 @@ array (
535
  'status' => 'pro',
536
  'name_clean' => 'frozen-nature',
537
  ),
538
- 48 =>
539
  array (
540
  'type' => 'CSMM PRO',
541
  'version' => '15.17',
@@ -546,7 +710,18 @@ array (
546
  'status' => 'pro',
547
  'name_clean' => 'future-technology',
548
  ),
549
- 49 =>
 
 
 
 
 
 
 
 
 
 
 
550
  array (
551
  'type' => 'CSMM PRO',
552
  'version' => '15.17',
@@ -557,7 +732,7 @@ array (
557
  'status' => 'pro',
558
  'name_clean' => 'greenlife',
559
  ),
560
- 50 =>
561
  array (
562
  'type' => 'CSMM PRO',
563
  'version' => '15.17',
@@ -568,7 +743,7 @@ array (
568
  'status' => 'pro',
569
  'name_clean' => 'halloween',
570
  ),
571
- 51 =>
572
  array (
573
  'type' => 'CSMM PRO',
574
  'version' => '15.17',
@@ -579,7 +754,18 @@ array (
579
  'status' => 'agency',
580
  'name_clean' => 'healthy-eating',
581
  ),
582
- 52 =>
 
 
 
 
 
 
 
 
 
 
 
583
  array (
584
  'type' => 'CSMM PRO',
585
  'version' => '15.17',
@@ -590,7 +776,18 @@ array (
590
  'status' => 'pro',
591
  'name_clean' => 'holiday-resort',
592
  ),
593
- 53 =>
 
 
 
 
 
 
 
 
 
 
 
594
  array (
595
  'type' => 'CSMM PRO',
596
  'version' => '15.17',
@@ -601,7 +798,7 @@ array (
601
  'status' => 'pro',
602
  'name_clean' => 'homemade-chocolate-gifts',
603
  ),
604
- 54 =>
605
  array (
606
  'type' => 'CSMM PRO',
607
  'version' => '15.17',
@@ -612,7 +809,7 @@ array (
612
  'status' => 'pro',
613
  'name_clean' => 'hosting',
614
  ),
615
- 55 =>
616
  array (
617
  'type' => 'CSMM PRO',
618
  'version' => '15.17',
@@ -623,7 +820,18 @@ array (
623
  'status' => 'pro',
624
  'name_clean' => 'ice-cream-shop',
625
  ),
626
- 56 =>
 
 
 
 
 
 
 
 
 
 
 
627
  array (
628
  'type' => 'CSMM PRO',
629
  'version' => '15.17',
@@ -634,7 +842,7 @@ array (
634
  'status' => 'pro',
635
  'name_clean' => 'inspy-romance',
636
  ),
637
- 57 =>
638
  array (
639
  'type' => 'CSMM PRO',
640
  'version' => '15.05',
@@ -645,7 +853,7 @@ array (
645
  'status' => 'agency',
646
  'name_clean' => 'interior-design',
647
  ),
648
- 58 =>
649
  array (
650
  'type' => 'CSMM PRO',
651
  'version' => '15.17',
@@ -656,7 +864,7 @@ array (
656
  'status' => 'pro',
657
  'name_clean' => 'it-conference',
658
  ),
659
- 59 =>
660
  array (
661
  'type' => 'CSMM PRO',
662
  'version' => '5.14',
@@ -667,7 +875,29 @@ array (
667
  'status' => 'agency',
668
  'name_clean' => 'journey-video',
669
  ),
670
- 60 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  array (
672
  'type' => 'CSMM PRO',
673
  'version' => '15.17',
@@ -678,7 +908,7 @@ array (
678
  'status' => 'agency',
679
  'name_clean' => 'kids-innovation-program',
680
  ),
681
- 61 =>
682
  array (
683
  'type' => 'CSMM PRO',
684
  'version' => '15.17',
@@ -689,7 +919,7 @@ array (
689
  'status' => 'agency',
690
  'name_clean' => 'ladies-accessories',
691
  ),
692
- 62 =>
693
  array (
694
  'type' => 'CSMM PRO',
695
  'version' => '15.17',
@@ -700,7 +930,7 @@ array (
700
  'status' => 'pro',
701
  'name_clean' => 'lego-bricks',
702
  ),
703
- 63 =>
704
  array (
705
  'type' => 'CSMM PRO',
706
  'version' => '15.17',
@@ -711,21 +941,21 @@ array (
711
  'status' => 'agency',
712
  'name_clean' => 'loneliness',
713
  ),
714
- 64 =>
715
  array (
716
  'type' => 'CSMM PRO',
717
- 'version' => '15.17',
718
  'last_edit' => 'Wed, 25 Apr 2018 11:04:55 +0000',
719
  'name' => 'Lonely Road',
720
- 'description' => 'Andrea',
721
  'frontpage' => '1',
722
  'status' => 'agency',
723
  'name_clean' => 'lonely-road',
724
  ),
725
- 65 =>
726
  array (
727
  'type' => 'CSMM PRO',
728
- 'version' => '15.17',
729
  'last_edit' => 'Fri, 30 Mar 2018 11:30:37 +0000',
730
  'name' => 'Luxury Car',
731
  'description' => '',
@@ -733,7 +963,7 @@ array (
733
  'status' => 'pro',
734
  'name_clean' => 'luxury-car',
735
  ),
736
- 66 =>
737
  array (
738
  'type' => 'CSMM PRO',
739
  'version' => '5.005',
@@ -744,7 +974,7 @@ array (
744
  'status' => 'pro',
745
  'name_clean' => 'maintenance-mode',
746
  ),
747
- 67 =>
748
  array (
749
  'type' => 'CSMM PRO',
750
  'version' => '5.005',
@@ -755,10 +985,21 @@ array (
755
  'status' => 'agency',
756
  'name_clean' => 'makeup-artist-training',
757
  ),
758
- 68 =>
759
  array (
760
  'type' => 'CSMM PRO',
761
- 'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
762
  'last_edit' => 'Mon, 21 Oct 2019 13:36:56 +0000',
763
  'name' => 'Metrics (Video)',
764
  'description' => '',
@@ -766,7 +1007,7 @@ array (
766
  'status' => 'agency',
767
  'name_clean' => 'metrics-video',
768
  ),
769
- 69 =>
770
  array (
771
  'type' => 'CSMM PRO',
772
  'version' => '15.17',
@@ -777,18 +1018,29 @@ array (
777
  'status' => 'pro',
778
  'name_clean' => 'misty-forest-video',
779
  ),
780
- 70 =>
781
  array (
782
  'type' => 'CSMM PRO',
783
- 'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
784
  'last_edit' => 'Wed, 25 Apr 2018 11:08:31 +0000',
785
  'name' => 'Mobile Designer',
786
- 'description' => 'Andrea',
787
  'frontpage' => '1',
788
  'status' => 'agency',
789
  'name_clean' => 'mobile-designer',
790
  ),
791
- 71 =>
792
  array (
793
  'type' => 'CSMM PRO',
794
  'version' => '15.17',
@@ -799,10 +1051,10 @@ array (
799
  'status' => 'agency',
800
  'name_clean' => 'mobile-meeting',
801
  ),
802
- 72 =>
803
  array (
804
  'type' => 'CSMM PRO',
805
- 'version' => '5.005',
806
  'last_edit' => 'Mon, 26 Feb 2018 18:04:32 +0000',
807
  'name' => 'Modern Blog',
808
  'description' => '',
@@ -810,7 +1062,7 @@ array (
810
  'status' => 'pro',
811
  'name_clean' => 'modern-blog',
812
  ),
813
- 73 =>
814
  array (
815
  'type' => 'CSMM PRO',
816
  'version' => '15.05',
@@ -821,7 +1073,7 @@ array (
821
  'status' => 'agency',
822
  'name_clean' => 'modern-office',
823
  ),
824
- 74 =>
825
  array (
826
  'type' => 'CSMM PRO',
827
  'version' => '15.17',
@@ -832,7 +1084,7 @@ array (
832
  'status' => 'agency',
833
  'name_clean' => 'modern-recipes',
834
  ),
835
- 75 =>
836
  array (
837
  'type' => 'CSMM PRO',
838
  'version' => '15.17',
@@ -843,7 +1095,7 @@ array (
843
  'status' => 'pro',
844
  'name_clean' => 'mountain-slide',
845
  ),
846
- 76 =>
847
  array (
848
  'type' => 'CSMM PRO',
849
  'version' => '5.05',
@@ -854,18 +1106,18 @@ array (
854
  'status' => 'pro',
855
  'name_clean' => 'mountain',
856
  ),
857
- 77 =>
858
  array (
859
  'type' => 'CSMM PRO',
860
- 'version' => '15.17',
861
  'last_edit' => 'Wed, 25 Apr 2018 11:12:56 +0000',
862
  'name' => 'Movie Trailer (Video)',
863
  'description' => '',
864
- 'frontpage' => '0',
865
  'status' => 'pro',
866
  'name_clean' => 'movie-trailer-video',
867
  ),
868
- 78 =>
869
  array (
870
  'type' => 'CSMM PRO',
871
  'version' => '15.17',
@@ -876,7 +1128,7 @@ array (
876
  'status' => 'pro',
877
  'name_clean' => 'music',
878
  ),
879
- 79 =>
880
  array (
881
  'type' => 'CSMM PRO',
882
  'version' => '15.05',
@@ -887,7 +1139,29 @@ array (
887
  'status' => 'agency',
888
  'name_clean' => 'nature',
889
  ),
890
- 80 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
891
  array (
892
  'type' => 'CSMM PRO',
893
  'version' => '5.14',
@@ -898,7 +1172,7 @@ array (
898
  'status' => 'agency',
899
  'name_clean' => 'office-meeting-video',
900
  ),
901
- 81 =>
902
  array (
903
  'type' => 'CSMM PRO',
904
  'version' => '15.05',
@@ -909,7 +1183,18 @@ array (
909
  'status' => 'agency',
910
  'name_clean' => 'office-theme',
911
  ),
912
- 82 =>
 
 
 
 
 
 
 
 
 
 
 
913
  array (
914
  'type' => 'CSMM PRO',
915
  'version' => '5.005',
@@ -920,7 +1205,7 @@ array (
920
  'status' => 'agency',
921
  'name_clean' => 'online-learning',
922
  ),
923
- 83 =>
924
  array (
925
  'type' => 'CSMM PRO',
926
  'version' => '15.17',
@@ -931,7 +1216,7 @@ array (
931
  'status' => 'pro',
932
  'name_clean' => 'online-shopping',
933
  ),
934
- 84 =>
935
  array (
936
  'type' => 'CSMM PRO',
937
  'version' => '15.17',
@@ -942,29 +1227,29 @@ array (
942
  'status' => 'pro',
943
  'name_clean' => 'organic-cosmetics',
944
  ),
945
- 85 =>
946
  array (
947
  'type' => 'CSMM PRO',
948
- 'version' => '15.17',
949
  'last_edit' => 'Wed, 25 Apr 2018 11:10:44 +0000',
950
  'name' => 'Pancake House',
951
  'description' => '',
952
- 'frontpage' => '0',
953
  'status' => 'pro',
954
  'name_clean' => 'pancake-house',
955
  ),
956
- 86 =>
957
  array (
958
  'type' => 'CSMM PRO',
959
- 'version' => '15.17',
960
  'last_edit' => 'Wed, 25 Apr 2018 11:15:19 +0000',
961
  'name' => 'Parenting',
962
  'description' => '',
963
- 'frontpage' => '0',
964
  'status' => 'pro',
965
  'name_clean' => 'parenting',
966
  ),
967
- 87 =>
968
  array (
969
  'type' => 'CSMM PRO',
970
  'version' => '15.17',
@@ -975,7 +1260,7 @@ array (
975
  'status' => 'pro',
976
  'name_clean' => 'passage',
977
  ),
978
- 88 =>
979
  array (
980
  'type' => 'CSMM PRO',
981
  'version' => '15.17',
@@ -986,7 +1271,7 @@ array (
986
  'status' => 'agency',
987
  'name_clean' => 'peaceful-river',
988
  ),
989
- 89 =>
990
  array (
991
  'type' => 'CSMM PRO',
992
  'version' => '15.17',
@@ -997,7 +1282,18 @@ array (
997
  'status' => 'pro',
998
  'name_clean' => 'personal-trainer',
999
  ),
1000
- 90 =>
 
 
 
 
 
 
 
 
 
 
 
1001
  array (
1002
  'type' => 'CSMM PRO',
1003
  'version' => '15.17',
@@ -1008,10 +1304,10 @@ array (
1008
  'status' => 'agency',
1009
  'name_clean' => 'photography',
1010
  ),
1011
- 91 =>
1012
  array (
1013
  'type' => 'CSMM PRO',
1014
- 'version' => '15.17',
1015
  'last_edit' => 'Sat, 28 Dec 2019 12:08:04 +0000',
1016
  'name' => 'Plumbing',
1017
  'description' => '',
@@ -1019,18 +1315,29 @@ array (
1019
  'status' => 'pro',
1020
  'name_clean' => 'plumbing',
1021
  ),
1022
- 92 =>
1023
  array (
1024
  'type' => 'CSMM PRO',
1025
- 'version' => '15.17',
1026
- 'last_edit' => 'Sun, 07 Jul 2019 17:17:37 +0000',
1027
  'name' => 'Podcast',
1028
  'description' => '',
1029
- 'frontpage' => '1',
1030
- 'status' => 'agency',
1031
  'name_clean' => 'podcast',
1032
  ),
1033
- 93 =>
 
 
 
 
 
 
 
 
 
 
 
1034
  array (
1035
  'type' => 'CSMM PRO',
1036
  'version' => '15.17',
@@ -1041,7 +1348,7 @@ array (
1041
  'status' => 'agency',
1042
  'name_clean' => 'restaurant',
1043
  ),
1044
- 94 =>
1045
  array (
1046
  'type' => 'CSMM PRO',
1047
  'version' => '15.17',
@@ -1052,7 +1359,7 @@ array (
1052
  'status' => 'agency',
1053
  'name_clean' => 'romantic-travels',
1054
  ),
1055
- 95 =>
1056
  array (
1057
  'type' => 'CSMM PRO',
1058
  'version' => '15.17',
@@ -1063,7 +1370,7 @@ array (
1063
  'status' => 'agency',
1064
  'name_clean' => 'running-blog',
1065
  ),
1066
- 96 =>
1067
  array (
1068
  'type' => 'CSMM PRO',
1069
  'version' => '15.14',
@@ -1074,10 +1381,10 @@ array (
1074
  'status' => 'pro',
1075
  'name_clean' => 'running-video',
1076
  ),
1077
- 97 =>
1078
  array (
1079
  'type' => 'CSMM PRO',
1080
- 'version' => '15.17',
1081
  'last_edit' => 'Thu, 25 Apr 2019 08:11:16 +0000',
1082
  'name' => 'Scholar University',
1083
  'description' => '',
@@ -1085,10 +1392,10 @@ array (
1085
  'status' => 'agency',
1086
  'name_clean' => 'scholar-university',
1087
  ),
1088
- 98 =>
1089
  array (
1090
  'type' => 'CSMM PRO',
1091
- 'version' => '15.17',
1092
  'last_edit' => 'Wed, 26 Jun 2019 16:55:04 +0000',
1093
  'name' => 'SEO & Digital Marketing',
1094
  'description' => '',
@@ -1096,7 +1403,7 @@ array (
1096
  'status' => 'agency',
1097
  'name_clean' => 'seo-digital-marketing',
1098
  ),
1099
- 99 =>
1100
  array (
1101
  'type' => 'CSMM PRO',
1102
  'version' => '5.005',
@@ -1107,32 +1414,43 @@ array (
1107
  'status' => 'agency',
1108
  'name_clean' => 'shoes-store',
1109
  ),
1110
- 100 =>
1111
  array (
1112
  'type' => 'CSMM PRO',
1113
- 'version' => '15.17',
1114
  'last_edit' => 'Wed, 25 Apr 2018 11:17:21 +0000',
1115
  'name' => 'Simple Beige Design',
1116
  'description' => '',
1117
- 'frontpage' => '0',
1118
  'status' => 'pro',
1119
  'name_clean' => 'simple-beige-design',
1120
  ),
1121
- 101 =>
 
 
 
 
 
 
 
 
 
 
 
1122
  array (
1123
  'type' => 'CSMM PRO',
1124
  'version' => '15.17',
1125
- 'last_edit' => 'Mon, 30 Dec 2019 18:36:02 +0000',
1126
  'name' => 'Skincare',
1127
  'description' => '',
1128
  'frontpage' => '1',
1129
  'status' => 'agency',
1130
  'name_clean' => 'skincare',
1131
  ),
1132
- 102 =>
1133
  array (
1134
  'type' => 'CSMM PRO',
1135
- 'version' => '15.17',
1136
  'last_edit' => 'Wed, 25 Apr 2018 11:19:34 +0000',
1137
  'name' => 'Snow Screensaver (Video)',
1138
  'description' => '',
@@ -1140,7 +1458,7 @@ array (
1140
  'status' => 'pro',
1141
  'name_clean' => 'snow-screensaver-video',
1142
  ),
1143
- 103 =>
1144
  array (
1145
  'type' => 'CSMM PRO',
1146
  'version' => '15.17',
@@ -1151,10 +1469,10 @@ array (
1151
  'status' => 'pro',
1152
  'name_clean' => 'snowboarding-blog',
1153
  ),
1154
- 104 =>
1155
  array (
1156
  'type' => 'CSMM PRO',
1157
- 'version' => '15.17',
1158
  'last_edit' => 'Wed, 25 Apr 2018 11:21:19 +0000',
1159
  'name' => 'Snowy Mountain',
1160
  'description' => '',
@@ -1162,7 +1480,7 @@ array (
1162
  'status' => 'pro',
1163
  'name_clean' => 'snowy-mountain',
1164
  ),
1165
- 105 =>
1166
  array (
1167
  'type' => 'CSMM PRO',
1168
  'version' => '15.17',
@@ -1173,7 +1491,7 @@ array (
1173
  'status' => 'pro',
1174
  'name_clean' => 'snowy-oasis',
1175
  ),
1176
- 106 =>
1177
  array (
1178
  'type' => 'CSMM PRO',
1179
  'version' => '15.17',
@@ -1184,7 +1502,18 @@ array (
1184
  'status' => 'agency',
1185
  'name_clean' => 'social-media-service',
1186
  ),
1187
- 107 =>
 
 
 
 
 
 
 
 
 
 
 
1188
  array (
1189
  'type' => 'CSMM PRO',
1190
  'version' => '15.17',
@@ -1195,7 +1524,7 @@ array (
1195
  'status' => 'agency',
1196
  'name_clean' => 'spa-beauty-studio',
1197
  ),
1198
- 108 =>
1199
  array (
1200
  'type' => 'CSMM PRO',
1201
  'version' => '15.17',
@@ -1206,18 +1535,29 @@ array (
1206
  'status' => 'agency',
1207
  'name_clean' => 'spa',
1208
  ),
1209
- 109 =>
1210
  array (
1211
  'type' => 'CSMM PRO',
1212
- 'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
1213
  'last_edit' => 'Fri, 30 Mar 2018 09:59:40 +0000',
1214
  'name' => 'Spring',
1215
  'description' => '',
1216
- 'frontpage' => '0',
1217
  'status' => 'agency',
1218
  'name_clean' => 'spring',
1219
  ),
1220
- 110 =>
1221
  array (
1222
  'type' => 'CSMM PRO',
1223
  'version' => '15.17',
@@ -1228,7 +1568,29 @@ array (
1228
  'status' => 'pro',
1229
  'name_clean' => 'startup',
1230
  ),
1231
- 111 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1232
  array (
1233
  'type' => 'CSMM PRO',
1234
  'version' => '15.17',
@@ -1239,7 +1601,29 @@ array (
1239
  'status' => 'pro',
1240
  'name_clean' => 'stylish-workplace',
1241
  ),
1242
- 112 =>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1243
  array (
1244
  'type' => 'CSMM PRO',
1245
  'version' => '15.17',
@@ -1250,10 +1634,10 @@ array (
1250
  'status' => 'pro',
1251
  'name_clean' => 'techexpo',
1252
  ),
1253
- 113 =>
1254
  array (
1255
  'type' => 'CSMM PRO',
1256
- 'version' => '15.17',
1257
  'last_edit' => 'Sun, 18 Aug 2019 17:19:12 +0000',
1258
  'name' => 'Telecommunication',
1259
  'description' => '',
@@ -1261,18 +1645,18 @@ array (
1261
  'status' => 'agency',
1262
  'name_clean' => 'telecommunication',
1263
  ),
1264
- 114 =>
1265
  array (
1266
  'type' => 'CSMM PRO',
1267
- 'version' => '15.17',
1268
  'last_edit' => 'Wed, 25 Apr 2018 11:22:49 +0000',
1269
  'name' => 'The Big City Newsletter',
1270
- 'description' => 'Andrea',
1271
  'frontpage' => '1',
1272
  'status' => 'agency',
1273
  'name_clean' => 'the-big-city-newsletter',
1274
  ),
1275
- 115 =>
1276
  array (
1277
  'type' => 'CSMM PRO',
1278
  'version' => '5.14',
@@ -1283,7 +1667,7 @@ array (
1283
  'status' => 'pro',
1284
  'name_clean' => 'the-sunny-view',
1285
  ),
1286
- 116 =>
1287
  array (
1288
  'type' => 'CSMM PRO',
1289
  'version' => '15.17',
@@ -1294,7 +1678,7 @@ array (
1294
  'status' => 'agency',
1295
  'name_clean' => 'theatre',
1296
  ),
1297
- 117 =>
1298
  array (
1299
  'type' => 'CSMM PRO',
1300
  'version' => '5.001',
@@ -1305,7 +1689,7 @@ array (
1305
  'status' => 'pro',
1306
  'name_clean' => 'travel-agency',
1307
  ),
1308
- 118 =>
1309
  array (
1310
  'type' => 'CSMM PRO',
1311
  'version' => '15.05',
@@ -1316,10 +1700,10 @@ array (
1316
  'status' => 'agency',
1317
  'name_clean' => 'travel-blog',
1318
  ),
1319
- 119 =>
1320
  array (
1321
  'type' => 'CSMM PRO',
1322
- 'version' => '15.17',
1323
  'last_edit' => 'Wed, 25 Apr 2018 11:24:56 +0000',
1324
  'name' => 'Tulips',
1325
  'description' => '',
@@ -1327,18 +1711,18 @@ array (
1327
  'status' => 'agency',
1328
  'name_clean' => 'tulips',
1329
  ),
1330
- 120 =>
1331
  array (
1332
  'type' => 'CSMM PRO',
1333
- 'version' => '15.17',
1334
  'last_edit' => 'Sun, 27 Jan 2019 08:47:12 +0000',
1335
- 'name' => 'Valentine&#39;s Day',
1336
  'description' => '',
1337
  'frontpage' => '1',
1338
  'status' => 'pro',
1339
  'name_clean' => 'valentines-day',
1340
  ),
1341
- 121 =>
1342
  array (
1343
  'type' => 'CSMM PRO',
1344
  'version' => '5.001',
@@ -1349,7 +1733,7 @@ array (
1349
  'status' => 'pro',
1350
  'name_clean' => 'video-production',
1351
  ),
1352
- 122 =>
1353
  array (
1354
  'type' => 'CSMM PRO',
1355
  'version' => '15.17',
@@ -1360,18 +1744,40 @@ array (
1360
  'status' => 'agency',
1361
  'name_clean' => 'virtual-assistant-service',
1362
  ),
1363
- 123 =>
1364
  array (
1365
  'type' => 'CSMM PRO',
1366
  'version' => '15.17',
 
 
 
 
 
 
 
 
 
 
 
1367
  'last_edit' => 'Sat, 07 Jul 2018 15:15:19 +0000',
1368
  'name' => 'Walking Away (Video)',
1369
  'description' => '',
1370
- 'frontpage' => '0',
1371
  'status' => 'pro',
1372
  'name_clean' => 'walking-away-video',
1373
  ),
1374
- 124 =>
 
 
 
 
 
 
 
 
 
 
 
1375
  array (
1376
  'type' => 'CSMM PRO',
1377
  'version' => '5.005',
@@ -1382,7 +1788,7 @@ array (
1382
  'status' => 'agency',
1383
  'name_clean' => 'webinar',
1384
  ),
1385
- 125 =>
1386
  array (
1387
  'type' => 'CSMM PRO',
1388
  'version' => '5.005',
@@ -1393,7 +1799,18 @@ array (
1393
  'status' => 'agency',
1394
  'name_clean' => 'wedding-blog',
1395
  ),
1396
- 126 =>
 
 
 
 
 
 
 
 
 
 
 
1397
  array (
1398
  'type' => 'CSMM PRO',
1399
  'version' => '15.17',
@@ -1404,7 +1821,18 @@ array (
1404
  'status' => 'pro',
1405
  'name_clean' => 'white-orchids',
1406
  ),
1407
- 127 =>
 
 
 
 
 
 
 
 
 
 
 
1408
  array (
1409
  'type' => 'CSMM PRO',
1410
  'version' => '5.14',
@@ -1415,7 +1843,7 @@ array (
1415
  'status' => 'agency',
1416
  'name_clean' => 'working-out',
1417
  ),
1418
- 128 =>
1419
  array (
1420
  'type' => 'CSMM PRO',
1421
  'version' => '15.05',
@@ -1426,10 +1854,10 @@ array (
1426
  'status' => 'agency',
1427
  'name_clean' => 'workplace',
1428
  ),
1429
- 129 =>
1430
  array (
1431
  'type' => 'CSMM PRO',
1432
- 'version' => '15.17',
1433
  'last_edit' => 'Wed, 25 Apr 2018 11:00:38 +0000',
1434
  'name' => 'Writing Service (Video)',
1435
  'description' => '',
5
  }
6
 
7
  $themes =
 
8
  array (
9
+ 0 =>
10
  array (
11
  'type' => 'CSMM PRO',
12
  'version' => '5.005',
17
  'status' => 'pro',
18
  'name_clean' => 'aeroplane-company',
19
  ),
20
+ 1 =>
21
  array (
22
  'type' => 'CSMM PRO',
23
  'version' => '15.17',
28
  'status' => 'agency',
29
  'name_clean' => 'air-balloon',
30
  ),
31
+ 2 =>
32
  array (
33
  'type' => 'CSMM PRO',
34
+ 'version' => '6.00',
35
+ 'last_edit' => 'Mon, 03 Aug 2020 12:43:26 +0000',
36
  'name' => 'Animated Clock',
37
  'description' => 'Andrea',
38
  'frontpage' => '0',
39
  'status' => 'pro',
40
  'name_clean' => 'animated-clock',
41
  ),
42
+ 3 =>
43
  array (
44
  'type' => 'CSMM PRO',
45
  'version' => '15.17',
50
  'status' => 'pro',
51
  'name_clean' => 'architecture-inc',
52
  ),
53
+ 4 =>
54
  array (
55
  'type' => 'CSMM PRO',
56
  'version' => '15.17',
61
  'status' => 'agency',
62
  'name_clean' => 'architecture',
63
  ),
64
+ 5 =>
65
  array (
66
  'type' => 'CSMM PRO',
67
+ 'version' => '6.00',
68
  'last_edit' => 'Sun, 07 Jul 2019 16:22:50 +0000',
69
  'name' => 'Art Gallery',
70
  'description' => '',
72
  'status' => 'pro',
73
  'name_clean' => 'art-gallery',
74
  ),
75
+ 6 =>
76
  array (
77
  'type' => 'CSMM PRO',
78
  'version' => '15.17',
83
  'status' => 'agency',
84
  'name_clean' => 'auto-service',
85
  ),
86
+ 7 =>
87
  array (
88
  'type' => 'CSMM PRO',
89
  'version' => '15.17',
94
  'status' => 'pro',
95
  'name_clean' => 'bakery',
96
  ),
97
+ 8 =>
98
+ array (
99
+ 'type' => 'CSMM PRO',
100
+ 'version' => '6.00',
101
+ 'last_edit' => 'Sun, 23 Feb 2020 11:41:46 +0000',
102
+ 'name' => 'Banking App',
103
+ 'description' => '',
104
+ 'frontpage' => '1',
105
+ 'status' => 'agency',
106
+ 'name_clean' => 'banking-app',
107
+ ),
108
+ 9 =>
109
  array (
110
  'type' => 'CSMM PRO',
111
  'version' => '15.17',
116
  'status' => 'pro',
117
  'name_clean' => 'beach',
118
  ),
119
+ 10 =>
120
  array (
121
  'type' => 'CSMM PRO',
122
  'version' => '5.05',
127
  'status' => 'agency',
128
  'name_clean' => 'bicycle-race',
129
  ),
130
+ 11 =>
131
  array (
132
  'type' => 'CSMM PRO',
133
  'version' => '15.17',
138
  'status' => 'pro',
139
  'name_clean' => 'bike-shop',
140
  ),
141
+ 12 =>
142
  array (
143
  'type' => 'CSMM PRO',
144
  'version' => '5.005',
149
  'status' => 'agency',
150
  'name_clean' => 'bitcoin-miners',
151
  ),
152
+ 13 =>
153
  array (
154
  'type' => 'CSMM PRO',
155
+ 'version' => '6.00',
156
  'last_edit' => 'Mon, 21 Oct 2019 12:55:24 +0000',
157
  'name' => 'Black Friday',
158
  'description' => '',
159
+ 'frontpage' => '0',
160
  'status' => 'pro',
161
  'name_clean' => 'black-friday',
162
  ),
163
+ 14 =>
164
  array (
165
  'type' => 'CSMM PRO',
166
  'version' => '15.17',
171
  'status' => 'agency',
172
  'name_clean' => 'blogging',
173
  ),
174
+ 15 =>
175
  array (
176
  'type' => 'CSMM PRO',
177
  'version' => '15.17',
182
  'status' => 'agency',
183
  'name_clean' => 'blue-ocean',
184
  ),
185
+ 16 =>
186
  array (
187
  'type' => 'CSMM PRO',
188
  'version' => '15.17',
193
  'status' => 'pro',
194
  'name_clean' => 'body-transformation',
195
  ),
196
+ 17 =>
197
+ array (
198
+ 'type' => 'CSMM PRO',
199
+ 'version' => '6.00',
200
+ 'last_edit' => 'Fri, 07 Aug 2020 08:11:04 +0000',
201
+ 'name' => 'Bodybuilding',
202
+ 'description' => '',
203
+ 'frontpage' => '0',
204
+ 'status' => 'extra',
205
+ 'name_clean' => 'bodybuilding',
206
+ ),
207
+ 18 =>
208
  array (
209
  'type' => 'CSMM PRO',
210
  'version' => '5.005',
215
  'status' => 'agency',
216
  'name_clean' => 'book-lovers',
217
  ),
218
+ 19 =>
219
  array (
220
  'type' => 'CSMM PRO',
221
+ 'version' => '6.00',
222
+ 'last_edit' => 'Mon, 03 Aug 2020 12:36:52 +0000',
223
  'name' => 'Business Company',
224
  'description' => '',
225
  'frontpage' => '0',
226
  'status' => 'agency',
227
  'name_clean' => 'business-company',
228
  ),
229
+ 20 =>
230
+ array (
231
+ 'type' => 'CSMM PRO',
232
+ 'version' => '6.00',
233
+ 'last_edit' => 'Fri, 07 Aug 2020 17:05:08 +0000',
234
+ 'name' => 'Business Consulting (Video)',
235
+ 'description' => '',
236
+ 'frontpage' => '0',
237
+ 'status' => 'extra',
238
+ 'name_clean' => 'business-consulting-video',
239
+ ),
240
+ 21 =>
241
  array (
242
  'type' => 'CSMM PRO',
243
  'version' => '15.17',
244
+ 'last_edit' => 'Sun, 23 Feb 2020 10:58:18 +0000',
245
+ 'name' => 'Business Consulting',
246
+ 'description' => '',
247
+ 'frontpage' => '1',
248
+ 'status' => 'pro',
249
+ 'name_clean' => 'business-consulting',
250
+ ),
251
+ 22 =>
252
+ array (
253
+ 'type' => 'CSMM PRO',
254
+ 'version' => '6.00',
255
+ 'last_edit' => 'Thu, 06 Aug 2020 20:25:12 +0000',
256
+ 'name' => 'Business Launch',
257
+ 'description' => '',
258
+ 'frontpage' => '0',
259
+ 'status' => 'extra',
260
+ 'name_clean' => 'business-launch',
261
+ ),
262
+ 23 =>
263
+ array (
264
+ 'type' => 'CSMM PRO',
265
+ 'version' => '6.00',
266
  'last_edit' => 'Sun, 16 Jun 2019 20:05:59 +0000',
267
  'name' => 'Business Meeting (Video)',
268
  'description' => '',
270
  'status' => 'agency',
271
  'name_clean' => 'business-meeting-video',
272
  ),
273
+ 24 =>
274
  array (
275
  'type' => 'CSMM PRO',
276
+ 'version' => '6.00',
277
  'last_edit' => 'Wed, 25 Apr 2018 11:06:41 +0000',
278
  'name' => 'Business',
279
+ 'description' => '',
280
  'frontpage' => '1',
281
  'status' => 'agency',
282
  'name_clean' => 'business',
283
  ),
284
+ 25 =>
285
  array (
286
  'type' => 'CSMM PRO',
287
  'version' => '15.17',
292
  'status' => 'agency',
293
  'name_clean' => 'cafe',
294
  ),
295
+ 26 =>
296
+ array (
297
+ 'type' => 'CSMM PRO',
298
+ 'version' => '6.00',
299
+ 'last_edit' => 'Fri, 07 Aug 2020 08:09:16 +0000',
300
+ 'name' => 'Chatbot',
301
+ 'description' => '',
302
+ 'frontpage' => '0',
303
+ 'status' => 'extra',
304
+ 'name_clean' => 'chatbot',
305
+ ),
306
+ 27 =>
307
  array (
308
  'type' => 'CSMM PRO',
309
  'version' => '15.17',
314
  'status' => 'pro',
315
  'name_clean' => 'christmas-decor',
316
  ),
317
+ 28 =>
318
  array (
319
  'type' => 'CSMM PRO',
320
  'version' => '15.17',
325
  'status' => 'pro',
326
  'name_clean' => 'church',
327
  ),
328
+ 29 =>
329
  array (
330
  'type' => 'CSMM PRO',
331
+ 'version' => '6.00',
332
  'last_edit' => 'Sun, 10 Mar 2019 11:24:47 +0000',
333
  'name' => 'City Nighttime',
334
  'description' => '',
336
  'status' => 'pro',
337
  'name_clean' => 'city-nighttime',
338
  ),
339
+ 30 =>
340
  array (
341
  'type' => 'CSMM PRO',
342
  'version' => '15.17',
347
  'status' => 'agency',
348
  'name_clean' => 'cityscape',
349
  ),
350
+ 31 =>
351
+ array (
352
+ 'type' => 'CSMM PRO',
353
+ 'version' => '6.00',
354
+ 'last_edit' => 'Fri, 07 Aug 2020 08:17:59 +0000',
355
+ 'name' => 'Clothing Trends',
356
+ 'description' => '',
357
+ 'frontpage' => '0',
358
+ 'status' => 'extra',
359
+ 'name_clean' => 'clothing-trends',
360
+ ),
361
+ 32 =>
362
  array (
363
  'type' => 'CSMM PRO',
364
  'version' => '5.14',
369
  'status' => 'agency',
370
  'name_clean' => 'clouds-screensaver-video',
371
  ),
372
+ 33 =>
373
  array (
374
  'type' => 'CSMM PRO',
375
  'version' => '5.005',
380
  'status' => 'agency',
381
  'name_clean' => 'coffee-shop',
382
  ),
383
+ 34 =>
384
  array (
385
  'type' => 'CSMM PRO',
386
+ 'version' => '6.00',
387
  'last_edit' => 'Fri, 04 May 2018 08:57:40 +0000',
388
  'name' => 'Cold Lake',
389
  'description' => '',
391
  'status' => 'agency',
392
  'name_clean' => 'cold-lake',
393
  ),
394
+ 35 =>
395
  array (
396
  'type' => 'CSMM PRO',
397
  'version' => '15.17',
402
  'status' => 'agency',
403
  'name_clean' => 'computer-repair-service',
404
  ),
405
+ 36 =>
406
  array (
407
  'type' => 'CSMM PRO',
408
  'version' => '15.17',
413
  'status' => 'pro',
414
  'name_clean' => 'concert',
415
  ),
416
+ 37 =>
417
  array (
418
  'type' => 'CSMM PRO',
419
  'version' => '15.17',
424
  'status' => 'pro',
425
  'name_clean' => 'conference-event',
426
  ),
427
+ 38 =>
428
  array (
429
  'type' => 'CSMM PRO',
430
  'version' => '15.17',
435
  'status' => 'agency',
436
  'name_clean' => 'construction-company',
437
  ),
438
+ 39 =>
439
  array (
440
  'type' => 'CSMM PRO',
441
  'version' => '15.17',
446
  'status' => 'agency',
447
  'name_clean' => 'creative-design',
448
  ),
449
+ 40 =>
450
  array (
451
  'type' => 'CSMM PRO',
452
  'version' => '15.17',
457
  'status' => 'agency',
458
  'name_clean' => 'custom-decor',
459
  ),
460
+ 41 =>
461
+ array (
462
+ 'type' => 'CSMM PRO',
463
+ 'version' => '6.00',
464
+ 'last_edit' => 'Sat, 28 Mar 2020 09:02:41 +0000',
465
+ 'name' => 'Cyber Security',
466
+ 'description' => '',
467
+ 'frontpage' => '1',
468
+ 'status' => 'pro',
469
+ 'name_clean' => 'cyber-security',
470
+ ),
471
+ 42 =>
472
  array (
473
  'type' => 'CSMM PRO',
474
  'version' => '5.005',
479
  'status' => 'pro',
480
  'name_clean' => 'default',
481
  ),
482
+ 43 =>
483
  array (
484
  'type' => 'CSMM PRO',
485
  'version' => '15.17',
490
  'status' => 'agency',
491
  'name_clean' => 'dental-clinic',
492
  ),
493
+ 44 =>
494
+ array (
495
+ 'type' => 'CSMM PRO',
496
+ 'version' => '15.17',
497
+ 'last_edit' => 'Mon, 27 Apr 2020 11:17:15 +0000',
498
+ 'name' => 'Digital Agency',
499
+ 'description' => '',
500
+ 'frontpage' => '1',
501
+ 'status' => 'agency',
502
+ 'name_clean' => 'digital-agency',
503
+ ),
504
+ 45 =>
505
  array (
506
  'type' => 'CSMM PRO',
507
  'version' => '15.17',
512
  'status' => 'pro',
513
  'name_clean' => 'dog-shelter',
514
  ),
515
+ 46 =>
516
  array (
517
  'type' => 'CSMM PRO',
518
  'version' => '5.001',
523
  'status' => 'agency',
524
  'name_clean' => 'dog-training-and-behavior-consulting',
525
  ),
526
+ 47 =>
527
+ array (
528
+ 'type' => 'CSMM PRO',
529
+ 'version' => '15.17',
530
+ 'last_edit' => 'Sun, 19 Jan 2020 16:12:34 +0000',
531
+ 'name' => 'Donation',
532
+ 'description' => '',
533
+ 'frontpage' => '1',
534
+ 'status' => 'agency',
535
+ 'name_clean' => 'donation',
536
+ ),
537
+ 48 =>
538
+ array (
539
+ 'type' => 'CSMM PRO',
540
+ 'version' => '6.00',
541
+ 'last_edit' => 'Fri, 07 Aug 2020 08:08:20 +0000',
542
+ 'name' => 'Ecommerce',
543
+ 'description' => '',
544
+ 'frontpage' => '0',
545
+ 'status' => 'extra',
546
+ 'name_clean' => 'ecommerce',
547
+ ),
548
+ 49 =>
549
  array (
550
  'type' => 'CSMM PRO',
551
  'version' => '15.17',
556
  'status' => 'pro',
557
  'name_clean' => 'employment',
558
  ),
559
+ 50 =>
560
  array (
561
  'type' => 'CSMM PRO',
562
  'version' => '15.17',
567
  'status' => 'agency',
568
  'name_clean' => 'essay-writing-service',
569
  ),
570
+ 51 =>
571
  array (
572
  'type' => 'CSMM PRO',
573
  'version' => '15.17',
578
  'status' => 'pro',
579
  'name_clean' => 'fall-video',
580
  ),
581
+ 52 =>
582
  array (
583
  'type' => 'CSMM PRO',
584
  'version' => '15.17',
589
  'status' => 'agency',
590
  'name_clean' => 'fashion',
591
  ),
592
+ 53 =>
593
+ array (
594
+ 'type' => 'CSMM PRO',
595
+ 'version' => '15.17',
596
+ 'last_edit' => 'Sun, 26 Jan 2020 15:35:32 +0000',
597
+ 'name' => 'Financial Counselling',
598
+ 'description' => '',
599
+ 'frontpage' => '1',
600
+ 'status' => 'agency',
601
+ 'name_clean' => 'financial-counselling',
602
+ ),
603
+ 54 =>
604
  array (
605
  'type' => 'CSMM PRO',
606
  'version' => '15.17',
611
  'status' => 'pro',
612
  'name_clean' => 'financial-district',
613
  ),
614
+ 55 =>
615
  array (
616
  'type' => 'CSMM PRO',
617
  'version' => '15.17',
622
  'status' => 'agency',
623
  'name_clean' => 'fitness-e-shop',
624
  ),
625
+ 56 =>
626
+ array (
627
+ 'type' => 'CSMM PRO',
628
+ 'version' => '6.00',
629
+ 'last_edit' => 'Thu, 06 Aug 2020 20:26:33 +0000',
630
+ 'name' => 'Florium',
631
+ 'description' => '',
632
+ 'frontpage' => '0',
633
+ 'status' => 'extra',
634
+ 'name_clean' => 'florium',
635
+ ),
636
+ 57 =>
637
  array (
638
  'type' => 'CSMM PRO',
639
  'version' => '15.05',
644
  'status' => 'agency',
645
  'name_clean' => 'flower-shop',
646
  ),
647
+ 58 =>
648
  array (
649
  'type' => 'CSMM PRO',
650
  'version' => '15.17',
655
  'status' => 'pro',
656
  'name_clean' => 'food-blog',
657
  ),
658
+ 59 =>
659
  array (
660
  'type' => 'CSMM PRO',
661
+ 'version' => '6.00',
662
+ 'last_edit' => 'Fri, 07 Aug 2020 08:13:26 +0000',
663
+ 'name' => 'Food Store',
664
+ 'description' => '',
665
+ 'frontpage' => '0',
666
+ 'status' => 'extra',
667
+ 'name_clean' => 'food-store',
668
+ ),
669
+ 60 =>
670
+ array (
671
+ 'type' => 'CSMM PRO',
672
+ 'version' => '6.00',
673
+ 'last_edit' => 'Tue, 11 Feb 2020 18:23:19 +0000',
674
+ 'name' => 'Foodie',
675
+ 'description' => '',
676
+ 'frontpage' => '1',
677
+ 'status' => 'pro',
678
+ 'name_clean' => 'foodie',
679
+ ),
680
+ 61 =>
681
+ array (
682
+ 'type' => 'CSMM PRO',
683
+ 'version' => '6.00',
684
  'last_edit' => 'Mon, 18 Jun 2018 16:40:10 +0000',
685
  'name' => 'Football',
686
  'description' => '',
688
  'status' => 'pro',
689
  'name_clean' => 'football',
690
  ),
691
+ 62 =>
692
  array (
693
  'type' => 'CSMM PRO',
694
  'version' => '15.17',
699
  'status' => 'pro',
700
  'name_clean' => 'frozen-nature',
701
  ),
702
+ 63 =>
703
  array (
704
  'type' => 'CSMM PRO',
705
  'version' => '15.17',
710
  'status' => 'pro',
711
  'name_clean' => 'future-technology',
712
  ),
713
+ 64 =>
714
+ array (
715
+ 'type' => 'CSMM PRO',
716
+ 'version' => '15.17',
717
+ 'last_edit' => 'Sun, 24 May 2020 05:27:47 +0000',
718
+ 'name' => 'Graphic Design',
719
+ 'description' => '',
720
+ 'frontpage' => '1',
721
+ 'status' => 'agency',
722
+ 'name_clean' => 'graphic-design',
723
+ ),
724
+ 65 =>
725
  array (
726
  'type' => 'CSMM PRO',
727
  'version' => '15.17',
732
  'status' => 'pro',
733
  'name_clean' => 'greenlife',
734
  ),
735
+ 66 =>
736
  array (
737
  'type' => 'CSMM PRO',
738
  'version' => '15.17',
743
  'status' => 'pro',
744
  'name_clean' => 'halloween',
745
  ),
746
+ 67 =>
747
  array (
748
  'type' => 'CSMM PRO',
749
  'version' => '15.17',
754
  'status' => 'agency',
755
  'name_clean' => 'healthy-eating',
756
  ),
757
+ 68 =>
758
+ array (
759
+ 'type' => 'CSMM PRO',
760
+ 'version' => '6.00',
761
+ 'last_edit' => 'Fri, 07 Aug 2020 17:00:48 +0000',
762
+ 'name' => 'Hexagons (Video)',
763
+ 'description' => '',
764
+ 'frontpage' => '0',
765
+ 'status' => 'extra',
766
+ 'name_clean' => 'hexagons-video',
767
+ ),
768
+ 69 =>
769
  array (
770
  'type' => 'CSMM PRO',
771
  'version' => '15.17',
776
  'status' => 'pro',
777
  'name_clean' => 'holiday-resort',
778
  ),
779
+ 70 =>
780
+ array (
781
+ 'type' => 'CSMM PRO',
782
+ 'version' => '6.00',
783
+ 'last_edit' => 'Mon, 27 Apr 2020 12:54:37 +0000',
784
+ 'name' => 'Home Design',
785
+ 'description' => '',
786
+ 'frontpage' => '1',
787
+ 'status' => 'pro',
788
+ 'name_clean' => 'home-design',
789
+ ),
790
+ 71 =>
791
  array (
792
  'type' => 'CSMM PRO',
793
  'version' => '15.17',
798
  'status' => 'pro',
799
  'name_clean' => 'homemade-chocolate-gifts',
800
  ),
801
+ 72 =>
802
  array (
803
  'type' => 'CSMM PRO',
804
  'version' => '15.17',
809
  'status' => 'pro',
810
  'name_clean' => 'hosting',
811
  ),
812
+ 73 =>
813
  array (
814
  'type' => 'CSMM PRO',
815
  'version' => '15.17',
820
  'status' => 'pro',
821
  'name_clean' => 'ice-cream-shop',
822
  ),
823
+ 74 =>
824
+ array (
825
+ 'type' => 'CSMM PRO',
826
+ 'version' => '6.00',
827
+ 'last_edit' => 'Fri, 07 Aug 2020 08:12:39 +0000',
828
+ 'name' => 'In Design',
829
+ 'description' => '',
830
+ 'frontpage' => '0',
831
+ 'status' => 'extra',
832
+ 'name_clean' => 'in-design',
833
+ ),
834
+ 75 =>
835
  array (
836
  'type' => 'CSMM PRO',
837
  'version' => '15.17',
842
  'status' => 'pro',
843
  'name_clean' => 'inspy-romance',
844
  ),
845
+ 76 =>
846
  array (
847
  'type' => 'CSMM PRO',
848
  'version' => '15.05',
853
  'status' => 'agency',
854
  'name_clean' => 'interior-design',
855
  ),
856
+ 77 =>
857
  array (
858
  'type' => 'CSMM PRO',
859
  'version' => '15.17',
864
  'status' => 'pro',
865
  'name_clean' => 'it-conference',
866
  ),
867
+ 78 =>
868
  array (
869
  'type' => 'CSMM PRO',
870
  'version' => '5.14',
875
  'status' => 'agency',
876
  'name_clean' => 'journey-video',
877
  ),
878
+ 79 =>
879
+ array (
880
+ 'type' => 'CSMM PRO',
881
+ 'version' => '15.17',
882
+ 'last_edit' => 'Sat, 25 Apr 2020 11:37:42 +0000',
883
+ 'name' => 'Keyword Research',
884
+ 'description' => '',
885
+ 'frontpage' => '1',
886
+ 'status' => 'pro',
887
+ 'name_clean' => 'keyword-research',
888
+ ),
889
+ 80 =>
890
+ array (
891
+ 'type' => 'CSMM PRO',
892
+ 'version' => '6.00',
893
+ 'last_edit' => 'Sat, 30 May 2020 18:37:45 +0000',
894
+ 'name' => 'Kids Center',
895
+ 'description' => '',
896
+ 'frontpage' => '1',
897
+ 'status' => 'pro',
898
+ 'name_clean' => 'kids-center',
899
+ ),
900
+ 81 =>
901
  array (
902
  'type' => 'CSMM PRO',
903
  'version' => '15.17',
908
  'status' => 'agency',
909
  'name_clean' => 'kids-innovation-program',
910
  ),
911
+ 82 =>
912
  array (
913
  'type' => 'CSMM PRO',
914
  'version' => '15.17',
919
  'status' => 'agency',
920
  'name_clean' => 'ladies-accessories',
921
  ),
922
+ 83 =>
923
  array (
924
  'type' => 'CSMM PRO',
925
  'version' => '15.17',
930
  'status' => 'pro',
931
  'name_clean' => 'lego-bricks',
932
  ),
933
+ 84 =>
934
  array (
935
  'type' => 'CSMM PRO',
936
  'version' => '15.17',
941
  'status' => 'agency',
942
  'name_clean' => 'loneliness',
943
  ),
944
+ 85 =>
945
  array (
946
  'type' => 'CSMM PRO',
947
+ 'version' => '6.00',
948
  'last_edit' => 'Wed, 25 Apr 2018 11:04:55 +0000',
949
  'name' => 'Lonely Road',
950
+ 'description' => '',
951
  'frontpage' => '1',
952
  'status' => 'agency',
953
  'name_clean' => 'lonely-road',
954
  ),
955
+ 86 =>
956
  array (
957
  'type' => 'CSMM PRO',
958
+ 'version' => '6.00',
959
  'last_edit' => 'Fri, 30 Mar 2018 11:30:37 +0000',
960
  'name' => 'Luxury Car',
961
  'description' => '',
963
  'status' => 'pro',
964
  'name_clean' => 'luxury-car',
965
  ),
966
+ 87 =>
967
  array (
968
  'type' => 'CSMM PRO',
969
  'version' => '5.005',
974
  'status' => 'pro',
975
  'name_clean' => 'maintenance-mode',
976
  ),
977
+ 88 =>
978
  array (
979
  'type' => 'CSMM PRO',
980
  'version' => '5.005',
985
  'status' => 'agency',
986
  'name_clean' => 'makeup-artist-training',
987
  ),
988
+ 89 =>
989
  array (
990
  'type' => 'CSMM PRO',
991
+ 'version' => '6.00',
992
+ 'last_edit' => 'Sat, 28 Mar 2020 10:24:09 +0000',
993
+ 'name' => 'Marketing Webinar',
994
+ 'description' => '',
995
+ 'frontpage' => '1',
996
+ 'status' => 'agency',
997
+ 'name_clean' => 'marketing-webinar',
998
+ ),
999
+ 90 =>
1000
+ array (
1001
+ 'type' => 'CSMM PRO',
1002
+ 'version' => '6.00',
1003
  'last_edit' => 'Mon, 21 Oct 2019 13:36:56 +0000',
1004
  'name' => 'Metrics (Video)',
1005
  'description' => '',
1007
  'status' => 'agency',
1008
  'name_clean' => 'metrics-video',
1009
  ),
1010
+ 91 =>
1011
  array (
1012
  'type' => 'CSMM PRO',
1013
  'version' => '15.17',
1018
  'status' => 'pro',
1019
  'name_clean' => 'misty-forest-video',
1020
  ),
1021
+ 92 =>
1022
  array (
1023
  'type' => 'CSMM PRO',
1024
+ 'version' => '6.00',
1025
+ 'last_edit' => 'Fri, 07 Aug 2020 12:29:53 +0000',
1026
+ 'name' => 'Mobile App',
1027
+ 'description' => '',
1028
+ 'frontpage' => '1',
1029
+ 'status' => 'extra',
1030
+ 'name_clean' => 'mobile-app',
1031
+ ),
1032
+ 93 =>
1033
+ array (
1034
+ 'type' => 'CSMM PRO',
1035
+ 'version' => '6.00',
1036
  'last_edit' => 'Wed, 25 Apr 2018 11:08:31 +0000',
1037
  'name' => 'Mobile Designer',
1038
+ 'description' => '',
1039
  'frontpage' => '1',
1040
  'status' => 'agency',
1041
  'name_clean' => 'mobile-designer',
1042
  ),
1043
+ 94 =>
1044
  array (
1045
  'type' => 'CSMM PRO',
1046
  'version' => '15.17',
1051
  'status' => 'agency',
1052
  'name_clean' => 'mobile-meeting',
1053
  ),
1054
+ 95 =>
1055
  array (
1056
  'type' => 'CSMM PRO',
1057
+ 'version' => '6.00',
1058
  'last_edit' => 'Mon, 26 Feb 2018 18:04:32 +0000',
1059
  'name' => 'Modern Blog',
1060
  'description' => '',
1062
  'status' => 'pro',
1063
  'name_clean' => 'modern-blog',
1064
  ),
1065
+ 96 =>
1066
  array (
1067
  'type' => 'CSMM PRO',
1068
  'version' => '15.05',
1073
  'status' => 'agency',
1074
  'name_clean' => 'modern-office',
1075
  ),
1076
+ 97 =>
1077
  array (
1078
  'type' => 'CSMM PRO',
1079
  'version' => '15.17',
1084
  'status' => 'agency',
1085
  'name_clean' => 'modern-recipes',
1086
  ),
1087
+ 98 =>
1088
  array (
1089
  'type' => 'CSMM PRO',
1090
  'version' => '15.17',
1095
  'status' => 'pro',
1096
  'name_clean' => 'mountain-slide',
1097
  ),
1098
+ 99 =>
1099
  array (
1100
  'type' => 'CSMM PRO',
1101
  'version' => '5.05',
1106
  'status' => 'pro',
1107
  'name_clean' => 'mountain',
1108
  ),
1109
+ 100 =>
1110
  array (
1111
  'type' => 'CSMM PRO',
1112
+ 'version' => '6.00',
1113
  'last_edit' => 'Wed, 25 Apr 2018 11:12:56 +0000',
1114
  'name' => 'Movie Trailer (Video)',
1115
  'description' => '',
1116
+ 'frontpage' => '1',
1117
  'status' => 'pro',
1118
  'name_clean' => 'movie-trailer-video',
1119
  ),
1120
+ 101 =>
1121
  array (
1122
  'type' => 'CSMM PRO',
1123
  'version' => '15.17',
1128
  'status' => 'pro',
1129
  'name_clean' => 'music',
1130
  ),
1131
+ 102 =>
1132
  array (
1133
  'type' => 'CSMM PRO',
1134
  'version' => '15.05',
1139
  'status' => 'agency',
1140
  'name_clean' => 'nature',
1141
  ),
1142
+ 103 =>
1143
+ array (
1144
+ 'type' => 'CSMM PRO',
1145
+ 'version' => '6.00',
1146
+ 'last_edit' => 'Fri, 07 Aug 2020 08:05:07 +0000',
1147
+ 'name' => 'Non-Profit Organization',
1148
+ 'description' => '',
1149
+ 'frontpage' => '0',
1150
+ 'status' => 'extra',
1151
+ 'name_clean' => 'non-profit-organization',
1152
+ ),
1153
+ 104 =>
1154
+ array (
1155
+ 'type' => 'CSMM PRO',
1156
+ 'version' => '6.00',
1157
+ 'last_edit' => 'Wed, 22 Jul 2020 19:34:37 +0000',
1158
+ 'name' => 'Nutritionist',
1159
+ 'description' => '',
1160
+ 'frontpage' => '0',
1161
+ 'status' => 'pro',
1162
+ 'name_clean' => 'nutritionist',
1163
+ ),
1164
+ 105 =>
1165
  array (
1166
  'type' => 'CSMM PRO',
1167
  'version' => '5.14',
1172
  'status' => 'agency',
1173
  'name_clean' => 'office-meeting-video',
1174
  ),
1175
+ 106 =>
1176
  array (
1177
  'type' => 'CSMM PRO',
1178
  'version' => '15.05',
1183
  'status' => 'agency',
1184
  'name_clean' => 'office-theme',
1185
  ),
1186
+ 107 =>
1187
+ array (
1188
+ 'type' => 'CSMM PRO',
1189
+ 'version' => '15.17',
1190
+ 'last_edit' => 'Sat, 28 Mar 2020 07:10:36 +0000',
1191
+ 'name' => 'Online Food Delivery',
1192
+ 'description' => '',
1193
+ 'frontpage' => '1',
1194
+ 'status' => 'pro',
1195
+ 'name_clean' => 'online-food-delivery',
1196
+ ),
1197
+ 108 =>
1198
  array (
1199
  'type' => 'CSMM PRO',
1200
  'version' => '5.005',
1205
  'status' => 'agency',
1206
  'name_clean' => 'online-learning',
1207
  ),
1208
+ 109 =>
1209
  array (
1210
  'type' => 'CSMM PRO',
1211
  'version' => '15.17',
1216
  'status' => 'pro',
1217
  'name_clean' => 'online-shopping',
1218
  ),
1219
+ 110 =>
1220
  array (
1221
  'type' => 'CSMM PRO',
1222
  'version' => '15.17',
1227
  'status' => 'pro',
1228
  'name_clean' => 'organic-cosmetics',
1229
  ),
1230
+ 111 =>
1231
  array (
1232
  'type' => 'CSMM PRO',
1233
+ 'version' => '6.00',
1234
  'last_edit' => 'Wed, 25 Apr 2018 11:10:44 +0000',
1235
  'name' => 'Pancake House',
1236
  'description' => '',
1237
+ 'frontpage' => '1',
1238
  'status' => 'pro',
1239
  'name_clean' => 'pancake-house',
1240
  ),
1241
+ 112 =>
1242
  array (
1243
  'type' => 'CSMM PRO',
1244
+ 'version' => '6.00',
1245
  'last_edit' => 'Wed, 25 Apr 2018 11:15:19 +0000',
1246
  'name' => 'Parenting',
1247
  'description' => '',
1248
+ 'frontpage' => '1',
1249
  'status' => 'pro',
1250
  'name_clean' => 'parenting',
1251
  ),
1252
+ 113 =>
1253
  array (
1254
  'type' => 'CSMM PRO',
1255
  'version' => '15.17',
1260
  'status' => 'pro',
1261
  'name_clean' => 'passage',
1262
  ),
1263
+ 114 =>
1264
  array (
1265
  'type' => 'CSMM PRO',
1266
  'version' => '15.17',
1271
  'status' => 'agency',
1272
  'name_clean' => 'peaceful-river',
1273
  ),
1274
+ 115 =>
1275
  array (
1276
  'type' => 'CSMM PRO',
1277
  'version' => '15.17',
1282
  'status' => 'pro',
1283
  'name_clean' => 'personal-trainer',
1284
  ),
1285
+ 116 =>
1286
+ array (
1287
+ 'type' => 'CSMM PRO',
1288
+ 'version' => '15.17',
1289
+ 'last_edit' => 'Sat, 28 Mar 2020 07:55:41 +0000',
1290
+ 'name' => 'Photo Studio',
1291
+ 'description' => '',
1292
+ 'frontpage' => '1',
1293
+ 'status' => 'agency',
1294
+ 'name_clean' => 'photo-studio',
1295
+ ),
1296
+ 117 =>
1297
  array (
1298
  'type' => 'CSMM PRO',
1299
  'version' => '15.17',
1304
  'status' => 'agency',
1305
  'name_clean' => 'photography',
1306
  ),
1307
+ 118 =>
1308
  array (
1309
  'type' => 'CSMM PRO',
1310
+ 'version' => '6.00',
1311
  'last_edit' => 'Sat, 28 Dec 2019 12:08:04 +0000',
1312
  'name' => 'Plumbing',
1313
  'description' => '',
1315
  'status' => 'pro',
1316
  'name_clean' => 'plumbing',
1317
  ),
1318
+ 119 =>
1319
  array (
1320
  'type' => 'CSMM PRO',
1321
+ 'version' => '6.00',
1322
+ 'last_edit' => 'Fri, 07 Aug 2020 06:53:04 +0000',
1323
  'name' => 'Podcast',
1324
  'description' => '',
1325
+ 'frontpage' => '0',
1326
+ 'status' => 'extra',
1327
  'name_clean' => 'podcast',
1328
  ),
1329
+ 120 =>
1330
+ array (
1331
+ 'type' => 'CSMM PRO',
1332
+ 'version' => '6.00',
1333
+ 'last_edit' => 'Thu, 06 Aug 2020 20:27:12 +0000',
1334
+ 'name' => 'Portfolio',
1335
+ 'description' => '',
1336
+ 'frontpage' => '0',
1337
+ 'status' => 'extra',
1338
+ 'name_clean' => 'portfolio',
1339
+ ),
1340
+ 121 =>
1341
  array (
1342
  'type' => 'CSMM PRO',
1343
  'version' => '15.17',
1348
  'status' => 'agency',
1349
  'name_clean' => 'restaurant',
1350
  ),
1351
+ 122 =>
1352
  array (
1353
  'type' => 'CSMM PRO',
1354
  'version' => '15.17',
1359
  'status' => 'agency',
1360
  'name_clean' => 'romantic-travels',
1361
  ),
1362
+ 123 =>
1363
  array (
1364
  'type' => 'CSMM PRO',
1365
  'version' => '15.17',
1370
  'status' => 'agency',
1371
  'name_clean' => 'running-blog',
1372
  ),
1373
+ 124 =>
1374
  array (
1375
  'type' => 'CSMM PRO',
1376
  'version' => '15.14',
1381
  'status' => 'pro',
1382
  'name_clean' => 'running-video',
1383
  ),
1384
+ 125 =>
1385
  array (
1386
  'type' => 'CSMM PRO',
1387
+ 'version' => '6.00',
1388
  'last_edit' => 'Thu, 25 Apr 2019 08:11:16 +0000',
1389
  'name' => 'Scholar University',
1390
  'description' => '',
1392
  'status' => 'agency',
1393
  'name_clean' => 'scholar-university',
1394
  ),
1395
+ 126 =>
1396
  array (
1397
  'type' => 'CSMM PRO',
1398
+ 'version' => '6.00',
1399
  'last_edit' => 'Wed, 26 Jun 2019 16:55:04 +0000',
1400
  'name' => 'SEO & Digital Marketing',
1401
  'description' => '',
1403
  'status' => 'agency',
1404
  'name_clean' => 'seo-digital-marketing',
1405
  ),
1406
+ 127 =>
1407
  array (
1408
  'type' => 'CSMM PRO',
1409
  'version' => '5.005',
1414
  'status' => 'agency',
1415
  'name_clean' => 'shoes-store',
1416
  ),
1417
+ 128 =>
1418
  array (
1419
  'type' => 'CSMM PRO',
1420
+ 'version' => '6.00',
1421
  'last_edit' => 'Wed, 25 Apr 2018 11:17:21 +0000',
1422
  'name' => 'Simple Beige Design',
1423
  'description' => '',
1424
+ 'frontpage' => '1',
1425
  'status' => 'pro',
1426
  'name_clean' => 'simple-beige-design',
1427
  ),
1428
+ 129 =>
1429
+ array (
1430
+ 'type' => 'CSMM PRO',
1431
+ 'version' => '6.00',
1432
+ 'last_edit' => 'Fri, 07 Aug 2020 08:11:48 +0000',
1433
+ 'name' => 'Skin Care',
1434
+ 'description' => '',
1435
+ 'frontpage' => '0',
1436
+ 'status' => 'extra',
1437
+ 'name_clean' => 'skin-care',
1438
+ ),
1439
+ 130 =>
1440
  array (
1441
  'type' => 'CSMM PRO',
1442
  'version' => '15.17',
1443
+ 'last_edit' => 'Sun, 15 Sep 2019 17:58:36 +0000',
1444
  'name' => 'Skincare',
1445
  'description' => '',
1446
  'frontpage' => '1',
1447
  'status' => 'agency',
1448
  'name_clean' => 'skincare',
1449
  ),
1450
+ 131 =>
1451
  array (
1452
  'type' => 'CSMM PRO',
1453
+ 'version' => '6.00',
1454
  'last_edit' => 'Wed, 25 Apr 2018 11:19:34 +0000',
1455
  'name' => 'Snow Screensaver (Video)',
1456
  'description' => '',
1458
  'status' => 'pro',
1459
  'name_clean' => 'snow-screensaver-video',
1460
  ),
1461
+ 132 =>
1462
  array (
1463
  'type' => 'CSMM PRO',
1464
  'version' => '15.17',
1469
  'status' => 'pro',
1470
  'name_clean' => 'snowboarding-blog',
1471
  ),
1472
+ 133 =>
1473
  array (
1474
  'type' => 'CSMM PRO',
1475
+ 'version' => '6.00',
1476
  'last_edit' => 'Wed, 25 Apr 2018 11:21:19 +0000',
1477
  'name' => 'Snowy Mountain',
1478
  'description' => '',
1480
  'status' => 'pro',
1481
  'name_clean' => 'snowy-mountain',
1482
  ),
1483
+ 134 =>
1484
  array (
1485
  'type' => 'CSMM PRO',
1486
  'version' => '15.17',
1491
  'status' => 'pro',
1492
  'name_clean' => 'snowy-oasis',
1493
  ),
1494
+ 135 =>
1495
  array (
1496
  'type' => 'CSMM PRO',
1497
  'version' => '15.17',
1502
  'status' => 'agency',
1503
  'name_clean' => 'social-media-service',
1504
  ),
1505
+ 136 =>
1506
+ array (
1507
+ 'type' => 'CSMM PRO',
1508
+ 'version' => '6.00',
1509
+ 'last_edit' => 'Fri, 07 Aug 2020 08:06:54 +0000',
1510
+ 'name' => 'Social Media',
1511
+ 'description' => '',
1512
+ 'frontpage' => '0',
1513
+ 'status' => 'extra',
1514
+ 'name_clean' => 'social-media',
1515
+ ),
1516
+ 137 =>
1517
  array (
1518
  'type' => 'CSMM PRO',
1519
  'version' => '15.17',
1524
  'status' => 'agency',
1525
  'name_clean' => 'spa-beauty-studio',
1526
  ),
1527
+ 138 =>
1528
  array (
1529
  'type' => 'CSMM PRO',
1530
  'version' => '15.17',
1535
  'status' => 'agency',
1536
  'name_clean' => 'spa',
1537
  ),
1538
+ 139 =>
1539
  array (
1540
  'type' => 'CSMM PRO',
1541
+ 'version' => '6.00',
1542
+ 'last_edit' => 'Wed, 22 Jul 2020 20:04:16 +0000',
1543
+ 'name' => 'Spring Sale',
1544
+ 'description' => '',
1545
+ 'frontpage' => '1',
1546
+ 'status' => 'pro',
1547
+ 'name_clean' => 'spring-sale',
1548
+ ),
1549
+ 140 =>
1550
+ array (
1551
+ 'type' => 'CSMM PRO',
1552
+ 'version' => '6.00',
1553
  'last_edit' => 'Fri, 30 Mar 2018 09:59:40 +0000',
1554
  'name' => 'Spring',
1555
  'description' => '',
1556
+ 'frontpage' => '1',
1557
  'status' => 'agency',
1558
  'name_clean' => 'spring',
1559
  ),
1560
+ 141 =>
1561
  array (
1562
  'type' => 'CSMM PRO',
1563
  'version' => '15.17',
1568
  'status' => 'pro',
1569
  'name_clean' => 'startup',
1570
  ),
1571
+ 142 =>
1572
+ array (
1573
+ 'type' => 'CSMM PRO',
1574
+ 'version' => '6.00',
1575
+ 'last_edit' => 'Fri, 07 Aug 2020 08:16:06 +0000',
1576
+ 'name' => 'Statistics Survey',
1577
+ 'description' => '',
1578
+ 'frontpage' => '0',
1579
+ 'status' => 'extra',
1580
+ 'name_clean' => 'statistics-survey',
1581
+ ),
1582
+ 143 =>
1583
+ array (
1584
+ 'type' => 'CSMM PRO',
1585
+ 'version' => '6.00',
1586
+ 'last_edit' => 'Sun, 23 Feb 2020 10:34:57 +0000',
1587
+ 'name' => 'Studio Design',
1588
+ 'description' => '',
1589
+ 'frontpage' => '1',
1590
+ 'status' => 'agency',
1591
+ 'name_clean' => 'studio-design',
1592
+ ),
1593
+ 144 =>
1594
  array (
1595
  'type' => 'CSMM PRO',
1596
  'version' => '15.17',
1601
  'status' => 'pro',
1602
  'name_clean' => 'stylish-workplace',
1603
  ),
1604
+ 145 =>
1605
+ array (
1606
+ 'type' => 'CSMM PRO',
1607
+ 'version' => '15.17',
1608
+ 'last_edit' => 'Sun, 26 Jan 2020 15:16:44 +0000',
1609
+ 'name' => 'Tattoo Studio',
1610
+ 'description' => '',
1611
+ 'frontpage' => '1',
1612
+ 'status' => 'pro',
1613
+ 'name_clean' => 'tattoo-studio',
1614
+ ),
1615
+ 146 =>
1616
+ array (
1617
+ 'type' => 'CSMM PRO',
1618
+ 'version' => '6.00',
1619
+ 'last_edit' => 'Fri, 07 Aug 2020 08:10:14 +0000',
1620
+ 'name' => 'Tech',
1621
+ 'description' => '',
1622
+ 'frontpage' => '0',
1623
+ 'status' => 'extra',
1624
+ 'name_clean' => 'tech',
1625
+ ),
1626
+ 147 =>
1627
  array (
1628
  'type' => 'CSMM PRO',
1629
  'version' => '15.17',
1634
  'status' => 'pro',
1635
  'name_clean' => 'techexpo',
1636
  ),
1637
+ 148 =>
1638
  array (
1639
  'type' => 'CSMM PRO',
1640
+ 'version' => '6.00',
1641
  'last_edit' => 'Sun, 18 Aug 2019 17:19:12 +0000',
1642
  'name' => 'Telecommunication',
1643
  'description' => '',
1645
  'status' => 'agency',
1646
  'name_clean' => 'telecommunication',
1647
  ),
1648
+ 149 =>
1649
  array (
1650
  'type' => 'CSMM PRO',
1651
+ 'version' => '6.00',
1652
  'last_edit' => 'Wed, 25 Apr 2018 11:22:49 +0000',
1653
  'name' => 'The Big City Newsletter',
1654
+ 'description' => '',
1655
  'frontpage' => '1',
1656
  'status' => 'agency',
1657
  'name_clean' => 'the-big-city-newsletter',
1658
  ),
1659
+ 150 =>
1660
  array (
1661
  'type' => 'CSMM PRO',
1662
  'version' => '5.14',
1667
  'status' => 'pro',
1668
  'name_clean' => 'the-sunny-view',
1669
  ),
1670
+ 151 =>
1671
  array (
1672
  'type' => 'CSMM PRO',
1673
  'version' => '15.17',
1678
  'status' => 'agency',
1679
  'name_clean' => 'theatre',
1680
  ),
1681
+ 152 =>
1682
  array (
1683
  'type' => 'CSMM PRO',
1684
  'version' => '5.001',
1689
  'status' => 'pro',
1690
  'name_clean' => 'travel-agency',
1691
  ),
1692
+ 153 =>
1693
  array (
1694
  'type' => 'CSMM PRO',
1695
  'version' => '15.05',
1700
  'status' => 'agency',
1701
  'name_clean' => 'travel-blog',
1702
  ),
1703
+ 154 =>
1704
  array (
1705
  'type' => 'CSMM PRO',
1706
+ 'version' => '6.00',
1707
  'last_edit' => 'Wed, 25 Apr 2018 11:24:56 +0000',
1708
  'name' => 'Tulips',
1709
  'description' => '',
1711
  'status' => 'agency',
1712
  'name_clean' => 'tulips',
1713
  ),
1714
+ 155 =>
1715
  array (
1716
  'type' => 'CSMM PRO',
1717
+ 'version' => '6.00',
1718
  'last_edit' => 'Sun, 27 Jan 2019 08:47:12 +0000',
1719
+ 'name' => 'Valentines Day',
1720
  'description' => '',
1721
  'frontpage' => '1',
1722
  'status' => 'pro',
1723
  'name_clean' => 'valentines-day',
1724
  ),
1725
+ 156 =>
1726
  array (
1727
  'type' => 'CSMM PRO',
1728
  'version' => '5.001',
1733
  'status' => 'pro',
1734
  'name_clean' => 'video-production',
1735
  ),
1736
+ 157 =>
1737
  array (
1738
  'type' => 'CSMM PRO',
1739
  'version' => '15.17',
1744
  'status' => 'agency',
1745
  'name_clean' => 'virtual-assistant-service',
1746
  ),
1747
+ 158 =>
1748
  array (
1749
  'type' => 'CSMM PRO',
1750
  'version' => '15.17',
1751
+ 'last_edit' => 'Sun, 24 May 2020 06:10:55 +0000',
1752
+ 'name' => 'Virtual Reality',
1753
+ 'description' => '',
1754
+ 'frontpage' => '1',
1755
+ 'status' => 'pro',
1756
+ 'name_clean' => 'virtual-reality',
1757
+ ),
1758
+ 159 =>
1759
+ array (
1760
+ 'type' => 'CSMM PRO',
1761
+ 'version' => '6.00',
1762
  'last_edit' => 'Sat, 07 Jul 2018 15:15:19 +0000',
1763
  'name' => 'Walking Away (Video)',
1764
  'description' => '',
1765
+ 'frontpage' => '1',
1766
  'status' => 'pro',
1767
  'name_clean' => 'walking-away-video',
1768
  ),
1769
+ 160 =>
1770
+ array (
1771
+ 'type' => 'CSMM PRO',
1772
+ 'version' => '6.00',
1773
+ 'last_edit' => 'Fri, 07 Aug 2020 08:07:31 +0000',
1774
+ 'name' => 'Web Security',
1775
+ 'description' => '',
1776
+ 'frontpage' => '0',
1777
+ 'status' => 'extra',
1778
+ 'name_clean' => 'web-security',
1779
+ ),
1780
+ 161 =>
1781
  array (
1782
  'type' => 'CSMM PRO',
1783
  'version' => '5.005',
1788
  'status' => 'agency',
1789
  'name_clean' => 'webinar',
1790
  ),
1791
+ 162 =>
1792
  array (
1793
  'type' => 'CSMM PRO',
1794
  'version' => '5.005',
1799
  'status' => 'agency',
1800
  'name_clean' => 'wedding-blog',
1801
  ),
1802
+ 163 =>
1803
+ array (
1804
+ 'type' => 'CSMM PRO',
1805
+ 'version' => '6.00',
1806
+ 'last_edit' => 'Thu, 06 Aug 2020 20:25:52 +0000',
1807
+ 'name' => 'Wedding',
1808
+ 'description' => '',
1809
+ 'frontpage' => '0',
1810
+ 'status' => 'extra',
1811
+ 'name_clean' => 'wedding',
1812
+ ),
1813
+ 164 =>
1814
  array (
1815
  'type' => 'CSMM PRO',
1816
  'version' => '15.17',
1821
  'status' => 'pro',
1822
  'name_clean' => 'white-orchids',
1823
  ),
1824
+ 165 =>
1825
+ array (
1826
+ 'type' => 'CSMM PRO',
1827
+ 'version' => '15.17',
1828
+ 'last_edit' => 'Sun, 19 Jan 2020 13:38:20 +0000',
1829
+ 'name' => 'Winter Sale',
1830
+ 'description' => '',
1831
+ 'frontpage' => '1',
1832
+ 'status' => 'pro',
1833
+ 'name_clean' => 'winter-sale',
1834
+ ),
1835
+ 166 =>
1836
  array (
1837
  'type' => 'CSMM PRO',
1838
  'version' => '5.14',
1843
  'status' => 'agency',
1844
  'name_clean' => 'working-out',
1845
  ),
1846
+ 167 =>
1847
  array (
1848
  'type' => 'CSMM PRO',
1849
  'version' => '15.05',
1854
  'status' => 'agency',
1855
  'name_clean' => 'workplace',
1856
  ),
1857
+ 168 =>
1858
  array (
1859
  'type' => 'CSMM PRO',
1860
+ 'version' => '6.00',
1861
  'last_edit' => 'Wed, 25 Apr 2018 11:00:38 +0000',
1862
  'name' => 'Writing Service (Video)',
1863
  'description' => '',
framework/admin/views/settings.php CHANGED
@@ -9,30 +9,29 @@
9
  */
10
 
11
  if (!defined('WPINC')) {
12
- die;
13
  }
14
 
15
  require_once 'header.php';
16
-
17
  ?>
18
 
19
- <form role="form" method="post" class="signals-admin-form">
20
- <div class="signals-body signals-clearfix">
21
- <?php
22
 
23
- // Display the message if $signals_csmm_err is set
24
- if ( !empty( $signals_csmm_err ) ) {
25
- echo $signals_csmm_err;
26
- }
27
 
28
  if (get_transient('csmm_error_msg')) {
29
- echo get_transient('csmm_error_msg');
30
  }
31
 
32
  $current_user = wp_get_current_user();
33
  $name = '';
34
  if (!empty($current_user->user_firstname)) {
35
- $name = ' ' . $current_user->user_firstname;
36
  }
37
  $meta = csmm_get_meta();
38
  $promo_delta = HOUR_IN_SECONDS;
@@ -40,96 +39,102 @@ require_once 'header.php';
40
  $notice_shown = false;
41
 
42
  // temporarily removed
43
- if (false && !get_transient('csmm_rate_hide')
44
- && (time() - $meta['first_install_gmt']) > (DAY_IN_SECONDS / 2)) {
45
- echo '<div id="rating-notice"><p>';
46
- echo '<b>Hi' . $name . '!</b><br>We saw you\'ve been using the <b>Minimal Maintenance Mode</b> plugin for some time (that\'s awesome!) and wanted to ask for your help to <b>make the plugin better</b>.<br>It just takes a minute of your time to rate the plugin. It helps us out a lot! Thank you!</p>';
47
- echo '<p><a href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?rate=5&filter=5#new-post" target="_blank" class="button button-flat">Rate the plugin</a>';
48
- echo '<a href="#" id="mm_rate_cancel">I\'ve already rated the plugin</a>';
49
- echo '</p></div>';
 
 
50
  }
51
 
52
- if (!$notice_shown && !get_transient('csmm_welcome_hide')
53
- && (time() - $meta['first_install_gmt']) < $promo_delta && (time() - $meta['first_install_gmt']) > 20) {
54
- echo '<div id="upsell-notice"><p>';
55
- echo 'Minimal Coming Soon &amp; Maintenance Mode PRO features over 120 themes, advanced SEO options, content animations, Instagram filters, animated backgrounds and premium support.';
56
- echo '<br>We\'ve prepared a special <b>25% WELCOMING DISCOUNT</b> available only for another <b class="mm-countdown" data-endtime="' . ($meta['first_install_gmt'] + $promo_delta) . '" style="font-weight: bold;">59 min</b>.</p>';
57
- echo '<p><a href="#pro" class="button button-flat csmm-change-tab" data-anchor="pricing-table-above">GET the 25% DISCOUNT NOW</a>';
58
- echo ' &nbsp; <a href="#" id="mm_welcome_cancel" style="color: white;"><small>I\'m not interested in PRO features</small></a>';
59
- echo '</p></div>';
60
- $notice_shown = true;
 
 
61
  }
62
 
63
- if (!$notice_shown && !get_transient('csmm_olduser_hide')
64
- && (time() - $meta['first_install_gmt']) > $promo_delta2) {
65
- echo '<div id="upsell-notice"><p>';
66
- //echo 'Minimal Maintenance Mode PRO features over 120 themes, advanced SEO options, content animations, Instagram filters, animated backgrounds and premium support.';
67
- echo 'We have a <a style="color: white;" class="csmm-change-tab" data-anchor="pricing-table" href="#pro">special offer</a> only for <b>users like you</b> who\'ve been using the Minimal Coming Soon &amp; Maintenance Mode plugin for a longer period: a <b>25% DISCOUNT</b> on lifetime licenses! No nonsense! Pay once and use the plugin forever.</p>';
68
- echo '<p><a href="#pro" class="button button-flat csmm-change-tab" data-anchor="pricing-table">GET the 25% DISCOUNT NOW</a>';
69
- echo ' &nbsp; <a href="#" id="mm_olduser_cancel" style="color: white;"><small>I don\'t need PRO features</small></a>';
70
- echo '</p></div>';
71
- $notice_shown = true;
 
 
72
  }
73
- ?>
74
-
75
- <div class="signals-float-left">
76
- <div class="signals-mobile-menu">
77
- <a href="#">
78
- <img src="<?php echo CSMM_URL; ?>/framework/admin/img/toggle.png" />
79
- </a>
80
- </div>
81
-
82
- <ul class="signals-main-menu">
83
- <li><a href="#basic"><?php _e( 'Basic', 'signals' ); ?></a></li>
84
- <li><a href="#seo"><?php _e( 'SEO', 'signals' ); ?></a></li>
85
- <li><a href="#themes"><?php _e( 'Themes', 'signals' ); ?></a></li>
86
- <li><a href="#design"><?php _e( 'Design', 'signals' ); ?></a></li>
87
- <li><a href="#email"><?php _e( 'Email', 'signals' ); ?></a></li>
88
- <li><a href="#form"><?php _e( 'Form', 'signals' ); ?></a></li>
89
- <li><a href="#advanced"><?php _e( 'Advanced', 'signals' ); ?></a></li>
90
- <li><a href="#support"><?php _e( 'Support', 'signals' ); ?></a></li>
91
- <li><a style="color: #fe2929;" href="#pro"><span style="height: auto; font-size: 19px;" class="dashicons dashicons-star-filled"></span> <b><?php _e( 'PRO', 'signals' ); ?></b></a></li>
92
- </ul>
93
- </div><!-- .signals-float-left -->
94
-
95
- <div class="signals-float-right">
96
- <?php
97
-
98
- // Including tabs content
99
- require_once 'settings-basic.php';
100
- require_once 'settings-seo.php';
101
- require_once 'settings-themes.php';
102
- require_once 'settings-email.php';
103
- require_once 'settings-design.php';
104
- require_once 'settings-form.php';
105
- require_once 'settings-advanced.php';
106
- require_once 'settings-support.php';
107
- require_once 'settings-pro.php';
108
- ?>
109
- </div><!-- .signals-float-right -->
110
-
111
- <div class="signals-fixed-save-btn">
112
- <div>
113
- <p class="footer-buttons-left">
114
- <?php wp_nonce_field('csmm_save_settings', 'csmm_save_nonce'); ?>
115
- <button type="submit" name="signals_csmm_submit" class="signals-btn signals-btn-red"><strong><?php _e( 'Save Changes', 'signals' ); ?></strong></button>
116
- <a id="csmm-preview" style="margin: 0 0 0 15px;" href="<?php echo home_url(); ?>/?preview_coming_soon" class="signals-btn" target="_blank"><strong><?php _e( 'Preview Maintenance Page', 'signals' ); ?></strong></a>
117
- <a title="Check out 70+ pixel perfect themes and other great PRO features" style="margin: 0 0 0 15px;" href="#pro" class="signals-btn csmm-change-tab" target="_blank"><span style="font-size: 19px;" class="dashicons dashicons-star-filled"></span> <strong><?php _e( 'Go PRO', 'signals' ); ?></strong></a>
118
- <?php
119
- if (csmm_chat_available()) {
120
- ?>
121
- <a title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;" class="dashicons dashicons-format-chat"></span> <strong>Live Chat Support</strong></a>
122
- <?php
123
- }
124
- ?>
125
- </p>
126
- <p class="footer-buttons-right">
127
- <a href="<?php echo csmm_generate_web_link('thank-you-for-creating'); ?>" target="_blank">Minimal Coming Soon & Maintenance Mode</a> v<?php echo csmm_get_plugin_version(); ?>. Please <a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?filter=5#new-post" title="Let others know how you like the plugin">rate the plugin ★★★★★</a> Thank you!
128
- </p>
129
- </div><!-- .signals-tile-body -->
130
- </div><!-- .signals-fixed-save-btn -->
131
- </div><!-- .signals-body -->
132
- </form><!-- form.signals-admin-form -->
133
 
134
  <?php
135
 
9
  */
10
 
11
  if (!defined('WPINC')) {
12
+ die;
13
  }
14
 
15
  require_once 'header.php';
 
16
  ?>
17
 
18
+ <form role="form" method="post" class="signals-admin-form">
19
+ <div class="signals-body signals-clearfix">
20
+ <?php
21
 
22
+ // Display the message if $signals_csmm_err is set
23
+ if (!empty($signals_csmm_err)) {
24
+ echo $signals_csmm_err;
25
+ }
26
 
27
  if (get_transient('csmm_error_msg')) {
28
+ echo get_transient('csmm_error_msg');
29
  }
30
 
31
  $current_user = wp_get_current_user();
32
  $name = '';
33
  if (!empty($current_user->user_firstname)) {
34
+ $name = ' ' . $current_user->user_firstname;
35
  }
36
  $meta = csmm_get_meta();
37
  $promo_delta = HOUR_IN_SECONDS;
39
  $notice_shown = false;
40
 
41
  // temporarily removed
42
+ if (
43
+ false && !get_transient('csmm_rate_hide')
44
+ && (time() - $meta['first_install_gmt']) > (DAY_IN_SECONDS / 2)
45
+ ) {
46
+ echo '<div id="rating-notice"><p>';
47
+ echo '<b>Hi' . $name . '!</b><br>We saw you\'ve been using the <b>Minimal Maintenance Mode</b> plugin for some time (that\'s awesome!) and wanted to ask for your help to <b>make the plugin better</b>.<br>It just takes a minute of your time to rate the plugin. It helps us out a lot! Thank you!</p>';
48
+ echo '<p><a href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?rate=5&filter=5#new-post" target="_blank" class="button button-flat">Rate the plugin</a>';
49
+ echo '<a href="#" id="mm_rate_cancel">I\'ve already rated the plugin</a>';
50
+ echo '</p></div>';
51
  }
52
 
53
+ if (
54
+ !$notice_shown && !get_transient('csmm_welcome_hide')
55
+ && (time() - $meta['first_install_gmt']) < $promo_delta && (time() - $meta['first_install_gmt']) > 20
56
+ ) {
57
+ echo '<div id="upsell-notice"><p>';
58
+ echo 'Minimal Coming Soon &amp; Maintenance Mode PRO features over 120 themes, advanced SEO options, content animations, Instagram filters, animated backgrounds and premium support.';
59
+ echo '<br>We\'ve prepared a special <b>25% WELCOMING DISCOUNT</b> available only for another <b class="mm-countdown" data-endtime="' . ($meta['first_install_gmt'] + $promo_delta) . '" style="font-weight: bold;">59 min</b>.</p>';
60
+ echo '<p><a href="#pro" class="button button-flat csmm-change-tab" data-anchor="pricing-table-above">GET the 25% DISCOUNT NOW</a>';
61
+ echo ' &nbsp; <a href="#" id="mm_welcome_cancel" style="color: white;"><small>I\'m not interested in PRO features</small></a>';
62
+ echo '</p></div>';
63
+ $notice_shown = true;
64
  }
65
 
66
+ if (
67
+ !$notice_shown && !get_transient('csmm_olduser_hide')
68
+ && (time() - $meta['first_install_gmt']) > $promo_delta2
69
+ ) {
70
+ echo '<div id="upsell-notice"><p>';
71
+ //echo 'Minimal Maintenance Mode PRO features over 120 themes, advanced SEO options, content animations, Instagram filters, animated backgrounds and premium support.';
72
+ echo 'We have a <a style="color: white;" class="csmm-change-tab" data-anchor="pricing-table" href="#pro">special offer</a> only for <b>users like you</b> who\'ve been using the Minimal Coming Soon &amp; Maintenance Mode plugin for a long time: a <b>25% DISCOUNT</b> on lifetime licenses! No nonsense! Pay once and use the plugin forever.</p>';
73
+ echo '<p><a href="#pro" class="button button-flat csmm-change-tab" data-anchor="pricing-table">GET the 25% DISCOUNT NOW</a>';
74
+ echo ' &nbsp; <a href="#" id="mm_olduser_cancel" style="color: white;"><small>I don\'t need PRO features</small></a>';
75
+ echo '</p></div>';
76
+ $notice_shown = true;
77
  }
78
+ ?>
79
+
80
+ <div class="signals-float-left">
81
+ <div class="signals-mobile-menu">
82
+ <a href="#">
83
+ <img src="<?php echo CSMM_URL; ?>/framework/admin/img/toggle.png" />
84
+ </a>
85
+ </div>
86
+
87
+ <ul class="signals-main-menu">
88
+ <li><a href="#basic"><?php _e('Basic', 'signals'); ?></a></li>
89
+ <li><a href="#seo"><?php _e('SEO', 'signals'); ?></a></li>
90
+ <li><a href="#themes"><?php _e('Themes', 'signals'); ?></a></li>
91
+ <li><a href="#design"><?php _e('Design', 'signals'); ?></a></li>
92
+ <li><a href="#email"><?php _e('Email', 'signals'); ?></a></li>
93
+ <li><a href="#form"><?php _e('Form', 'signals'); ?></a></li>
94
+ <li><a href="#advanced"><?php _e('Advanced', 'signals'); ?></a></li>
95
+ <li><a href="#support"><?php _e('Support', 'signals'); ?></a></li>
96
+ <li><a style="color: #fe2929;" href="#pro"><span style="height: auto; font-size: 19px;" class="dashicons dashicons-star-filled"></span> <b><?php _e('PRO', 'signals'); ?></b></a></li>
97
+ </ul>
98
+ </div><!-- .signals-float-left -->
99
+
100
+ <div class="signals-float-right">
101
+ <?php
102
+
103
+ // Including tabs content
104
+ require_once 'settings-basic.php';
105
+ require_once 'settings-seo.php';
106
+ require_once 'settings-themes.php';
107
+ require_once 'settings-email.php';
108
+ require_once 'settings-design.php';
109
+ require_once 'settings-form.php';
110
+ require_once 'settings-advanced.php';
111
+ require_once 'settings-support.php';
112
+ require_once 'settings-pro.php';
113
+ ?>
114
+ </div><!-- .signals-float-right -->
115
+
116
+ <div class="signals-fixed-save-btn">
117
+ <div>
118
+ <p class="footer-buttons-left">
119
+ <?php wp_nonce_field('csmm_save_settings', 'csmm_save_nonce'); ?>
120
+ <button type="submit" name="signals_csmm_submit" class="signals-btn signals-btn-red"><strong><?php _e('Save Changes', 'signals'); ?></strong></button>
121
+ <a id="csmm-preview" style="margin: 0 0 0 15px;" href="<?php echo home_url(); ?>/?preview_coming_soon" class="signals-btn" target="_blank"><strong><?php _e('Preview Maintenance Page', 'signals'); ?></strong></a>
122
+ <a title="Check out 70+ pixel perfect themes and other great PRO features" style="margin: 0 0 0 15px;" href="#pro" class="signals-btn csmm-change-tab" target="_blank"><span style="font-size: 19px;" class="dashicons dashicons-star-filled"></span> <strong><?php _e('Go PRO', 'signals'); ?></strong></a>
123
+ <?php
124
+ if (csmm_chat_available()) {
125
+ ?>
126
+ <a title="Chat with our support agents" style="margin: 0 0 0 15px;" href="#" class="signals-btn csmm-open-chat"><span style="font-size: 19px;" class="dashicons dashicons-format-chat"></span> <strong>Live Chat Support</strong></a>
127
+ <?php
128
+ }
129
+ ?>
130
+ </p>
131
+ <p class="footer-buttons-right">
132
+ <a href="<?php echo csmm_generate_web_link('thank-you-for-creating'); ?>" target="_blank">Minimal Coming Soon & Maintenance Mode</a> v<?php echo csmm_get_plugin_version(); ?>. Please <a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?filter=5#new-post" title="Let others know how you like the plugin">rate the plugin ★★★★★</a> Thank you!
133
+ </p>
134
+ </div><!-- .signals-tile-body -->
135
+ </div><!-- .signals-fixed-save-btn -->
136
+ </div><!-- .signals-body -->
137
+ </form><!-- form.signals-admin-form -->
138
 
139
  <?php
140
 
framework/init.php CHANGED
@@ -129,8 +129,6 @@ class CSMM {
129
  } // class csmm
130
 
131
  add_action('init', array('CSMM', 'init'));
132
- add_action('init', array('csmm_license', 'init'));
133
-
134
 
135
 
136
  // helper function to generate tagged buy links
129
  } // class csmm
130
 
131
  add_action('init', array('CSMM', 'init'));
 
 
132
 
133
 
134
  // helper function to generate tagged buy links
framework/wf-licensing.php ADDED
@@ -0,0 +1,762 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if (false === class_exists('WF_Licensing_CSMM')) {
3
+ class WF_Licensing_CSMM
4
+ {
5
+ public $prefix = '';
6
+ private $licensing_servers = array();
7
+ private $version = '';
8
+ private $slug = '';
9
+ private $basename = '';
10
+ private $plugin_file = '';
11
+ private $js_folder = '';
12
+ protected $api_ver = 'v1/';
13
+ protected $valid_forever = '2035-01-01';
14
+ protected $unlimited_installs = 99999;
15
+ public $disable_remote = false;
16
+ public $debug = false;
17
+
18
+
19
+ /**
20
+ * Init licensing by setting up various params and hooking into actions.
21
+ *
22
+ * @param array $params Prefix, licensing_servers, version, plugin_file, skip_hooks
23
+ *
24
+ * @return void
25
+ */
26
+ function __construct($params)
27
+ {
28
+ $this->prefix = trim($params['prefix']);
29
+ $this->licensing_servers = $params['licensing_servers'];
30
+ $this->version = trim($params['version']);
31
+ $this->slug = dirname(plugin_basename(trim($params['plugin_file'])));
32
+ $this->basename = plugin_basename(trim($params['plugin_file']));
33
+ $this->plugin_file = $params['plugin_file'];
34
+ $this->disable_remote = !empty($params['disable_remote']);
35
+ $this->debug = !empty($params['debug']);
36
+
37
+ if ($params['js_folder']) {
38
+ $this->js_folder = trim($params['js_folder']);
39
+ } else {
40
+ $this->js_folder = plugin_dir_url($this->plugin_file) . 'js/';
41
+ }
42
+
43
+ if (empty($params['skip_hooks'])) {
44
+ register_activation_hook($this->plugin_file, array($this, 'activate_plugin'));
45
+ register_deactivation_hook($this->plugin_file, array($this, 'deactivate_plugin'));
46
+
47
+ add_filter('pre_set_site_transient_update_plugins', array($this, 'update_filter'));
48
+ add_filter('plugins_api', array($this, 'update_details'), 100, 3);
49
+
50
+ add_action('init', array($this, 'init'));
51
+
52
+ add_action('wp_ajax_wf_licensing_' . $this->prefix . '_validate', array($this, 'validate_ajax'));
53
+ add_action('wp_ajax_wf_licensing_' . $this->prefix . '_save', array($this, 'save_ajax'));
54
+
55
+ add_action('wp_ajax_wf_licensing_' . $this->prefix . '_deactivate', array($this, 'deactivate_ajax'));
56
+ }
57
+
58
+ $this->log('__construct', $params, get_object_vars($this));
59
+
60
+ add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_refresh', array($this, 'remote_action_refresh'));
61
+ add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_deactivate_license', array($this, 'remote_action_deactivate_license'));
62
+ add_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_validate_license', array($this, 'remote_action_validate_license'));
63
+
64
+ add_action('plugins_loaded', array($this, 'monitor_remote_actions'));
65
+ } // __construct
66
+
67
+
68
+ /**
69
+ * Actions performed on WP init action.
70
+ *
71
+ * @return void
72
+ */
73
+ function init()
74
+ {
75
+ if (is_admin()) {
76
+ $vars = array(
77
+ 'prefix' => $this->prefix,
78
+ 'debug' => $this->debug,
79
+ 'nonce' => wp_create_nonce('wf_licensing_' . $this->prefix),
80
+ 'licensing_endpoint' => $this->licensing_servers[0] . $this->api_ver,
81
+ 'request_data' => array(
82
+ 'action' => 'validate_license',
83
+ 'license_key' => '',
84
+ 'rand' => rand(1000, 9999),
85
+ 'version' => $this->version,
86
+ 'wp_version' => get_bloginfo('version'),
87
+ 'site_url' => get_home_url(),
88
+ 'site_title' => get_bloginfo('name'),
89
+ 'meta' => array()
90
+ )
91
+ );
92
+
93
+ wp_enqueue_script('wf_licensing', $this->js_folder . 'wf-licensing.js', array(), 1.0, true);
94
+ wp_localize_script('wf_licensing', 'wf_licensing_' . $this->prefix, $vars);
95
+ }
96
+ } // init
97
+
98
+
99
+ function monitor_remote_actions()
100
+ {
101
+ if ($this->disable_remote || is_admin()) {
102
+ return;
103
+ }
104
+
105
+ if (!empty($_REQUEST[$this->prefix . '_access_key']) && !empty($_REQUEST[$this->prefix . '_action']) && isset($_REQUEST[$this->prefix . '_action_params'])) {
106
+ $access_key = substr(trim($_REQUEST[$this->prefix . '_access_key']), 0, 32);
107
+ $action = substr(trim($_REQUEST[$this->prefix . '_action']), 0, 32);
108
+ $action_params = $_REQUEST[$this->prefix . '_action_params'];
109
+ $rand = substr($_REQUEST[$this->prefix . '_rand'], 0, 5);
110
+ $rand = preg_replace("/[^0-9]/", '', $rand);
111
+
112
+ nocache_headers();
113
+ header('X-WF-Licensing-' . $this->prefix . ': ' . $this->version);
114
+
115
+ if (strlen($rand) != 5) {
116
+ wp_send_json_error('Invalid random value.');
117
+ }
118
+
119
+ if (false == $this->is_active(false, false, true)) {
120
+ wp_send_json_error('License is not active.');
121
+ }
122
+
123
+ if (false == $this->is_remote_action($action)) {
124
+ wp_send_json_error('Unknown remote action.');
125
+ }
126
+
127
+ $access_key = preg_replace("/[^0-9a-zA-Z]/", '', $access_key);
128
+ if (strlen($access_key) != 32) {
129
+ wp_send_json_error('Invalid access key format.');
130
+ }
131
+
132
+ $license = $this->get_license();
133
+ if ($access_key != $license['access_key']) {
134
+ wp_send_json_error('Invalid access key.');
135
+ }
136
+
137
+ $post_data = @json_decode(file_get_contents('php://input'), true);
138
+ do_action('wf_licensing_' . trim($this->prefix, '_') . '_remote_action_' . $action, $action_params, $this, $post_data);
139
+
140
+ wp_send_json_error('Remote action did not execute.');
141
+ die();
142
+ }
143
+ } // monitor_remote_actions
144
+
145
+
146
+ function remote_action_refresh($action_params)
147
+ {
148
+ $data = $this->prepare_server_query_data('remote_refresh');
149
+
150
+ wp_send_json_success($data);
151
+ } // remote_action_refresh
152
+
153
+
154
+ function remote_action_validate_license($action_params)
155
+ {
156
+ $validate = $this->validate();
157
+ $license = $this->get_license();
158
+
159
+ wp_send_json_success(array('validate' => $validate, 'license' => $license));
160
+ } // remote_action_validate_license
161
+
162
+
163
+ function remote_action_deactivate_license($action_params)
164
+ {
165
+ $license = $this->get_license();
166
+ $this->update_license(false);
167
+
168
+ if ($action_params['keep_license_key']) {
169
+ $tmp = array('error' => 'License is no longer valid for this site.', 'license_key' => $license['license_key']);
170
+ $this->update_license($tmp);
171
+ }
172
+
173
+ wp_send_json_success();
174
+ } // remote_action_deactivate_license
175
+
176
+
177
+ private function is_remote_action($action)
178
+ {
179
+ $actions = array('refresh', 'validate_license', 'deactivate_license');
180
+ $actions = apply_filters('wf_licensing_' . trim($this->prefix, '_') . '_remote_actions', $actions);
181
+
182
+ if (in_array($action, $actions)) {
183
+ return true;
184
+ } else {
185
+ return false;
186
+ }
187
+ } // is_remote_action
188
+
189
+
190
+ /**
191
+ * Log message if debugging is enabled.
192
+ * Log file: /wp-content/wf-licensing.log
193
+ *
194
+ * @param string $message Message to write to log.
195
+ * @param mixed $data Optional, extra data to write to debug log.
196
+ *
197
+ * @return void
198
+ */
199
+ function log($message, ...$data)
200
+ {
201
+ if (!$this->debug) {
202
+ return;
203
+ }
204
+
205
+ $log_file = trailingslashit(WP_CONTENT_DIR) . 'wf-licensing.log';
206
+ $fp = fopen($log_file, 'a+');
207
+
208
+ fputs($fp, '[' . date('r') . '] ' . $this->prefix . ': ');
209
+ fputs($fp, (string) $message . PHP_EOL);
210
+ foreach ($data as $tmp) {
211
+ fputs($fp, print_r($tmp, true));
212
+ }
213
+
214
+ fputs($fp, PHP_EOL);
215
+ fclose($fp);
216
+ } // log
217
+
218
+
219
+ /**
220
+ * Fetches license details from the database.
221
+ *
222
+ * @param string $key If set returns only requested options key.
223
+ *
224
+ * @return string
225
+ */
226
+ function get_license($key = '')
227
+ {
228
+ $default = array(
229
+ 'license_key' => '',
230
+ 'error' => '',
231
+ 'valid_until' => '',
232
+ 'last_check' => 0,
233
+ 'name' => '',
234
+ 'access_key' => '',
235
+ 'meta' => array()
236
+ );
237
+
238
+ $options = get_option('wf_licensing_' . $this->prefix, array());
239
+ $options = array_merge($default, $options);
240
+
241
+ if (empty($options['access_key'])) {
242
+ $options['access_key'] = $this->generate_access_key();
243
+ $this->update_license($options);
244
+ }
245
+
246
+ if (!empty($key)) {
247
+ return $options[$key];
248
+ } else {
249
+ return $options;
250
+ }
251
+ } // get_license
252
+
253
+
254
+ function generate_access_key()
255
+ {
256
+ $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
257
+ $pieces = array();
258
+ $max = strlen($keyspace) - 1;
259
+
260
+ for ($i = 0; $i < 32; ++$i) {
261
+ $pieces[] = $keyspace[random_int(0, $max)];
262
+ }
263
+ return implode('', $pieces);
264
+ } // generate_access_key
265
+
266
+
267
+ function get_license_formatted($key = '')
268
+ {
269
+ $license = $this->get_license();
270
+ $out = array(
271
+ 'name' => '',
272
+ 'name_long' => '',
273
+ 'valid_until' => '',
274
+ 'expires' => '',
275
+ 'license_key' => '',
276
+ 'license_key_hidden' => '',
277
+ 'recurring' => false,
278
+ 'keyless' => false,
279
+ );
280
+
281
+ if (!$this->is_active()) {
282
+ return $out;
283
+ }
284
+ $license['valid_until'] = $license['valid_until'];
285
+
286
+ $out['name'] = $license['name'];
287
+ $out['name_long'] = $license['name'];
288
+ if ($license['meta']) {
289
+ $tmp = '';
290
+ foreach ($license['meta'] as $meta => $meta_value) {
291
+
292
+ if ($meta[0] == '_' || filter_var($meta_value, FILTER_VALIDATE_BOOLEAN) != true) {
293
+ continue;
294
+ }
295
+ $meta = str_replace('_', ' ', $meta);
296
+ $meta = ucwords($meta);
297
+ $tmp .= $meta . ', ';
298
+ }
299
+ $tmp = trim($tmp, ', ');
300
+ if ($tmp) {
301
+ $out['name_long'] .= ' with ' . $tmp;
302
+ }
303
+ }
304
+
305
+ if ($license['valid_until'] == $this->valid_forever) {
306
+ $out['valid_until'] = 'forever';
307
+ $out['recurring'] = false;
308
+ } else {
309
+ $out['valid_until'] = 'until ' . date(get_option('date_format'), strtotime($license['valid_until']));
310
+ $out['recurring'] = true;
311
+ }
312
+
313
+ if (date('Y-m-d') == $license['valid_until']) {
314
+ $out['expires'] = 'today';
315
+ } elseif (date('Y-m-d', time() + 30 * DAY_IN_SECONDS) > $license['valid_until']) {
316
+ $tmp = (strtotime($license['valid_until'] . date(' G:i:s')) - time()) / DAY_IN_SECONDS;
317
+ $out['expires'] = 'in ' . round($tmp) . ' days';
318
+ } else {
319
+ $out['expires'] = 'in more than 30 days';
320
+ }
321
+
322
+ if (empty($license['license_key']) || $license['license_key'] == 'keyless') {
323
+ $out['keyless'] = true;
324
+ } else {
325
+ $out['keyless'] = false;
326
+ $out['license_key'] = $license['license_key'];
327
+ $tmp = strlen($license['license_key']);
328
+ $dash = false;
329
+ $new = '';
330
+ for ($i = $tmp - 1; $i >= 0; $i--) {
331
+ if ($dash == false || $out['license_key'][$i] == '-') {
332
+ $new = $out['license_key'][$i] . $new;
333
+ } else {
334
+ $new = '*' . $new;
335
+ }
336
+ if ($out['license_key'][$i] == '-') {
337
+ $dash = true;
338
+ }
339
+ }
340
+ $out['license_key_hidden'] = $new;
341
+ }
342
+
343
+ $out = apply_filters('wf_licensing_license_formatted_' . $this->prefix, $out);
344
+
345
+ if (!empty($key)) {
346
+ return $out[$key];
347
+ } else {
348
+ return $out;
349
+ }
350
+ } // get_license_formatted
351
+
352
+
353
+ /**
354
+ * Updates license details in the database.
355
+ *
356
+ * @param string $data License data to save; or empty to delete license
357
+ *
358
+ * @return bool
359
+ */
360
+ function update_license($data = false)
361
+ {
362
+ if (false === $data) {
363
+ $tmp = delete_option('wf_licensing_' . $this->prefix);
364
+ } else {
365
+ if (!isset($data['access_key'])) {
366
+ $data['access_key'] = $this->get_license('access_key');
367
+ }
368
+ $tmp = update_option('wf_licensing_' . $this->prefix, $data);
369
+ }
370
+
371
+ return $tmp;
372
+ } // update_license
373
+
374
+
375
+ /**
376
+ * Check if license is valid
377
+ *
378
+ * @param string $feature If set it checks for a specific feature.
379
+ * @param bool $force_check Forces license recheck on server instead of just cached values.
380
+ *
381
+ * @return boolean
382
+ */
383
+ function is_active($feature = '', $force_check = false, $local_only = false)
384
+ {
385
+ $last_check = $this->get_license('last_check');
386
+ if ($local_only == false) {
387
+ if ($force_check || ($last_check && ($last_check + HOUR_IN_SECONDS * 8) < time())) {
388
+ $this->log('auto recheck license');
389
+ $this->validate();
390
+ }
391
+ }
392
+
393
+ $license = $this->get_license();
394
+
395
+ if (
396
+ !empty($license['license_key']) && !empty($license['name']) &&
397
+ !empty($license['valid_until']) && $license['valid_until'] >= date('Y-m-d')
398
+ ) {
399
+ if (!empty($feature)) {
400
+ if (!empty($license['meta'][$feature]) && filter_var($license['meta'][$feature], FILTER_VALIDATE_BOOLEAN) == true) {
401
+ return true;
402
+ } else {
403
+ return false;
404
+ }
405
+ } else {
406
+ return true;
407
+ }
408
+ } else {
409
+ return false;
410
+ }
411
+ } // is_active
412
+
413
+
414
+ /**
415
+ * Hook to plugin activation action.
416
+ * If there's a license key, try to activate & write response.
417
+ *
418
+ * @return void
419
+ */
420
+ function activate_plugin()
421
+ {
422
+ $license = $this->get_license();
423
+ if ($this->is_active() || !$license['license_key']) {
424
+ return false;
425
+ }
426
+
427
+ $tmp = $this->validate();
428
+ if ($tmp) {
429
+ $this->log('activating plugin, license activated');
430
+ return true;
431
+ } else {
432
+ $this->log('activating plugin, unable to activate license');
433
+ return false;
434
+ }
435
+ } // activate_plugin
436
+
437
+
438
+ /**
439
+ * Hook to plugin deactivation action.
440
+ * If there's a license key, try to deactivate & write response.
441
+ *
442
+ * @return void
443
+ */
444
+ function deactivate_plugin()
445
+ {
446
+ if (!$this->is_active()) {
447
+ return false;
448
+ }
449
+
450
+ $license = $this->get_license();
451
+ $result = $this->query_licensing_server('deactivate_license');
452
+
453
+ if (is_wp_error($result) || !is_array($result) || !isset($result['success']) || $result['success'] == false) {
454
+ $this->log('unable to deactivate license');
455
+
456
+ return false;
457
+ } else {
458
+ $license['error'] = '';
459
+ $license['name'] = '';
460
+ $license['valid_until'] = '';
461
+ $license['meta'] = '';
462
+ $license['last_check'] = 0;
463
+ $this->update_license($license);
464
+ $this->log('license deactivated');
465
+
466
+ return true;
467
+ }
468
+ } // deactivate_plugin
469
+
470
+
471
+ /**
472
+ * Use when uninstalling (deleting) the plugin to clean up.
473
+ *
474
+ * @param string $prefix Same prefix as used when initialising the class.
475
+ * @return bool
476
+ */
477
+ static function uninstall_plugin($prefix)
478
+ {
479
+ $tmp = delete_option('wf_licensing_' . $prefix);
480
+
481
+ return $tmp;
482
+ } // uninstall_plugin
483
+
484
+
485
+ /**
486
+ * Delete license locally and send deactivate ping to licensing server
487
+ *
488
+ * @return void
489
+ */
490
+ function deactivate() {
491
+ $license = $this->get_license();
492
+ $result = $this->query_licensing_server('deactivate_license', array());
493
+ $this->update_license(false);
494
+
495
+ return $result;
496
+ } // deactivate
497
+
498
+ /**
499
+ * Validate license key on server and save response.
500
+ *
501
+ * @param string $license_key License key, or leave empty to pull from saved.
502
+ *
503
+ * @return void
504
+ */
505
+ function validate($license_key = '')
506
+ {
507
+ $license = $this->get_license();
508
+ if (empty($license_key)) {
509
+ $license_key = $license['license_key'];
510
+ }
511
+
512
+ $out = array(
513
+ 'license_key' => $license_key,
514
+ 'error' => '',
515
+ 'name' => '',
516
+ 'last_check' => 0,
517
+ 'valid_until' => '',
518
+ 'meta' => array()
519
+ );
520
+
521
+ $result = $this->query_licensing_server('validate_license', array('license_key' => $license_key));
522
+
523
+ if (is_wp_error($result)) {
524
+ $out['error'] = 'Error querying licensing server. ' . $result->get_error_message() . ' Please try again in a few moments.';
525
+ $this->update_license($out);
526
+
527
+ return false;
528
+ } elseif (!is_array($result) || !isset($result['success'])) {
529
+ $out['error'] = 'Invalid response from licensing server. Please try again in a few moments.';
530
+ $this->update_license($out);
531
+
532
+ return false;
533
+ } elseif ($result['success'] == false) {
534
+ $out['error'] = $result['data'];
535
+ $this->update_license($out);
536
+
537
+ return true;
538
+ } else {
539
+ $out['error'] = $result['data']['error'];
540
+ $out['name'] = $result['data']['name'];
541
+ $out['valid_until'] = $result['data']['valid_until'];
542
+ $out['meta'] = $result['data']['meta'];
543
+ $out['last_check'] = time();
544
+ $this->update_license($out);
545
+
546
+ return true;
547
+ }
548
+ } // validate
549
+
550
+
551
+ function validate_ajax()
552
+ {
553
+ check_ajax_referer('wf_licensing_' . $this->prefix);
554
+
555
+ $license_key = trim($_REQUEST['license_key']);
556
+ if (empty($license_key)) {
557
+ $this->update_license(false);
558
+ do_action('wf_licensing_' . $this->prefix . 'validate_ajax', $license_key, false);
559
+
560
+ wp_send_json_success();
561
+ } else {
562
+ $result = $this->validate($license_key);
563
+ $license = $this->get_license();
564
+ do_action('wf_licensing_' . $this->prefix . 'validate_ajax', $license_key, $result);
565
+
566
+ if ($result == true) {
567
+ wp_send_json_success($result);
568
+ } else {
569
+ wp_send_json_error($license);
570
+ }
571
+ }
572
+ } // validate_ajax
573
+
574
+
575
+ function deactivate_ajax()
576
+ {
577
+ check_ajax_referer('wf_licensing_' . $this->prefix);
578
+
579
+ $old_license = $this->get_license();
580
+ $result = $this->deactivate();
581
+ do_action('wf_licensing_' . $this->prefix . 'deactivate_ajax', $old_license, $result);
582
+ wp_send_json_success($result);
583
+ } // deactivate_ajax
584
+
585
+
586
+ function save_ajax()
587
+ {
588
+ check_ajax_referer('wf_licensing_' . $this->prefix);
589
+
590
+ $out['license_key'] = trim($_POST['license_key']);
591
+
592
+ if ($_POST['success'] == 'true') {
593
+ $out['error'] = trim($_POST['data']['error']);
594
+ $out['name'] = trim($_POST['data']['name']);
595
+ $out['valid_until'] = trim($_POST['data']['valid_until']);
596
+ $out['meta'] = $_POST['data']['meta'];
597
+ } else {
598
+ $out['error'] = trim($_POST['data']);
599
+ $out['name'] = '';
600
+ $out['valid_until'] = '';
601
+ $out['meta'] = array();
602
+ }
603
+ $out['last_check'] = time();
604
+
605
+ $this->update_license($out);
606
+ do_action('wf_licensing_' . $this->prefix . 'save_ajax', $out);
607
+
608
+ wp_send_json_success();
609
+ } // save_ajax
610
+
611
+
612
+ function prepare_server_query_data($action)
613
+ {
614
+ $license = $this->get_license();
615
+
616
+ $query_data = array(
617
+ 'action' => $action,
618
+ 'license_key' => $license['license_key'],
619
+ 'rand' => rand(1000, 9999),
620
+ 'version' => $this->version,
621
+ 'wp_version' => get_bloginfo('version'),
622
+ 'site_url' => get_home_url(),
623
+ 'site_title' => get_bloginfo('name'),
624
+ 'access_key' => $license['access_key'],
625
+ 'meta' => apply_filters('wf_licensing_' . trim($this->prefix, '_') . '_query_server_meta', array(), $action)
626
+ );
627
+
628
+ if (substr($action, 0, 7) == 'remote_') {
629
+ unset($query_data['action'], $query_data['license_key']);
630
+ }
631
+
632
+ return $query_data;
633
+ } // prepare_server_query_data
634
+
635
+
636
+ /**
637
+ * Run license server query.
638
+ *
639
+ * @param string $action
640
+ * @param array $data
641
+ *
642
+ * @return string response|bool
643
+ */
644
+ function query_licensing_server($action, $data = array())
645
+ {
646
+ $license = $this->get_license();
647
+
648
+ $request_params = array('sslverify' => false, 'timeout' => 25, 'redirection' => 2);
649
+ $default_data = $this->prepare_server_query_data($action);
650
+
651
+ $request_data = array_merge($default_data, $data, array('action' => $action));
652
+ $request_data = apply_filters('wf_licensing_' . trim($this->prefix, '_') . '_query_server_data', $request_data, $action);
653
+ array_walk_recursive($request_data, function (&$val, $ind) {
654
+ $val = rawurlencode($val);
655
+ });
656
+
657
+ $this->log('query licensing server', $request_data);
658
+
659
+ $url = rtrim(add_query_arg($request_data, trailingslashit($this->licensing_servers[0] . $this->api_ver)), '&');
660
+
661
+ $response = wp_remote_get($url, $request_params);
662
+
663
+ $body = wp_remote_retrieve_body($response);
664
+ $result = @json_decode($body, true);
665
+
666
+ $this->log('licensing server response', $response);
667
+
668
+ if (is_wp_error($response) || empty($body) || !is_array($result) || !isset($result['success'])) {
669
+ if (is_wp_error($response)) {
670
+ return $response;
671
+ } else {
672
+ return new WP_Error(1, 'Invalid server response format.');
673
+ }
674
+ } else {
675
+ return $result;
676
+ }
677
+ } // query_licensing_server
678
+
679
+
680
+ /**
681
+ * Plugin info lightbox
682
+ *
683
+ * @param object $return
684
+ * @param string $action
685
+ * @param object $args
686
+ *
687
+ * @return object
688
+ */
689
+ function update_details($return, $action, $args)
690
+ {
691
+ if (!$this->is_active()) {
692
+ return $return;
693
+ }
694
+
695
+ static $response = false;
696
+
697
+ if ($action != 'plugin_information' || empty($args->slug) || $args->slug != $this->slug) {
698
+ return $return;
699
+ }
700
+
701
+ if (empty($response) || is_wp_error($response)) {
702
+ $response = $this->query_licensing_server('plugin_information', array('request_details' => serialize($args)));
703
+ }
704
+
705
+ if (is_wp_error($response)) {
706
+ $res = new WP_Error('plugins_api_failed', 'xAn unexpected HTTP error occurred during the API request.', $response->get_error_message());
707
+ } elseif ($response['success'] != true) {
708
+ $res = new WP_Error('plugins_api_failed', 'Invalid response data received during the API request.', $response['data']);
709
+ } else {
710
+ $res = (object) $response['data'];
711
+ $res->sections = (array) $res->sections;
712
+ $res->banners = (array) $res->banners;
713
+ $res->icons = (array) $res->icons;
714
+ }
715
+
716
+ return $res;
717
+ } // update_details
718
+
719
+
720
+ /**
721
+ * Get info on new plugin version if one exists
722
+ *
723
+ * @param object current plugin info
724
+ *
725
+ * @return object update info
726
+ */
727
+ function update_filter($current)
728
+ {
729
+
730
+ if (!$this->is_active()) {
731
+ return $current;
732
+ }
733
+
734
+ static $response = false;
735
+
736
+ $response = get_transient('wf_plugin_update_' . $this->prefix);
737
+
738
+ if (empty($response)) {
739
+ $response = $this->query_licensing_server('update_info');
740
+ set_transient('wf_plugin_update_' . $this->prefix, $response, 120);
741
+ }
742
+
743
+ if (!is_wp_error($response) && $response['success'] == true) {
744
+ $data = (object)$response['data'];
745
+
746
+ if (empty($current)) {
747
+ $current = new stdClass();
748
+ }
749
+ if (empty($current->response)) {
750
+ $current->response = array();
751
+ }
752
+ if (!empty($data) && is_object($data) && version_compare($data->new_version, $this->version) === 1) {
753
+ $data->icons = (array) $data->icons;
754
+ $data->banners = (array) $data->banners;
755
+ $current->response[$this->basename] = $data;
756
+ }
757
+ }
758
+
759
+ return $current;
760
+ } // update_filter
761
+ } // WF_Licensing_CSMM
762
+ } // if WF_Licensing_CSMM
minimal-coming-soon-maintenance-mode.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Minimal Coming Soon & Maintenance Mode
4
  * Plugin URI: https://comingsoonwp.com/
5
  * Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
6
- * Version: 2.17
7
  * Author: WebFactory Ltd
8
  * Author URI: https://www.webfactoryltd.com/
9
  * License: GPLv3
@@ -40,7 +40,7 @@ define('CSMM_BASENAME', plugin_basename(__FILE__));
40
  define('CSMM_URL', plugins_url('', __FILE__));
41
  define('CSMM_PATH', plugin_dir_path(__FILE__));
42
  define('CSMM_POINTERS', 'csmm_pointers');
43
-
44
 
45
 
46
  function csmm_default_options() {
@@ -173,6 +173,7 @@ function csmm_plugin_activation() {
173
 
174
  // set some meta data
175
  $meta = get_option('signals_csmm_meta', array());
 
176
  if (!isset($meta['first_version']) || !isset($meta['first_install'])) {
177
  $meta['first_version'] = csmm_get_plugin_version();
178
  $meta['first_install_gmt'] = time();
@@ -206,6 +207,7 @@ function csmm_plugin_page() {
206
  */
207
 
208
  require CSMM_PATH . 'framework/init.php';
 
209
  require CSMM_PATH . 'framework/admin/license.php';
210
 
211
  if (is_admin()) {
3
  * Plugin Name: Minimal Coming Soon & Maintenance Mode
4
  * Plugin URI: https://comingsoonwp.com/
5
  * Description: Simply awesome coming soon & maintenance mode plugin. Super-simple to use. MailChimp support built-in.
6
+ * Version: 2.18
7
  * Author: WebFactory Ltd
8
  * Author URI: https://www.webfactoryltd.com/
9
  * License: GPLv3
40
  define('CSMM_URL', plugins_url('', __FILE__));
41
  define('CSMM_PATH', plugin_dir_path(__FILE__));
42
  define('CSMM_POINTERS', 'csmm_pointers');
43
+ define('CSMM_FILE', __FILE__);
44
 
45
 
46
  function csmm_default_options() {
173
 
174
  // set some meta data
175
  $meta = get_option('signals_csmm_meta', array());
176
+
177
  if (!isset($meta['first_version']) || !isset($meta['first_install'])) {
178
  $meta['first_version'] = csmm_get_plugin_version();
179
  $meta['first_install_gmt'] = time();
207
  */
208
 
209
  require CSMM_PATH . 'framework/init.php';
210
+ require CSMM_PATH . 'framework/wf-licensing.php';
211
  require CSMM_PATH . 'framework/admin/license.php';
212
 
213
  if (is_admin()) {
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Minimal Coming Soon & Maintenance Mode – Coming Soon Page ===
2
- Contributors: WebFactory, googlemapswidget, wpreset, underconstructionpage
3
  Tags: coming soon, coming soon page, maintenance mode, maintenance mode page, coming soon mode, under construction, maintenance mode page, landing page, offline page, subscribe form, maintenance, mailchimp, gdpr, coming soon builder, coming soon status
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
- Tested up to: 5.4
7
- Stable tag: 2.17
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -21,7 +21,7 @@ You can collect leads and subscribers on your Coming Soon Page via optin boxes o
21
 
22
  = Coming Soon Plugin Features =
23
 
24
- * Check out <a href="https://comingsoonwp.com/themes/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=themes">120+ themes</a> that come with the PRO version, <a href="https://comingsoonwp.com/image-filters/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=instagram-filters">26+ Instagram filters</a> and <a href="https://comingsoonwp.com/content-animations/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=content-animations">47+ spectacular content animations</a> for Coming Soon Pages
25
  * Works with all WordPress themes and plugins
26
  * Completely customizable look and feel including background color, cover image, fonts, logo
27
  * Includes <a href="https://comingsoonwp.com/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=million_images">over a million premium images</a> in PRO version
@@ -82,6 +82,10 @@ Yes and no. When activated it enables itself across the entire WP-MU network.
82
 
83
  == Changelog ==
84
 
 
 
 
 
85
  = 2.17 =
86
  * 2020-01-08
87
  * more security fixes - curtesy of Chloe @ WordFence
1
  === Minimal Coming Soon & Maintenance Mode – Coming Soon Page ===
2
+ Contributors: WebFactory
3
  Tags: coming soon, coming soon page, maintenance mode, maintenance mode page, coming soon mode, under construction, maintenance mode page, landing page, offline page, subscribe form, maintenance, mailchimp, gdpr, coming soon builder, coming soon status
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
+ Tested up to: 5.5
7
+ Stable tag: 2.18
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
21
 
22
  = Coming Soon Plugin Features =
23
 
24
+ * Check out <a href="https://comingsoonwp.com/themes/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=themes">150+ themes</a> that come with the PRO version, <a href="https://comingsoonwp.com/image-filters/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=instagram-filters">26+ Instagram filters</a> and <a href="https://comingsoonwp.com/content-animations/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=content-animations">47+ spectacular content animations</a> for Coming Soon Pages
25
  * Works with all WordPress themes and plugins
26
  * Completely customizable look and feel including background color, cover image, fonts, logo
27
  * Includes <a href="https://comingsoonwp.com/?utm_source=wordpressorg&utm_medium=content&utm_campaign=readme&utm_content=million_images">over a million premium images</a> in PRO version
82
 
83
  == Changelog ==
84
 
85
+ = 2.18 =
86
+ * 2020-08-20
87
+ * bug fixes
88
+
89
  = 2.17 =
90
  * 2020-01-08
91
  * more security fixes - curtesy of Chloe @ WordFence