Contact Form by Supsystic - Version 1.7.23

Version Description

Download this release

Release Info

Developer supsystic.com
Plugin Icon 128x128 Contact Form by Supsystic
Version 1.7.23
Comparing to
See all releases

Code changes from version 1.7.21 to 1.7.23

Files changed (40) hide show
  1. cfs.php +1 -1
  2. classes/Twig/Lexer.php +13 -13
  3. classes/Twig/Node.php +2 -2
  4. classes/frame.php +1 -1
  5. classes/helpers/SxGeo.php +5 -5
  6. config.php +1 -1
  7. css/acPromoStyle.css +420 -0
  8. css/supsystic-ui.css +3 -5
  9. js/acPromoScript.js +139 -0
  10. modules/adminmenu/mod.php +13 -14
  11. modules/forms/js/admin.forms.fields.js +5 -0
  12. modules/forms/views/tpl/formsEditFormFields.php +5 -5
  13. modules/options/views/tpl/optionsAdminPage.php +20 -15
  14. modules/supsystic_promo/controller.php +43 -5
  15. modules/supsystic_promo/img/256.png +0 -0
  16. modules/supsystic_promo/img/Backup_256.png +0 -0
  17. modules/supsystic_promo/img/Coming_Soon_256.png +0 -0
  18. modules/supsystic_promo/img/Contact_Form_256.png +0 -0
  19. modules/supsystic_promo/img/Data_Tables_256.png +0 -0
  20. modules/supsystic_promo/img/Digital_Publication_256.png +0 -0
  21. modules/supsystic_promo/img/Gallery_256.png +0 -0
  22. modules/supsystic_promo/img/Google_Maps_256.png +0 -0
  23. modules/supsystic_promo/img/Live_Chat_256.png +0 -0
  24. modules/supsystic_promo/img/Popup_256.png +0 -0
  25. modules/supsystic_promo/img/Pricing_Table_256.png +0 -0
  26. modules/supsystic_promo/img/Slider_256.png +0 -0
  27. modules/supsystic_promo/img/Social_Buttons_256.png +0 -0
  28. modules/supsystic_promo/img/icon-256x256.png +0 -0
  29. modules/supsystic_promo/img/kinsta_banner.png +0 -0
  30. modules/supsystic_promo/img/overview-01.png +0 -0
  31. modules/supsystic_promo/img/overview-02.png +0 -0
  32. modules/supsystic_promo/img/overview-03.png +0 -0
  33. modules/supsystic_promo/img/plugin-icon.png +0 -0
  34. modules/supsystic_promo/img/supsystic-logo-small.png +0 -0
  35. modules/supsystic_promo/mod.php +109 -109
  36. modules/supsystic_promo/views/supsystic_promo.php +39 -39
  37. modules/supsystic_promo/views/tpl/adminFooter.php +33 -21
  38. modules/supsystic_promo/views/tpl/overviewTabContent.php +133 -103
  39. modules/templates/mod.php +24 -1
  40. readme.txt +10 -2
cfs.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Contact Form by Supsystic
4
  * Description: Contact Form Builder with drag-and-drop editor to create responsive, mobile ready contact forms in a second. Custom fields and contact form templates
5
- * Version: 1.7.21
6
  * Author: supsystic.com
7
  * Author URI: https://supsystic.com
8
  * Text Domain: contact-form-by-supsystic
2
  /**
3
  * Plugin Name: Contact Form by Supsystic
4
  * Description: Contact Form Builder with drag-and-drop editor to create responsive, mobile ready contact forms in a second. Custom fields and contact form templates
5
+ * Version: 1.7.23
6
  * Author: supsystic.com
7
  * Author URI: https://supsystic.com
8
  * Text Domain: contact-form-by-supsystic
classes/Twig/Lexer.php CHANGED
@@ -173,11 +173,11 @@ class Twig_Lexer implements Twig_LexerInterface
173
 
174
  case $this->options['tag_block'][0]:
175
  // raw data?
176
- if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
177
  $this->moveCursor($match[0]);
178
  $this->lexRawData($match[1]);
179
  // {% line \d+ %}
180
- } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
181
  $this->moveCursor($match[0]);
182
  $this->lineno = (int) $match[1];
183
  } else {
@@ -197,7 +197,7 @@ class Twig_Lexer implements Twig_LexerInterface
197
 
198
  protected function lexBlock()
199
  {
200
- if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, null, $this->cursor)) {
201
  $this->pushToken(Twig_Token::BLOCK_END_TYPE);
202
  $this->moveCursor($match[0]);
203
  $this->popState();
@@ -208,7 +208,7 @@ class Twig_Lexer implements Twig_LexerInterface
208
 
209
  protected function lexVar()
210
  {
211
- if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {
212
  $this->pushToken(Twig_Token::VAR_END_TYPE);
213
  $this->moveCursor($match[0]);
214
  $this->popState();
@@ -220,7 +220,7 @@ class Twig_Lexer implements Twig_LexerInterface
220
  protected function lexExpression()
221
  {
222
  // whitespace
223
- if (preg_match('/\s+/A', $this->code, $match, null, $this->cursor)) {
224
  $this->moveCursor($match[0]);
225
 
226
  if ($this->cursor >= $this->end) {
@@ -229,17 +229,17 @@ class Twig_Lexer implements Twig_LexerInterface
229
  }
230
 
231
  // operators
232
- if (preg_match($this->regexes['operator'], $this->code, $match, null, $this->cursor)) {
233
  $this->pushToken(Twig_Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0]));
234
  $this->moveCursor($match[0]);
235
  }
236
  // names
237
- elseif (preg_match(self::REGEX_NAME, $this->code, $match, null, $this->cursor)) {
238
  $this->pushToken(Twig_Token::NAME_TYPE, $match[0]);
239
  $this->moveCursor($match[0]);
240
  }
241
  // numbers
242
- elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) {
243
  $number = (float) $match[0]; // floats
244
  if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) {
245
  $number = (int) $match[0]; // integers lower than the maximum
@@ -269,12 +269,12 @@ class Twig_Lexer implements Twig_LexerInterface
269
  ++$this->cursor;
270
  }
271
  // strings
272
- elseif (preg_match(self::REGEX_STRING, $this->code, $match, null, $this->cursor)) {
273
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)));
274
  $this->moveCursor($match[0]);
275
  }
276
  // opening double quoted string
277
- elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
278
  $this->brackets[] = array('"', $this->lineno);
279
  $this->pushState(self::STATE_STRING);
280
  $this->moveCursor($match[0]);
@@ -312,17 +312,17 @@ class Twig_Lexer implements Twig_LexerInterface
312
 
313
  protected function lexString()
314
  {
315
- if (preg_match($this->regexes['interpolation_start'], $this->code, $match, null, $this->cursor)) {
316
  $this->brackets[] = array($this->options['interpolation'][0], $this->lineno);
317
  $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE);
318
  $this->moveCursor($match[0]);
319
  $this->pushState(self::STATE_INTERPOLATION);
320
 
321
- } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) {
322
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0]));
323
  $this->moveCursor($match[0]);
324
 
325
- } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
326
  list($expect, $lineno) = array_pop($this->brackets);
327
  if ($this->code[$this->cursor] != '"') {
328
  throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename);
173
 
174
  case $this->options['tag_block'][0]:
175
  // raw data?
176
+ if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, 0, $this->cursor)) {
177
  $this->moveCursor($match[0]);
178
  $this->lexRawData($match[1]);
179
  // {% line \d+ %}
180
+ } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, 0, $this->cursor)) {
181
  $this->moveCursor($match[0]);
182
  $this->lineno = (int) $match[1];
183
  } else {
197
 
198
  protected function lexBlock()
199
  {
200
+ if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) {
201
  $this->pushToken(Twig_Token::BLOCK_END_TYPE);
202
  $this->moveCursor($match[0]);
203
  $this->popState();
208
 
209
  protected function lexVar()
210
  {
211
+ if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) {
212
  $this->pushToken(Twig_Token::VAR_END_TYPE);
213
  $this->moveCursor($match[0]);
214
  $this->popState();
220
  protected function lexExpression()
221
  {
222
  // whitespace
223
+ if (preg_match('/\s+/A', $this->code, $match, 0, $this->cursor)) {
224
  $this->moveCursor($match[0]);
225
 
226
  if ($this->cursor >= $this->end) {
229
  }
230
 
231
  // operators
232
+ if (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) {
233
  $this->pushToken(Twig_Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0]));
234
  $this->moveCursor($match[0]);
235
  }
236
  // names
237
+ elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) {
238
  $this->pushToken(Twig_Token::NAME_TYPE, $match[0]);
239
  $this->moveCursor($match[0]);
240
  }
241
  // numbers
242
+ elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $this->cursor)) {
243
  $number = (float) $match[0]; // floats
244
  if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) {
245
  $number = (int) $match[0]; // integers lower than the maximum
269
  ++$this->cursor;
270
  }
271
  // strings
272
+ elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) {
273
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)));
274
  $this->moveCursor($match[0]);
275
  }
276
  // opening double quoted string
277
+ elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
278
  $this->brackets[] = array('"', $this->lineno);
279
  $this->pushState(self::STATE_STRING);
280
  $this->moveCursor($match[0]);
312
 
313
  protected function lexString()
314
  {
315
+ if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) {
316
  $this->brackets[] = array($this->options['interpolation'][0], $this->lineno);
317
  $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE);
318
  $this->moveCursor($match[0]);
319
  $this->pushState(self::STATE_INTERPOLATION);
320
 
321
+ } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && strlen($match[0]) > 0) {
322
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0]));
323
  $this->moveCursor($match[0]);
324
 
325
+ } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
326
  list($expect, $lineno) = array_pop($this->brackets);
327
  if ($this->code[$this->cursor] != '"') {
328
  throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename);
classes/Twig/Node.php CHANGED
@@ -213,12 +213,12 @@ class Twig_Node implements Twig_NodeInterface
213
  {
214
  unset($this->nodes[$name]);
215
  }
216
-
217
  public function count()
218
  {
219
  return count($this->nodes);
220
  }
221
-
222
  public function getIterator()
223
  {
224
  return new ArrayIterator($this->nodes);
213
  {
214
  unset($this->nodes[$name]);
215
  }
216
+ #[\ReturnTypeWillChange]
217
  public function count()
218
  {
219
  return count($this->nodes);
220
  }
221
+ #[\ReturnTypeWillChange]
222
  public function getIterator()
223
  {
224
  return new ArrayIterator($this->nodes);
classes/frame.php CHANGED
@@ -489,7 +489,7 @@ class frameCfs {
489
  */
490
  public function isAdminPlugOptsPage() {
491
  $page = reqCfs::getVar('page');
492
- if(is_admin() && strpos($page, frameCfs::_()->getModule('adminmenu')->getMainSlug()) !== false)
493
  return true;
494
  return false;
495
  }
489
  */
490
  public function isAdminPlugOptsPage() {
491
  $page = reqCfs::getVar('page');
492
+ if(is_admin() && strpos((string)$page, frameCfs::_()->getModule('adminmenu')->getMainSlug()) !== false)
493
  return true;
494
  return false;
495
  }
classes/helpers/SxGeo.php CHANGED
@@ -213,7 +213,7 @@ class SxGeo {
213
  $pos = 0;
214
  foreach($pack AS $p){
215
  list($type, $name) = explode(':', $p);
216
- $type0 = $type{0};
217
  if($empty) {
218
  $unpacked[$name] = $type0 == 'b' || $type0 == 'c' ? '' : 0;
219
  continue;
@@ -237,15 +237,15 @@ class SxGeo {
237
  case 'T': $v = unpack('C', $val); break;
238
  case 's': $v = unpack('s', $val); break;
239
  case 'S': $v = unpack('S', $val); break;
240
- case 'm': $v = unpack('l', $val . (ord($val{2}) >> 7 ? "\xff" : "\0")); break;
241
  case 'M': $v = unpack('L', $val . "\0"); break;
242
  case 'i': $v = unpack('l', $val); break;
243
  case 'I': $v = unpack('L', $val); break;
244
  case 'f': $v = unpack('f', $val); break;
245
  case 'd': $v = unpack('d', $val); break;
246
 
247
- case 'n': $v = current(unpack('s', $val)) / pow(10, $type{1}); break;
248
- case 'N': $v = current(unpack('l', $val)) / pow(10, $type{1}); break;
249
 
250
  case 'c': $v = rtrim($val, ' '); break;
251
  case 'b': $v = $val; $l++; break;
@@ -308,4 +308,4 @@ class SxGeo {
308
  ),
309
  );
310
  }
311
- }
213
  $pos = 0;
214
  foreach($pack AS $p){
215
  list($type, $name) = explode(':', $p);
216
+ $type0 = $type[0];
217
  if($empty) {
218
  $unpacked[$name] = $type0 == 'b' || $type0 == 'c' ? '' : 0;
219
  continue;
237
  case 'T': $v = unpack('C', $val); break;
238
  case 's': $v = unpack('s', $val); break;
239
  case 'S': $v = unpack('S', $val); break;
240
+ case 'm': $v = unpack('l', $val . (ord($val[2]) >> 7 ? "\xff" : "\0")); break;
241
  case 'M': $v = unpack('L', $val . "\0"); break;
242
  case 'i': $v = unpack('l', $val); break;
243
  case 'I': $v = unpack('L', $val); break;
244
  case 'f': $v = unpack('f', $val); break;
245
  case 'd': $v = unpack('d', $val); break;
246
 
247
+ case 'n': $v = current(unpack('s', $val)) / pow(10, $type[1]); break;
248
+ case 'N': $v = current(unpack('l', $val)) / pow(10, $type[1]); break;
249
 
250
  case 'c': $v = rtrim($val, ' '); break;
251
  case 'b': $v = $val; $l++; break;
308
  ),
309
  );
310
  }
311
+ }
config.php CHANGED
@@ -49,7 +49,7 @@
49
  define('CFS_EOL', "\n");
50
 
51
  define('CFS_PLUGIN_INSTALLED', true);
52
- define('CFS_VERSION', '1.7.21');
53
  define('CFS_USER', 'user');
54
 
55
  define('CFS_CLASS_PREFIX', 'cfsc');
49
  define('CFS_EOL', "\n");
50
 
51
  define('CFS_PLUGIN_INSTALLED', true);
52
+ define('CFS_VERSION', '1.7.23');
53
  define('CFS_USER', 'user');
54
 
55
  define('CFS_CLASS_PREFIX', 'cfsc');
css/acPromoStyle.css ADDED
@@ -0,0 +1,420 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .supsystic-overview {
2
+ float: left;
3
+ background:white;
4
+ padding:10px;
5
+ }
6
+
7
+ .supsystic-overview .half-page-left {
8
+ float: left;
9
+ margin-left: 20px;
10
+ width: 50%;
11
+ border-right: 1px solid rgba(164, 170, 172, 0.28);
12
+ padding-right: 20px;
13
+ }
14
+
15
+ .supsystic-overview .half-page-right {
16
+ float: left;
17
+ margin:0 20px;
18
+ width: 40%;
19
+ }
20
+
21
+ .supsystic-overview .half-page > div {
22
+ border-bottom: 1px solid rgba(164, 170, 172, 0.28);
23
+ padding-bottom: 20px;
24
+ }
25
+
26
+ .supsystic-overview .half-page > div:last-child {
27
+ border-bottom: none;
28
+ }
29
+
30
+ .supsystic-overview .text-block {
31
+ margin: 10px 0;
32
+ }
33
+
34
+ .supsystic-overview .faq-title {
35
+ cursor: pointer;
36
+ }
37
+
38
+ .supsystic-overview .faq-title .description {
39
+ margin-top: 10px;
40
+ border: none !important;
41
+ }
42
+
43
+ .supsystic-overview .faq-title,
44
+ .supsystic-overview-news h3 {
45
+ padding: 10px 20px;
46
+ margin-bottom: 4px;
47
+ background-color: rgba(164, 170, 172, 0.28);
48
+ }
49
+
50
+ .supsystic-overview .supsystic-overview-news h3 {
51
+ line-height: 2;
52
+ }
53
+
54
+ .supsystic-overview .button {
55
+ float: right;
56
+ margin-top: 24px;
57
+ display: block;
58
+ }
59
+
60
+ .supsystic-overview .faq-list .button.button-primary.button-hero{
61
+ float: left;
62
+ margin-left: 10px;
63
+ }
64
+
65
+ .supsystic-overview .settings-title {
66
+ font-size: 14px;
67
+ font-weight: 600;
68
+ display: inline-block;
69
+ margin-right: 5px;
70
+ }
71
+
72
+ .supsystic-overview .supsystic-overview-news {
73
+ margin-right: 10px;
74
+ }
75
+
76
+ .supsystic-overview .supsystic-overview-news p,
77
+ .supsystic-overview .supsystic-overview-news ul {
78
+ white-space: normal !important;
79
+ margin:0 8px;
80
+ }
81
+
82
+ .supsystic-overview .supsystic-overview-news p {
83
+ font-size: 14px;
84
+ font-weight: 600;
85
+ }
86
+
87
+ .supsystic-overview .supsystic-overview-news ul {
88
+ list-style-type: disc;
89
+ }
90
+
91
+ .supsystic-overview .supsystic-overview-news li {
92
+ margin-left: 20px;
93
+ }
94
+
95
+ .supsystic-overview form {
96
+ border: none !important;
97
+ margin-top: 20px;
98
+ text-align: center;
99
+ }
100
+
101
+ .supsystic-overview form label {
102
+ float: left;
103
+ font-size: 18px;
104
+ font-weight: 800;
105
+ margin-top: 10px;
106
+ white-space: nowrap;
107
+ }
108
+
109
+ .supsystic-overview form input,
110
+ .supsystic-overview form select,
111
+ .supsystic-overview form textarea {
112
+ float: left;
113
+ margin-left: 50px;
114
+ width: calc(100% - 50px);
115
+ }
116
+
117
+ #contact-form-dialog p {
118
+ font-size: 15px;
119
+ }
120
+ #contact-form-dialog a {
121
+ color: #4ae8ea;
122
+ }
123
+ #contact-form-dialog a:focus {
124
+ outline: none;
125
+ }
126
+
127
+ .supsystic-overview .half-page > div {
128
+ border-bottom:0px;
129
+ padding-bottom:inherit;
130
+ }
131
+ .overview-section {
132
+ display:none;
133
+ }
134
+ .overview-section-btn {
135
+ list-style:square;
136
+ cursor:pointer;
137
+ margin-left:20px;
138
+ }
139
+ .overview-section-btn:hover {
140
+ color: #4ae8ea;
141
+ }
142
+ .border-wrapper {
143
+ display:block;
144
+ position:relative;
145
+ border:1px solid rgba(164, 170, 172, 0.28) !important;
146
+ padding:30px;
147
+ padding-top:0px;
148
+ margin-bottom:20px;
149
+ border-left: 3px solid #4ae8ea !important;
150
+ }
151
+ .border-wrapper .button-hero {
152
+ margin-bottom:30px;
153
+ line-height:auto !important;
154
+ padding:0px 10px !important;
155
+ margin:10px 4px !important;
156
+ }
157
+ .overview-section-btn-active {
158
+ color: #4ae8ea;
159
+ font-weight:bold;
160
+ }
161
+ .overview-contact-form form {
162
+ margin:0px !important;
163
+ padding:0px !important;
164
+ }
165
+ .overview-contact-form input,
166
+ .overview-contact-form select,
167
+ .overview-contact-form textarea {
168
+ display:block;
169
+ position:relative;
170
+ width:100%;
171
+ max-width:100% !important;
172
+ background-color: #f6f7f7;
173
+ color: #252728;
174
+ border: 1px solid #dfe4e4;
175
+ outline:0px;
176
+ }
177
+ .overview-contact-form #form-settings {
178
+ height:auto;
179
+ }
180
+ .overview-section-btn a {
181
+ text-decoration:none;
182
+ color: #3c434a !important;
183
+ }
184
+ .overview-section-btn a:hover {
185
+ color: #4ae8ea !important;
186
+ }
187
+ .overview-section h3 {
188
+ border-bottom:1px solid rgba(164, 170, 172, 0.28) !important;
189
+ padding-bottom:.5em;
190
+ margin-bottom:.5em;
191
+ }
192
+ .contact-info-section {
193
+ border: 1px solid rgba(164, 170, 172, 0.28) !important;
194
+ padding: 5px;
195
+ }
196
+ .contact-info-section p {
197
+ font-size:12px;
198
+ white-space: inherit;
199
+ line-height: 18px;
200
+ }
201
+ .contact-info-section ul {
202
+ margin:0px;
203
+ }
204
+ .contact-info-section ul li {
205
+ padding-left:5px;
206
+ line-height: 18px;
207
+ margin:0px;
208
+ padding:0px;
209
+ }
210
+ .contact-info-section {
211
+ margin-bottom:20px;
212
+ }
213
+ .overview-section-btn sup {
214
+ font-size:10px !important;
215
+ line-height:0px;
216
+ }
217
+ .plugin-title {
218
+ display: flex;
219
+ position: relative;
220
+ flex-direction: row;
221
+ align-content: center;
222
+ flex-wrap: nowrap;
223
+ align-items: center;
224
+ font-size:24px;
225
+ color:#313846;
226
+ font-weight:bold;
227
+ margin-bottom:10px;
228
+ }
229
+ .plugin-title img {
230
+ padding-right:15px;
231
+ }
232
+ .plugin-description {
233
+ margin-bottom:20px;
234
+ }
235
+ .supsystic-overview-flex {
236
+ display: flex;
237
+ position: relative;
238
+ flex-direction: row;
239
+ flex-wrap: nowrap;
240
+ align-content: center;
241
+ align-items: stretch;
242
+ justify-content: space-between;
243
+ }
244
+ .half-page {
245
+ display:inline-block;
246
+ position:relative;
247
+ width:49% !important;
248
+ float:inherit !important;
249
+ margin:0px !important;
250
+ padding:0px !important;
251
+ border:0px !important;
252
+ }
253
+ .full-page {
254
+ width:98%;
255
+ }
256
+ .overview-supsystic-img {
257
+ max-width:770px;
258
+ width:100%;
259
+ }
260
+ @media (max-width:1100px) {
261
+ .supsystic-overview-flex {
262
+ flex-direction: column;
263
+ }
264
+ .half-page {
265
+ width: 100% !important;
266
+ }
267
+ .full-page {
268
+ width:100%;
269
+ }
270
+ }
271
+
272
+ .supsysticOverviewACTitle {
273
+ background:#2a3545;
274
+ color:white;
275
+ font-size:14px;
276
+ padding:10px 0px;
277
+ text-align:center;
278
+ margin-bottom:10px;
279
+ width:100%;
280
+ }
281
+ .supsysticOverviewACForm input {
282
+ width:94%;
283
+ text-align:center;
284
+ }
285
+ .supsysticOverviewACForm button, .supsysticOverviewACBtn {
286
+ display:block;
287
+ position:relative;
288
+ width:94%;
289
+ margin:0px;
290
+ padding:0px;
291
+ text-align:center;
292
+ margin-top:10px !important;
293
+ }
294
+ .supsysticOverviewACFormOverlay {
295
+ display:none;
296
+ position:absolute;
297
+ left:0px;
298
+ top:0px;
299
+ width:100%;
300
+ height:100%;
301
+ background: rgb(223 223 223 / 80%);
302
+ z-index:99;
303
+ }
304
+ #overview-ac-form {
305
+ position: relative;
306
+ display: flex;
307
+ flex-direction: column;
308
+ flex-wrap: nowrap;
309
+ align-content: center;
310
+ align-items: center;
311
+ justify-content: flex-start;
312
+ background:white;
313
+ box-shadow: 0px 3px 9px 0px #919191cf;
314
+ margin:30px auto;
315
+ width: 100%;
316
+ max-width: 300px;
317
+ padding-bottom:20px;
318
+ }
319
+ .supsystic-footer-wrapper {
320
+ display: flex;
321
+ position: relative;
322
+ background: #263546;
323
+ color: white;
324
+ padding: 10px;
325
+ flex-direction: row;
326
+ flex-wrap: nowrap;
327
+ align-content: center;
328
+ justify-content: space-between;
329
+ align-items: center;
330
+ margin-left:75px;
331
+ }
332
+ .supsystic-panel {
333
+ margin-bottom:0px;
334
+ }
335
+ .supsystic-breadcrumbs {
336
+ background: #263546;
337
+ color: white;
338
+ margin-left: 75px;
339
+ padding: 10px;
340
+ }
341
+ .supsystic-breadcrumbs * {
342
+ color: white !important;
343
+ }
344
+ .ui-dialog-titlebar-close {
345
+ display:none;
346
+ }
347
+ .supsysticOverviewACFormNotification,
348
+ .required-notification {
349
+ margin-top:10px;
350
+ }
351
+ .supsysticOverviewACClose {
352
+ display:inline-block;
353
+ position:absolute;
354
+ right:-7.5px;
355
+ top:-7.5px;
356
+ background:#4ae8ea !important;
357
+ border-radius:50%;
358
+ text-align:center;
359
+ font-size:18px;
360
+ width:21px;
361
+ height:21px;
362
+ cursor:pointer;
363
+ z-index:99;
364
+ text-shadow: 0px 1px 2px black;
365
+ }
366
+ #form-settings .contact-form-table {
367
+ width:100%;
368
+ }
369
+ .wp-core-ui .supsysticOverviewACFormOverlay .button.button-hero,
370
+ div.supsysticOverviewACFormOverlay button.button.button-hero,
371
+ .supsysticOverviewACFormOverlay .button {
372
+ font-size: 15px;
373
+ min-height: 35px;
374
+ -webkit-border-radius: 0 !important;
375
+ border-radius: 0 !important;
376
+ color: #28282a;
377
+ background-color: transparent;
378
+ -webkit-box-shadow: none;
379
+ box-shadow: none;
380
+ border: 1px solid #000 !important;
381
+ }
382
+
383
+ .supsysticOverviewACFormOverlay .button:hover {
384
+ background: #4ae8ea !important;
385
+ border-color: #4ae8ea !important;
386
+ }
387
+ .supsysticOverviewACForm input {
388
+ background-color: #f6f7f7;
389
+ color: #252728;
390
+ border-left: none;
391
+ border-right: none;
392
+ border-bottom: none;
393
+ border-top: 1px solid #dfe4e4;
394
+ padding: 7px 5px;
395
+ line-height: 1.3em;
396
+ }
397
+ .supsystic-breadcrumbs .breadcrumbs-separator {
398
+ filter: invert(1);
399
+ }
400
+ .supsystic-plugin .supsystic-content {
401
+ width:100% !important;
402
+ }
403
+ .supsystic-overview .button {
404
+ min-height:inherit !important;
405
+ }
406
+ .supsystic-overview .supsystic-plugin a {
407
+ color:#3c434a !important;
408
+ }
409
+ #supsystic-breadcrumbs {
410
+ background:#263546 !important;
411
+ }
412
+ #supsystic-breadcrumbs .chosen-container-single .chosen-single span {
413
+ color: black !important;
414
+ }
415
+ #supsystic-breadcrumbs .button-primary {
416
+ color:black !important;
417
+ }
418
+ #supsystic-breadcrumbs .button-primary i {
419
+ color:black !important;
420
+ }
css/supsystic-ui.css CHANGED
@@ -293,10 +293,10 @@ input[type="color"] {
293
  /*Breadcrumbs*/
294
  .supsystic-breadcrumbs {
295
  /*border-top: 1px solid rgba(12,12,12,0.03);*/
296
- background-color: transparent;
297
  /* margin-left: 75px; */
298
- padding: 5px 0px;
299
- padding-left: 75px;
300
  /*-moz-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
301
  -webkit-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
302
  box-shadow: 0 3px 0 rgba(12,12,12,0.03);*/
@@ -325,7 +325,6 @@ input[type="color"] {
325
  -webkit-border-radius: 3px;
326
  border-radius: 3px;*/
327
  padding: 10px 10px 10px 40px;
328
- margin-bottom: 20px;
329
  position: relative;
330
  /*-moz-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
331
  -webkit-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
@@ -706,7 +705,6 @@ input[type="color"] {
706
  border-radius: 0px !important;
707
  color: #000 !important;
708
  font-size: 13px !important;
709
- margin: 0 0 10px !important;
710
  padding: 9.5px !important;
711
  font-family: monospace !important;
712
  cursor: pointer;
293
  /*Breadcrumbs*/
294
  .supsystic-breadcrumbs {
295
  /*border-top: 1px solid rgba(12,12,12,0.03);*/
296
+ /* background-color: transparent;
297
  /* margin-left: 75px; */
298
+ /* padding: 5px 0px;
299
+ padding-left: 75px; */
300
  /*-moz-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
301
  -webkit-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
302
  box-shadow: 0 3px 0 rgba(12,12,12,0.03);*/
325
  -webkit-border-radius: 3px;
326
  border-radius: 3px;*/
327
  padding: 10px 10px 10px 40px;
 
328
  position: relative;
329
  /*-moz-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
330
  -webkit-box-shadow: 0 3px 0 rgba(12,12,12,0.03);
705
  border-radius: 0px !important;
706
  color: #000 !important;
707
  font-size: 13px !important;
 
708
  padding: 9.5px !important;
709
  font-family: monospace !important;
710
  cursor: pointer;
js/acPromoScript.js ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function() {
2
+
3
+ var $userMail = jQuery('.supsysticOverviewACForm [name="email"]'),
4
+ $userName = jQuery('.supsysticOverviewACForm [name="username"]'),
5
+ $dialog = jQuery('#supsysticOverviewACFormDialog');
6
+
7
+ function sendSubscribeMail() {
8
+ var defaultIconClass = jQuery('#subscribe-btn').find('i').attr('class');
9
+ jQuery('#subscribe-btn').find('i').attr('class', 'fa fa-spinner fa-spin');
10
+ jQuery('#subscribe-btn').attr('disabled', true);
11
+
12
+ data = {};
13
+ jQuery.each(jQuery('#overview-ac-form').serializeArray(), function(index, obj) {
14
+ data[obj.name] = obj.value;
15
+ });
16
+
17
+ jQuery.ajax({
18
+ url: ajaxurl,
19
+ type: 'post',
20
+ data: {
21
+ 'pl': 'cfs',
22
+ 'reqType': 'ajax',
23
+ 'mod': 'supsystic_promo',
24
+ 'action': 'sendSubscribeMail',
25
+ 'data': data
26
+ },
27
+ success: function(response) {
28
+ jQuery('#subscribe-btn').find('i').attr('class', defaultIconClass);
29
+ jQuery('#subscribe-btn').attr('disabled', false);
30
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
31
+
32
+ jQuery('#supsysticOverviewACFormDialog').find('.message').text('Thank You For Subscribing!');
33
+ jQuery('#supsysticOverviewACFormDialog').dialog({
34
+ autoOpen: true,
35
+ resizable: false,
36
+ width: 500,
37
+ height: 280,
38
+ modal: true,
39
+ buttons: {
40
+ Close: function() {
41
+ jQuery('#supsysticOverviewACFormDialog').find('.on-error').hide();
42
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
43
+ jQuery(this).dialog("close");
44
+ }
45
+ }
46
+ });
47
+
48
+ },
49
+ fail: function(err) {
50
+ jQuery('#supsysticOverviewACFormDialog').find('.on-error').show();
51
+ }
52
+ });
53
+ }
54
+
55
+ jQuery('#subscribe-btn').on('click', function(e) {
56
+ e.preventDefault();
57
+ if (!$userMail.val() || !$userName.val()) {
58
+ jQuery('.supsysticOverviewACFormNotification').show();
59
+ return;
60
+ }
61
+ jQuery('.supsysticOverviewACFormNotification').hide();
62
+ jQuery('#subscribe-btn, .supsysticOverviewACBtnRemind, .supsysticOverviewACBtnDisable').attr('disabled', 'disabled').prop('disabled', 'disabled');
63
+ sendSubscribeMail();
64
+ });
65
+
66
+ function sendSubscribeRemind() {
67
+ var defaultIconClass = jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class');
68
+ jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class', 'fa fa-spinner fa-spin');
69
+ jQuery('.supsysticOverviewACBtnRemind').attr('disabled', true);
70
+ var form_data = jQuery('#overview-ac-form').serializeArray();
71
+ var nonce = jQuery("[name='nonce']").val();
72
+ jQuery.ajax({
73
+ url: ajaxurl,
74
+ type: 'post',
75
+ data: {
76
+ 'pl': 'cfs',
77
+ 'reqType': 'ajax',
78
+ 'mod': 'supsystic_promo',
79
+ 'action': 'sendSubscribeRemind'
80
+ },
81
+ success: function(response) {
82
+ jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class', defaultIconClass);
83
+ jQuery('.supsysticOverviewACBtnRemind').attr('disabled', false);
84
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
85
+ },
86
+ fail: function(err) {}
87
+ });
88
+ }
89
+ jQuery('.supsysticOverviewACBtnRemind').on('click', function(e) {
90
+ e.preventDefault();
91
+ sendSubscribeRemind();
92
+ });
93
+
94
+ function sendSubscribeDisable() {
95
+ var defaultIconClass = jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class');
96
+ jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class', 'fa fa-spinner fa-spin');
97
+ jQuery('.supsysticOverviewACBtnDisable').attr('disabled', true);
98
+ var form_data = jQuery('#overview-ac-form').serializeArray();
99
+ var nonce = jQuery("[name='nonce']").val();
100
+ jQuery.ajax({
101
+ url: ajaxurl,
102
+ type: 'post',
103
+ data: {
104
+ 'pl': 'cfs',
105
+ 'reqType': 'ajax',
106
+ 'mod': 'supsystic_promo',
107
+ 'action': 'sendSubscribeDisable'
108
+ },
109
+ success: function(response) {
110
+ jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class', defaultIconClass);
111
+ jQuery('.supsysticOverviewACBtnDisable').attr('disabled', false);
112
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
113
+ },
114
+ fail: function(err) {}
115
+ });
116
+ }
117
+ jQuery('.supsysticOverviewACBtnDisable').on('click', function(e) {
118
+ e.preventDefault();
119
+ sendSubscribeDisable();
120
+ });
121
+
122
+ jQuery('.overview-section-btn').on('click', function() {
123
+ jQuery(".overview-section").hide();
124
+ jQuery(".overview-section[data-section='" + jQuery(this).data("section") + "']").show();
125
+ jQuery('.overview-section-btn-active').removeClass('overview-section-btn-active');
126
+ jQuery(this).addClass('overview-section-btn-active');
127
+ });
128
+ jQuery('.supsysticOverviewACBtnDisable, .supsysticOverviewACClose, .supsysticOverviewACBtnRemind').on('click', function() {
129
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
130
+ });
131
+ jQuery('.overview-section-btn').eq(0).trigger('click');
132
+
133
+ if (!CFS_DATA['cfsAcShow']) {
134
+ jQuery('.supsysticOverviewACFormOverlay').hide();
135
+ jQuery('.supsysticOverviewACFormOverlay').remove();
136
+ } else {
137
+ jQuery('.supsysticOverviewACFormOverlay').show();
138
+ }
139
+ });
modules/adminmenu/mod.php CHANGED
@@ -6,24 +6,24 @@ class adminmenuCfs extends moduleCfs {
6
  parent::init();
7
  add_action('admin_menu', array($this, 'initMenu'), 9);
8
  $plugName = plugin_basename(CFS_DIR. CFS_MAIN_FILE);
9
- add_filter('plugin_action_links_'. $plugName, array($this, 'addSettingsLinkForPlug') );
10
  }
11
- public function addSettingsLinkForPlug($links) {
12
- $mainLink = 'http://supsystic.com/';
13
- $twitterStatus = sprintf(__('Cool WordPress plugins from supsystic.com developers. I tried %s - and this was what I need! #supsystic.com', CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);
14
- array_unshift($links, '<a href="'. $this->getMainLink(). '">'. __('Settings', CFS_LANG_CODE). '</a>');
15
- array_push($links, '<a title="'. __('More plugins for your WordPress site here!', CFS_LANG_CODE). '" href="'. $mainLink. '" target="_blank">supsystic.com</a>');
16
- array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://www.facebook.com/sharer/sharer.php?u='. urlencode($mainLink). '" target="_blank" class="dashicons-before dashicons-facebook-alt"></a>');
17
- array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://twitter.com/home?status='. urlencode($twitterStatus). '" target="_blank" class="dashicons-before dashicons-twitter"></a>');
18
- array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://plus.google.com/share?url='. urlencode($mainLink). '" target="_blank" class="dashicons-before dashicons-googleplus"></a>');
19
- return $links;
20
- }
21
  public function initMenu() {
22
  $mainCap = $this->getMainCap();
23
  $mainSlug = dispatcherCfs::applyFilters('adminMenuMainSlug', $this->_mainSlug);
24
  $mainMenuPageOptions = array(
25
- 'page_title' => CFS_WP_PLUGIN_NAME,
26
- 'menu_title' => CFS_WP_PLUGIN_NAME,
27
  'capability' => $mainCap,
28
  'menu_slug' => $mainSlug,
29
  'function' => array(frameCfs::_()->getModule('options'), 'getAdminPage'));
@@ -57,4 +57,3 @@ class adminmenuCfs extends moduleCfs {
57
  return dispatcherCfs::applyFilters('adminMenuAccessCap', $this->_mainCap);
58
  }
59
  }
60
-
6
  parent::init();
7
  add_action('admin_menu', array($this, 'initMenu'), 9);
8
  $plugName = plugin_basename(CFS_DIR. CFS_MAIN_FILE);
9
+ // add_filter('plugin_action_links_'. $plugName, array($this, 'addSettingsLinkForPlug') );
10
  }
11
+ // public function addSettingsLinkForPlug($links) {
12
+ // $mainLink = 'http://supsystic.com/';
13
+ // $twitterStatus = sprintf(__('Cool WordPress plugins from supsystic.com developers. I tried %s - and this was what I need! #supsystic.com', CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);
14
+ // array_unshift($links, '<a href="'. $this->getMainLink(). '">'. __('Settings', CFS_LANG_CODE). '</a>');
15
+ // array_push($links, '<a title="'. __('More plugins for your WordPress site here!', CFS_LANG_CODE). '" href="'. $mainLink. '" target="_blank">supsystic.com</a>');
16
+ // array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://www.facebook.com/sharer/sharer.php?u='. urlencode($mainLink). '" target="_blank" class="dashicons-before dashicons-facebook-alt"></a>');
17
+ // array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://twitter.com/home?status='. urlencode($twitterStatus). '" target="_blank" class="dashicons-before dashicons-twitter"></a>');
18
+ // array_push($links, '<a title="'. __('Spread the word!', CFS_LANG_CODE). '" href="https://plus.google.com/share?url='. urlencode($mainLink). '" target="_blank" class="dashicons-before dashicons-googleplus"></a>');
19
+ // return $links;
20
+ // }
21
  public function initMenu() {
22
  $mainCap = $this->getMainCap();
23
  $mainSlug = dispatcherCfs::applyFilters('adminMenuMainSlug', $this->_mainSlug);
24
  $mainMenuPageOptions = array(
25
+ 'page_title' => CFS_WP_PLUGIN_NAME,
26
+ 'menu_title' => CFS_WP_PLUGIN_NAME,
27
  'capability' => $mainCap,
28
  'menu_slug' => $mainSlug,
29
  'function' => array(frameCfs::_()->getModule('options'), 'getAdminPage'));
57
  return dispatcherCfs::applyFilters('adminMenuAccessCap', $this->_mainCap);
58
  }
59
  }
 
modules/forms/js/admin.forms.fields.js CHANGED
@@ -131,6 +131,11 @@ var g_cfsFieldsFrame = {
131
  }
132
  }
133
  });
 
 
 
 
 
134
  // In edit window - options will be separated into several tabs
135
  this._$editWnd.wpTabs({
136
  uniqId: 'cfsFieldsEditWnd'
131
  }
132
  }
133
  });
134
+ jQuery('document').ready(function() {
135
+ // setTimeout(function() {
136
+ jQuery('#cfsFormFieldGoogleMapsWnd').dialog('close');
137
+ // }, 100);
138
+ } );
139
  // In edit window - options will be separated into several tabs
140
  this._$editWnd.wpTabs({
141
  uniqId: 'cfsFieldsEditWnd'
modules/forms/views/tpl/formsEditFormFields.php CHANGED
@@ -62,13 +62,13 @@
62
  <?php echo htmlCfs::hidden('params[fields][][name]')?>
63
  <?php echo htmlCfs::hidden('params[fields][][bs_class_id]')?>
64
  <?php echo htmlCfs::hidden('params[fields][][display]')?>
65
-
66
  <?php echo htmlCfs::hidden('params[fields][][min_size]')?>
67
  <?php echo htmlCfs::hidden('params[fields][][max_size]')?>
68
  <?php echo htmlCfs::hidden('params[fields][][add_classes]')?>
69
  <?php echo htmlCfs::hidden('params[fields][][add_styles]')?>
70
  <?php echo htmlCfs::hidden('params[fields][][add_attr]')?>
71
-
72
  <?php echo htmlCfs::hidden('params[fields][][vn_only_number]')?>
73
  <?php echo htmlCfs::hidden('params[fields][][vn_only_letters]')?>
74
  <?php echo htmlCfs::hidden('params[fields][][vn_pattern]')*/?>
@@ -77,7 +77,7 @@
77
  <div class="cfsFieldsAddWndElementsShell">
78
  <?php foreach($this->fieldTypes as $ftCode => $ft) { ?>
79
  <?php $pro = (isset($ft['pro']) && !$this->isPro && !empty($ft['pro'])) ? $ft['pro'] : false;?>
80
- <div class="cfsFieldWndElement button"
81
  data-html="<?php echo $ftCode;?>"
82
  <?php if($pro) { ?>
83
  data-pro="1"
@@ -188,7 +188,7 @@
188
  <?php echo htmlCfs::selectbox('value_preset', array(
189
  'options' => array(
190
  '' => __('or select preset', CFS_LANG_CODE),
191
- 'user_ip' => __('User IP', CFS_LANG_CODE),
192
  'user_country_code' => __('User Country code', CFS_LANG_CODE),
193
  'user_country_label' => __('User Country name', CFS_LANG_CODE),
194
  'page_title' => __('Page Title', CFS_LANG_CODE),
@@ -419,7 +419,7 @@
419
  ))?>
420
  </td>
421
  </tr>
422
-
423
  </table>
424
  </div>
425
  <div id="cfsFormFieldAdvancedSettings" class="cfsTabContent">
62
  <?php echo htmlCfs::hidden('params[fields][][name]')?>
63
  <?php echo htmlCfs::hidden('params[fields][][bs_class_id]')?>
64
  <?php echo htmlCfs::hidden('params[fields][][display]')?>
65
+
66
  <?php echo htmlCfs::hidden('params[fields][][min_size]')?>
67
  <?php echo htmlCfs::hidden('params[fields][][max_size]')?>
68
  <?php echo htmlCfs::hidden('params[fields][][add_classes]')?>
69
  <?php echo htmlCfs::hidden('params[fields][][add_styles]')?>
70
  <?php echo htmlCfs::hidden('params[fields][][add_attr]')?>
71
+
72
  <?php echo htmlCfs::hidden('params[fields][][vn_only_number]')?>
73
  <?php echo htmlCfs::hidden('params[fields][][vn_only_letters]')?>
74
  <?php echo htmlCfs::hidden('params[fields][][vn_pattern]')*/?>
77
  <div class="cfsFieldsAddWndElementsShell">
78
  <?php foreach($this->fieldTypes as $ftCode => $ft) { ?>
79
  <?php $pro = (isset($ft['pro']) && !$this->isPro && !empty($ft['pro'])) ? $ft['pro'] : false;?>
80
+ <div class="cfsFieldWndElement button"
81
  data-html="<?php echo $ftCode;?>"
82
  <?php if($pro) { ?>
83
  data-pro="1"
188
  <?php echo htmlCfs::selectbox('value_preset', array(
189
  'options' => array(
190
  '' => __('or select preset', CFS_LANG_CODE),
191
+ 'user_ip' => __('User IP', CFS_LANG_CODE),
192
  'user_country_code' => __('User Country code', CFS_LANG_CODE),
193
  'user_country_label' => __('User Country name', CFS_LANG_CODE),
194
  'page_title' => __('Page Title', CFS_LANG_CODE),
419
  ))?>
420
  </td>
421
  </tr>
422
+
423
  </table>
424
  </div>
425
  <div id="cfsFormFieldAdvancedSettings" class="cfsTabContent">
modules/options/views/tpl/optionsAdminPage.php CHANGED
@@ -7,21 +7,21 @@
7
  <section class="supsystic-content">
8
  <nav class="supsystic-navigation supsystic-sticky <?php dispatcherCfs::doAction('adminMainNavClassAdd')?>">
9
  <ul>
10
- <?php foreach($this->tabs as $tabKey => $tab) { ?>
11
- <?php if(isset($tab['hidden']) && $tab['hidden']) continue;?>
12
- <li class="supsystic-tab-<?php echo $tabKey;?> <?php echo (($this->activeTab == $tabKey || in_array($tabKey, $this->activeParentTabs)) ? 'active' : '')?>">
13
- <a href="<?php echo $tab['url']?>" title="<?php echo $tab['label']?>">
14
- <?php if(isset($tab['fa_icon'])) { ?>
15
- <i class="fa <?php echo $tab['fa_icon']?>"></i>
16
- <?php } elseif(isset($tab['wp_icon'])) { ?>
17
- <i class="dashicons-before <?php echo $tab['wp_icon']?>"></i>
18
- <?php } elseif(isset($tab['icon'])) { ?>
19
- <i class="<?php echo $tab['icon']?>"></i>
20
- <?php }?>
21
- <span class="sup-tab-label"><?php echo $tab['label']?></span>
22
- </a>
23
- </li>
24
- <?php }?>
25
  </ul>
26
  </nav>
27
  <div class="supsystic-container supsystic-<?php echo $this->activeTab?>">
@@ -29,6 +29,11 @@
29
  <?php echo $this->content?>
30
  <div class="clear"></div>
31
  </div>
 
 
 
 
 
32
  </section>
33
  </div>
34
  </div>
7
  <section class="supsystic-content">
8
  <nav class="supsystic-navigation supsystic-sticky <?php dispatcherCfs::doAction('adminMainNavClassAdd')?>">
9
  <ul>
10
+ <?php foreach($this->tabs as $tabKey => $tab) { ?>
11
+ <?php if(isset($tab['hidden']) && $tab['hidden']) continue;?>
12
+ <li class="supsystic-tab-<?php echo $tabKey;?> <?php echo (($this->activeTab == $tabKey || in_array($tabKey, $this->activeParentTabs)) ? 'active' : '')?>">
13
+ <a href="<?php echo $tab['url']?>" title="<?php echo $tab['label']?>">
14
+ <?php if(isset($tab['fa_icon'])) { ?>
15
+ <i class="fa <?php echo $tab['fa_icon']?>"></i>
16
+ <?php } elseif(isset($tab['wp_icon'])) { ?>
17
+ <i class="dashicons-before <?php echo $tab['wp_icon']?>"></i>
18
+ <?php } elseif(isset($tab['icon'])) { ?>
19
+ <i class="<?php echo $tab['icon']?>"></i>
20
+ <?php }?>
21
+ <span class="sup-tab-label"><?php echo $tab['label']?></span>
22
+ </a>
23
+ </li>
24
+ <?php }?>
25
  </ul>
26
  </nav>
27
  <div class="supsystic-container supsystic-<?php echo $this->activeTab?>">
29
  <?php echo $this->content?>
30
  <div class="clear"></div>
31
  </div>
32
+ <div class="supsystic-footer-wrapper">
33
+ <div class="supsystic-footer-add-review">Add your <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/contact-form-by-supsystic?filter=5#postform">★★★★★</a> on wordpress.org</div>
34
+ <a href="https://supsystic.com/" target="_blank"><img src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/supsystic-logo-small.png"></a>
35
+ <div class="supsystic-footer-plugin-version">Contact Form by Supsystic Version: <?php echo CFS_VERSION?></div>
36
+ </div>
37
  </section>
38
  </div>
39
  </div>
modules/supsystic_promo/controller.php CHANGED
@@ -15,6 +15,45 @@ class supsystic_promoControllerCfs extends controllerCfs {
15
  }
16
  redirectCfs($originalPage);
17
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  public function sendContact() {
19
  $res = new responseCfs();
20
  $time = time();
@@ -41,7 +80,7 @@ class supsystic_promoControllerCfs extends controllerCfs {
41
  }
42
  break;
43
  case 'email':
44
- if(!is_email($data[ $fName ]))
45
  $error = __('Please enter valid email address', CFS_LANG_CODE);
46
  break;
47
  }
@@ -65,7 +104,7 @@ class supsystic_promoControllerCfs extends controllerCfs {
65
  } else {
66
  $res->pushError( frameCfs::_()->getModule('mail')->getMailErrors() );
67
  }
68
-
69
  }
70
  $res->ajaxExec();
71
  }
@@ -124,9 +163,8 @@ class supsystic_promoControllerCfs extends controllerCfs {
124
  public function getPermissions() {
125
  return array(
126
  CFS_USERLEVELS => array(
127
- CFS_ADMIN => array('welcomePageSaveInfo', 'sendContact', 'addNoticeAction',
128
- 'addStep', 'closeTour', 'addTourFinish')
129
  ),
130
  );
131
  }
132
- }
15
  }
16
  redirectCfs($originalPage);
17
  }
18
+ public function sendSubscribeMail()
19
+ {
20
+ $res = new responseCfs();
21
+ $data = reqCfs::get('post');
22
+ $apiUrl = 'https://supsystic.com/wp-admin/admin-ajax.php';
23
+ $reqUrl = $apiUrl . '?action=ac_get_plugin_installed';
24
+ $mail = $data['data'];
25
+ $isPro = !empty($this->getModule('suspsystic_promo')->isPro()) ? true : false;
26
+ $data = array(
27
+ 'body' => array(
28
+ 'key' => 'kJ#f3(FjkF9fasd124t5t589u9d4389r3r3R#2asdas3(#R03r#(r#t-4t5t589u9d4389r3r3R#$%lfdj',
29
+ 'user_name' => $mail['username'],
30
+ 'user_email' => $mail['email'],
31
+ 'site_url' => get_bloginfo('wpurl'),
32
+ 'site_name' => get_bloginfo('name'),
33
+ 'plugin_code' => 'cfs',
34
+ 'is_pro' => $isPro,
35
+ ),
36
+ );
37
+ $response = wp_remote_post($reqUrl, $data);
38
+ if (is_wp_error($response)) {
39
+ $res->pushError( 'Some errors' );
40
+ } else {
41
+ update_option('cfs_ac_subscribe', true);
42
+ }
43
+ $res->ajaxExec();
44
+ }
45
+ public function sendSubscribeRemind()
46
+ {
47
+ $res = new responseCfs();
48
+ update_option('cfs_ac_remind', date("Y-m-d h:i:s", time() + 86400));
49
+ $res->ajaxExec();
50
+ }
51
+ public function sendSubscribeDisable()
52
+ {
53
+ $res = new responseCfs();
54
+ update_option('cfs_ac_disabled', true);
55
+ $res->ajaxExec();
56
+ }
57
  public function sendContact() {
58
  $res = new responseCfs();
59
  $time = time();
80
  }
81
  break;
82
  case 'email':
83
+ if(!is_email($data[ $fName ]))
84
  $error = __('Please enter valid email address', CFS_LANG_CODE);
85
  break;
86
  }
104
  } else {
105
  $res->pushError( frameCfs::_()->getModule('mail')->getMailErrors() );
106
  }
107
+
108
  }
109
  $res->ajaxExec();
110
  }
163
  public function getPermissions() {
164
  return array(
165
  CFS_USERLEVELS => array(
166
+ CFS_ADMIN => array('welcomePageSaveInfo', 'sendContact', 'addNoticeAction', 'addStep', 'closeTour', 'addTourFinish', 'sendSubscribeMail', 'sendSubscribeRemind', 'sendSubscribeDisable')
 
167
  ),
168
  );
169
  }
170
+ }
modules/supsystic_promo/img/256.png DELETED
Binary file
modules/supsystic_promo/img/Backup_256.png DELETED
Binary file
modules/supsystic_promo/img/Coming_Soon_256.png DELETED
Binary file
modules/supsystic_promo/img/Contact_Form_256.png DELETED
Binary file
modules/supsystic_promo/img/Data_Tables_256.png DELETED
Binary file
modules/supsystic_promo/img/Digital_Publication_256.png DELETED
Binary file
modules/supsystic_promo/img/Gallery_256.png DELETED
Binary file
modules/supsystic_promo/img/Google_Maps_256.png DELETED
Binary file
modules/supsystic_promo/img/Live_Chat_256.png DELETED
Binary file
modules/supsystic_promo/img/Popup_256.png DELETED
Binary file
modules/supsystic_promo/img/Pricing_Table_256.png DELETED
Binary file
modules/supsystic_promo/img/Slider_256.png DELETED
Binary file
modules/supsystic_promo/img/Social_Buttons_256.png DELETED
Binary file
modules/supsystic_promo/img/icon-256x256.png DELETED
Binary file
modules/supsystic_promo/img/kinsta_banner.png DELETED
Binary file
modules/supsystic_promo/img/overview-01.png ADDED
Binary file
modules/supsystic_promo/img/overview-02.png ADDED
Binary file
modules/supsystic_promo/img/overview-03.png ADDED
Binary file
modules/supsystic_promo/img/plugin-icon.png ADDED
Binary file
modules/supsystic_promo/img/supsystic-logo-small.png ADDED
Binary file
modules/supsystic_promo/mod.php CHANGED
@@ -19,8 +19,8 @@ class supsystic_promoCfs extends moduleCfs {
19
  dispatcherCfs::addFilter('mainAdminTabs', array($this, 'addAdminTab'));
20
  dispatcherCfs::addAction('beforeSaveOpts', array($this, 'checkSaveOpts'));
21
  dispatcherCfs::addFilter('showTplsList', array($this, 'checkProTpls'));
22
- dispatcherCfs::addAction('discountMsg', array($this, 'getDiscountMsg'));
23
- add_action('admin_notices', array($this, 'checkAdminPromoNotices'));
24
  // Admin tutorial
25
  add_action('admin_enqueue_scripts', array( $this, 'loadTutorial'));
26
  dispatcherCfs::addFilter('formsEditTabs', array($this, 'addEditTab'));
@@ -41,80 +41,80 @@ class supsystic_promoCfs extends moduleCfs {
41
  }
42
  return $tabs;
43
  }
44
- public function checkAdminPromoNotices() {
45
- if(!frameCfs::_()->isAdminPlugOptsPage()) // Our notices - only for our plugin pages for now
46
- return;
47
- $notices = array();
48
- // Start usage
49
- $startUsage = (int) frameCfs::_()->getModule('options')->get('start_usage');
50
- $currTime = time();
51
- $day = 24 * 3600;
52
- if($startUsage) { // Already saved
53
- $rateMsg = sprintf(__("<h3>Hey, I noticed you just use %s over a week – that’s awesome!</h3><p>Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.</p>", CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);
54
- $rateMsg .= '<p><a href="https://wordpress.org/support/view/plugin-reviews/contact-form-by-supsystic?rate=5#postform" target="_blank" class="button button-primary" data-statistic-code="done">'. __('Ok, you deserve it', CFS_LANG_CODE). '</a>
55
- <a href="#" class="button" data-statistic-code="later">'. __('Nope, maybe later', CFS_LANG_CODE). '</a>
56
- <a href="#" class="button" data-statistic-code="hide">'. __('I already did', CFS_LANG_CODE). '</a></p>';
57
- $enbPromoLinkMsg = sprintf(__("<h3>More then eleven days with our %s plugin - Congratulations!</h3>", CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);;
58
- $enbPromoLinkMsg .= __('<p>On behalf of the entire <a href="https://supsystic.com/" target="_blank">supsystic.com</a> company I would like to thank you for been with us, and I really hope that our software helped you.</p>', CFS_LANG_CODE);
59
- $enbPromoLinkMsg .= __('<p>And today, if you want, - you can help us. This is really simple - you can just add small promo link to our site under your Forms. This is small step for you, but a big help for us! Sure, if you don\'t want - just skip this and continue enjoy our software!</p>', CFS_LANG_CODE);
60
- $enbPromoLinkMsg .= '<p><a href="#" class="button button-primary" data-statistic-code="done">'. __('Ok, you deserve it', CFS_LANG_CODE). '</a>
61
- <a href="#" class="button" data-statistic-code="later">'. __('Nope, maybe later', CFS_LANG_CODE). '</a>
62
- <a href="#" class="button" data-statistic-code="hide">'. __('Skip', CFS_LANG_CODE). '</a></p>';
63
- $checkOtherPlugins = '<p>'
64
- . sprintf(__('Check out <a href="%s" target="_blank" class="button button-primary" data-statistic-code="hide">our other Plugins</a>! Years of experience in WordPress plugins developers made those list unbreakable!', CFS_LANG_CODE), frameCfs::_()->getModule('options')->getTabUrl('featured-plugins'))
65
- . '</p>';
66
- $notices = array(
67
- 'rate_msg' => array('html' => $rateMsg, 'show_after' => 7 * $day),
68
- 'enb_promo_link_msg' => array('html' => $enbPromoLinkMsg, 'show_after' => 11 * $day),
69
- 'check_other_plugs_msg' => array('html' => $checkOtherPlugins, 'show_after' => 1 * $day),
70
- );
71
- foreach($notices as $nKey => $n) {
72
- if($currTime - $startUsage <= $n['show_after']) {
73
- unset($notices[ $nKey ]);
74
- continue;
75
- }
76
- $done = (int) frameCfs::_()->getModule('options')->get('done_'. $nKey);
77
- if($done) {
78
- unset($notices[ $nKey ]);
79
- continue;
80
- }
81
- $hide = (int) frameCfs::_()->getModule('options')->get('hide_'. $nKey);
82
- if($hide) {
83
- unset($notices[ $nKey ]);
84
- continue;
85
- }
86
- $later = (int) frameCfs::_()->getModule('options')->get('later_'. $nKey);
87
- if($later && ($currTime - $later) <= 2 * $day) { // remember each 2 days
88
- unset($notices[ $nKey ]);
89
- continue;
90
- }
91
- if($nKey == 'enb_promo_link_msg' && (int)frameCfs::_()->getModule('options')->get('add_love_link')) {
92
- unset($notices[ $nKey ]);
93
- continue;
94
- }
95
- }
96
- } else {
97
- frameCfs::_()->getModule('options')->getModel()->save('start_usage', $currTime);
98
- }
99
- if(!empty($notices)) {
100
- if(isset($notices['rate_msg']) && isset($notices['enb_promo_link_msg']) && !empty($notices['enb_promo_link_msg'])) {
101
- unset($notices['rate_msg']); // Show only one from those messages
102
- }
103
- $html = '';
104
- foreach($notices as $nKey => $n) {
105
- $this->getModel()->saveUsageStat($nKey. '.'. 'show', true);
106
- $html .= '<div class="updated notice is-dismissible supsystic-admin-notice" data-code="'. $nKey. '">'. $n['html']. '</div>';
107
- }
108
- echo $html;
109
- }
110
- }
111
  public function addAdminTab($tabs) {
112
  $tabs['overview'] = array(
113
  'label' => __('Overview', CFS_LANG_CODE), 'callback' => array($this, 'getOverviewTabContent'), 'fa_icon' => 'fa-info', 'sort_order' => 5,
114
  );
115
- $tabs['featured-plugins'] = array(
116
- 'label' => __('Featured Plugins', CFS_LANG_CODE), 'callback' => array($this, 'showFeaturedPluginsPage'), 'fa_icon' => 'fa-heart', 'sort_order' => 99,
117
- );
118
  return $tabs;
119
  }
120
  public function addSubDestList($subDestList) {
@@ -546,41 +546,41 @@ class supsystic_promoCfs extends moduleCfs {
546
  frameCfs::_()->addScript(CFS_CODE. 'admin.tour', $this->getModPath(). 'js/admin.tour.js');
547
  frameCfs::_()->addJSVar(CFS_CODE. 'admin.tour', 'cfsAdminTourData', $tourData);
548
  }
549
- public function showFeaturedPluginsPage() {
550
- return $this->getView()->showFeaturedPluginsPage();
551
- }
552
- public function getDiscountMsg() {
553
- if($this->isPro()
554
- && frameCfs::_()->getModule('options')->getActiveTab() == 'license'
555
- && frameCfs::_()->getModule('license')
556
- && frameCfs::_()->getModule('license')->getModel()->isActive()
557
- ) {
558
- $proPluginsList = array(
559
- 'ultimate-maps-by-supsystic-pro', 'newsletters-by-supsystic-pro', 'contact-form-by-supsystic-pro', 'live-chat-pro',
560
- 'digital-publications-supsystic-pro', 'coming-soon-supsystic-pro', 'price-table-supsystic-pro', 'tables-generator-pro',
561
- 'social-share-pro', 'popup-by-supsystic-pro', 'supsystic_slider_pro', 'supsystic-gallery-pro', 'google-maps-easy-pro',
562
- 'backup-supsystic-pro',
563
- );
564
- $activePluginsList = get_option('active_plugins', array());
565
- $activeProPluginsCount = 0;
566
- foreach($activePluginsList as $actPl) {
567
- foreach($proPluginsList as $proPl) {
568
- if(strpos($actPl, $proPl) !== false) {
569
- $activeProPluginsCount++;
570
- }
571
- }
572
- }
573
- if($activeProPluginsCount === 1) {
574
- $buyLink = $this->getDiscountBuyUrl();
575
- $this->getView()->getDiscountMsg($buyLink);
576
- }
577
- }
578
- }
579
- public function getDiscountBuyUrl() {
580
- $license = frameCfs::_()->getModule('license')->getModel()->getCredentials();
581
- $license['key'] = md5($license['key']);
582
- $license = urlencode(base64_encode(implode('|', $license)));
583
- $plugin_code = 'contact_form_by_supsystic_pro';
584
- return 'http://supsystic.com/?mod=manager&pl=lms&action=applyDiscountBuyUrl&plugin_code='. $plugin_code. '&lic='. $license;
585
- }
586
  }
19
  dispatcherCfs::addFilter('mainAdminTabs', array($this, 'addAdminTab'));
20
  dispatcherCfs::addAction('beforeSaveOpts', array($this, 'checkSaveOpts'));
21
  dispatcherCfs::addFilter('showTplsList', array($this, 'checkProTpls'));
22
+ // dispatcherCfs::addAction('discountMsg', array($this, 'getDiscountMsg'));
23
+ // add_action('admin_notices', array($this, 'checkAdminPromoNotices'));
24
  // Admin tutorial
25
  add_action('admin_enqueue_scripts', array( $this, 'loadTutorial'));
26
  dispatcherCfs::addFilter('formsEditTabs', array($this, 'addEditTab'));
41
  }
42
  return $tabs;
43
  }
44
+ // public function checkAdminPromoNotices() {
45
+ // if(!frameCfs::_()->isAdminPlugOptsPage()) // Our notices - only for our plugin pages for now
46
+ // return;
47
+ // $notices = array();
48
+ // // Start usage
49
+ // $startUsage = (int) frameCfs::_()->getModule('options')->get('start_usage');
50
+ // $currTime = time();
51
+ // $day = 24 * 3600;
52
+ // if($startUsage) { // Already saved
53
+ // $rateMsg = sprintf(__("<h3>Hey, I noticed you just use %s over a week – that’s awesome!</h3><p>Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.</p>", CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);
54
+ // $rateMsg .= '<p><a href="https://wordpress.org/support/view/plugin-reviews/contact-form-by-supsystic?rate=5#postform" target="_blank" class="button button-primary" data-statistic-code="done">'. __('Ok, you deserve it', CFS_LANG_CODE). '</a>
55
+ // <a href="#" class="button" data-statistic-code="later">'. __('Nope, maybe later', CFS_LANG_CODE). '</a>
56
+ // <a href="#" class="button" data-statistic-code="hide">'. __('I already did', CFS_LANG_CODE). '</a></p>';
57
+ // $enbPromoLinkMsg = sprintf(__("<h3>More then eleven days with our %s plugin - Congratulations!</h3>", CFS_LANG_CODE), CFS_WP_PLUGIN_NAME);;
58
+ // $enbPromoLinkMsg .= __('<p>On behalf of the entire <a href="https://supsystic.com/" target="_blank">supsystic.com</a> company I would like to thank you for been with us, and I really hope that our software helped you.</p>', CFS_LANG_CODE);
59
+ // $enbPromoLinkMsg .= __('<p>And today, if you want, - you can help us. This is really simple - you can just add small promo link to our site under your Forms. This is small step for you, but a big help for us! Sure, if you don\'t want - just skip this and continue enjoy our software!</p>', CFS_LANG_CODE);
60
+ // $enbPromoLinkMsg .= '<p><a href="#" class="button button-primary" data-statistic-code="done">'. __('Ok, you deserve it', CFS_LANG_CODE). '</a>
61
+ // <a href="#" class="button" data-statistic-code="later">'. __('Nope, maybe later', CFS_LANG_CODE). '</a>
62
+ // <a href="#" class="button" data-statistic-code="hide">'. __('Skip', CFS_LANG_CODE). '</a></p>';
63
+ // $checkOtherPlugins = '<p>'
64
+ // . sprintf(__('Check out <a href="%s" target="_blank" class="button button-primary" data-statistic-code="hide">our other Plugins</a>! Years of experience in WordPress plugins developers made those list unbreakable!', CFS_LANG_CODE), frameCfs::_()->getModule('options')->getTabUrl('featured-plugins'))
65
+ // . '</p>';
66
+ // $notices = array(
67
+ // 'rate_msg' => array('html' => $rateMsg, 'show_after' => 7 * $day),
68
+ // 'enb_promo_link_msg' => array('html' => $enbPromoLinkMsg, 'show_after' => 11 * $day),
69
+ // 'check_other_plugs_msg' => array('html' => $checkOtherPlugins, 'show_after' => 1 * $day),
70
+ // );
71
+ // foreach($notices as $nKey => $n) {
72
+ // if($currTime - $startUsage <= $n['show_after']) {
73
+ // unset($notices[ $nKey ]);
74
+ // continue;
75
+ // }
76
+ // $done = (int) frameCfs::_()->getModule('options')->get('done_'. $nKey);
77
+ // if($done) {
78
+ // unset($notices[ $nKey ]);
79
+ // continue;
80
+ // }
81
+ // $hide = (int) frameCfs::_()->getModule('options')->get('hide_'. $nKey);
82
+ // if($hide) {
83
+ // unset($notices[ $nKey ]);
84
+ // continue;
85
+ // }
86
+ // $later = (int) frameCfs::_()->getModule('options')->get('later_'. $nKey);
87
+ // if($later && ($currTime - $later) <= 2 * $day) { // remember each 2 days
88
+ // unset($notices[ $nKey ]);
89
+ // continue;
90
+ // }
91
+ // if($nKey == 'enb_promo_link_msg' && (int)frameCfs::_()->getModule('options')->get('add_love_link')) {
92
+ // unset($notices[ $nKey ]);
93
+ // continue;
94
+ // }
95
+ // }
96
+ // } else {
97
+ // frameCfs::_()->getModule('options')->getModel()->save('start_usage', $currTime);
98
+ // }
99
+ // if(!empty($notices)) {
100
+ // if(isset($notices['rate_msg']) && isset($notices['enb_promo_link_msg']) && !empty($notices['enb_promo_link_msg'])) {
101
+ // unset($notices['rate_msg']); // Show only one from those messages
102
+ // }
103
+ // $html = '';
104
+ // foreach($notices as $nKey => $n) {
105
+ // $this->getModel()->saveUsageStat($nKey. '.'. 'show', true);
106
+ // $html .= '<div class="updated notice is-dismissible supsystic-admin-notice" data-code="'. $nKey. '">'. $n['html']. '</div>';
107
+ // }
108
+ // echo $html;
109
+ // }
110
+ // }
111
  public function addAdminTab($tabs) {
112
  $tabs['overview'] = array(
113
  'label' => __('Overview', CFS_LANG_CODE), 'callback' => array($this, 'getOverviewTabContent'), 'fa_icon' => 'fa-info', 'sort_order' => 5,
114
  );
115
+ // $tabs['featured-plugins'] = array(
116
+ // 'label' => __('Featured Plugins', CFS_LANG_CODE), 'callback' => array($this, 'showFeaturedPluginsPage'), 'fa_icon' => 'fa-heart', 'sort_order' => 99,
117
+ // );
118
  return $tabs;
119
  }
120
  public function addSubDestList($subDestList) {
546
  frameCfs::_()->addScript(CFS_CODE. 'admin.tour', $this->getModPath(). 'js/admin.tour.js');
547
  frameCfs::_()->addJSVar(CFS_CODE. 'admin.tour', 'cfsAdminTourData', $tourData);
548
  }
549
+ // public function showFeaturedPluginsPage() {
550
+ // return $this->getView()->showFeaturedPluginsPage();
551
+ // }
552
+ // public function getDiscountMsg() {
553
+ // if($this->isPro()
554
+ // && frameCfs::_()->getModule('options')->getActiveTab() == 'license'
555
+ // && frameCfs::_()->getModule('license')
556
+ // && frameCfs::_()->getModule('license')->getModel()->isActive()
557
+ // ) {
558
+ // $proPluginsList = array(
559
+ // 'ultimate-maps-by-supsystic-pro', 'newsletters-by-supsystic-pro', 'contact-form-by-supsystic-pro', 'live-chat-pro',
560
+ // 'digital-publications-supsystic-pro', 'coming-soon-supsystic-pro', 'price-table-supsystic-pro', 'tables-generator-pro',
561
+ // 'social-share-pro', 'popup-by-supsystic-pro', 'supsystic_slider_pro', 'supsystic-gallery-pro', 'google-maps-easy-pro',
562
+ // 'backup-supsystic-pro',
563
+ // );
564
+ // $activePluginsList = get_option('active_plugins', array());
565
+ // $activeProPluginsCount = 0;
566
+ // foreach($activePluginsList as $actPl) {
567
+ // foreach($proPluginsList as $proPl) {
568
+ // if(strpos($actPl, $proPl) !== false) {
569
+ // $activeProPluginsCount++;
570
+ // }
571
+ // }
572
+ // }
573
+ // if($activeProPluginsCount === 1) {
574
+ // $buyLink = $this->getDiscountBuyUrl();
575
+ // $this->getView()->getDiscountMsg($buyLink);
576
+ // }
577
+ // }
578
+ // }
579
+ // public function getDiscountBuyUrl() {
580
+ // $license = frameCfs::_()->getModule('license')->getModel()->getCredentials();
581
+ // $license['key'] = md5($license['key']);
582
+ // $license = urlencode(base64_encode(implode('|', $license)));
583
+ // $plugin_code = 'contact_form_by_supsystic_pro';
584
+ // return 'http://supsystic.com/?mod=manager&pl=lms&action=applyDiscountBuyUrl&plugin_code='. $plugin_code. '&lic='. $license;
585
+ // }
586
  }
modules/supsystic_promo/views/supsystic_promo.php CHANGED
@@ -120,43 +120,43 @@ Here you can edit css style of the pop-up window.', CFS_LANG_CODE),
120
  $this->assign('finishSiteLink', $this->getModule()->generateMainLink('utm_source=plugin&utm_medium=final_step_b_step&utm_campaign=forms'));
121
  return parent::getContent('adminTour');
122
  }
123
- public function showFeaturedPluginsPage() {
124
- frameCfs::_()->getModule('templates')->loadSupTablesUi();
125
- frameCfs::_()->addStyle('admin.featured-plugins', $this->getModule()->getModPath(). 'css/admin.featured-plugins.css');
126
- frameCfs::_()->getModule('templates')->loadGoogleFont('Montserrat');
127
- $siteUrl = 'https://supsystic.com/';
128
- $pluginsUrl = $siteUrl. 'plugins/';
129
- $downloadsUrl = 'https://downloads.wordpress.org/plugin/';
130
- $imgUrl = frameCfs::_()->getModule('supsystic_promo')->getModPath(). 'img/';
131
- $promoCampaign = 'forms';
132
- $this->assign('pluginsList', array(
133
- array('label' => __('Popup Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'popup-plugin/','external' => true, 'img' => $imgUrl. 'Popup_256.png', 'desc' => __('The Best WordPress PopUp option plugin to help you gain more subscribers, social followers or advertisement. Responsive pop-ups with friendly options.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'popup-by-supsystic.zip'),
134
- array('label' => __('Photo Gallery Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'photo-gallery/','external' => true, 'img' => $imgUrl. 'Gallery_256.png', 'desc' => __('Photo Gallery Plugin with a great number of layouts will help you to create quality respectable portfolios and image galleries.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'gallery-by-supsystic.zip'),
135
- array('label' => __('Contact Form Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'contact-form-plugin/','external' => true, 'img' => $imgUrl. 'Contact_Form_256.png', 'desc' => __('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
136
- array('label' => __('Newsletter Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'newsletter-plugin/','external' => true, 'img' => $imgUrl. 'icon-256x256.png', 'desc' => __('Supsystic Newsletter plugin for automatic mailing of your letters. You will have no need to control it or send them manually. No coding, hard skills or long hours of customizing are required.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
137
- array('label' => __('Membership by Supsystic', CFS_LANG_CODE), 'url' => $pluginsUrl. 'membership-plugin/','external' => true, 'img' => $imgUrl. '256.png', 'desc' => __('Create online membership community with custom user profiles, roles, FrontEnd registration and login. Members Directory, activity, groups, messages.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
138
- array('label' => __('Data Tables Generator', CFS_LANG_CODE), 'url' => $pluginsUrl. 'data-tables-generator-plugin/','external' => true, 'img' => $imgUrl. 'Data_Tables_256.png', 'desc' => __('Create and manage beautiful data tables with custom design. No HTML knowledge is required.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'data-tables-generator-by-supsystic.zip'),
139
- array('label' => __('Slider Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'slider/','external' => true, 'img' => $imgUrl. 'Slider_256.png', 'desc' => __('Creating slideshows with Slider plugin is fast and easy. Simply select images from your WordPress Media Library, Flickr, Instagram or Facebook, set slide captions, links and SEO fields all from one page.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'slider-by-supsystic.zip'),
140
- array('label' => __('Social Share Buttons', CFS_LANG_CODE), 'url' => $pluginsUrl. 'social-share-plugin/','external' => true, 'img' => $imgUrl. 'Social_Buttons_256.png', 'desc' => __('Social share buttons to increase social traffic and popularity. Social sharing to Facebook, Twitter and other social networks.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'social-share-buttons-by-supsystic.zip'),
141
- array('label' => __('Live Chat Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'live-chat/','external' => true, 'img' => $imgUrl. 'Live_Chat_256.png', 'desc' => __('Be closer to your visitors and customers with Live Chat Support by Supsystic. Help you visitors, support them in real-time with exceptional Live Chat WordPress plugin by Supsystic.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'live-chat-by-supsystic.zip'),
142
- array('label' => __('Pricing Table', CFS_LANG_CODE), 'url' => $pluginsUrl. 'pricing-table/','external' => true, 'img' => $imgUrl. 'Pricing_Table_256.png', 'desc' => __('It’s never been so easy to create and manage pricing and comparison tables with table builder. Any element of the table can be customise with mouse click.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'pricing-table-by-supsystic.zip'),
143
- array('label' => __('Coming Soon Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'coming-soon-plugin/', 'external' => true, 'img' => $imgUrl. 'Coming_Soon_256.png', 'desc' => __('Coming soon page with drag-and-drop builder or under construction | maintenance mode to notify visitors and collects emails.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'coming-soon-by-supsystic.zip'),
144
- array('label' => __('Backup Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'backup-plugin/', 'external' => true, 'img' => $imgUrl. 'Backup_256.png', 'desc' => __('Backup and Restore WordPress Plugin by Supsystic provides quick and unhitched DropBox, FTP, Amazon S3, Google Drive backup for your WordPress website.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'backup-by-supsystic.zip'),
145
- array('label' => __('Google Maps Easy', CFS_LANG_CODE), 'url' => $pluginsUrl. 'google-maps-plugin/', 'external' => true, 'img' => $imgUrl. 'Google_Maps_256.png', 'desc' => __('Display custom Google Maps. Set markers and locations with text, images, categories and links. Customize google map in a simple and intuitive way.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'google-maps-easy.zip'),
146
- array('label' => __('Digital Publication Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'digital-publication-plugin/', 'external' => true, 'img' => $imgUrl. 'Digital_Publication_256.png', 'desc' => __('Digital Publication WordPress Plugin by Supsystic for Magazines, Catalogs, Portfolios. Convert images, posts, PDF to the page flip book.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'digital-publications-by-supsystic.zip'),
147
- array('label' => __('Kinsta Hosting', CFS_LANG_CODE), 'url' => 'https://kinsta.com?kaid=MNRQQASUYJRT', 'external' => true, 'img' => $imgUrl. 'kinsta_banner.png', 'desc' => __('If you want to host a business site or a blog, Kinsta managed WordPress hosting is the best place to stop on. Without any hesitation, we can say Kinsta is incredible when it comes to uptime and speed.', CFS_LANG_CODE)),
148
- ));
149
- foreach($this->pluginsList as $i => $p) {
150
- if(empty($p['external'])) {
151
- $this->pluginsList[ $i ]['url'] = $this->pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
152
- }
153
- }
154
- $this->assign('bundleUrl', $siteUrl. 'product/plugins-bundle/'. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign);
155
- return parent::getContent('featuredPlugins');
156
- }
157
- public function getDiscountMsg($buyLink = '#') {
158
- $this->assign('bundlePageLink', '//supsystic.com/all-plugins/');
159
- $this->assign('buyLink', $buyLink);
160
- parent::display('discountMsg');
161
- }
162
  }
120
  $this->assign('finishSiteLink', $this->getModule()->generateMainLink('utm_source=plugin&utm_medium=final_step_b_step&utm_campaign=forms'));
121
  return parent::getContent('adminTour');
122
  }
123
+ // public function showFeaturedPluginsPage() {
124
+ // frameCfs::_()->getModule('templates')->loadSupTablesUi();
125
+ // frameCfs::_()->addStyle('admin.featured-plugins', $this->getModule()->getModPath(). 'css/admin.featured-plugins.css');
126
+ // frameCfs::_()->getModule('templates')->loadGoogleFont('Montserrat');
127
+ // $siteUrl = 'https://supsystic.com/';
128
+ // $pluginsUrl = $siteUrl. 'plugins/';
129
+ // $downloadsUrl = 'https://downloads.wordpress.org/plugin/';
130
+ // $imgUrl = frameCfs::_()->getModule('supsystic_promo')->getModPath(). 'img/';
131
+ // $promoCampaign = 'forms';
132
+ // $this->assign('pluginsList', array(
133
+ // array('label' => __('Popup Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'popup-plugin/','external' => true, 'img' => $imgUrl. 'Popup_256.png', 'desc' => __('The Best WordPress PopUp option plugin to help you gain more subscribers, social followers or advertisement. Responsive pop-ups with friendly options.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'popup-by-supsystic.zip'),
134
+ // array('label' => __('Photo Gallery Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'photo-gallery/','external' => true, 'img' => $imgUrl. 'Gallery_256.png', 'desc' => __('Photo Gallery Plugin with a great number of layouts will help you to create quality respectable portfolios and image galleries.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'gallery-by-supsystic.zip'),
135
+ // array('label' => __('Contact Form Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'contact-form-plugin/','external' => true, 'img' => $imgUrl. 'Contact_Form_256.png', 'desc' => __('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
136
+ // array('label' => __('Newsletter Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'newsletter-plugin/','external' => true, 'img' => $imgUrl. 'icon-256x256.png', 'desc' => __('Supsystic Newsletter plugin for automatic mailing of your letters. You will have no need to control it or send them manually. No coding, hard skills or long hours of customizing are required.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
137
+ // array('label' => __('Membership by Supsystic', CFS_LANG_CODE), 'url' => $pluginsUrl. 'membership-plugin/','external' => true, 'img' => $imgUrl. '256.png', 'desc' => __('Create online membership community with custom user profiles, roles, FrontEnd registration and login. Members Directory, activity, groups, messages.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
138
+ // array('label' => __('Data Tables Generator', CFS_LANG_CODE), 'url' => $pluginsUrl. 'data-tables-generator-plugin/','external' => true, 'img' => $imgUrl. 'Data_Tables_256.png', 'desc' => __('Create and manage beautiful data tables with custom design. No HTML knowledge is required.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'data-tables-generator-by-supsystic.zip'),
139
+ // array('label' => __('Slider Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'slider/','external' => true, 'img' => $imgUrl. 'Slider_256.png', 'desc' => __('Creating slideshows with Slider plugin is fast and easy. Simply select images from your WordPress Media Library, Flickr, Instagram or Facebook, set slide captions, links and SEO fields all from one page.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'slider-by-supsystic.zip'),
140
+ // array('label' => __('Social Share Buttons', CFS_LANG_CODE), 'url' => $pluginsUrl. 'social-share-plugin/','external' => true, 'img' => $imgUrl. 'Social_Buttons_256.png', 'desc' => __('Social share buttons to increase social traffic and popularity. Social sharing to Facebook, Twitter and other social networks.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'social-share-buttons-by-supsystic.zip'),
141
+ // array('label' => __('Live Chat Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'live-chat/','external' => true, 'img' => $imgUrl. 'Live_Chat_256.png', 'desc' => __('Be closer to your visitors and customers with Live Chat Support by Supsystic. Help you visitors, support them in real-time with exceptional Live Chat WordPress plugin by Supsystic.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'live-chat-by-supsystic.zip'),
142
+ // array('label' => __('Pricing Table', CFS_LANG_CODE), 'url' => $pluginsUrl. 'pricing-table/','external' => true, 'img' => $imgUrl. 'Pricing_Table_256.png', 'desc' => __('It’s never been so easy to create and manage pricing and comparison tables with table builder. Any element of the table can be customise with mouse click.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'pricing-table-by-supsystic.zip'),
143
+ // array('label' => __('Coming Soon Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'coming-soon-plugin/', 'external' => true, 'img' => $imgUrl. 'Coming_Soon_256.png', 'desc' => __('Coming soon page with drag-and-drop builder or under construction | maintenance mode to notify visitors and collects emails.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'coming-soon-by-supsystic.zip'),
144
+ // array('label' => __('Backup Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'backup-plugin/', 'external' => true, 'img' => $imgUrl. 'Backup_256.png', 'desc' => __('Backup and Restore WordPress Plugin by Supsystic provides quick and unhitched DropBox, FTP, Amazon S3, Google Drive backup for your WordPress website.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'backup-by-supsystic.zip'),
145
+ // array('label' => __('Google Maps Easy', CFS_LANG_CODE), 'url' => $pluginsUrl. 'google-maps-plugin/', 'external' => true, 'img' => $imgUrl. 'Google_Maps_256.png', 'desc' => __('Display custom Google Maps. Set markers and locations with text, images, categories and links. Customize google map in a simple and intuitive way.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'google-maps-easy.zip'),
146
+ // array('label' => __('Digital Publication Plugin', CFS_LANG_CODE), 'url' => $pluginsUrl. 'digital-publication-plugin/', 'external' => true, 'img' => $imgUrl. 'Digital_Publication_256.png', 'desc' => __('Digital Publication WordPress Plugin by Supsystic for Magazines, Catalogs, Portfolios. Convert images, posts, PDF to the page flip book.', CFS_LANG_CODE), 'download' => $downloadsUrl. 'digital-publications-by-supsystic.zip'),
147
+ // array('label' => __('Kinsta Hosting', CFS_LANG_CODE), 'url' => 'https://kinsta.com?kaid=MNRQQASUYJRT', 'external' => true, 'img' => $imgUrl. 'kinsta_banner.png', 'desc' => __('If you want to host a business site or a blog, Kinsta managed WordPress hosting is the best place to stop on. Without any hesitation, we can say Kinsta is incredible when it comes to uptime and speed.', CFS_LANG_CODE)),
148
+ // ));
149
+ // foreach($this->pluginsList as $i => $p) {
150
+ // if(empty($p['external'])) {
151
+ // $this->pluginsList[ $i ]['url'] = $this->pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
152
+ // }
153
+ // }
154
+ // $this->assign('bundleUrl', $siteUrl. 'product/plugins-bundle/'. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign);
155
+ // return parent::getContent('featuredPlugins');
156
+ // }
157
+ // public function getDiscountMsg($buyLink = '#') {
158
+ // $this->assign('bundlePageLink', '//supsystic.com/all-plugins/');
159
+ // $this->assign('buyLink', $buyLink);
160
+ // parent::display('discountMsg');
161
+ // }
162
  }
modules/supsystic_promo/views/tpl/adminFooter.php CHANGED
@@ -1,21 +1,33 @@
1
- <div class="cfsAdminFooterShell">
2
- <div class="cfsAdminFooterCell">
3
- <?php echo CFS_WP_PLUGIN_NAME?>
4
- <?php _e('Version', CFS_LANG_CODE)?>:
5
- <a target="_blank" href="http://wordpress.org/plugins/contact-form-by-supsystic/changelog/"><?php echo CFS_VERSION?></a>
6
- </div>
7
- <div class="cfsAdminFooterCell">|</div>
8
- <?php if(!frameCfs::_()->getModule(implode('', array('l','ic','e','ns','e')))) {?>
9
- <div class="cfsAdminFooterCell">
10
- <?php _e('Go', CFS_LANG_CODE)?>&nbsp;<a target="_blank" href="<?php echo $this->getModule()->getMainLink();?>"><?php _e('PRO', CFS_LANG_CODE)?></a>
11
- </div>
12
- <div class="cfsAdminFooterCell">|</div>
13
- <?php } ?>
14
- <div class="cfsAdminFooterCell">
15
- <a target="_blank" href="http://wordpress.org/support/plugin/contact-form-by-supsystic"><?php _e('Support', CFS_LANG_CODE)?></a>
16
- </div>
17
- <div class="cfsAdminFooterCell">|</div>
18
- <div class="cfsAdminFooterCell">
19
- Add your <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/contact-form-by-supsystic?filter=5#postform">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on wordpress.org.
20
- </div>
21
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="supsysticOverviewACFormOverlay">
2
+ <form method="post" id="overview-ac-form" class="supsysticOverviewACForm">
3
+ <div class="supsysticOverviewACTitle">
4
+ <div class="supsysticOverviewACClose"><i class="fa fa-times" aria-hidden="true"></i></div>
5
+ <a href="https://supsystic.com/" target="_blank"><img src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/supsystic-logo-small.png"></a><br>
6
+ <b>PRO plugins</b> and <b>amazing gifts</b>!
7
+ </div>
8
+ <?php
9
+ global $current_user;
10
+ $userName = $current_user->user_firstname.' '.$current_user->user_lastname;
11
+ $userEmail = $current_user->user_email;
12
+ ?>
13
+ <label>Name *</label>
14
+ <input type="text" name="username" value="<?php echo $userName;?>">
15
+ <label>Email *</label>
16
+ <input type="text" name="email" value="<?php echo $userEmail;?>">
17
+ <button id="subscribe-btn" type="submit" class="button button-primary button-hero">
18
+ <i class="fa fa-check-square" aria-hidden="true"></i>
19
+ Subscribe
20
+ </button>
21
+ <div class="button button-primary button-hero supsysticOverviewACBtn supsysticOverviewACBtnRemind"><i class="fa fa-hourglass-half" aria-hidden="true"></i> Remind me tomorrow</div>
22
+ <div class="button button-primary button-hero supsysticOverviewACBtn supsysticOverviewACBtnDisable"><i class="fa fa-times" aria-hidden="true"></i> Do not disturb me again</div>
23
+ <div class="supsysticOverviewACFormNotification" style="color: red; float: left;" hidden>Fields with * are required to fill</div>
24
+ </form>
25
+ <div class="clear"></div>
26
+ </div>
27
+ <div id="supsysticOverviewACFormDialog" hidden>
28
+ <div class="on-error" style="display:none">
29
+ <p>Some errors occurred while sending mail please send your message trough this contact form:</p>
30
+ <p><a href="https://supsystic.com/plugins/#contact" target="_blank">https://supsystic.com/plugins/#contact</a></p>
31
+ </div>
32
+ <div class="message"></div>
33
+ </div>
modules/supsystic_promo/views/tpl/overviewTabContent.php CHANGED
@@ -1,109 +1,139 @@
1
- <section>
2
- <div class="supsystic-item supsystic-panel">
3
- <div id="containerWrapper">
4
- <div class="supsistic-half-side-box supsystic-border-right">
5
- <?php /*?><h3><?php _e('FAQ and Documentation', CFS_LANG_CODE)?></h3>
6
- <div class="faq-list">
7
- <?php foreach($this->faqList as $title => $desc) { ?>
8
- <div class="faq-title">
9
- <i class="fa fa-info-circle"></i>
10
- <?php echo $title;?>
11
- <div class="description" style="display: none;"><?php echo $desc;?></div>
12
- </div>
13
- <?php }?>
14
- <div style="clear: both;"></div>
15
- <a target="_blank" class="button button-primary button-hero" href="<?php echo $this->mainLink?>#faq" style="float: right;">
16
- <i class="fa fa-info-circle"></i>
17
- <?php _e('Check all FAQs', CFS_LANG_CODE)?>
18
- </a>
19
- <div style="clear: both;"></div>
20
- </div>
21
- <div class="video">
22
- <h3><?php _e('Video Tutorial', CFS_LANG_CODE)?></h3>
23
- <iframe type="text/html"
24
- width="80%"
25
- height="240px"
26
- src="https://www.youtube.com/embed/v8h2k3vvpdM"
27
- frameborder="0">
28
- </iframe>
29
- </div><?php */?>
30
- <div class="banner">
31
- <div class="text-block"><?php _e('If you want to host a business site or a blog, Kinsta managed WordPress hosting is the best place to stop on. Without any hesitation, we can say Kinsta is incredible when it comes to uptime and speed.', CFS_LANG_CODE)?></div>
32
- <a href="https://kinsta.com?kaid=MNRQQASUYJRT">
33
- <img src="<?php echo frameCfs::_()->getModule('supsystic_promo')->getModPath()?>img/kinsta_banner.png" style="width: 300px;height: 250px;" />
34
- </a>
35
- </div>
36
- <div class="server-settings">
37
- <h3><?php _e('Server Settings', CFS_LANG_CODE)?></h3>
38
- <ul class="settings-list">
39
- <?php foreach($this->serverSettings as $title => $element) {?>
40
- <li class="settings-line">
41
- <div class="settings-title"><?php echo $title?>:</div>
42
- <span><?php echo $element['value']?></span>
43
- </li>
44
- <?php }?>
45
- </ul>
46
- </div>
47
  </div>
48
- <div class="supsistic-half-side-box" style="padding-left: 20px;">
49
- <div class="supsystic-overview-news">
50
- <h3><?php _e('News', CFS_LANG_CODE)?></h3>
51
- <div class="supsystic-overview-news-content">
52
- <?php echo $this->news?>
 
 
 
 
 
 
 
 
53
  </div>
54
- <a href="<?php echo $this->mainLink?>" class="button button-primary button-hero" style="float: right; margin-top: 10px;">
55
- <i class="fa fa-info-circle"></i>
56
- <?php _e('All news and info', CFS_LANG_CODE)?>
57
- </a>
58
- <div style="clear: both;"></div>
59
- </div>
60
- <div class="overview-contact-form">
61
- <h3><?php _e('Contact form', CFS_LANG_CODE)?></h3>
62
- <form id="form-settings">
63
- <table class="contact-form-table">
64
- <?php foreach($this->contactFields as $fName => $fData) { ?>
65
- <?php
66
- $htmlType = $fData['html'];
67
- $id = 'contact_form_'. $fName;
68
- $htmlParams = array('attrs' => 'id="'. $id. '"');
69
- if(isset($fData['placeholder']))
70
- $htmlParams['placeholder'] = $fData['placeholder'];
71
- if(isset($fData['options']))
72
- $htmlParams['options'] = $fData['options'];
73
- if(isset($fData['def']))
74
- $htmlParams['value'] = $fData['def'];
75
- if(isset($fData['valid']) && in_array('notEmpty', $fData['valid']))
76
- $htmlParams['required'] = true;
77
- ?>
78
- <tr>
79
- <th scope="row">
80
- <label for="<?php echo $id?>"><?php echo $fData['label']?></label>
81
- </th>
82
- <td>
83
- <?php echo htmlCfs::$htmlType($fName, $htmlParams)?>
84
- </td>
85
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  <?php }?>
87
- <tr>
88
- <th scope="row" colspan="2">
89
- <?php echo htmlCfs::hidden('mod', array('value' => 'supsystic_promo'))?>
90
- <?php echo htmlCfs::hidden('action', array('value' => 'sendContact'))?>
91
- <button class="button button-primary button-hero" style="float: right;">
92
- <i class="fa fa-upload"></i>
93
- <?php _e('Send email', CFS_LANG_CODE)?>
94
- </button>
95
- <div style="clear: both;"></div>
96
- </th>
97
- </tr>
98
- </table>
99
- </form>
100
- <div id="form-settings-send-msg" style="display: none;">
101
- <i class="fa fa-envelope-o"></i>
102
- <?php _e('Your email was sent, we will try to respond to your as soon as possible. Thank you for support!', CFS_LANG_CODE)?>
 
 
 
 
 
 
 
 
 
 
103
  </div>
104
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  </div>
106
- <div style="clear: both;"></div>
107
- </div>
108
  </div>
109
- </section>
1
+ <div class="supsystic-overview">
2
+ <div class="full-page">
3
+ <div class="plugin-title"><img src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/plugin-icon.png">Contact Form By Supsystic</div>
4
+ <div class="plugin-description">Contact Form WordPress plugin helps you easily create contact forms with your customers, gather your own client data and make it maximum elegant, beautiful and quick. Simple and flexible plugin with user-friendly interface and light theme. Eye-catching design and minimalistic functional variety – everything for your comfort!</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  </div>
6
+ <div class="supsystic-overview-flex">
7
+ <div class="half-page half-page-left">
8
+ <div class="border-wrapper">
9
+ <ul>
10
+ <li class="overview-section-btn" data-section="faq"><i class="fa fa-info-circle"></i> FAQ and Documentation</li>
11
+ <li class="overview-section-btn" data-section="video" style="display:none;"><i class="fa fa-play"></i> Video tutorial</li>
12
+ <li class="overview-section-btn" data-section="settings"><i class="fa fa-cog"></i> Server Settings</li>
13
+ <li class="overview-section-btn" data-section="support"><i class="fa fa-life-ring"></i> Support</li>
14
+ <li class="overview-section-btn" data-section="promo_video"><i class="fa fa-star"></i> Our promo video</li>
15
+ <li class="overview-section-btn"><a target="_blank" title="Go to supsystic.com" href="https://supsystic.com/plugins/contact-form-plugin/?utm_source=plugin&utm_campaign=contact-form"> Plugin page on supsystic.com <sup><i class="fa fa-external-link"></i></sup></a></li>
16
+ <li class="overview-section-btn"><a target="_blank" title="Go to supsystic.com" href="https://supsystic.com/plugins/contact-form-plugin/?utm_source=plugin&utm_campaign=contact-form"> Compare FREE and PRO features <sup><i class="fa fa-external-link"></i></sup></a></li>
17
+ <li class="overview-section-btn"><a target="_blank" title="Go to supsystic.com" href="https://supsystic.com/all-plugins/?utm_source=plugin&utm_campaign=contact-form"> Check other supsystic FREE plugins <sup><i class="fa fa-external-link"></i></sup></a></li>
18
+ </ul>
19
  </div>
20
+ <div class="border-wrapper">
21
+ <div class="overview-contact-form overview-section" data-section="support">
22
+ <h3><i class="fa fa-life-ring"></i> Support</h3>
23
+ <div class="contact-info-section">
24
+ <p><i class="fa fa-clock-o" aria-hidden="true"></i> Our official support hours are 09:00 - 18:00 GMT+02:00, Monday to Friday – excluding bank holidays and other official holidays.</p>
25
+ <p>The timescales listed below refer to these working hours.</p><br>
26
+ <p><em>Support requests are prioritized based on the type of license:</em></p>
27
+ <ul>
28
+ <li><p><em>Pro Support</em> is reserved for customers with an active Pro license. We respond to new priority support requests within 12 hours.</p></li>
29
+ <li><p><em>Standard Support</em> is provided to customers with an active Free license. We respond to standard support requests within 24h-48h.</p></li>
30
+ </ul><br>
31
+ <p><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> While we don’t guarantee that we will resolve the request in this time period, we will acknowledge it and communicate with the customer as appropriate to help resolve the issue.</p>
32
+ </div>
33
+
34
+ <form id="form-settings">
35
+ <table class="contact-form-table">
36
+ <?php foreach($this->contactFields as $fName => $fData) { ?>
37
+ <?php
38
+ $htmlType = $fData['html'];
39
+ $id = 'contact_form_'. $fName;
40
+ $htmlParams = array('attrs' => 'id="'. $id. '"');
41
+ if(isset($fData['placeholder']))
42
+ $htmlParams['placeholder'] = $fData['placeholder'];
43
+ if(isset($fData['options']))
44
+ $htmlParams['options'] = $fData['options'];
45
+ if(isset($fData['def']))
46
+ $htmlParams['value'] = $fData['def'];
47
+ if(isset($fData['valid']) && in_array('notEmpty', $fData['valid']))
48
+ $htmlParams['required'] = true;
49
+ ?>
50
+ <tr>
51
+ <th scope="row">
52
+ <label for="<?php echo $id?>"><?php echo $fData['label']?></label>
53
+ </th>
54
+ <td>
55
+ <?php echo htmlCfs::$htmlType($fName, $htmlParams)?>
56
+ </td>
57
+ </tr>
58
+ <?php }?>
59
+ <tr>
60
+ <th scope="row" colspan="2">
61
+ <?php echo htmlCfs::hidden('mod', array('value' => 'supsystic_promo'))?>
62
+ <?php echo htmlCfs::hidden('action', array('value' => 'sendContact'))?>
63
+ <button class="button button-primary button-hero" style="float: right;">
64
+ <i class="fa fa-upload"></i>
65
+ <?php _e('Send email', CFS_LANG_CODE)?>
66
+ </button>
67
+ <div style="clear: both;"></div>
68
+ </th>
69
+ </tr>
70
+ </table>
71
+ </form>
72
+ <div class="clear"></div>
73
+ </div>
74
+
75
+ <div id="contact-form-dialog" hidden>
76
+ <div class="on-error" style="display:none">
77
+ <p>Some errors occurred while sending mail please send your message trough this contact form:</p>
78
+ <p><a href="https://supsystic.com/plugins/#contact" target="_blank">https://supsystic.com/plugins/#contact</a></p>
79
+ </div>
80
+ <div class="message"></div>
81
+ </div>
82
+ <div data-section="faq" class="faq-list overview-section">
83
+ <h3><?php _e('FAQ and Documentation', CFS_LANG_CODE)?></h3>
84
+ <?php foreach($this->faqList as $title => $desc) { ?>
85
+ <div class="faq-title">
86
+ <i class="fa fa-info-circle"></i>
87
+ <?php echo $title;?>
88
+ <div class="description" style="display: none;"><?php echo $desc;?></div>
89
+ </div>
90
  <?php }?>
91
+ <div style="clear: both;"></div>
92
+ <a target="_blank" href="https://supsystic.com/docs/contact-form/?utm_source=plugin&utm_medium=faq&utm_campaign=contact-form" class="button button-primary button-hero">
93
+ <i class="fa fa-info-circle"></i>
94
+ Check all FAQs
95
+ </a>
96
+ <div class="clear"></div>
97
+ </div>
98
+ <div data-section="video" class="video overview-section">
99
+ <h3><i class="fa fa-play"></i> Video tutorial</h3>
100
+ <iframe type="text/html"
101
+ width="100%"
102
+ height="350px"
103
+ src="http://www.youtube.com/embed/_GvD8fZryzY"
104
+ frameborder="0">
105
+ </iframe>
106
+ <div class="clear"></div>
107
+ </div>
108
+ <div data-section="promo_video" class="video overview-section">
109
+ <h3><i class="fa fa-star"></i> Our promo video</h3>
110
+ <iframe type="text/html"
111
+ width="100%"
112
+ height="350px"
113
+ src="http://www.youtube.com/embed/dKd_9g6JzfU"
114
+ frameborder="0">
115
+ </iframe>
116
+ <div class="clear"></div>
117
  </div>
118
+ <div data-section="settings" class="server-settings overview-section">
119
+ <h3><i class="fa fa-cog"></i> Server settings</h3>
120
+ <ul class="settings-list">
121
+ <?php foreach($this->serverSettings as $title => $element) {?>
122
+ <li class="settings-line">
123
+ <div class="settings-title"><?php echo $title?>:</div>
124
+ <span><?php echo $element['value']?></span>
125
+ </li>
126
+ <?php }?>
127
+ </ul>
128
+ <div class="clear"></div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ <div class="half-page half-page-right">
133
+ <a href="https://supsystic.com/pricing/?utm_source=plugin&utm_campaign=contact-form" target="_blank"><img class="overview-supsystic-img" src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-01.png"></a>
134
+ <a href="https://supsystic.com/bundle-mix/?utm_source=plugin&utm_campaign=contact-form" target="_blank"><img class="overview-supsystic-img" src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-02.png"></a>
135
+ <a href="https://supsystic.com/all-plugins/?utm_source=plugin&utm_campaign=contact-form" target="_blank"><img style="margin-top:20px;" class="overview-supsystic-img" src="<?php echo CFS_PLUGINS_URL .'/'. CFS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-03.png"></a>
136
+ <div class="clear"></div>
137
+ </div>
138
  </div>
 
 
139
  </div>
 
modules/templates/mod.php CHANGED
@@ -13,6 +13,10 @@ class templatesCfs extends moduleCfs {
13
  $this->loadAdminCoreJs();
14
  $this->loadCoreCss();
15
  $this->loadChosenSelects();
 
 
 
 
16
  frameCfs::_()->addScript('adminOptionsCfs', CFS_JS_PATH. 'admin.options.js', array(), false, true);
17
  add_action('admin_enqueue_scripts', array($this, 'loadMediaScripts'));
18
  add_action('init', array($this, 'connectAdditionalAdminAssets'));
@@ -63,7 +67,26 @@ class templatesCfs extends moduleCfs {
63
  );
64
  if(is_admin()) {
65
  $jsData['isPro'] = frameCfs::_()->getModule('supsystic_promo')->isPro();
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  $jsData = dispatcherCfs::applyFilters('jsInitVariables', $jsData);
68
  frameCfs::_()->addJSVar('coreCfs', 'CFS_DATA', $jsData);
69
  $loaded = true;
13
  $this->loadAdminCoreJs();
14
  $this->loadCoreCss();
15
  $this->loadChosenSelects();
16
+
17
+ frameCfs::_()->addScript('cfsAcPromoScript', CFS_JS_PATH. 'acPromoScript.js');
18
+ frameCfs::_()->addStyle('cfsAcPromoStyle', CFS_CSS_PATH. 'acPromoStyle.css');
19
+
20
  frameCfs::_()->addScript('adminOptionsCfs', CFS_JS_PATH. 'admin.options.js', array(), false, true);
21
  add_action('admin_enqueue_scripts', array($this, 'loadMediaScripts'));
22
  add_action('init', array($this, 'connectAdditionalAdminAssets'));
67
  );
68
  if(is_admin()) {
69
  $jsData['isPro'] = frameCfs::_()->getModule('supsystic_promo')->isPro();
70
+ $show = true;
71
+ $acSubscribe = get_option('cfs_ac_subscribe', false);
72
+ if (!empty($acSubscribe)) {
73
+ $show = false;
74
+ }
75
+ $acDisabled = get_option('cfs_ac_disabled', false);
76
+ if (!empty($acDisabled)) {
77
+ $show = false;
78
+ }
79
+ $acRemind = get_option('cfs_ac_remind', false);
80
+ if (!empty($acRemind)) {
81
+ $currentDate = date('Y-m-d h:i:s');
82
+ if ($currentDate > $acRemind) {
83
+ $show = true;
84
+ } else {
85
+ $show = false;
86
+ }
87
+ }
88
+ $jsData['cfsAcShow'] = $show;
89
+ }
90
  $jsData = dispatcherCfs::applyFilters('jsInitVariables', $jsData);
91
  frameCfs::_()->addJSVar('coreCfs', 'CFS_DATA', $jsData);
92
  $loaded = true;
readme.txt CHANGED
@@ -1,8 +1,8 @@
1
  === Contact Form by Supsystic ===
2
  Contributors: supsystic.com
3
  Tags: contact, contact form, contact form builder, contact form maker, contact form manager, contact form plugin, contact forms, custom form, feedback form, form, forms, forms creator
4
- Tested up to: 5.8
5
- Stable tag: 1.7.21
6
 
7
  Contact Form Builder with drag-and-drop editor to create responsive, mobile ready contact forms in a second. Custom fields and contact form templates
8
 
@@ -202,6 +202,14 @@ Using Contact Form plugin on your WordPress site, you start a really responsive
202
  Contact Form admin interface
203
 
204
  == Changelog ==
 
 
 
 
 
 
 
 
205
  1.7.21 / 05.11.2021 =
206
  * Add fix for striptags
207
 
1
  === Contact Form by Supsystic ===
2
  Contributors: supsystic.com
3
  Tags: contact, contact form, contact form builder, contact form maker, contact form manager, contact form plugin, contact forms, custom form, feedback form, form, forms, forms creator
4
+ Tested up to: 6.0
5
+ Stable tag: 1.7.23
6
 
7
  Contact Form Builder with drag-and-drop editor to create responsive, mobile ready contact forms in a second. Custom fields and contact form templates
8
 
202
  Contact Form admin interface
203
 
204
  == Changelog ==
205
+ 1.7.23 / 30.08.2022 =
206
+ * Add support WP 6.0
207
+ * Add support PHP 8.1
208
+
209
+ 1.7.22 / 30.08.2022 =
210
+ * Add support WP 6.0
211
+ * Add support PHP 8.1
212
+
213
  1.7.21 / 05.11.2021 =
214
  * Add fix for striptags
215