Pricing Table by Supsystic - Version 1.9.8

Version Description

Download this release

Release Info

Developer supsystic.com
Plugin Icon 128x128 Pricing Table by Supsystic
Version 1.9.8
Comparing to
See all releases

Code changes from version 1.9.7 to 1.9.8

Files changed (38) hide show
  1. classes/Twig/Lexer.php +14 -14
  2. classes/Twig/Node.php +2 -2
  3. classes/frame.php +1 -1
  4. config.php +5 -4
  5. css/acPromoStyle.css +420 -0
  6. css/supsystic-ui.css +0 -2
  7. js/acPromoScript.js +142 -0
  8. modules/adminmenu/mod.php +14 -14
  9. modules/options/views/tpl/optionsAdminPage.php +9 -4
  10. modules/supsystic_promo/controller.php +41 -1
  11. modules/supsystic_promo/img/256.png +0 -0
  12. modules/supsystic_promo/img/Backup_256.png +0 -0
  13. modules/supsystic_promo/img/Coming_Soon_256.png +0 -0
  14. modules/supsystic_promo/img/Contact_Form_256.png +0 -0
  15. modules/supsystic_promo/img/Data_Tables_256.png +0 -0
  16. modules/supsystic_promo/img/Digital_Publication_256.png +0 -0
  17. modules/supsystic_promo/img/Gallery_256.png +0 -0
  18. modules/supsystic_promo/img/Google_Maps_256.png +0 -0
  19. modules/supsystic_promo/img/Live_Chat_256.png +0 -0
  20. modules/supsystic_promo/img/Popup_256.png +0 -0
  21. modules/supsystic_promo/img/Pricing_Table_256.png +0 -0
  22. modules/supsystic_promo/img/Slider_256.png +0 -0
  23. modules/supsystic_promo/img/Social_Buttons_256.png +0 -0
  24. modules/supsystic_promo/img/icon-256x256.png +0 -0
  25. modules/supsystic_promo/img/kinsta_banner.png +0 -0
  26. modules/supsystic_promo/img/overview-01.png +0 -0
  27. modules/supsystic_promo/img/overview-02.png +0 -0
  28. modules/supsystic_promo/img/overview-03.png +0 -0
  29. modules/supsystic_promo/img/plugin-icon.png +0 -0
  30. modules/supsystic_promo/img/supsystic-logo-small.png +0 -0
  31. modules/supsystic_promo/mod.php +51 -54
  32. modules/supsystic_promo/views/supsystic_promo.php +6 -39
  33. modules/supsystic_promo/views/tpl/adminFooter.php +34 -15
  34. modules/supsystic_promo/views/tpl/overviewTabContent.php +135 -69
  35. modules/tables/models/tables.php +1 -1
  36. modules/templates/mod.php +24 -3
  37. pts.php +1 -1
  38. readme.txt +6 -2
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]);
@@ -316,15 +316,15 @@ class Twig_Lexer implements Twig_LexerInterface
316
 
317
  protected function lexString()
318
  {
319
- if (preg_match($this->regexes['interpolation_start'], $this->code, $match, null, $this->cursor)) {
320
  $this->brackets[] = array($this->options['interpolation'][0], $this->lineno);
321
  $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE);
322
  $this->moveCursor($match[0]);
323
  $this->pushState(self::STATE_INTERPOLATION);
324
- } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) {
325
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0]));
326
  $this->moveCursor($match[0]);
327
- } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) {
328
  list($expect, $lineno) = array_pop($this->brackets);
329
  if ($this->code[$this->cursor] != '"') {
330
  throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename);
@@ -338,7 +338,7 @@ class Twig_Lexer implements Twig_LexerInterface
338
  protected function lexInterpolation()
339
  {
340
  $bracket = end($this->brackets);
341
- if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, null, $this->cursor)) {
342
  array_pop($this->brackets);
343
  $this->pushToken(Twig_Token::INTERPOLATION_END_TYPE);
344
  $this->moveCursor($match[0]);
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]);
316
 
317
  protected function lexString()
318
  {
319
+ if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) {
320
  $this->brackets[] = array($this->options['interpolation'][0], $this->lineno);
321
  $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE);
322
  $this->moveCursor($match[0]);
323
  $this->pushState(self::STATE_INTERPOLATION);
324
+ } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && strlen($match[0]) > 0) {
325
  $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0]));
326
  $this->moveCursor($match[0]);
327
+ } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) {
328
  list($expect, $lineno) = array_pop($this->brackets);
329
  if ($this->code[$this->cursor] != '"') {
330
  throw new Twig_Error_Syntax(sprintf('Unclosed "%s"', $expect), $lineno, $this->filename);
338
  protected function lexInterpolation()
339
  {
340
  $bracket = end($this->brackets);
341
+ if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) {
342
  array_pop($this->brackets);
343
  $this->pushToken(Twig_Token::INTERPOLATION_END_TYPE);
344
  $this->moveCursor($match[0]);
classes/Twig/Node.php CHANGED
@@ -218,12 +218,12 @@ class Twig_Node implements Twig_NodeInterface
218
  {
219
  unset($this->nodes[$name]);
220
  }
221
-
222
  public function count()
223
  {
224
  return count($this->nodes);
225
  }
226
-
227
  public function getIterator()
228
  {
229
  return new ArrayIterator($this->nodes);
218
  {
219
  unset($this->nodes[$name]);
220
  }
221
+ #[\ReturnTypeWillChange]
222
  public function count()
223
  {
224
  return count($this->nodes);
225
  }
226
+ #[\ReturnTypeWillChange]
227
  public function getIterator()
228
  {
229
  return new ArrayIterator($this->nodes);
classes/frame.php CHANGED
@@ -390,7 +390,7 @@ class framePts {
390
  }
391
  public function isAdminPlugOptsPage() {
392
  $page = reqPts::getVar('page');
393
- if (is_admin() && strpos($page, framePts::_()->getModule('adminmenu')
394
  ->getMainSlug()) !== false) return true;
395
  return false;
396
  }
390
  }
391
  public function isAdminPlugOptsPage() {
392
  $page = reqPts::getVar('page');
393
+ if (is_admin() && strpos((string)$page, framePts::_()->getModule('adminmenu')
394
  ->getMainSlug()) !== false) return true;
395
  return false;
396
  }
config.php CHANGED
@@ -12,15 +12,16 @@
12
  define('PTS_TPL_DIR', PTS_DIR. 'tpl'. DS);
13
  define('PTS_CLASSES_DIR', PTS_DIR. 'classes'. DS);
14
  define('PTS_TABLES_DIR', PTS_CLASSES_DIR. 'tables'. DS);
15
- define('PTS_HELPERS_DIR', PTS_CLASSES_DIR. 'helpers'. DS);
16
  define('PTS_LANG_DIR', PTS_DIR. 'languages'. DS);
17
  define('PTS_IMG_DIR', PTS_DIR. 'img'. DS);
18
  define('PTS_TEMPLATES_DIR', PTS_DIR. 'templates'. DS);
19
  define('PTS_MODULES_DIR', PTS_DIR. 'modules'. DS);
20
  define('PTS_FILES_DIR', PTS_DIR. 'files'. DS);
21
- define('PTS_JS_DIR', PTS_DIR. 'js'. DS);
22
  define('PTS_ADMIN_DIR', ABSPATH. 'wp-admin'. DS);
23
 
 
24
  define('PTS_SITE_URL', get_bloginfo('wpurl'). '/');
25
  define('PTS_ASSETS_PATH', plugins_url().'/'.basename(dirname(__FILE__)).'/assets/');
26
  define('PTS_JS_PATH', plugins_url().'/'.basename(dirname(__FILE__)).'/js/');
@@ -32,7 +33,7 @@
32
  define('PTS_URL', PTS_SITE_URL);
33
 
34
  define('PTS_LOADER_IMG', PTS_IMG_PATH. 'loading.gif');
35
- define('PTS_TIME_FORMAT', 'H:i:s');
36
  define('PTS_DATE_DL', '/');
37
  define('PTS_DATE_FORMAT', 'm/d/Y');
38
  define('PTS_DATE_FORMAT_HIS', 'm/d/Y ('. PTS_TIME_FORMAT. ')');
@@ -48,7 +49,7 @@
48
  define('PTS_EOL', "\n");
49
 
50
  define('PTS_PLUGIN_INSTALLED', true);
51
- define('PTS_VERSION', '1.9.7');
52
  define('PTS_USER', 'user');
53
 
54
  define('PTS_CLASS_PREFIX', 'ptsc');
12
  define('PTS_TPL_DIR', PTS_DIR. 'tpl'. DS);
13
  define('PTS_CLASSES_DIR', PTS_DIR. 'classes'. DS);
14
  define('PTS_TABLES_DIR', PTS_CLASSES_DIR. 'tables'. DS);
15
+ define('PTS_HELPERS_DIR', PTS_CLASSES_DIR. 'helpers'. DS);
16
  define('PTS_LANG_DIR', PTS_DIR. 'languages'. DS);
17
  define('PTS_IMG_DIR', PTS_DIR. 'img'. DS);
18
  define('PTS_TEMPLATES_DIR', PTS_DIR. 'templates'. DS);
19
  define('PTS_MODULES_DIR', PTS_DIR. 'modules'. DS);
20
  define('PTS_FILES_DIR', PTS_DIR. 'files'. DS);
21
+ define('PTS_JS_DIR', PTS_DIR. 'js'. DS);
22
  define('PTS_ADMIN_DIR', ABSPATH. 'wp-admin'. DS);
23
 
24
+ define('PTS_PLUGINS_URL', plugins_url());
25
  define('PTS_SITE_URL', get_bloginfo('wpurl'). '/');
26
  define('PTS_ASSETS_PATH', plugins_url().'/'.basename(dirname(__FILE__)).'/assets/');
27
  define('PTS_JS_PATH', plugins_url().'/'.basename(dirname(__FILE__)).'/js/');
33
  define('PTS_URL', PTS_SITE_URL);
34
 
35
  define('PTS_LOADER_IMG', PTS_IMG_PATH. 'loading.gif');
36
+ define('PTS_TIME_FORMAT', 'H:i:s');
37
  define('PTS_DATE_DL', '/');
38
  define('PTS_DATE_FORMAT', 'm/d/Y');
39
  define('PTS_DATE_FORMAT_HIS', 'm/d/Y ('. PTS_TIME_FORMAT. ')');
49
  define('PTS_EOL', "\n");
50
 
51
  define('PTS_PLUGIN_INSTALLED', true);
52
+ define('PTS_VERSION', '1.9.8');
53
  define('PTS_USER', 'user');
54
 
55
  define('PTS_CLASS_PREFIX', 'ptsc');
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
+ .supsysticOverviewACFormOverlay .button:hover {
383
+ background: #4ae8ea !important;
384
+ border-color: #4ae8ea !important;
385
+ }
386
+ .supsysticOverviewACForm input {
387
+ background-color: #f6f7f7;
388
+ color: #252728;
389
+ border-left: none;
390
+ border-right: none;
391
+ border-bottom: none;
392
+ border-top: 1px solid #dfe4e4;
393
+ padding: 7px 5px;
394
+ line-height: 1.3em;
395
+ }
396
+ .supsystic-breadcrumbs .breadcrumbs-separator {
397
+ filter: invert(1);
398
+ }
399
+ .supsystic-plugin .supsystic-content {
400
+ width:100% !important;
401
+ }
402
+ .supsystic-overview .button {
403
+ min-height:inherit !important;
404
+ }
405
+ .supsystic-overview .supsystic-plugin a {
406
+ color:#3c434a !important;
407
+ }
408
+ #supsystic-breadcrumbs {
409
+ background:#263546 !important;
410
+ }
411
+ #supsystic-breadcrumbs .chosen-container-single .chosen-single span {
412
+ color: black !important;
413
+ }
414
+ #supsystic-breadcrumbs .button-primary {
415
+ color:black !important;
416
+ background:white;
417
+ }
418
+ #supsystic-breadcrumbs .button-primary i {
419
+ color:black !important;
420
+ }
css/supsystic-ui.css CHANGED
@@ -400,7 +400,6 @@ input[type="color"] {
400
  .ui-button,
401
  .ui-button.ui-state-default {
402
  font-size: 15px;
403
- height: 32px;
404
  border: none;
405
  -webkit-border-radius: 0 !important;
406
  border-radius: 0 !important;
@@ -649,7 +648,6 @@ input[type="color"] {
649
  border-radius: 0px !important;
650
  color: #000 !important;
651
  font-size: 13px !important;
652
- margin: 0 0 10px !important;
653
  padding: 9.5px !important;
654
  font-family: monospace !important;
655
  cursor: pointer;
400
  .ui-button,
401
  .ui-button.ui-state-default {
402
  font-size: 15px;
 
403
  border: none;
404
  -webkit-border-radius: 0 !important;
405
  border-radius: 0 !important;
648
  border-radius: 0px !important;
649
  color: #000 !important;
650
  font-size: 13px !important;
 
651
  padding: 9.5px !important;
652
  font-family: monospace !important;
653
  cursor: pointer;
js/acPromoScript.js ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ var nonce = jQuery("[name='pts_nonce']").val();
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': 'pts',
22
+ 'reqType': 'ajax',
23
+ 'mod': 'supsystic_promo',
24
+ 'action': 'sendSubscribeMail',
25
+ 'pts_nonce' : nonce,
26
+ 'data': data
27
+ },
28
+ success: function(response) {
29
+ jQuery('#subscribe-btn').find('i').attr('class', defaultIconClass);
30
+ jQuery('#subscribe-btn').attr('disabled', false);
31
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
32
+
33
+ jQuery('#supsysticOverviewACFormDialog').find('.message').text('Thank You For Subscribing!');
34
+ jQuery('#supsysticOverviewACFormDialog').dialog({
35
+ autoOpen: true,
36
+ resizable: false,
37
+ width: 500,
38
+ height: 280,
39
+ modal: true,
40
+ buttons: {
41
+ Close: function() {
42
+ jQuery('#supsysticOverviewACFormDialog').find('.on-error').hide();
43
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
44
+ jQuery(this).dialog("close");
45
+ }
46
+ }
47
+ });
48
+
49
+ },
50
+ fail: function(err) {
51
+ jQuery('#supsysticOverviewACFormDialog').find('.on-error').show();
52
+ }
53
+ });
54
+ }
55
+
56
+ jQuery('#subscribe-btn').on('click', function(e) {
57
+ e.preventDefault();
58
+ if (!$userMail.val() || !$userName.val()) {
59
+ jQuery('.supsysticOverviewACFormNotification').show();
60
+ return;
61
+ }
62
+ jQuery('.supsysticOverviewACFormNotification').hide();
63
+ jQuery('#subscribe-btn, .supsysticOverviewACBtnRemind, .supsysticOverviewACBtnDisable').attr('disabled', 'disabled').prop('disabled', 'disabled');
64
+ sendSubscribeMail();
65
+ });
66
+
67
+ function sendSubscribeRemind() {
68
+ var defaultIconClass = jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class');
69
+ jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class', 'fa fa-spinner fa-spin');
70
+ jQuery('.supsysticOverviewACBtnRemind').attr('disabled', true);
71
+ var form_data = jQuery('#overview-ac-form').serializeArray();
72
+ var nonce = jQuery("[name='pts_nonce']").val();
73
+ jQuery.ajax({
74
+ url: ajaxurl,
75
+ type: 'post',
76
+ data: {
77
+ 'pl': 'pts',
78
+ 'reqType': 'ajax',
79
+ 'mod': 'supsystic_promo',
80
+ 'action': 'sendSubscribeRemind',
81
+ 'pts_nonce' : nonce,
82
+ },
83
+ success: function(response) {
84
+ jQuery('.supsysticOverviewACBtnRemind').find('i').attr('class', defaultIconClass);
85
+ jQuery('.supsysticOverviewACBtnRemind').attr('disabled', false);
86
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
87
+ },
88
+ fail: function(err) {}
89
+ });
90
+ }
91
+ jQuery('.supsysticOverviewACBtnRemind').on('click', function(e) {
92
+ e.preventDefault();
93
+ sendSubscribeRemind();
94
+ });
95
+
96
+ function sendSubscribeDisable() {
97
+ var defaultIconClass = jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class');
98
+ jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class', 'fa fa-spinner fa-spin');
99
+ jQuery('.supsysticOverviewACBtnDisable').attr('disabled', true);
100
+ var form_data = jQuery('#overview-ac-form').serializeArray();
101
+ var nonce = jQuery("[name='pts_nonce']").val();
102
+ jQuery.ajax({
103
+ url: ajaxurl,
104
+ type: 'post',
105
+ data: {
106
+ 'pl': 'pts',
107
+ 'reqType': 'ajax',
108
+ 'mod': 'supsystic_promo',
109
+ 'action': 'sendSubscribeDisable',
110
+ 'pts_nonce' : nonce,
111
+ },
112
+ success: function(response) {
113
+ jQuery('.supsysticOverviewACBtnDisable').find('i').attr('class', defaultIconClass);
114
+ jQuery('.supsysticOverviewACBtnDisable').attr('disabled', false);
115
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
116
+ },
117
+ fail: function(err) {}
118
+ });
119
+ }
120
+ jQuery('.supsysticOverviewACBtnDisable').on('click', function(e) {
121
+ e.preventDefault();
122
+ sendSubscribeDisable();
123
+ });
124
+
125
+ jQuery('.overview-section-btn').on('click', function() {
126
+ jQuery(".overview-section").hide();
127
+ jQuery(".overview-section[data-section='" + jQuery(this).data("section") + "']").show();
128
+ jQuery('.overview-section-btn-active').removeClass('overview-section-btn-active');
129
+ jQuery(this).addClass('overview-section-btn-active');
130
+ });
131
+ jQuery('.supsysticOverviewACBtnDisable, .supsysticOverviewACClose, .supsysticOverviewACBtnRemind').on('click', function() {
132
+ jQuery('.supsysticOverviewACFormOverlay').fadeOut();
133
+ });
134
+ jQuery('.overview-section-btn').eq(0).trigger('click');
135
+
136
+ if (!PTS_DATA['ptsAcShow']) {
137
+ jQuery('.supsysticOverviewACFormOverlay').hide();
138
+ jQuery('.supsysticOverviewACFormOverlay').remove();
139
+ } else {
140
+ jQuery('.supsysticOverviewACFormOverlay').show();
141
+ }
142
+ });
modules/adminmenu/mod.php CHANGED
@@ -9,21 +9,21 @@ class adminmenuPts extends modulePts {
9
  'initMenu'
10
  ) , 9);
11
  $plugName = plugin_basename(PTS_DIR . PTS_MAIN_FILE);
12
- add_filter('plugin_action_links_' . $plugName, array(
13
- $this,
14
- 'addSettingsLinkForPlug'
15
- ));
16
- }
17
- public function addSettingsLinkForPlug($links) {
18
- $mainLink = 'http://supsystic.com/';
19
- $twitterStatus = sprintf(__('Cool WordPress plugins from supsystic.com developers. I tried %s - and this was what I need! #supsystic.com', PTS_LANG_CODE) , PTS_WP_PLUGIN_NAME);
20
- array_unshift($links, '<a href="' . $this->getMainLink() . '">' . __('Settings', PTS_LANG_CODE) . '</a>');
21
- array_push($links, '<a title="' . __('More plugins for your WordPress site here!', PTS_LANG_CODE) . '" href="' . $mainLink . '" target="_blank">supsystic.com</a>');
22
- array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://www.facebook.com/sharer/sharer.php?u=' . urlencode($mainLink) . '" target="_blank" class="dashicons-before dashicons-facebook-alt"></a>');
23
- array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://twitter.com/home?status=' . urlencode($twitterStatus) . '" target="_blank" class="dashicons-before dashicons-twitter"></a>');
24
- array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://plus.google.com/share?url=' . urlencode($mainLink) . '" target="_blank" class="dashicons-before dashicons-googleplus"></a>');
25
- return $links;
26
  }
 
 
 
 
 
 
 
 
 
 
27
  public function initMenu() {
28
  $mainCap = $this->getMainCap();
29
  $mainSlug = dispatcherPts::applyFilters('adminMenuMainSlug', $this->_mainSlug);
9
  'initMenu'
10
  ) , 9);
11
  $plugName = plugin_basename(PTS_DIR . PTS_MAIN_FILE);
12
+ // add_filter('plugin_action_links_' . $plugName, array(
13
+ // $this,
14
+ // 'addSettingsLinkForPlug'
15
+ // ));
 
 
 
 
 
 
 
 
 
 
16
  }
17
+ // public function addSettingsLinkForPlug($links) {
18
+ // $mainLink = 'http://supsystic.com/';
19
+ // $twitterStatus = sprintf(__('Cool WordPress plugins from supsystic.com developers. I tried %s - and this was what I need! #supsystic.com', PTS_LANG_CODE) , PTS_WP_PLUGIN_NAME);
20
+ // array_unshift($links, '<a href="' . $this->getMainLink() . '">' . __('Settings', PTS_LANG_CODE) . '</a>');
21
+ // array_push($links, '<a title="' . __('More plugins for your WordPress site here!', PTS_LANG_CODE) . '" href="' . $mainLink . '" target="_blank">supsystic.com</a>');
22
+ // array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://www.facebook.com/sharer/sharer.php?u=' . urlencode($mainLink) . '" target="_blank" class="dashicons-before dashicons-facebook-alt"></a>');
23
+ // array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://twitter.com/home?status=' . urlencode($twitterStatus) . '" target="_blank" class="dashicons-before dashicons-twitter"></a>');
24
+ // array_push($links, '<a title="' . __('Spread the word!', PTS_LANG_CODE) . '" href="https://plus.google.com/share?url=' . urlencode($mainLink) . '" target="_blank" class="dashicons-before dashicons-googleplus"></a>');
25
+ // return $links;
26
+ // }
27
  public function initMenu() {
28
  $mainCap = $this->getMainCap();
29
  $mainSlug = dispatcherPts::applyFilters('adminMenuMainSlug', $this->_mainSlug);
modules/options/views/tpl/optionsAdminPage.php CHANGED
@@ -12,11 +12,11 @@
12
  <li class="<?php echo (($this->activeTab == $tabKey || in_array($tabKey, $this->activeParentTabs)) ? 'active' : '')?>">
13
  <a href="<?php echo $tab['url']?>">
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
  <?php echo $tab['label']?>
22
  </a>
@@ -25,10 +25,15 @@
25
  </ul>
26
  </nav>
27
  <div class="supsystic-container supsystic-<?php echo $this->activeTab?>">
28
- <?php dispatcherPts::doAction('discountMsg');?>
29
  <?php echo $this->content?>
30
  <div class="clear"></div>
31
  </div>
 
 
 
 
 
32
  </section>
33
  </div>
34
  </div>
12
  <li class="<?php echo (($this->activeTab == $tabKey || in_array($tabKey, $this->activeParentTabs)) ? 'active' : '')?>">
13
  <a href="<?php echo $tab['url']?>">
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
  <?php echo $tab['label']?>
22
  </a>
25
  </ul>
26
  </nav>
27
  <div class="supsystic-container supsystic-<?php echo $this->activeTab?>">
28
+ <?php //dispatcherPts::doAction('discountMsg');?>
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/popup-by-supsystic?filter=5#postform">★★★★★</a> on wordpress.org</div>
34
+ <a href="https://supsystic.com/" target="_blank"><img src="<?php echo PTS_PLUGINS_URL .'/'. PTS_PLUG_NAME;?>/modules/supsystic_promo/img/supsystic-logo-small.png"></a>
35
+ <div class="supsystic-footer-plugin-version">Pricing Table by Supsystic Version: <?php echo PTS_VERSION?></div>
36
+ </div>
37
  </section>
38
  </div>
39
  </div>
modules/supsystic_promo/controller.php CHANGED
@@ -242,6 +242,45 @@ class supsystic_promoControllerPts extends controllerPts {
242
  }
243
  $res->ajaxExec();
244
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  /**
246
  * @see controller::getPermissions();
247
  */
@@ -253,7 +292,8 @@ class supsystic_promoControllerPts extends controllerPts {
253
  'sendContact',
254
  'compileTyniMce',
255
  'dropTinyMceFullPlugins',
256
- 'addNoticeAction'
 
257
  )
258
  ) ,
259
  );
242
  }
243
  $res->ajaxExec();
244
  }
245
+ public function sendSubscribeMail()
246
+ {
247
+ $res = new responsePts();
248
+ $data = reqPts::get('post');
249
+ $apiUrl = 'https://supsystic.com/wp-admin/admin-ajax.php';
250
+ $reqUrl = $apiUrl . '?action=ac_get_plugin_installed';
251
+ $mail = $data['data'];
252
+ $isPro = !empty($this->getModule('suspsystic_promo')->isPro()) ? true : false;
253
+ $data = array(
254
+ 'body' => array(
255
+ 'key' => 'kJ#f3(FjkF9fasd124t5t589u9d4389r3r3R#2asdas3(#R03r#(r#t-4t5t589u9d4389r3r3R#$%lfdj',
256
+ 'user_name' => $mail['username'],
257
+ 'user_email' => $mail['email'],
258
+ 'site_url' => get_bloginfo('wpurl'),
259
+ 'site_name' => get_bloginfo('name'),
260
+ 'plugin_code' => 'pts',
261
+ 'is_pro' => $isPro,
262
+ ),
263
+ );
264
+ $response = wp_remote_post($reqUrl, $data);
265
+ if (is_wp_error($response)) {
266
+ $res->pushError( 'Some errors' );
267
+ } else {
268
+ update_option('pts_ac_subscribe', true);
269
+ }
270
+ $res->ajaxExec();
271
+ }
272
+ public function sendSubscribeRemind()
273
+ {
274
+ $res = new responsePts();
275
+ update_option('pts_ac_remind', date("Y-m-d h:i:s", time() + 86400));
276
+ $res->ajaxExec();
277
+ }
278
+ public function sendSubscribeDisable()
279
+ {
280
+ $res = new responsePts();
281
+ update_option('pts_ac_disabled', true);
282
+ $res->ajaxExec();
283
+ }
284
  /**
285
  * @see controller::getPermissions();
286
  */
292
  'sendContact',
293
  'compileTyniMce',
294
  'dropTinyMceFullPlugins',
295
+ 'addNoticeAction',
296
+ 'sendSubscribeMail', 'sendSubscribeRemind', 'sendSubscribeDisable'
297
  )
298
  ) ,
299
  );
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
@@ -42,10 +42,10 @@ class supsystic_promoPts extends modulePts {
42
  $this,
43
  'checkProTpls'
44
  ));
45
- dispatcherPts::addAction('discountMsg', array(
46
- $this,
47
- 'getDiscountMsg'
48
- ));
49
  add_action('admin_notices', array(
50
  $this,
51
  'checkAdminPromoNotices'
@@ -65,7 +65,7 @@ class supsystic_promoPts extends modulePts {
65
  $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>', PTS_LANG_CODE);
66
  $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 tables. 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>', PTS_LANG_CODE);
67
  $enbPromoLinkMsg .= '<p><a href="#" class="button button-primary" data-statistic-code="done">' . __('Ok, you deserve it', PTS_LANG_CODE) . '</a><a href="#" class="button" data-statistic-code="later">' . __('Nope, maybe later', PTS_LANG_CODE) . '</a><a href="#" class="button" data-statistic-code="hide">' . __('Skip', PTS_LANG_CODE) . '</a></p>';
68
- $checkOtherPlugins = '<p>' . 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!', PTS_LANG_CODE) , framePts::_()->getModule('options')->getTabUrl('featured-plugins')) . '</p>';
69
  $notices = array(
70
  'rate_msg' => array(
71
  'html' => $rateMsg,
@@ -75,10 +75,10 @@ class supsystic_promoPts extends modulePts {
75
  'html' => $enbPromoLinkMsg,
76
  'show_after' => 11 * $day
77
  ) ,
78
- 'check_other_plugs_msg' => array(
79
- 'html' => $checkOtherPlugins,
80
- 'show_after' => 1 * $day
81
- ) ,
82
  );
83
  foreach ($notices as $nKey => $n) {
84
  if ($currTime - $startUsage <= $n['show_after']) {
@@ -131,15 +131,15 @@ class supsystic_promoPts extends modulePts {
131
  'fa_icon' => 'fa-info',
132
  'sort_order' => 5,
133
  );
134
- $tabs['featured-plugins'] = array(
135
- 'label' => __('Featured Plugins', PTS_LANG_CODE) ,
136
- 'callback' => array(
137
- $this,
138
- 'showFeaturedPluginsPage'
139
- ) ,
140
- 'fa_icon' => 'fa-heart',
141
- 'sort_order' => 99,
142
- );
143
  return $tabs;
144
  }
145
  public function getOverviewTabContent() {
@@ -480,42 +480,39 @@ class supsystic_promoPts extends modulePts {
480
  }
481
  return $list;
482
  }
483
- public function showFeaturedPluginsPage() {
484
- return $this->getView()->showFeaturedPluginsPage();
485
- }
486
- public function getDiscountMsg() {
487
- if ($this->isPro() && framePts::_()->getModule('options')->getActiveTab() == 'license' && framePts::_()->getModule('license') && framePts::_()->getModule('license')->getModel()->isActive()) {
488
- $proPluginsList = array(
489
- 'ultimate-maps-by-supsystic-pro',
490
- 'newsletters-by-supsystic-pro',
491
- 'contact-form-by-supsystic-pro',
492
- 'live-chat-pro',
493
- 'digital-publications-supsystic-pro',
494
- 'coming-soon-supsystic-pro',
495
- 'price-table-supsystic-pro',
496
- 'tables-generator-pro',
497
- 'social-share-pro',
498
- 'popup-by-supsystic-pro',
499
- 'supsystic_slider_pro',
500
- 'supsystic-gallery-pro',
501
- 'google-maps-easy-pro',
502
- 'backup-supsystic-pro',
503
- );
504
- $activePluginsList = get_option('active_plugins', array());
505
- $activeProPluginsCount = 0;
506
- foreach ($activePluginsList as $actPl) {
507
- foreach ($proPluginsList as $proPl) {
508
- if (strpos($actPl, $proPl) !== false) {
509
- $activeProPluginsCount++;
510
- }
511
- }
512
- }
513
- if ($activeProPluginsCount === 1) {
514
- $buyLink = $this->getDiscountBuyUrl();
515
- $this->getView()->getDiscountMsg($buyLink);
516
- }
517
- }
518
- }
519
  public function getDiscountBuyUrl() {
520
  $license = framePts::_()->getModule('license')->getModel()->getCredentials();
521
  $license['key'] = md5($license['key']);
42
  $this,
43
  'checkProTpls'
44
  ));
45
+ // dispatcherPts::addAction('discountMsg', array(
46
+ // $this,
47
+ // 'getDiscountMsg'
48
+ // ));
49
  add_action('admin_notices', array(
50
  $this,
51
  'checkAdminPromoNotices'
65
  $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>', PTS_LANG_CODE);
66
  $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 tables. 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>', PTS_LANG_CODE);
67
  $enbPromoLinkMsg .= '<p><a href="#" class="button button-primary" data-statistic-code="done">' . __('Ok, you deserve it', PTS_LANG_CODE) . '</a><a href="#" class="button" data-statistic-code="later">' . __('Nope, maybe later', PTS_LANG_CODE) . '</a><a href="#" class="button" data-statistic-code="hide">' . __('Skip', PTS_LANG_CODE) . '</a></p>';
68
+ // $checkOtherPlugins = '<p>' . 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!', PTS_LANG_CODE) , framePts::_()->getModule('options')->getTabUrl('featured-plugins')) . '</p>';
69
  $notices = array(
70
  'rate_msg' => array(
71
  'html' => $rateMsg,
75
  'html' => $enbPromoLinkMsg,
76
  'show_after' => 11 * $day
77
  ) ,
78
+ // 'check_other_plugs_msg' => array(
79
+ // 'html' => $checkOtherPlugins,
80
+ // 'show_after' => 1 * $day
81
+ // ) ,
82
  );
83
  foreach ($notices as $nKey => $n) {
84
  if ($currTime - $startUsage <= $n['show_after']) {
131
  'fa_icon' => 'fa-info',
132
  'sort_order' => 5,
133
  );
134
+ // $tabs['featured-plugins'] = array(
135
+ // 'label' => __('Featured Plugins', PTS_LANG_CODE) ,
136
+ // 'callback' => array(
137
+ // $this,
138
+ // 'showFeaturedPluginsPage'
139
+ // ) ,
140
+ // 'fa_icon' => 'fa-heart',
141
+ // 'sort_order' => 99,
142
+ // );
143
  return $tabs;
144
  }
145
  public function getOverviewTabContent() {
480
  }
481
  return $list;
482
  }
483
+ // public function getDiscountMsg() {
484
+ // if ($this->isPro() && framePts::_()->getModule('options')->getActiveTab() == 'license' && framePts::_()->getModule('license') && framePts::_()->getModule('license')->getModel()->isActive()) {
485
+ // $proPluginsList = array(
486
+ // 'ultimate-maps-by-supsystic-pro',
487
+ // 'newsletters-by-supsystic-pro',
488
+ // 'contact-form-by-supsystic-pro',
489
+ // 'live-chat-pro',
490
+ // 'digital-publications-supsystic-pro',
491
+ // 'coming-soon-supsystic-pro',
492
+ // 'price-table-supsystic-pro',
493
+ // 'tables-generator-pro',
494
+ // 'social-share-pro',
495
+ // 'popup-by-supsystic-pro',
496
+ // 'supsystic_slider_pro',
497
+ // 'supsystic-gallery-pro',
498
+ // 'google-maps-easy-pro',
499
+ // 'backup-supsystic-pro',
500
+ // );
501
+ // $activePluginsList = get_option('active_plugins', array());
502
+ // $activeProPluginsCount = 0;
503
+ // foreach ($activePluginsList as $actPl) {
504
+ // foreach ($proPluginsList as $proPl) {
505
+ // if (strpos($actPl, $proPl) !== false) {
506
+ // $activeProPluginsCount++;
507
+ // }
508
+ // }
509
+ // }
510
+ // if ($activeProPluginsCount === 1) {
511
+ // $buyLink = $this->getDiscountBuyUrl();
512
+ // $this->getView()->getDiscountMsg($buyLink);
513
+ // }
514
+ // }
515
+ // }
 
 
 
516
  public function getDiscountBuyUrl() {
517
  $license = framePts::_()->getModule('license')->getModel()->getCredentials();
518
  $license['key'] = md5($license['key']);
modules/supsystic_promo/views/supsystic_promo.php CHANGED
@@ -54,43 +54,10 @@ class supsystic_promoViewPts extends viewPts {
54
  'PHP CURL Support' => array('value' => extension_loaded('curl') ? __('Yes', PTS_LANG_CODE) : __('No', PTS_LANG_CODE), 'error' => !extension_loaded('curl')),
55
  );
56
  }
57
- public function showFeaturedPluginsPage() {
58
- framePts::_()->getModule('templates')->loadSupTablesUi();
59
- framePts::_()->addStyle('admin.featured-plugins', $this->getModule()->getModPath(). 'css/admin.featured-plugins.css');
60
- framePts::_()->getModule('templates')->loadGoogleFont('Montserrat');
61
- $siteUrl = 'https://supsystic.com/';
62
- $pluginsUrl = $siteUrl. 'plugins/';
63
- $downloadsUrl = 'https://downloads.wordpress.org/plugin/';
64
- $imgUrl = framePts::_()->getModule('supsystic_promo')->getModPath(). 'img/';
65
- $promoCampaign = 'pricing_table';
66
- $this->assign('pluginsList', array(
67
- array('label' => __('Popup Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'popup-by-supsystic.zip'),
68
- array('label' => __('Photo Gallery Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'gallery-by-supsystic.zip'),
69
- array('label' => __('Contact Form Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
70
- array('label' => __('Newsletter Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
71
- array('label' => __('Membership by Supsystic', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
72
- array('label' => __('Data Tables Generator', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'data-tables-generator-by-supsystic.zip'),
73
- array('label' => __('Slider Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'slider-by-supsystic.zip'),
74
- array('label' => __('Social Share Buttons', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'social-share-buttons-by-supsystic.zip'),
75
- array('label' => __('Live Chat Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'live-chat-by-supsystic.zip'),
76
- array('label' => __('Pricing Table', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'pricing-table-by-supsystic.zip'),
77
- array('label' => __('Coming Soon Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'coming-soon-by-supsystic.zip'),
78
- array('label' => __('Backup Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'backup-by-supsystic.zip'),
79
- array('label' => __('Google Maps Easy', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'google-maps-easy.zip'),
80
- array('label' => __('Digital Publication Plugin', PTS_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.', PTS_LANG_CODE), 'download' => $downloadsUrl. 'digital-publications-by-supsystic.zip'),
81
- array('label' => __('Kinsta Hosting', PTS_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.', PTS_LANG_CODE)),
82
- ));
83
- foreach($this->pluginsList as $i => $p) {
84
- if(empty($p['external'])) {
85
- $this->pluginsList[ $i ]['url'] = $this->pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
86
- }
87
- }
88
- $this->assign('bundleUrl', $siteUrl. 'product/plugins-bundle/'. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign);
89
- return parent::getContent('featuredPlugins');
90
- }
91
- public function getDiscountMsg($buyLink = '#') {
92
- $this->assign('bundlePageLink', '//supsystic.com/all-plugins/');
93
- $this->assign('buyLink', $buyLink);
94
- parent::display('discountMsg');
95
- }
96
  }
54
  'PHP CURL Support' => array('value' => extension_loaded('curl') ? __('Yes', PTS_LANG_CODE) : __('No', PTS_LANG_CODE), 'error' => !extension_loaded('curl')),
55
  );
56
  }
57
+
58
+ // public function getDiscountMsg($buyLink = '#') {
59
+ // $this->assign('bundlePageLink', '//supsystic.com/all-plugins/');
60
+ // $this->assign('buyLink', $buyLink);
61
+ // parent::display('discountMsg');
62
+ // }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
modules/supsystic_promo/views/tpl/adminFooter.php CHANGED
@@ -1,15 +1,34 @@
1
- <div class="ptsAdminFooterShell">
2
- <div class="ptsAdminFooterCell">
3
- <?php echo PTS_WP_PLUGIN_NAME?>
4
- <?php _e('Version', PTS_LANG_CODE)?>:
5
- <a target="_blank" href="http://wordpress.org/plugins/pricing-table-by-supsystic/changelog/"><?php echo PTS_VERSION?></a>
6
- </div>
7
- <div class="ptsAdminFooterCell">|</div>
8
- <div class="ptsAdminFooterCell">
9
- <a target="_blank" href="http://wordpress.org/support/plugin/pricing-table-by-supsystic"><?php _e('Support', PTS_LANG_CODE)?></a>
10
- </div>
11
- <div class="ptsAdminFooterCell">|</div>
12
- <div class="ptsAdminFooterCell">
13
- Add your <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/pricing-table-by-supsystic?filter=5#postform">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on wordpress.org.
14
- </div>
15
- </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 PTS_PLUGINS_URL .'/'. PTS_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
+ <?php wp_nonce_field('pts_nonce', 'pts_nonce'); ?>
22
+ <div class="button button-primary button-hero supsysticOverviewACBtn supsysticOverviewACBtnRemind"><i class="fa fa-hourglass-half" aria-hidden="true"></i> Remind me tomorrow</div>
23
+ <div class="button button-primary button-hero supsysticOverviewACBtn supsysticOverviewACBtnDisable"><i class="fa fa-times" aria-hidden="true"></i> Do not disturb me again</div>
24
+ <div class="supsysticOverviewACFormNotification" style="color: red; float: left; display:none;">Fields with * are required to fill</div>
25
+ </form>
26
+ <div class="clear"></div>
27
+ </div>
28
+ <div id="supsysticOverviewACFormDialog" hidden>
29
+ <div class="on-error" style="display:none">
30
+ <p>Some errors occurred while sending mail please send your message trough this contact form:</p>
31
+ <p><a href="https://supsystic.com/plugins/#contact" target="_blank">https://supsystic.com/plugins/#contact</a></p>
32
+ </div>
33
+ <div class="message"></div>
34
+ </div>
modules/supsystic_promo/views/tpl/overviewTabContent.php CHANGED
@@ -1,73 +1,139 @@
1
- <section>
2
- <div class="supsystic-item supsystic-panel">
3
- <div id="containerWrapper">
4
- <div class="supsistic-half-side-box" style="border-right: 1px solid rgba(164, 170, 172, 0.28);">
5
- <div class="banner">
6
- <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.', PTS_LANG_CODE)?></div>
7
- <a href="https://kinsta.com?kaid=MNRQQASUYJRT">
8
- <img src="<?php echo framePts::_()->getModule('supsystic_promo')->getModPath()?>img/kinsta_banner.png" style="width: 300px;height: 250px;" />
9
- </a>
10
- </div>
11
- <div class="server-settings">
12
- <h3><?php _e('Server Settings', PTS_LANG_CODE)?></h3>
13
- <ul class="settings-list">
14
- <?php foreach($this->serverSettings as $title => $element) {?>
15
- <li class="settings-line">
16
- <div class="settings-title"><?php echo $title?>:</div>
17
- <span><?php echo $element['value']?></span>
18
- </li>
19
- <?php }?>
20
- </ul>
21
- </div>
22
  </div>
23
- <div class="supsistic-half-side-box" style="padding-left: 20px;">
24
- <div class="overview-contact-form">
25
- <h3><?php _e('Contact form', PTS_LANG_CODE)?></h3>
26
- <form id="form-settings">
27
- <table class="contact-form-table">
28
- <?php foreach($this->contactFields as $fName => $fData) { ?>
29
- <?php
30
- $htmlType = $fData['html'];
31
- $id = 'contact_form_'. $fName;
32
- $htmlParams = array('attrs' => 'id="'. $id. '"');
33
- if(isset($fData['placeholder']))
34
- $htmlParams['placeholder'] = $fData['placeholder'];
35
- if(isset($fData['options']))
36
- $htmlParams['options'] = $fData['options'];
37
- if(isset($fData['def']))
38
- $htmlParams['value'] = $fData['def'];
39
- if(isset($fData['valid']) && in_array('notEmpty', $fData['valid']))
40
- $htmlParams['required'] = true;
41
- ?>
42
- <tr>
43
- <th scope="row">
44
- <label for="<?php echo $id?>"><?php echo $fData['label']?></label>
45
- </th>
46
- <td>
47
- <?php echo htmlPts::$htmlType($fName, $htmlParams)?>
48
- </td>
49
- </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  <?php }?>
51
- <tr>
52
- <th scope="row" colspan="2">
53
- <?php echo htmlPts::hidden('mod', array('value' => 'supsystic_promo'))?>
54
- <?php echo htmlPts::hidden('action', array('value' => 'sendContact'))?>
55
- <button class="button button-primary button-hero" style="float: right;">
56
- <i class="fa fa-upload"></i>
57
- <?php _e('Send email', PTS_LANG_CODE)?>
58
- </button>
59
- <div style="clear: both;"></div>
60
- </th>
61
- </tr>
62
- </table>
63
- </form>
64
- <div id="form-settings-send-msg" style="display: none;">
65
- <i class="fa fa-envelope-o"></i>
66
- <?php _e('Your email was send, we will try to respond to you as soon as possible. Thank you for support!', PTS_LANG_CODE)?>
 
 
 
 
 
 
 
 
 
 
67
  </div>
68
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  </div>
70
- <div style="clear: both;"></div>
71
- </div>
72
- </div>
73
- </section>
1
+ <div class="supsystic-overview">
2
+ <div class="full-page">
3
+ <div class="plugin-title"><img src="<?php echo PTS_PLUGINS_URL .'/'. PTS_PLUG_NAME;?>/modules/supsystic_promo/img/plugin-icon.png">Pricing Table By Supsystic</div>
4
+ <div class="plugin-description">Create amazing pricing tables without any programming skills. It’s quick and easy with this WordPress Pricing Table Builder plugin.</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/pricing-tables/?utm_source=plugin&utm_campaign=pricing-table"> 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/pricing-tables/?utm_source=plugin&utm_campaign=pricing-table"> 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=pricing-table"> 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 htmlPts::$htmlType($fName, $htmlParams)?>
56
+ </td>
57
+ </tr>
58
+ <?php }?>
59
+ <tr>
60
+ <th scope="row" colspan="2">
61
+ <?php echo htmlPts::hidden('mod', array('value' => 'supsystic_promo'))?>
62
+ <?php echo htmlPts::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', PTS_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', PTS_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/pricing-tables/?utm_source=plugin&utm_medium=faq&utm_campaign=pricing_table" 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="https://www.youtube.com/embed/v8h2k3vvpdM"
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=pricing-table" target="_blank"><img class="overview-supsystic-img" src="<?php echo PTS_PLUGINS_URL .'/'. PTS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-01.png"></a>
134
+ <a href="https://supsystic.com/bundle-mix/?utm_source=plugin&utm_campaign=pricing-table" target="_blank"><img class="overview-supsystic-img" src="<?php echo PTS_PLUGINS_URL .'/'. PTS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-02.png"></a>
135
+ <a href="https://supsystic.com/all-plugins/?utm_source=plugin&utm_campaign=pricing-table" target="_blank"><img style="margin-top:20px;" class="overview-supsystic-img" src="<?php echo PTS_PLUGINS_URL .'/'. PTS_PLUG_NAME;?>/modules/supsystic_promo/img/overview-03.png"></a>
136
+ <div class="clear"></div>
137
+ </div>
138
  </div>
139
+ </div>
 
 
 
modules/tables/models/tables.php CHANGED
@@ -250,7 +250,7 @@ class tablesModelPts extends modelPts {
250
  $replaceTo[] = $rData['url'];
251
  }
252
  }
253
- $data = str_replace($replaceFrom, $replaceTo, $data);
254
  }
255
  return $data;
256
  }
250
  $replaceTo[] = $rData['url'];
251
  }
252
  }
253
+ $data = str_replace($replaceFrom, $replaceTo, (string)$data);
254
  }
255
  return $data;
256
  }
modules/templates/mod.php CHANGED
@@ -11,6 +11,8 @@ class templatesPts extends modulePts {
11
  $this->loadAdminCoreJs();
12
  $this->loadCoreCss();
13
  $this->loadChosenSelects();
 
 
14
  framePts::_()->addScript('adminOptionsPts', PTS_JS_PATH . 'admin.options.js', array() , false, true);
15
  add_action('admin_enqueue_scripts', array($this, 'loadMediaScripts'));
16
  }
@@ -110,14 +112,33 @@ class templatesPts extends modulePts {
110
  'siteUrl' => PTS_SITE_URL,
111
  'imgPath' => PTS_IMG_PATH,
112
  'cssPath' => PTS_CSS_PATH,
113
- 'loader' => PTS_LOADER_IMG,
114
- 'close' => PTS_IMG_PATH . 'cross.gif',
115
  'ajaxurl' => $ajaxurl,
116
  'options' => framePts::_()->getModule('options')->getAllowedPublicOptions() ,
117
  'PTS_CODE' => PTS_CODE,
118
  );
119
  if (is_admin()) {
120
- $jsData['isPro'] = framePts::_()->getModule('supsystic_promo')->isPro();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
122
  $jsData = dispatcherPts::applyFilters('jsInitVariables', $jsData);
123
  framePts::_()->addJSVar('corePts', 'PTS_DATA', $jsData);
11
  $this->loadAdminCoreJs();
12
  $this->loadCoreCss();
13
  $this->loadChosenSelects();
14
+ framePts::_()->addScript('ptsAcPromoScript', PTS_JS_PATH. 'acPromoScript.js');
15
+ framePts::_()->addStyle('ptsAcPromoStyle', PTS_CSS_PATH. 'acPromoStyle.css');
16
  framePts::_()->addScript('adminOptionsPts', PTS_JS_PATH . 'admin.options.js', array() , false, true);
17
  add_action('admin_enqueue_scripts', array($this, 'loadMediaScripts'));
18
  }
112
  'siteUrl' => PTS_SITE_URL,
113
  'imgPath' => PTS_IMG_PATH,
114
  'cssPath' => PTS_CSS_PATH,
115
+ 'loader' => PTS_LOADER_IMG,
116
+ 'close' => PTS_IMG_PATH . 'cross.gif',
117
  'ajaxurl' => $ajaxurl,
118
  'options' => framePts::_()->getModule('options')->getAllowedPublicOptions() ,
119
  'PTS_CODE' => PTS_CODE,
120
  );
121
  if (is_admin()) {
122
+ $jsData['isPro'] = framePts::_()->getModule('supsystic_promo')->isPro();
123
+ $show = true;
124
+ $acRemind = get_option('pts_ac_remind', false);
125
+ if (!empty($acRemind)) {
126
+ $currentDate = date('Y-m-d h:i:s');
127
+ if ($currentDate > $acRemind) {
128
+ $show = true;
129
+ } else {
130
+ $show = false;
131
+ }
132
+ }
133
+ $acSubscribe = get_option('pts_ac_subscribe', false);
134
+ if (!empty($acSubscribe)) {
135
+ $show = false;
136
+ }
137
+ $acDisabled = get_option('pts_ac_disabled', false);
138
+ if (!empty($acDisabled)) {
139
+ $show = false;
140
+ }
141
+ $jsData['ptsAcShow'] = $show;
142
  }
143
  $jsData = dispatcherPts::applyFilters('jsInitVariables', $jsData);
144
  framePts::_()->addJSVar('corePts', 'PTS_DATA', $jsData);
pts.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Pricing Table by Supsystic
4
  * Plugin URI: https://supsystic.com/plugins/pricing-table/
5
  * Description: Pricing Table generator by Supsystic allow you to create responsive pricing tables or comparison table without any programming skills
6
- * Version: 1.9.7
7
  * Author: supsystic.com
8
  * Author URI: http://supsystic.com/
9
  * Text Domain: pricing-table-by-supsystic
3
  * Plugin Name: Pricing Table by Supsystic
4
  * Plugin URI: https://supsystic.com/plugins/pricing-table/
5
  * Description: Pricing Table generator by Supsystic allow you to create responsive pricing tables or comparison table without any programming skills
6
+ * Version: 1.9.8
7
  * Author: supsystic.com
8
  * Author URI: http://supsystic.com/
9
  * Text Domain: pricing-table-by-supsystic
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: supsystic.com
3
  Donate link: https://supsystic.com/plugins/pricing-table
4
  Tags: price table, pricing table, price, pricing, table, comparison table, css table, comparison, price gird, pricing gird, pricing box, price chart, price plan, chart, plan
5
- Tested up to: 5.8
6
- Stable tag: 1.9.7
7
 
8
  Pricing Table generator by Supsystic allows you to create responsive pricing tables or comparison table without any programming skills
9
 
@@ -159,6 +159,10 @@ Responsiveness is one of the standard practice if you want to create a good cust
159
  Our Pricing Table plugin is a mobile-ready, means that it will render on the devices with different screen size. The [responsive mode](https://supsystic.com/feature/fully-responsive-pricing-table?utm_source=wordpress&utm_medium=responsive&utm_campaign=pricingtable "Responsive mode") is turn on by default, but you can switch off it anytime. Also, plugin provides an opportunity to set a minimum column size.
160
 
161
  == Changelog ==
 
 
 
 
162
  1.9.7 / 13.12.2021
163
  * Add fix for core.js
164
 
2
  Contributors: supsystic.com
3
  Donate link: https://supsystic.com/plugins/pricing-table
4
  Tags: price table, pricing table, price, pricing, table, comparison table, css table, comparison, price gird, pricing gird, pricing box, price chart, price plan, chart, plan
5
+ Tested up to: 6.0
6
+ Stable tag: 1.9.8
7
 
8
  Pricing Table generator by Supsystic allows you to create responsive pricing tables or comparison table without any programming skills
9
 
159
  Our Pricing Table plugin is a mobile-ready, means that it will render on the devices with different screen size. The [responsive mode](https://supsystic.com/feature/fully-responsive-pricing-table?utm_source=wordpress&utm_medium=responsive&utm_campaign=pricingtable "Responsive mode") is turn on by default, but you can switch off it anytime. Also, plugin provides an opportunity to set a minimum column size.
160
 
161
  == Changelog ==
162
+ 1.9.8 / 30.08.2022
163
+ * Add support WP 6.0
164
+ * Add support PHP 8.1
165
+
166
  1.9.7 / 13.12.2021
167
  * Add fix for core.js
168