Coming Soon Page & Maintenance Mode by SeedProd - Version 6.0.5

Version Description

Download this release

Release Info

Developer seedprod
Plugin Icon 128x128 Coming Soon Page & Maintenance Mode by SeedProd
Version 6.0.5
Comparing to
See all releases

Code changes from version 5.1.3 to 6.0.5

Files changed (85) hide show
  1. GPL.txt +85 -0
  2. LICENSE.txt +0 -281
  3. README.txt +87 -42
  4. app/admin-bar-menu.php +69 -0
  5. app/backwards/backwards_compatibility.php +382 -0
  6. app/backwards/csp4-functions.php +538 -0
  7. app/backwards/csp4-template.json +430 -0
  8. app/backwards/csp5-template.json +884 -0
  9. app/backwards/email-template.json +82 -0
  10. {themes → app/backwards/themes}/default/bootstrap/css/bootstrap.min.css +0 -0
  11. {themes → app/backwards/themes}/default/bootstrap/js/bootstrap.min.js +0 -0
  12. {themes → app/backwards/themes}/default/images/seedprod-credit.png +0 -0
  13. {themes → app/backwards/themes}/default/index.php +0 -0
  14. {themes → app/backwards/themes}/default/rtl.css +0 -0
  15. {themes → app/backwards/themes}/default/style.css +0 -0
  16. app/bootstrap.php +392 -0
  17. app/cpt.php +19 -0
  18. app/functions-addons.php +375 -0
  19. app/functions-utils.php +861 -0
  20. app/includes/nameparse.php +263 -0
  21. lib/seed_csp4_lessc.inc.php → app/includes/seedprod_lessc.inc.php +45 -45
  22. {framework → app/includes}/skin.php +2 -2
  23. app/includes/skin53.php +104 -0
  24. app/includes/upgrade.php +180 -0
  25. app/license.php +155 -0
  26. app/load_controller.php +87 -0
  27. app/lpage.php +937 -0
  28. {framework → app}/notifications.php +7 -6
  29. app/render-csp-mm.php +617 -0
  30. app/render-domain-mapping.php +93 -0
  31. app/render-lp.php +35 -0
  32. app/review.php +167 -0
  33. app/routes.php +357 -0
  34. app/settings.php +48 -0
  35. app/subscriber.php +209 -0
  36. coming-soon.php +112 -189
  37. framework/coming-soon-pro-sidebar.png +0 -0
  38. framework/field-types/checkbox.php +0 -14
  39. framework/field-types/color.php +0 -14
  40. framework/field-types/date.php +0 -32
  41. framework/field-types/daterange.php +0 -46
  42. framework/field-types/export.php +0 -31
  43. framework/field-types/import.php +0 -25
  44. framework/field-types/js/color.js +0 -6
  45. framework/field-types/js/upload.js +0 -31
  46. framework/field-types/multiselect.php +0 -18
  47. framework/field-types/password.php +0 -9
  48. framework/field-types/radio.php +0 -9
  49. framework/field-types/select.php +0 -22
  50. framework/field-types/text.php +0 -7
  51. framework/field-types/textarea.php +0 -9
  52. framework/field-types/textbox.php +0 -9
  53. framework/field-types/themes.php +0 -65
  54. framework/field-types/upload.php +0 -15
  55. framework/field-types/wpeditor.php +0 -15
  56. framework/framework.php +0 -1071
  57. framework/get-settings.php +0 -20
  58. framework/getting-started-banner.png +0 -0
  59. framework/review.php +0 -113
  60. framework/settings-scripts.js +0 -8
  61. framework/settings-style.css +0 -756
  62. framework/validations/color.php +0 -15
  63. framework/validations/email.php +0 -11
  64. framework/validations/escurlraw.php +0 -12
  65. framework/validations/number.php +0 -13
  66. framework/validations/required.php +0 -11
  67. inc/adminbar-style.css +0 -10
  68. inc/class-seed-csp4.php +0 -257
  69. inc/config-settings.php +0 -488
  70. inc/default-settings.php +0 -6
  71. languages/coming-soon-da_DK.mo +0 -0
  72. languages/coming-soon-da_DK.po +0 -466
  73. languages/coming-soon-pt_BR.mo +0 -0
  74. languages/coming-soon-pt_BR.po +0 -476
  75. languages/coming-soon-sv_SE.mo +0 -0
  76. languages/coming-soon-sv_SE.po +0 -1678
  77. languages/coming-soon.pot +0 -442
  78. languages/index.php +3 -0
  79. lib/TGMPA.php +0 -3835
  80. lib/setup_tgmpa.php +0 -88
  81. public/css/admin-style.css +3879 -0
  82. public/css/admin-style.css.map +1 -0
  83. public/css/admin-style.min.css +732 -0
  84. public/css/global-admin.css +51 -0
  85. public/css/seedprod-style.css +116 -0
GPL.txt ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
6
+
7
+ Everyone is permitted to copy and distribute verbatim copies
8
+ of this license document, but changing it is not allowed.
9
+
10
+ Preamble
11
+
12
+ The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
13
+
14
+ When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
15
+
16
+ To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
17
+
18
+ For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
19
+
20
+ We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
21
+
22
+ Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
23
+
24
+ Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
25
+
26
+ The precise terms and conditions for copying, distribution and modification follow.
27
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
28
+
29
+ 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
30
+
31
+ Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
32
+
33
+ 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
34
+
35
+ You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
36
+
37
+ 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
38
+
39
+ a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
40
+ b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
41
+ c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
42
+
43
+ These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
44
+
45
+ Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
46
+
47
+ In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
48
+
49
+ 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
50
+
51
+ a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
52
+ b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
53
+ c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
54
+
55
+ The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
56
+
57
+ If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
58
+
59
+ 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
60
+
61
+ 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
62
+
63
+ 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
64
+
65
+ 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
66
+
67
+ If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
68
+
69
+ It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
70
+
71
+ This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
72
+
73
+ 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
74
+
75
+ 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
76
+
77
+ Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
78
+
79
+ 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
80
+
81
+ NO WARRANTY
82
+
83
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
84
+
85
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
LICENSE.txt DELETED
@@ -1,281 +0,0 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 2, June 1991
3
-
4
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
- 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
6
-
7
- Everyone is permitted to copy and distribute verbatim copies
8
- of this license document, but changing it is not allowed.
9
-
10
- Preamble
11
-
12
- The licenses for most software are designed to take away your
13
- freedom to share and change it. By contrast, the GNU General Public
14
- License is intended to guarantee your freedom to share and change free
15
- software--to make sure the software is free for all its users. This
16
- General Public License applies to most of the Free Software
17
- Foundation's software and to any other program whose authors commit to
18
- using it. (Some other Free Software Foundation software is covered by
19
- the GNU Library General Public License instead.) You can apply it to
20
- your programs, too.
21
-
22
- When we speak of free software, we are referring to freedom, not
23
- price. Our General Public Licenses are designed to make sure that you
24
- have the freedom to distribute copies of free software (and charge for
25
- this service if you wish), that you receive source code or can get it
26
- if you want it, that you can change the software or use pieces of it
27
- in new free programs; and that you know you can do these things.
28
-
29
- To protect your rights, we need to make restrictions that forbid
30
- anyone to deny you these rights or to ask you to surrender the rights.
31
- These restrictions translate to certain responsibilities for you if you
32
- distribute copies of the software, or if you modify it.
33
-
34
- For example, if you distribute copies of such a program, whether
35
- gratis or for a fee, you must give the recipients all the rights that
36
- you have. You must make sure that they, too, receive or can get the
37
- source code. And you must show them these terms so they know their
38
- rights.
39
-
40
- We protect your rights with two steps: (1) copyright the software, and
41
- (2) offer you this license which gives you legal permission to copy,
42
- distribute and/or modify the software.
43
-
44
- Also, for each author's protection and ours, we want to make certain
45
- that everyone understands that there is no warranty for this free
46
- software. If the software is modified by someone else and passed on, we
47
- want its recipients to know that what they have is not the original, so
48
- that any problems introduced by others will not reflect on the original
49
- authors' reputations.
50
-
51
- Finally, any free program is threatened constantly by software
52
- patents. We wish to avoid the danger that redistributors of a free
53
- program will individually obtain patent licenses, in effect making the
54
- program proprietary. To prevent this, we have made it clear that any
55
- patent must be licensed for everyone's free use or not licensed at all.
56
-
57
- The precise terms and conditions for copying, distribution and
58
- modification follow.
59
-
60
- GNU GENERAL PUBLIC LICENSE
61
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
62
-
63
- 0. This License applies to any program or other work which contains
64
- a notice placed by the copyright holder saying it may be distributed
65
- under the terms of this General Public License. The "Program", below,
66
- refers to any such program or work, and a "work based on the Program"
67
- means either the Program or any derivative work under copyright law:
68
- that is to say, a work containing the Program or a portion of it,
69
- either verbatim or with modifications and/or translated into another
70
- language. (Hereinafter, translation is included without limitation in
71
- the term "modification".) Each licensee is addressed as "you".
72
-
73
- Activities other than copying, distribution and modification are not
74
- covered by this License; they are outside its scope. The act of
75
- running the Program is not restricted, and the output from the Program
76
- is covered only if its contents constitute a work based on the
77
- Program (independent of having been made by running the Program).
78
- Whether that is true depends on what the Program does.
79
-
80
- 1. You may copy and distribute verbatim copies of the Program's
81
- source code as you receive it, in any medium, provided that you
82
- conspicuously and appropriately publish on each copy an appropriate
83
- copyright notice and disclaimer of warranty; keep intact all the
84
- notices that refer to this License and to the absence of any warranty;
85
- and give any other recipients of the Program a copy of this License
86
- along with the Program.
87
-
88
- You may charge a fee for the physical act of transferring a copy, and
89
- you may at your option offer warranty protection in exchange for a fee.
90
-
91
- 2. You may modify your copy or copies of the Program or any portion
92
- of it, thus forming a work based on the Program, and copy and
93
- distribute such modifications or work under the terms of Section 1
94
- above, provided that you also meet all of these conditions:
95
-
96
- a) You must cause the modified files to carry prominent notices
97
- stating that you changed the files and the date of any change.
98
-
99
- b) You must cause any work that you distribute or publish, that in
100
- whole or in part contains or is derived from the Program or any
101
- part thereof, to be licensed as a whole at no charge to all third
102
- parties under the terms of this License.
103
-
104
- c) If the modified program normally reads commands interactively
105
- when run, you must cause it, when started running for such
106
- interactive use in the most ordinary way, to print or display an
107
- announcement including an appropriate copyright notice and a
108
- notice that there is no warranty (or else, saying that you provide
109
- a warranty) and that users may redistribute the program under
110
- these conditions, and telling the user how to view a copy of this
111
- License. (Exception: if the Program itself is interactive but
112
- does not normally print such an announcement, your work based on
113
- the Program is not required to print an announcement.)
114
-
115
- These requirements apply to the modified work as a whole. If
116
- identifiable sections of that work are not derived from the Program,
117
- and can be reasonably considered independent and separate works in
118
- themselves, then this License, and its terms, do not apply to those
119
- sections when you distribute them as separate works. But when you
120
- distribute the same sections as part of a whole which is a work based
121
- on the Program, the distribution of the whole must be on the terms of
122
- this License, whose permissions for other licensees extend to the
123
- entire whole, and thus to each and every part regardless of who wrote it.
124
- Thus, it is not the intent of this section to claim rights or contest
125
- your rights to work written entirely by you; rather, the intent is to
126
- exercise the right to control the distribution of derivative or
127
- collective works based on the Program.
128
-
129
- In addition, mere aggregation of another work not based on the Program
130
- with the Program (or with a work based on the Program) on a volume of
131
- a storage or distribution medium does not bring the other work under
132
- the scope of this License.
133
-
134
- 3. You may copy and distribute the Program (or a work based on it,
135
- under Section 2) in object code or executable form under the terms of
136
- Sections 1 and 2 above provided that you also do one of the following:
137
-
138
- a) Accompany it with the complete corresponding machine-readable
139
- source code, which must be distributed under the terms of Sections
140
- 1 and 2 above on a medium customarily used for software interchange; or,
141
-
142
- b) Accompany it with a written offer, valid for at least three
143
- years, to give any third party, for a charge no more than your
144
- cost of physically performing source distribution, a complete
145
- machine-readable copy of the corresponding source code, to be
146
- distributed under the terms of Sections 1 and 2 above on a medium
147
- customarily used for software interchange; or,
148
-
149
- c) Accompany it with the information you received as to the offer
150
- to distribute corresponding source code. (This alternative is
151
- allowed only for noncommercial distribution and only if you
152
- received the program in object code or executable form with such
153
- an offer, in accord with Subsection b above.)
154
-
155
- The source code for a work means the preferred form of the work for
156
- making modifications to it. For an executable work, complete source
157
- code means all the source code for all modules it contains, plus any
158
- associated interface definition files, plus the scripts used to
159
- control compilation and installation of the executable. However, as a
160
- special exception, the source code distributed need not include
161
- anything that is normally distributed (in either source or binary
162
- form) with the major components (compiler, kernel, and so on) of the
163
- operating system on which the executable runs, unless that component
164
- itself accompanies the executable.
165
-
166
- If distribution of executable or object code is made by offering
167
- access to copy from a designated place, then offering equivalent
168
- access to copy the source code from the same place counts as
169
- distribution of the source code, even though third parties are not
170
- compelled to copy the source along with the object code.
171
-
172
- 4. You may not copy, modify, sublicense, or distribute the Program
173
- except as expressly provided under this License. Any attempt
174
- otherwise to copy, modify, sublicense or distribute the Program is
175
- void, and will automatically terminate your rights under this License.
176
- However, parties who have received copies, or rights, from you under
177
- this License will not have their licenses terminated so long as such
178
- parties remain in full compliance.
179
-
180
- 5. You are not required to accept this License, since you have not
181
- signed it. However, nothing else grants you permission to modify or
182
- distribute the Program or its derivative works. These actions are
183
- prohibited by law if you do not accept this License. Therefore, by
184
- modifying or distributing the Program (or any work based on the
185
- Program), you indicate your acceptance of this License to do so, and
186
- all its terms and conditions for copying, distributing or modifying
187
- the Program or works based on it.
188
-
189
- 6. Each time you redistribute the Program (or any work based on the
190
- Program), the recipient automatically receives a license from the
191
- original licensor to copy, distribute or modify the Program subject to
192
- these terms and conditions. You may not impose any further
193
- restrictions on the recipients' exercise of the rights granted herein.
194
- You are not responsible for enforcing compliance by third parties to
195
- this License.
196
-
197
- 7. If, as a consequence of a court judgment or allegation of patent
198
- infringement or for any other reason (not limited to patent issues),
199
- conditions are imposed on you (whether by court order, agreement or
200
- otherwise) that contradict the conditions of this License, they do not
201
- excuse you from the conditions of this License. If you cannot
202
- distribute so as to satisfy simultaneously your obligations under this
203
- License and any other pertinent obligations, then as a consequence you
204
- may not distribute the Program at all. For example, if a patent
205
- license would not permit royalty-free redistribution of the Program by
206
- all those who receive copies directly or indirectly through you, then
207
- the only way you could satisfy both it and this License would be to
208
- refrain entirely from distribution of the Program.
209
-
210
- If any portion of this section is held invalid or unenforceable under
211
- any particular circumstance, the balance of the section is intended to
212
- apply and the section as a whole is intended to apply in other
213
- circumstances.
214
-
215
- It is not the purpose of this section to induce you to infringe any
216
- patents or other property right claims or to contest validity of any
217
- such claims; this section has the sole purpose of protecting the
218
- integrity of the free software distribution system, which is
219
- implemented by public license practices. Many people have made
220
- generous contributions to the wide range of software distributed
221
- through that system in reliance on consistent application of that
222
- system; it is up to the author/donor to decide if he or she is willing
223
- to distribute software through any other system and a licensee cannot
224
- impose that choice.
225
-
226
- This section is intended to make thoroughly clear what is believed to
227
- be a consequence of the rest of this License.
228
-
229
- 8. If the distribution and/or use of the Program is restricted in
230
- certain countries either by patents or by copyrighted interfaces, the
231
- original copyright holder who places the Program under this License
232
- may add an explicit geographical distribution limitation excluding
233
- those countries, so that distribution is permitted only in or among
234
- countries not thus excluded. In such case, this License incorporates
235
- the limitation as if written in the body of this License.
236
-
237
- 9. The Free Software Foundation may publish revised and/or new versions
238
- of the General Public License from time to time. Such new versions will
239
- be similar in spirit to the present version, but may differ in detail to
240
- address new problems or concerns.
241
-
242
- Each version is given a distinguishing version number. If the Program
243
- specifies a version number of this License which applies to it and "any
244
- later version", you have the option of following the terms and conditions
245
- either of that version or of any later version published by the Free
246
- Software Foundation. If the Program does not specify a version number of
247
- this License, you may choose any version ever published by the Free Software
248
- Foundation.
249
-
250
- 10. If you wish to incorporate parts of the Program into other free
251
- programs whose distribution conditions are different, write to the author
252
- to ask for permission. For software which is copyrighted by the Free
253
- Software Foundation, write to the Free Software Foundation; we sometimes
254
- make exceptions for this. Our decision will be guided by the two goals
255
- of preserving the free status of all derivatives of our free software and
256
- of promoting the sharing and reuse of software generally.
257
-
258
- NO WARRANTY
259
-
260
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
- REPAIR OR CORRECTION.
269
-
270
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
- POSSIBILITY OF SUCH DAMAGES.
279
-
280
- END OF TERMS AND CONDITIONS
281
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.txt CHANGED
@@ -2,29 +2,50 @@
2
  Contributors: seedprod, smub
3
  Donate link: http://www.seedprod.com
4
  Tags: maintenance mode, coming soon page, coming soon, under construction, landing page, launch, maintenance, construction, offline, unavailable, under construction page, launch page
5
- Requires at least: 3.5.1
6
  Tested up to: 5.5
7
- Stable tag: 5.1.3
 
8
  Text Domain: coming-soon
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
- The #1 Coming Soon Page, Under Construction & Maintenance Mode plugin for WordPress.
13
 
14
  == Description ==
15
 
16
- Create a simple Coming Soon Page, Under Construction or Maintenance Mode Page. Work on your site in private while visitors see a "Coming Soon" or "Maintenance Mode" page.
17
 
18
- * [Upgrade to Coming Soon Page Pro to Unlock All the Features ! »](http://www.seedprod.com?utm_source=wordpress.org&utm_medium=link&utm_campaign=coming-soon-pro-from-wordpress.org "Coming Soon Page Pro Version")
19
- * [View a Coming Soon Page Live Demo »](http://demo.seedprod.com/coming-soon-pro/ "Coming Soon Page Demo")
20
 
21
  ### Benefits, Features and Options:
22
 
23
  * Works with any WordPress Theme
24
- * Responsive
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  * Customize the Look and Feel
26
  * Easily add Custom CSS and HTML
27
- * Uses HTML5 & CSS3
28
  * Translation Ready, i18n Support
29
  * Multisite Support
30
  * BuddyPress Support
@@ -33,36 +54,24 @@ Create a simple Coming Soon Page, Under Construction or Maintenance Mode Page. W
33
  ### Pro Version Features:
34
 
35
  * Works with any WordPress theme
36
- * Visible only to non logged in users
37
- * Secret bypass link for your clients to view the upcoming website without logging in
38
- * Search Engine Optimized with customizable meta tags
39
- * Mobile Ready responsive design and layout
40
- * Maintenance Mode with Automatic Screenshot
41
- * Custom Look & Feel with no coding
42
- * Integrated Google and Typekit fonts
43
- * Full Browser Backgrounds option
44
- * Option to capture first and last name
45
- * Videos can be embedded in the description just be entering the URL
46
- * Display an Incentive after Sign Up
47
- * Social Profiles & Social Sharing Buttons
48
- * MailChimp, AWeber, Get Response, Constant Contact and Campaign Monitor integration
49
- * Gravity Forms integration to collect info from visitors
50
- * Built-in referral system to keep track referrered subscribers and how many of those convert
51
- * Store Emails in the WordPress Database to export to any email service
52
- * Progress bar with automatic completion calculation
53
- * Google Analytics Support
54
- * Automatic Easy Updates
55
- * Shortcode Support
56
- * Option to enable template responsiveness
57
- * Option to control access by IP
58
- * Custom Footer Branding
59
- * Custom Favicon
60
- * Custom CSS Support
61
- * Import/Export Settings for backup or re-use purposes
62
- * Multisite Support
63
- * HTML5 & CSS3 which degrades gracefully for older browsers
64
- * Translation Ready i18n Support
65
- * Option to exclude specific URLs from displaying Coming Soon page
66
  * Plus lots more...
67
 
68
  * [Upgrade to the Pro Version Now!»](http://www.seedprod.com/?utm_source=wordpress.org&utm_medium=link&utm_campaign=coming-soon-from-wordpress.org)
@@ -93,6 +102,17 @@ Create a simple Coming Soon Page, Under Construction or Maintenance Mode Page. W
93
 
94
 
95
  == Frequently Asked Questions ==
 
 
 
 
 
 
 
 
 
 
 
96
  = What's the difference between Coming Soon Page Mode and Maintenance Mode? =
97
 
98
  Coming Soon Page Mode returns a http status 200 and allows your site to be indexed by Google and other searching engine while under construction. You should always using Coming Soon Page mode when your site is under construction.
@@ -107,14 +127,29 @@ Only logged in visitors can see the website while you website is under construct
107
  This is always a caching issue. Go to the caching plugin's setting page and clear the cache.
108
  [More Info »](http://support.seedprod.com/article/83-how-to-clear-wp-super-caches-cache)
109
 
 
110
  == Screenshots ==
111
 
112
- 1. Coming Soon Page Example
113
- 2. Maintenance Mode Example
114
- 3. Content Page
115
- 4. Design Page
 
 
 
 
 
116
 
117
  == Changelog ==
 
 
 
 
 
 
 
 
 
118
  = 5.1.3 =
119
  * Tweak - Prepping for upcoming new version
120
 
@@ -245,6 +280,15 @@ This is always a caching issue. Go to the caching plugin's setting page and clea
245
  * Initial Commit
246
 
247
  == Upgrade Notice ==
 
 
 
 
 
 
 
 
 
248
  = 5.1.3 =
249
  * Tweak - Prepping for upcoming new version
250
 
@@ -361,3 +405,4 @@ This is always a caching issue. Go to the caching plugin's setting page and clea
361
 
362
  = 4.0.0 =
363
  Initial Commit
 
2
  Contributors: seedprod, smub
3
  Donate link: http://www.seedprod.com
4
  Tags: maintenance mode, coming soon page, coming soon, under construction, landing page, launch, maintenance, construction, offline, unavailable, under construction page, launch page
5
+ Requires at least: 5.0
6
  Tested up to: 5.5
7
+ Requires PHP: 5.6
8
+ Stable tag: 6.0.5
9
  Text Domain: coming-soon
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
+ The #1 Coming Soon Page, Maintenance Mode & Landing Page plugin for WordPress.
14
 
15
  == Description ==
16
 
17
+ Create a Coming Soon Page, Maintenance Mode Page, Landing Pages and Custom 404 pages. Work on your site in private while visitors see a "Coming Soon" or "Maintenance Mode" page.
18
 
19
+ * [Upgrade to Landing Page Pro to Unlock All the Features ! »](http://www.seedprod.com?utm_source=wordpress.org&utm_medium=link&utm_campaign=coming-soon-pro-from-wordpress.org "Landing Page Pro Version")
 
20
 
21
  ### Benefits, Features and Options:
22
 
23
  * Works with any WordPress Theme
24
+ * Drag & Drop Page Builder
25
+ * Create a Variety of Landing Pages
26
+ * Create Sales Pages
27
+ * Create Opt-In Pages
28
+ * Create Lead Pages
29
+ * Create Squeeze Pages
30
+ * Create Coming Soon Pages
31
+ * Create Maintenance Mode Pages
32
+ * Create Webinar Pages
33
+ * Create Thank You Pages
34
+ * Create 404 Pages
35
+ * Headline Block
36
+ * Text Block
37
+ * List Block
38
+ * Button Block
39
+ * Image Block
40
+ * Video Block
41
+ * Divider Block
42
+ * Spacer Block
43
+ * Column Block
44
+ * Giveaway Block
45
+ * Contact Form Block
46
+ * Responsive and Mobile Ready
47
  * Customize the Look and Feel
48
  * Easily add Custom CSS and HTML
 
49
  * Translation Ready, i18n Support
50
  * Multisite Support
51
  * BuddyPress Support
54
  ### Pro Version Features:
55
 
56
  * Works with any WordPress theme
57
+ * 100+ Professionaly Designed Landing Page Templates, Layout Sections
58
+ * Subscriber Management
59
+ * Premium Integrations - MailChimp, AWeber, ActiveCampaign GetResponse, ConvertKit, Zapier and more...
60
+ * Spam Protection - Recaptcha
61
+ * Access Controls
62
+ * Pro Blocks
63
+ * Opt-In Block
64
+ * Countdown Block
65
+ * Social Profiles Block
66
+ * Social Sharing Block
67
+ * Progess Bar Block
68
+ * Icon Block
69
+ * Featured Image Block
70
+ * Featured Icon Block
71
+ * Nav Block
72
+ * Anchor Block
73
+ * Star Rating Block
74
+ * Shortcode Block
 
 
 
 
 
 
 
 
 
 
 
 
75
  * Plus lots more...
76
 
77
  * [Upgrade to the Pro Version Now!»](http://www.seedprod.com/?utm_source=wordpress.org&utm_medium=link&utm_campaign=coming-soon-from-wordpress.org)
102
 
103
 
104
  == Frequently Asked Questions ==
105
+ = What kind of landong pages can I create? =
106
+ You can create a variety of landing pages including but not limited to:
107
+ * Sales Pages
108
+ * Opt-In Pages
109
+ * Coming Soon Pages
110
+ * Maintenance Mode Pages
111
+ * Webinar Pages
112
+ * Thank You Pages
113
+ * 404 Pages
114
+
115
+
116
  = What's the difference between Coming Soon Page Mode and Maintenance Mode? =
117
 
118
  Coming Soon Page Mode returns a http status 200 and allows your site to be indexed by Google and other searching engine while under construction. You should always using Coming Soon Page mode when your site is under construction.
127
  This is always a caching issue. Go to the caching plugin's setting page and clear the cache.
128
  [More Info »](http://support.seedprod.com/article/83-how-to-clear-wp-super-caches-cache)
129
 
130
+
131
  == Screenshots ==
132
 
133
+ 1. Page Builder Example
134
+ 2. Coming Soon Page Example
135
+ 3. Maintenance Mode Example
136
+ 4. Sales Landing Page Example
137
+ 5. Optin Lead Squeeze Landing Page Example
138
+ 6. Webinar Landing Page Example
139
+ 7. Thank You Page Example
140
+ 8. 404 Page Example
141
+
142
 
143
  == Changelog ==
144
+ = 6.0.0 =
145
+ * New - Complete rebuild of the plugin.
146
+ * New - Drag and Drop Page Builder
147
+ * New - Page Blocks
148
+ * New - Coming Soon Pages
149
+ * New - Maintenance Pages
150
+ * New - Landing Pages
151
+ * New - Custom 404 Pages
152
+
153
  = 5.1.3 =
154
  * Tweak - Prepping for upcoming new version
155
 
280
  * Initial Commit
281
 
282
  == Upgrade Notice ==
283
+ = 6.0.0 =
284
+ * New - Complete rebuild of the plugin.
285
+ * New - Drag and Drop Page Builder
286
+ * New - Page Blocks
287
+ * New - Coming Soon Pages
288
+ * New - Maintenance Pages
289
+ * New - Landing Pages
290
+ * New - Custom 404 Pages
291
+
292
  = 5.1.3 =
293
  * Tweak - Prepping for upcoming new version
294
 
405
 
406
  = 4.0.0 =
407
  Initial Commit
408
+
app/admin-bar-menu.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Display admin bar when active
5
+ */
6
+ function seedprod_lite_admin_bar_menu($wp_admin_bar)
7
+ {
8
+
9
+ $ts = get_option('seedprod_settings');
10
+ $seedprod_settings = json_decode($ts, true);
11
+
12
+
13
+ // if (empty($seedprod_settings['enable_coming_soon_mode']) && empty($seedprod_settings['enable_maintenance_mode'])) {
14
+ // return false;
15
+ // }
16
+
17
+ // Disable if page line editor open
18
+ if (isset($_GET['pl_edit'])) {
19
+ return false;
20
+ }
21
+
22
+ $icon = '
23
+ <span class="seedprod-mb-icon"><svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg">
24
+ <g filter="url(#filter0_d)">
25
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0C4 0 4.32666 0.022488 11.036 0.91214C17.7453 1.80179 20.0674 8.70527 15.9594 14.7304C16.5949 9.34689 15.4319 3.76206 10.7604 3.10916C6.08886 2.45626 6.49574 2.5563 6.49574 2.5563C6.49574 2.5563 6.57314 3.74204 7.01149 6.92954C7.44984 10.117 9.90279 11.6803 12.0495 12.485C12.0495 12.485 12.1754 8.75455 10.9777 7.1126C9.77997 5.47066 8.2899 4.38023 8.2899 4.38023C8.2899 4.38023 11.7916 4.80636 13.1137 7.28431C14.4358 9.76225 14.307 15 14.307 15L12.8808 14.9251C9.04318 14.4574 5.45792 12.1126 4.84831 7.19318C4.23871 2.27373 4 0 4 0Z" fill="black"/>
26
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0C4 0 4.32666 0.022488 11.036 0.91214C17.7453 1.80179 20.0674 8.70527 15.9594 14.7304C16.5949 9.34689 15.4319 3.76206 10.7604 3.10916C6.08886 2.45626 6.49574 2.5563 6.49574 2.5563C6.49574 2.5563 6.57314 3.74204 7.01149 6.92954C7.44984 10.117 9.90279 11.6803 12.0495 12.485C12.0495 12.485 12.1754 8.75455 10.9777 7.1126C9.77997 5.47066 8.2899 4.38023 8.2899 4.38023C8.2899 4.38023 11.7916 4.80636 13.1137 7.28431C14.4358 9.76225 14.307 15 14.307 15L12.8808 14.9251C9.04318 14.4574 5.45792 12.1126 4.84831 7.19318C4.23871 2.27373 4 0 4 0Z" fill="white"/>
27
+ </g>
28
+ <defs>
29
+ <filter id="filter0_d" x="0" y="0" width="22" height="23" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
30
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
31
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
32
+ <feOffset dy="4"/>
33
+ <feGaussianBlur stdDeviation="2"/>
34
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
35
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow"/>
36
+ <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
37
+ </filter>
38
+ </defs>
39
+ </svg></span>';
40
+ $text = '<span>SeedProd</span>';
41
+ if (!empty($seedprod_settings['enable_coming_soon_mode'])) {
42
+ $text = '<span>'.__('Coming Soon Mode Active', 'seedprod-coming-soon-pro').'</span>';
43
+ } elseif (!empty($seedprod_settings['enable_maintenance_mode'])) {
44
+ $text = '<span>'.__('Maintenance Mode Active', 'seedprod-coming-soon-pro').'</span>';
45
+ }
46
+
47
+ $notification = '';
48
+
49
+ //Add the main siteadmin menu item
50
+ $wp_admin_bar->add_menu(array(
51
+ 'id' => 'seedprod_admin_bar',
52
+ 'href' => admin_url().'admin.php?page=seedprod_lite#/',
53
+ 'parent' => 'top-secondary',
54
+ 'title' => $icon. $text . $notification,
55
+ 'meta' => array( 'class' => 'seedprod-mode-active' ),
56
+ ));
57
+
58
+
59
+ // $args = array(
60
+ // 'id' => 'media_settings',
61
+ // 'title' => 'Media Settings',
62
+ // 'href' => admin_url() . 'options-media.php',
63
+ // 'parent' => 'seedprod_admin_bar'
64
+ // );
65
+ // $wp_admin_bar->add_node( $args );
66
+
67
+ }
68
+
69
+
app/backwards/backwards_compatibility.php ADDED
@@ -0,0 +1,382 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ function seedprod_lite_check_for_free_version()
5
+ {
6
+ try {
7
+ $seedprod_unsupported_feature= array();
8
+ $migration = get_option('seedprod_migration_run_once');
9
+ if (empty($migration) || !empty($_GET['sp-force-migrate'])) {
10
+
11
+ // migrate old licnese key if available
12
+ $old_key = get_option('seed_cspv5_license_key');
13
+ if(!empty($old_key)){
14
+ update_option('seedprod_api_key',$old_key);
15
+ $r = seedprod_lite_save_api_key($old_key);
16
+ }
17
+
18
+
19
+ // see if free version old settings exists and they do not have the pro version
20
+ // && empty(get_option('seed_cspv5_settings_content'))
21
+ if (!empty($_GET['sp-force-migrate']) || empty(get_option('seed_cspv5_settings_content')) && empty(get_option('seedprod_coming_soon_page_id')) && empty(get_option('seedprod_maintenance_mode_page_id')) && !empty(get_option('seed_csp4_settings_content')) && get_option('seedprod_csp4_migrated') === false && get_option('seedprod_csp4_imported') === false) {
22
+
23
+
24
+ // import csp4 settings to plugin
25
+
26
+ // get settings
27
+ $s1 = get_option('seed_csp4_settings_content');
28
+ $s2 = get_option('seed_csp4_settings_design');
29
+ $s3 = get_option('seed_csp4_settings_advanced');
30
+
31
+ if (empty($s1)) {
32
+ $s1 = array();
33
+ }
34
+
35
+ if (empty($s2)) {
36
+ $s2 = array();
37
+ }
38
+
39
+ if (empty($s3)) {
40
+ $s3 = array();
41
+ }
42
+
43
+ $csp4_settings = $s1 + $s2 + $s3;
44
+
45
+ // update global settings
46
+
47
+ $ts = get_option('seedprod_settings');
48
+ $seedprod_settings = json_decode($ts, true);
49
+
50
+ $type = 'cs';
51
+ if (!empty($csp4_settings['status']) && $csp4_settings['status'] == 1) {
52
+ $seedprod_settings['enable_coming_soon_mode'] = true;
53
+ $seedprod_settings['enable_maintenance_mode'] = false;
54
+ $type = 'cs';
55
+ }
56
+ if (!empty($csp4_settings['status']) && $csp4_settings['status'] == 2) {
57
+ $seedprod_settings['enable_maintenance_mode'] = true;
58
+ $seedprod_settings['enable_coming_soon_mode'] = false;
59
+ $type = 'mm';
60
+ }
61
+
62
+ update_option('seedprod_settings', json_encode($seedprod_settings));
63
+
64
+ // update page settings
65
+ $csp4_template_file = SEEDPROD_PLUGIN_PATH.'app/backwards/csp4-template.json';
66
+ $csp4_template = json_decode(file_get_contents($csp4_template_file), true);
67
+
68
+ //$csp4_template
69
+ // page to publish if active from v4
70
+ if (!empty($csp4_settings['status']) && $csp4_settings['status'] == 1 || $csp4_settings['status'] == 2) {
71
+ $csp4_template['post_status'] = 'published';
72
+ }
73
+
74
+ // set page type
75
+ $csp4_template['page_type'] = $type;
76
+
77
+ // set custom html
78
+ if (!empty($csp4_settings['html'])) {
79
+ $custom_html = json_decode('{
80
+ "id": "iuf8h9",
81
+ "elType": "block",
82
+ "type": "custom-html",
83
+ "settings": {
84
+ "code": "Full Page Custom HTML is no longer supported in this builder. However your custom html page is still being display and will continue to be displayed as long as you DO NOT save this page. There is Custom HTML block you can use in the builder.",
85
+ "marginTop": "0",
86
+ "paddingTop": "",
87
+ "paddingBottom": "",
88
+ "paddingLeft": "",
89
+ "paddingRight": "",
90
+ "paddingSync": true
91
+ }}
92
+ ');
93
+ if (!empty($custom_html)) {
94
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'] = array();
95
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][] = $custom_html;
96
+ }
97
+
98
+ $csp4_template['document']['settings']['contentPosition'] = '1';
99
+ $csp4_template['document']['sections'][0]['settings']['contentWidth'] = '1';
100
+ } else {
101
+
102
+ // set logo
103
+ if (!empty($csp4_settings['logo'])) {
104
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][0]['settings']['src'] = $csp4_settings['logo'];
105
+ }else{
106
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][0]['settings']['src'] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z/C/HgAGgwJ/lK3Q6wAAAABJRU5ErkJggg==';
107
+ }
108
+
109
+ // set headline
110
+ if (!empty($csp4_settings['headline'])) {
111
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][1]['settings']['headerTxt'] = $csp4_settings['headline'];
112
+ }else{
113
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][1]['settings']['headerTxt'] = '';
114
+ }
115
+
116
+ // set description
117
+ if (!empty($csp4_settings['description'])) {
118
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][2]['settings']['txt'] = $csp4_settings['description'];
119
+ }else{
120
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][2]['settings']['txt'] = '';
121
+ }
122
+
123
+ // set footer credit
124
+ if (!empty($csp4_settings['footer_credit'])) {
125
+ $csp4_template['show_powered_by_link'] = true;
126
+ }
127
+
128
+ // favicon
129
+ if (!empty($csp4_settings['favicon'])) {
130
+ $csp4_template['favicon'] = $csp4_settings['favicon'];
131
+ }
132
+
133
+ // title
134
+ if (!empty($csp4_settings['seo_title'])) {
135
+ $csp4_template['seo_title'] .= $csp4_settings['seo_title'];
136
+ }
137
+
138
+ // meta
139
+ if (!empty($csp4_settings['seo_description'])) {
140
+ $csp4_template['seo_description'] .= $csp4_settings['seo_description'];
141
+ }
142
+
143
+ // set google analytics
144
+ if (!empty($csp4_settings['ga_analytics'])) {
145
+ $csp4_template['footer_scripts'] = $csp4_settings['ga_analytics'];
146
+ }
147
+
148
+ // set bg color
149
+ if (!empty($csp4_settings['bg_color'])) {
150
+ $csp4_template['document']['settings']['bgColor'] = $csp4_settings['bg_color'];
151
+ }
152
+
153
+ // set bg dimming
154
+ if (!empty($csp4_settings['bg_overlay'])) {
155
+ $csp4_template['document']['settings']['bgDimming'] = '50';
156
+ }
157
+
158
+ // set bg image
159
+ if (!empty($csp4_settings['bg_image'])) {
160
+ $csp4_template['document']['settings']['bgImage'] = $csp4_settings['bg_image'];
161
+ }
162
+
163
+ // set bg cover
164
+ if (!empty($csp4_settings['bg_cover'])) {
165
+ if (!empty($csp4_settings['bg_size']) && $csp4_settings['bg_size'] == 'cover') {
166
+ $csp4_template['document']['settings']['bgPosition'] = 'cover';
167
+ }
168
+
169
+ if (!empty($csp4_settings['bg_size']) && $csp4_settings['bg_size'] == 'contain') {
170
+ $csp4_template['document']['settings']['bgPosition'] = 'full';
171
+ }
172
+ }else{
173
+ if (!empty($csp4_settings['bg_repeat']) && $csp4_settings['bg_repeat'] == 'repeat') {
174
+ $csp4_template['document']['settings']['bgPosition'] = 'repeat';
175
+ }
176
+
177
+ if (!empty($csp4_settings['bg_repeat']) && $csp4_settings['bg_repeat'] == 'repeat-x') {
178
+ $csp4_template['document']['settings']['bgPosition'] = 'repeattop';
179
+ }
180
+
181
+ if (!empty($csp4_settings['bg_repeat']) && $csp4_settings['bg_repeat'] == 'repeat-y') {
182
+ $csp4_template['document']['settings']['bgPosition'] = 'repeatvc';
183
+ }
184
+ }
185
+
186
+ //$csp4_template['document']['settings']['customCss'] .=
187
+
188
+ // set width
189
+ if (!empty($csp4_settings['max_width'])) {
190
+ $csp4_template['document']['sections'][0]['settings']['width'] = $csp4_settings['max_width'];
191
+ }
192
+
193
+ // enable well
194
+ if (!empty($csp4_settings['enable_well'])) {
195
+ $csp4_template['document']['sections'][0]['settings']['bgColor'] = '#ffffff';
196
+ $csp4_template['document']['sections'][0]['settings']['borderRadiusTL'] = '4';
197
+ }
198
+
199
+
200
+ // set text color
201
+ if (!empty($csp4_settings['text_color'])) {
202
+ $csp4_template['document']['settings']['textColor'] = $csp4_settings['text_color'];
203
+ }
204
+
205
+ // set headline color
206
+ if (!empty($csp4_settings['headline_color'])) {
207
+ $csp4_template['document']['settings']['headerColor'] = $csp4_settings['headline_color'];
208
+ } else {
209
+ $csp4_template['document']['settings']['headerColor'] = $csp4_settings['text_color'];
210
+ }
211
+
212
+ // set link color
213
+ if (!empty($csp4_settings['link_color'])) {
214
+ $csp4_template['document']['settings']['linkColor'] = $csp4_settings['link_color'];
215
+ $csp4_template['document']['settings']['buttonColor'] = $csp4_settings['link_color'];
216
+ }
217
+
218
+ // set font
219
+ if (!empty($csp4_settings['text_font'])) {
220
+ $csp4_template['document']['settings']['textFontVariant'] = '400';
221
+ $csp4_template['document']['settings']['headerFontVariant'] = '400';
222
+
223
+ if ($csp4_settings['text_font'] == '_arial') {
224
+ $csp4_template['document']['settings']['textFont'] = "'Helvetica Neue', Arial, sans-serif";
225
+ $csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
226
+ }
227
+ if ($csp4_settings['text_font'] == '_arial_black') {
228
+ $csp4_template['document']['settings']['textFont'] = "'Helvetica Neue', Arial, sans-serif";
229
+ $csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
230
+ $csp4_template['document']['settings']['textFontVariant'] = '700';
231
+ $csp4_template['document']['settings']['headerFontVariant'] = '700';
232
+ }
233
+ if ($csp4_settings['text_font'] == '_georgia') {
234
+ $csp4_template['document']['settings']['textFont'] = "Georgia, serif";
235
+ $csp4_template['document']['settings']['headerFont'] = "Georgia, serif";
236
+ }
237
+ if ($csp4_settings['text_font'] == '_helvetica_neue') {
238
+ $csp4_template['document']['settings']['textFont'] = "'Helvetica Neue', Arial, sans-serif";
239
+ $csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
240
+ }
241
+ if ($csp4_settings['text_font'] == '_impact') {
242
+ $csp4_template['document']['settings']['textFont'] = "Impact, Charcoal, sans-serif";
243
+ $csp4_template['document']['settings']['headerFont'] = "Impact, Charcoal, sans-serif";
244
+ }
245
+ if ($csp4_settings['text_font'] == '_lucida') {
246
+ $csp4_template['document']['settings']['textFont'] = "'Helvetica Neue', Arial, sans-serif";
247
+ $csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
248
+ }
249
+ if ($csp4_settings['text_font'] == '_palatino') {
250
+ $csp4_template['document']['settings']['textFont'] = "'Helvetica Neue', Arial, sans-serif";
251
+ $csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
252
+ }
253
+ if ($csp4_settings['text_font'] == '_tahoma') {
254
+ $csp4_template['document']['settings']['textFont'] = "Tahoma, Geneva, sans-serif";
255
+ $csp4_template['document']['settings']['headerFont'] = "Tahoma, Geneva, sans-serif";
256
+ }
257
+ if ($csp4_settings['text_font'] == '_times') {
258
+ $csp4_template['document']['settings']['textFont'] = "'Times New Roman', Times, serif";
259
+ $csp4_template['document']['settings']['headerFont'] = "'Times New Roman', Times, serif";
260
+ }
261
+ if ($csp4_settings['text_font'] == '_trebuchet') {
262
+ $csp4_template['document']['settings']['textFont'] = "'Trebuchet MS', Helvetica, sans-serif";
263
+ $csp4_template['document']['settings']['headerFont'] = "'Trebuchet MS', Helvetica, sans-serif";
264
+ }
265
+ if ($csp4_settings['text_font'] == '_verdana') {
266
+ $csp4_template['document']['settings']['textFont'] = "Verdana, Geneva, sans-serif";
267
+ $csp4_template['document']['settings']['headerFont'] = "Verdana, Geneva, sans-serif";
268
+ }
269
+ }
270
+
271
+ // set custom css
272
+ if (!empty($csp4_settings['custom_css'])) {
273
+ $csp4_template['document']['settings']['customCss'] .= $csp4_settings['custom_css'];
274
+ }
275
+
276
+
277
+ // set exclude urls
278
+ if (!empty($csp4_settings['disable_default_excluded_urls'])) {
279
+ $csp4_template['disable_default_excluded_urls'] = true;
280
+ }
281
+
282
+ // set header scripts
283
+ if (!empty($csp4_settings['header_scripts'])) {
284
+ $csp4_template['header_scripts'] .= $csp4_settings['header_scripts'];
285
+ }
286
+
287
+ // set footer scripts
288
+ if (!empty($csp4_settings['footer_scripts'])) {
289
+ $csp4_template['footer_scripts'] .= $csp4_settings['footer_scripts'];
290
+ }
291
+
292
+ // set append html
293
+ if (!empty($csp4_settings['append_html'])) {
294
+ $append_html = json_decode('{
295
+ "id": "iuf8h9",
296
+ "elType": "block",
297
+ "type": "custom-html",
298
+ "settings": {
299
+ "code": "'.$csp4_settings['append_html'].'",
300
+ "marginTop": "0",
301
+ "paddingTop": "",
302
+ "paddingBottom": "",
303
+ "paddingLeft": "",
304
+ "paddingRight": "",
305
+ "paddingSync": true
306
+ }}
307
+ ');
308
+ if (!empty($append_html)) {
309
+ $csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][] = $append_html;
310
+ }
311
+ }
312
+ }
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+ // create the coming soon or maintenance page and inject settings
321
+ $slug = '';
322
+ $cpt = 'page';
323
+ if ($type == 'cs' || $type == 'mm' || $type == 'p404') {
324
+ $cpt = 'seedprod';
325
+ }
326
+ if ($type == 'cs') {
327
+ $slug= 'sp-cs';
328
+ }
329
+ if ($type == 'mm') {
330
+ $slug= 'sp-mm';
331
+ }
332
+
333
+ $id = wp_insert_post(
334
+ array(
335
+ 'comment_status' => 'closed',
336
+ 'ping_status' => 'closed',
337
+ 'post_content'=>'',
338
+ 'post_status' => 'publish',
339
+ 'post_title'=>'seedprod',
340
+ 'post_type'=> $cpt,
341
+ 'post_name'=>$slug,
342
+ 'meta_input' => array(
343
+ '_seedprod_page' => true,
344
+ '_seedprod_page_uuid' => wp_generate_uuid4(),
345
+ )),
346
+ true
347
+ );
348
+
349
+ // update post because wp screws our json settings
350
+ global $wpdb;
351
+ $tablename = $wpdb->prefix . 'posts';
352
+ $r = $wpdb->update(
353
+ $tablename,
354
+ array(
355
+ 'post_content_filtered'=> json_encode($csp4_template),
356
+ ),
357
+ array( 'ID' => $id ),
358
+ array(
359
+ '%s',
360
+ ),
361
+ array( '%d' )
362
+ );
363
+
364
+ if ($type == 'cs') {
365
+ update_option('seedprod_coming_soon_page_id', $id);
366
+ }
367
+ if ($type == 'mm') {
368
+ update_option('seedprod_maintenance_mode_page_id', $id);
369
+ }
370
+
371
+ // do we need to show it?
372
+ update_option('seedprod_csp4_imported', true);
373
+ update_option('seedprod_show_csp4', true);
374
+ }
375
+
376
+ update_option('seedprod_migration_run_once',true);
377
+ }
378
+ } catch (Exception $e) {
379
+ return $e;
380
+ }
381
+ }
382
+
app/backwards/csp4-functions.php ADDED
@@ -0,0 +1,538 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Display the legacy free coming soon page
4
+ */
5
+ if (!function_exists('seedprod_lite_csp4_render_comingsoon_page')) {
6
+ function seedprod_lite_csp4_render_comingsoon_page()
7
+ {
8
+ extract(seedprod_lite_seed_csp4_get_settings());
9
+
10
+ if (!isset($status)) {
11
+ $err = new WP_Error('error', __("Please enter your settings.", 'coming-soon'));
12
+ echo $err->get_error_message();
13
+ exit();
14
+ }
15
+
16
+
17
+ if (empty($_GET['cs_preview'])) {
18
+ $_GET['cs_preview'] = false;
19
+ }
20
+
21
+ // Check if Preview
22
+ $is_preview = false;
23
+ if ((isset($_GET['cs_preview']) && $_GET['cs_preview'] == 'true')) {
24
+ $is_preview = true;
25
+ }
26
+
27
+ // Exit if a custom login page
28
+ if (empty($disable_default_excluded_urls)) {
29
+ if (preg_match("/login|admin|dashboard|account/i", $_SERVER['REQUEST_URI']) > 0 && $is_preview == false) {
30
+ return false;
31
+ }
32
+ }
33
+
34
+
35
+ // Check if user is logged in.
36
+ if ($is_preview === false) {
37
+ if (is_user_logged_in()) {
38
+ return false;
39
+ }
40
+ }
41
+
42
+
43
+ // set headers
44
+ if ($status == '2') {
45
+ header('HTTP/1.1 503 Service Temporarily Unavailable');
46
+ header('Status: 503 Service Temporarily Unavailable');
47
+ header('Retry-After: 86400'); // retry in a day
48
+ $csp4_maintenance_file = WP_CONTENT_DIR."/maintenance.php";
49
+ if (!empty($enable_maintenance_php) and file_exists($csp4_maintenance_file)) {
50
+ include_once($csp4_maintenance_file);
51
+ exit();
52
+ }
53
+ }
54
+
55
+ // Prevetn Plugins from caching
56
+ // Disable caching plugins. This should take care of:
57
+ // - W3 Total Cache
58
+ // - WP Super Cache
59
+ // - ZenCache (Previously QuickCache)
60
+ if (!defined('DONOTCACHEPAGE')) {
61
+ define('DONOTCACHEPAGE', true);
62
+ }
63
+ if (!defined('DONOTCDN')) {
64
+ define('DONOTCDN', true);
65
+ }
66
+ if (!defined('DONOTCACHEDB')) {
67
+ define('DONOTCACHEDB', true);
68
+ }
69
+ if (!defined('DONOTMINIFY')) {
70
+ define('DONOTMINIFY', true);
71
+ }
72
+ if (!defined('DONOTCACHEOBJECT')) {
73
+ define('DONOTCACHEOBJECT', true);
74
+ }
75
+ //ob_end_clean();
76
+ nocache_headers();
77
+
78
+
79
+ // render template tags
80
+ if (empty($html)) {
81
+ $template = file_get_contents(SEEDPROD_PLUGIN_PATH.'app/backwards/themes/default/index.php');
82
+ $template_tags = array(
83
+ '{Title}' => seedprod_lite_seed_csp4_title(),
84
+ '{MetaDescription}' => seedprod_lite_seed_csp4_metadescription(),
85
+ '{Privacy}' => seedprod_lite_seed_csp4_privacy(),
86
+ '{Favicon}' => seedprod_lite_seed_csp4_favicon(),
87
+ '{CustomCSS}' => seedprod_lite_seed_csp4_customcss(),
88
+ '{Head}' => seedprod_lite_seed_csp4_head(),
89
+ '{Footer}' => seedprod_lite_seed_csp4_footer(),
90
+ '{Logo}' => seedprod_lite_seed_csp4_logo(),
91
+ '{Headline}' => seedprod_lite_seed_csp4_headline(),
92
+ '{Description}' => seedprod_lite_seed_csp4_description(),
93
+ '{Credit}' => seedprod_lite_seed_csp4_credit(),
94
+ '{Append_HTML}' => seed_csp4_append_html(),
95
+ );
96
+ echo strtr($template, $template_tags);
97
+ } else {
98
+ echo $html;
99
+ }
100
+ exit();
101
+ }
102
+ }
103
+
104
+ // Template Tags
105
+ if (!function_exists('seedprod_lite_seed_csp4_title')) {
106
+ function seedprod_lite_seed_csp4_title()
107
+ {
108
+ $o = seedprod_lite_seed_csp4_get_settings();
109
+ extract($o);
110
+
111
+ $output = '';
112
+
113
+ if (!empty($seo_title)) {
114
+ $output = esc_html($seo_title);
115
+ }
116
+ return $output;
117
+ }
118
+ }
119
+
120
+ if (!function_exists('seedprod_lite_seed_csp4_metadescription')) {
121
+ function seedprod_lite_seed_csp4_metadescription()
122
+ {
123
+ $o = seedprod_lite_seed_csp4_get_settings();
124
+ extract($o);
125
+
126
+ $output = '';
127
+
128
+ if (!empty($seo_description)) {
129
+ $output = '<meta name="description" content="'.esc_attr($seo_description).'">';
130
+ }
131
+
132
+ return $output;
133
+ }
134
+ }
135
+
136
+ if (!function_exists('seedprod_lite_seed_csp4_privacy')) {
137
+ function seedprod_lite_seed_csp4_privacy()
138
+ {
139
+ $output = '';
140
+
141
+ if (get_option('blog_public') == 0) {
142
+ $output = "<meta name='robots' content='noindex,nofollow' />";
143
+ }
144
+
145
+ return $output;
146
+ }
147
+ }
148
+
149
+ if (!function_exists('seedprod_lite_seed_csp4_favicon')) {
150
+ function seedprod_lite_seed_csp4_favicon()
151
+ {
152
+ $o = seedprod_lite_seed_csp4_get_settings();
153
+ extract($o);
154
+
155
+ $output = '';
156
+
157
+ if (!empty($favicon)) {
158
+ $output .= "<!-- Favicon -->\n";
159
+ $output .= '<link href="'.esc_attr($favicon).'" rel="shortcut icon" type="image/x-icon" />';
160
+ }
161
+
162
+ return $output;
163
+ }
164
+ }
165
+
166
+ if (!function_exists('seedprod_lite_seed_csp4_customcss')) {
167
+ function seedprod_lite_seed_csp4_customcss()
168
+ {
169
+ $o = seedprod_lite_seed_csp4_get_settings();
170
+ extract($o);
171
+
172
+ $output = '';
173
+
174
+ if (!empty($custom_css)) {
175
+ $output = '<style type="text/css">'.esc_html($custom_css).'</style>';
176
+ }
177
+
178
+ return $output;
179
+ }
180
+ }
181
+
182
+ if (!function_exists('seed_csp4_head')) {
183
+ function seedprod_lite_seed_csp4_head()
184
+ {
185
+ $o = seedprod_lite_seed_csp4_get_settings();
186
+ extract($o);
187
+
188
+ // CSS
189
+ $output = '';
190
+
191
+ $output .= "<!-- Bootstrap and default Style -->\n";
192
+ $output .= '<link rel="stylesheet" href="'.SEEDPROD_PLUGIN_URL.'app/backwards/themes/default/bootstrap/css/bootstrap.min.css">'."\n";
193
+ $output .= '<link rel="stylesheet" href="'.SEEDPROD_PLUGIN_URL.'app/backwards/themes/default/style.css">'."\n";
194
+ if (is_rtl()) {
195
+ $output .= '<link rel="stylesheet" href="'.SEEDPROD_PLUGIN_URL.'app/backwards/themes/default/rtl.css">'."\n";
196
+ }
197
+ $output .= '<style type="text/css">'."\n";
198
+
199
+ // Calculated Styles
200
+
201
+ $output .= '/* calculated styles */'."\n";
202
+ ob_start(); ?>
203
+
204
+ /* Background Style */
205
+ html{
206
+ <?php if (!empty($bg_image)): ; ?>
207
+ <?php if (isset($bg_cover) && in_array('1', $bg_cover)) : ?>
208
+ background: <?php echo $bg_color; ?> url('<?php echo $bg_image; ?>') no-repeat top center fixed;
209
+ <?php if (isset($bg_size) && $bg_size == 'contain') : ?>
210
+ -webkit-background-size: contain;
211
+ -moz-background-size: contain;
212
+ -o-background-size: contain;
213
+ background-size: contain;
214
+ <?php else : ?>
215
+
216
+ -webkit-background-size: cover;
217
+ -moz-background-size: cover;
218
+ -o-background-size: cover;
219
+ background-size: cover;
220
+ <?php endif ?>
221
+ <?php else: ?>
222
+ background: <?php echo $bg_color; ?> url('<?php echo $bg_image; ?>') <?php echo $bg_repeat; ?> <?php echo $bg_position; ?> <?php echo $bg_attahcment; ?>;
223
+ <?php endif ?>
224
+ <?php else:
225
+ if (!empty($bg_color)):
226
+ ?>
227
+ background: <?php echo $bg_color; ?>;
228
+ <?php endif;
229
+ endif; ?>
230
+ }
231
+ .seed-csp4 body{
232
+ <?php if (!empty($bg_effect)) : ?>
233
+ background: transparent url('<?php echo plugins_url('images/bg-'.$bg_effect.'.png', __FILE__) ; ?>') repeat;
234
+ <?php else: ?>
235
+ background: transparent;
236
+ <?php endif; ?>
237
+ }
238
+ <?php if (!empty($bg_overlay)): ; ?>
239
+ #seed-csp4-page{
240
+ background-color: rgba(0,0,0,0.5);
241
+ }
242
+ <?php endif ?>
243
+
244
+ <?php if (!empty($max_width)):?>
245
+ #seed-csp4-content{
246
+ max-width: <?php echo intval($max_width); ?>px;
247
+ }
248
+ <?php endif; ?>
249
+
250
+ <?php if (!empty($enable_well)):?>
251
+ #seed-csp4-content{
252
+ min-height: 20px;
253
+ padding: 19px;
254
+ background-color: #f5f5f5;
255
+ border: 1px solid #e3e3e3;
256
+ border-radius: 4px;
257
+ }
258
+ <?php endif; ?>
259
+
260
+ /* Text Styles */
261
+ <?php if (!empty($text_font)):?>
262
+ .seed-csp4 body{
263
+ font-family: <?php echo seedprod_lite_seed_csp4_get_font_family($text_font); ?>
264
+ }
265
+
266
+ .seed-csp4 h1, .seed-csp4 h2, .seed-csp4 h3, .seed-csp4 h4, .seed-csp4 h5, .seed-csp4 h6{
267
+ font-family: <?php echo seedprod_lite_seed_csp4_get_font_family($text_font); ?>
268
+ }
269
+ <?php endif; ?>
270
+
271
+ <?php if (!empty($text_color)) { ?>
272
+ .seed-csp4 body{
273
+ color:<?php echo $text_color;?>;
274
+ }
275
+ <?php } ?>
276
+
277
+ <?php if (!empty($link_color)) { ?>
278
+ <?php if (empty($headline_color)) {
279
+ $headline_color = $link_color;
280
+ }?>
281
+ <?php } ?>
282
+
283
+
284
+ <?php if (!empty($headline_color)) { ?>
285
+ .seed-csp4 h1, .seed-csp4 h2, .seed-csp4 h3, .seed-csp4 h4, .seed-csp4 h5, .seed-csp4 h6{
286
+ color:<?php echo $headline_color;?>;
287
+ }
288
+ <?php } ?>
289
+
290
+
291
+ <?php if (!empty($link_color)) { ?>
292
+ .seed-csp4 a, .seed-csp4 a:visited, .seed-csp4 a:hover, .seed-csp4 a:active, .seed-csp4 a:focus{
293
+ color:<?php echo $link_color;?>;
294
+ }
295
+
296
+
297
+ <?php } ?>
298
+
299
+
300
+ <?php if (!empty($bg_image)): ; ?>
301
+ <?php if (isset($bg_cover) && in_array('1', $bg_cover)) : ?>
302
+ @supports (-webkit-overflow-scrolling: touch) {
303
+ html {
304
+ height: 100%;
305
+ overflow: hidden;
306
+ }
307
+ body
308
+ {
309
+ height:100%;
310
+ overflow: auto;
311
+ -webkit-overflow-scrolling: touch;
312
+ }
313
+ }
314
+ <?php endif; ?>
315
+ <?php endif; ?>
316
+
317
+ <?php
318
+
319
+ $output .= ob_get_clean();
320
+
321
+ $output .= '</style>'."\n";
322
+
323
+
324
+
325
+ // Javascript
326
+ $output .= "<!-- JS -->\n";
327
+ $include_url = includes_url();
328
+ $last = $include_url[strlen($include_url)-1];
329
+ if ($last != '/') {
330
+ $include_url = $include_url . '/';
331
+ }
332
+ if (empty($enable_wp_head_footer)) {
333
+ $output .= '<script src="'.$include_url.'js/jquery/jquery.js"></script>'."\n";
334
+ }
335
+ $output .= '<script src="'.SEEDPROD_PLUGIN_URL.'app/backwards/themes/default/bootstrap/js/bootstrap.min.js"></script>'."\n";
336
+
337
+
338
+
339
+ // Header Scripts
340
+ if (!empty($header_scripts)) {
341
+ $output .= "<!-- Header Scripts -->\n";
342
+ $output .= $header_scripts;
343
+ }
344
+
345
+ // Google Analytics
346
+ if (!empty($ga_analytics)) {
347
+ $output .= "<!-- Google Analytics -->\n";
348
+ $output .= $ga_analytics;
349
+ }
350
+
351
+
352
+ return $output;
353
+ }
354
+ }
355
+
356
+ if (!function_exists('seedprod_lite_seed_csp4_get_font_family')) {
357
+ function seedprod_lite_seed_csp4_get_font_family($font)
358
+ {
359
+ $fonts = array();
360
+ $fonts['_arial'] = 'Helvetica, Arial, sans-serif';
361
+ $fonts['_arial_black'] = 'Arial Black, Arial Black, Gadget, sans-serif';
362
+ $fonts['_georgia'] = 'Georgia,serif';
363
+ $fonts['_helvetica_neue'] = '"Helvetica Neue", Helvetica, Arial, sans-serif';
364
+ $fonts['_impact'] = 'Charcoal,Impact,sans-serif';
365
+ $fonts['_lucida'] = 'Lucida Grande,Lucida Sans Unicode, sans-serif';
366
+ $fonts['_palatino'] = 'Palatino,Palatino Linotype, Book Antiqua, serif';
367
+ $fonts['_tahoma'] = 'Geneva,Tahoma,sans-serif';
368
+ $fonts['_times'] = 'Times,Times New Roman, serif';
369
+ $fonts['_trebuchet'] = 'Trebuchet MS, sans-serif';
370
+ $fonts['_verdana'] = 'Verdana, Geneva, sans-serif';
371
+
372
+ if (!empty($fonts[$font])) {
373
+ $font_family = $fonts[$font];
374
+ } else {
375
+ $font_family = 'Helvetica Neue, Arial, sans-serif';
376
+ }
377
+
378
+ echo $font_family;
379
+ }
380
+ }
381
+
382
+ if (!function_exists('seedprod_lite_seed_csp4_footer')) {
383
+ function seedprod_lite_seed_csp4_footer()
384
+ {
385
+ $o = seedprod_lite_seed_csp4_get_settings();
386
+ extract($o);
387
+
388
+ $output = '';
389
+
390
+
391
+ if (!empty($bg_cover)) {
392
+ $output .= '<!--[if lt IE 9]>
393
+ <script>
394
+ jQuery(document).ready(function($){';
395
+
396
+
397
+ $output .= '$.supersized({';
398
+ $output .= "slides:[ {image : '$bg_image'} ]";
399
+ $output .= '});';
400
+
401
+
402
+ $output .= '});
403
+ </script>
404
+ <![endif]-->';
405
+ }
406
+
407
+
408
+ if (!empty($footer_scripts)) {
409
+ $output .= "<!-- Footer Scripts -->\n";
410
+ $output .= $footer_scripts;
411
+ }
412
+
413
+ return $output;
414
+ }
415
+ }
416
+
417
+ if (!function_exists('seedprod_lite_seed_csp4_logo')) {
418
+ function seedprod_lite_seed_csp4_logo()
419
+ {
420
+ $o = seedprod_lite_seed_csp4_get_settings();
421
+ extract($o);
422
+
423
+ $output = '';
424
+
425
+ if (!empty($logo)) {
426
+ $output .= "<img id='seed-csp4-image' src='".esc_attr($logo)."'>";
427
+ }
428
+
429
+ return $output;
430
+ }
431
+ }
432
+
433
+ if (!function_exists('seedprod_lite_seed_csp4_headline')) {
434
+ function seedprod_lite_seed_csp4_headline()
435
+ {
436
+ $o = seedprod_lite_seed_csp4_get_settings();
437
+ extract($o);
438
+
439
+ $output = '';
440
+
441
+ if (!empty($headline)) {
442
+ $output .= '<h1 id="seed-csp4-headline">'.wp_kses($headline, array(
443
+ 'a' => array(
444
+ 'href' => array(),
445
+ 'title' => array()
446
+ ),
447
+ 'br' => array(),
448
+ 'em' => array(),
449
+ 'strong' => array(),
450
+ )).'</h1>';
451
+ }
452
+
453
+ return $output;
454
+ }
455
+ }
456
+
457
+ if (!function_exists('seedprod_lite_seed_csp4_description')) {
458
+ function seedprod_lite_seed_csp4_description()
459
+ {
460
+ $o = seedprod_lite_seed_csp4_get_settings();
461
+ extract($o);
462
+
463
+ $output = '';
464
+
465
+ if (!empty($description)) {
466
+ if (has_shortcode($description, 'rafflepress')) {
467
+ $output .= '<div id="seed-csp4-description">'.do_shortcode(shortcode_unautop(wpautop(convert_chars(wptexturize($description))))).'</div>';
468
+ } else {
469
+ $output .= '<div id="seed-csp4-description">'.shortcode_unautop(wpautop(convert_chars(wptexturize($description)))).'</div>';
470
+ }
471
+ }
472
+
473
+ return $output;
474
+ }
475
+ }
476
+
477
+ if (!function_exists('seed_csp4_append_html')) {
478
+ function seed_csp4_append_html()
479
+ {
480
+ $o = seedprod_lite_seed_csp4_get_settings();
481
+ extract($o);
482
+
483
+ $output = '';
484
+
485
+ if (!empty($append_html)) {
486
+ $output .= '<div id="coming-soon-custom-html">'.$append_html.'</div>';
487
+ }
488
+
489
+ return $output;
490
+ }
491
+ }
492
+
493
+ if (!function_exists('seedprod_lite_seed_csp4_credit')) {
494
+ function seedprod_lite_seed_csp4_credit()
495
+ {
496
+ $o = seedprod_lite_seed_csp4_get_settings();
497
+ extract($o);
498
+
499
+ $output = '';
500
+
501
+ if (!empty($footer_credit)) {
502
+ $output = '<div id="seed-csp4-credit">';
503
+ $output .= '<a target="_blank" href="http://www.seedprod.com/?utm_source=coming-soon-credit-link&utm_medium=banner&utm_campaign=coming-soon-plugin-credit-link"><img style="width:75px" src="'.SEEDPROD_PLUGIN_URL.'public/svg/powered-by-logo.svg"></a>';
504
+ $output .= '</div>';
505
+ }
506
+
507
+ return $output;
508
+ }
509
+ }
510
+
511
+ if (!function_exists('seedprod_lite_seed_csp4_get_settings')) {
512
+ function seedprod_lite_seed_csp4_get_settings()
513
+ {
514
+ $s1 = get_option('seed_csp4_settings_content');
515
+ $s2 = get_option('seed_csp4_settings_design');
516
+ $s3 = get_option('seed_csp4_settings_advanced');
517
+
518
+ if (empty($s1)) {
519
+ $s1 = array();
520
+ }
521
+
522
+ if (empty($s2)) {
523
+ $s2 = array();
524
+ }
525
+
526
+ if (empty($s3)) {
527
+ $s3 = array();
528
+ }
529
+
530
+ $settings = $s1 + $s2 + $s3;
531
+
532
+
533
+ return apply_filters('seedprod_lite_seed_csp4_get_settings', $settings);
534
+ ;
535
+ }
536
+ }
537
+
538
+
app/backwards/csp4-template.json ADDED
@@ -0,0 +1,430 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "enable_recaptcha":false,
3
+ "template_id":71,
4
+ "post_title":"cspv4",
5
+ "post_name":"cspv4",
6
+ "post_status":"draft",
7
+ "show_powered_by_link":false,
8
+ "affiliate_url":"",
9
+ "header_scripts":"",
10
+ "footer_scripts":"",
11
+ "conversion_scripts":"",
12
+ "disable_default_excluded_urls":false,
13
+ "no_conflict_mode":true,
14
+ "include_exclude_type":"0",
15
+ "include_list":"",
16
+ "exclude_list":"",
17
+ "bypass_phrase":"",
18
+ "bypass_expires":"2",
19
+ "bypass_cookie":false,
20
+ "access_by_ip":"",
21
+ "access_by_role":[
22
+
23
+ ],
24
+ "redirect_mode":false,
25
+ "redirect_url":"",
26
+ "domain_mapping_status":false,
27
+ "domain_mapping":"",
28
+ "exclude_list_404":"",
29
+ "email_integration_id":"",
30
+ "is_new":false,
31
+ "page_type":"lp",
32
+ "document":{
33
+ "sections":[
34
+ {
35
+ "id":"ks8a8s",
36
+ "type":"section",
37
+ "rows":[
38
+ {
39
+ "id":"vw3kvy",
40
+ "type":"row",
41
+ "colType":"1-col",
42
+ "cols":[
43
+ {
44
+ "id":"wz5ajq",
45
+ "type":"col",
46
+ "blocks":[
47
+ {
48
+ "id":"k4accv",
49
+ "elType":"block",
50
+ "type":"image",
51
+ "settings":{
52
+ "unit":"px",
53
+ "src":"",
54
+ "altTxt":"",
55
+ "link":"",
56
+ "width":"",
57
+ "height":"",
58
+ "marginTop":"0",
59
+ "paddingTop":"",
60
+ "paddingBottom":"",
61
+ "paddingLeft":"",
62
+ "paddingRight":"",
63
+ "paddingSync":true,
64
+ "imagePadding":"",
65
+ "align":"center",
66
+ "shadow":"",
67
+ "imageBorderRadius":"",
68
+ "imageBorderTop":"0",
69
+ "imageBorderBottom":"0",
70
+ "imageBorderLeft":"0",
71
+ "imageBorderRight":"0",
72
+ "imageBorderSync":true,
73
+ "imageBorderStyle":"solid",
74
+ "imageBorderColor":"",
75
+ "blockTemplateId":false
76
+ }
77
+ },
78
+ {
79
+ "id":"rchwtv",
80
+ "elType":"block",
81
+ "type":"header",
82
+ "settings":{
83
+ "headerTxt":"My Awesome Headline",
84
+ "tag":"h1",
85
+ "textColor":"",
86
+ "bgColor":"",
87
+ "beforeIcon":"",
88
+ "afterIcon":"",
89
+ "marginTop":"0",
90
+ "paddingTop":"",
91
+ "paddingBottom":"",
92
+ "paddingLeft":"",
93
+ "paddingRight":"",
94
+ "paddingSync":true,
95
+ "borderRadius":"",
96
+ "border":"",
97
+ "borderStyle":"",
98
+ "borderSize":"",
99
+ "borderColor":"",
100
+ "shadow":"",
101
+ "textShadow":"",
102
+ "font":"",
103
+ "fontVariant":"",
104
+ "fontSize":"",
105
+ "fontSize_mobile":"",
106
+ "lineHeight":"",
107
+ "lineHeight_mobile":"",
108
+ "letterSpacing":"",
109
+ "letterSpacing_mobile":"",
110
+ "typographyBold":"",
111
+ "typographyItalic":"",
112
+ "typographyUnderline":"",
113
+ "align":"center",
114
+ "typographyLetterCase":""
115
+ }
116
+ },
117
+ {
118
+ "id":"ss42wh",
119
+ "elType":"block",
120
+ "type":"text",
121
+ "settings":{
122
+ "txt":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam commodo velit ex, non ultrices leo auctor at. Integer blandit ex velit, vel aliquam sem tempor eu. Pellentesque sem tortor, elementum et nisi sed, convallis pharetra lorem. Aenean rhoncus rhoncus ex, in dictum massa dictum et. Morbi at nisl fermentum, condimentum tortor a, laoreet leo. Curabitur laoreet diam a metus tincidunt, sed dapibus orci venenatis.",
123
+ "textColor":"",
124
+ "bgColor":"",
125
+ "beforeIcon":"",
126
+ "afterIcon":"",
127
+ "marginTop":"0",
128
+ "paddingTop":"",
129
+ "paddingBottom":"",
130
+ "paddingLeft":"",
131
+ "paddingRight":"",
132
+ "paddingSync":true,
133
+ "borderRadius":"",
134
+ "border":"",
135
+ "borderStyle":"",
136
+ "borderSize":"",
137
+ "borderColor":"",
138
+ "shadow":"",
139
+ "textShadow":"",
140
+ "font":"",
141
+ "fontVariant":"",
142
+ "fontSize":"",
143
+ "fontSize_mobile":"",
144
+ "lineHeight":"",
145
+ "lineHeight_mobile":"",
146
+ "letterSpacing":"",
147
+ "letterSpacing_mobile":"",
148
+ "typographyBold":"",
149
+ "typographyItalic":"",
150
+ "typographyUnderline":"",
151
+ "align":"center",
152
+ "typographyLetterCase":""
153
+ }
154
+ }
155
+ ],
156
+ "settings":{
157
+ "bgStyle":"s",
158
+ "bgGradient":{
159
+ "type":"linear",
160
+ "position":"center",
161
+ "angle":0,
162
+ "color1":"",
163
+ "color1location":0,
164
+ "color2":"",
165
+ "color2location":100
166
+ },
167
+ "colWidth":"",
168
+ "bgColor":"",
169
+ "bgImage":"",
170
+ "bgPosition":"",
171
+ "marginTop":"",
172
+ "shadow":"",
173
+ "paddingTop":"",
174
+ "paddingBottom":"",
175
+ "paddingLeft":"",
176
+ "paddingRight":"",
177
+ "paddingSync":true,
178
+ "borderRadiusTL": "",
179
+ "borderRadiusTR": "",
180
+ "borderRadiusBL": "",
181
+ "borderRadiusBR": "",
182
+ "borderRadiusSync":true,
183
+ "borderTop":"0",
184
+ "borderBottom":"0",
185
+ "borderLeft":"0",
186
+ "borderRight":"0",
187
+ "borderSync":true,
188
+ "borderStyle":"solid"
189
+ }
190
+ }
191
+ ],
192
+ "settings":{
193
+ "bgStyle":"s",
194
+ "bgGradient":{
195
+ "type":"linear",
196
+ "position":"center",
197
+ "angle":0,
198
+ "color1":"",
199
+ "color1location":0,
200
+ "color2":"",
201
+ "color2location":100
202
+ },
203
+ "colGutter":0,
204
+ "width":"1000",
205
+ "bgColor":"",
206
+ "bgImage":"",
207
+ "bgPosition":"",
208
+ "marginTop":"",
209
+ "shadow":"",
210
+ "paddingTop":"0",
211
+ "paddingBottom":"0",
212
+ "paddingLeft":"0",
213
+ "paddingRight":"0",
214
+ "paddingSync":true,
215
+ "borderRadiusTL":"",
216
+ "borderRadiusTR":"",
217
+ "borderRadiusBL":"",
218
+ "borderRadiusBR":"",
219
+ "borderRadiusSync":true,
220
+ "borderTop":"0",
221
+ "borderBottom":"0",
222
+ "borderLeft":"0",
223
+ "borderRight":"0",
224
+ "borderSync":true,
225
+ "borderStyle":"solid"
226
+ }
227
+ }
228
+ ],
229
+ "settings":{
230
+ "bgStyle":"s",
231
+ "bgGradient":{
232
+ "type":"linear",
233
+ "position":"center",
234
+ "angle":0,
235
+ "color1":"",
236
+ "color1location":0,
237
+ "color2":"",
238
+ "color2location":100
239
+ },
240
+ "contentWidth":"2",
241
+ "width":600,
242
+ "bgColor":"",
243
+ "bgImage":"",
244
+ "bgPosition":"",
245
+ "marginTop":"60",
246
+ "shadow":"",
247
+ "paddingTop":"10",
248
+ "paddingBottom":"10",
249
+ "paddingLeft":"10",
250
+ "paddingRight":"10",
251
+ "paddingSync":true,
252
+ "borderRadiusTL": "",
253
+ "borderRadiusTR": "",
254
+ "borderRadiusBL": "",
255
+ "borderRadiusBR": "",
256
+ "borderRadiusSync":true,
257
+ "borderTop":"0",
258
+ "borderBottom":"0",
259
+ "borderLeft":"0",
260
+ "borderRight":"0",
261
+ "borderSync":true,
262
+ "borderStyle":"solid"
263
+ }
264
+ },
265
+ {
266
+ "id": "qy2ukz",
267
+ "type": "section",
268
+ "rows": [
269
+ {
270
+ "id": "y2q7z4",
271
+ "type": "row",
272
+ "colType": "1-col",
273
+ "cols": [
274
+ {
275
+ "id": "kc98i6",
276
+ "type": "col",
277
+ "blocks": [
278
+ {
279
+ "id": "x7mrh1",
280
+ "elType": "block",
281
+ "type": "spacer",
282
+ "settings": {
283
+ "height": 60
284
+ }
285
+ }
286
+ ],
287
+ "settings": {
288
+ "bgStyle": "s",
289
+ "bgGradient": {
290
+ "type": "linear",
291
+ "position": "center",
292
+ "angle": 0,
293
+ "color1": "",
294
+ "color1location": 0,
295
+ "color2": "",
296
+ "color2location": 100
297
+ },
298
+ "colWidth": "",
299
+ "bgColor": "",
300
+ "bgImage": "",
301
+ "bgPosition": "",
302
+ "marginTop": "",
303
+ "shadow": "",
304
+ "paddingTop": "",
305
+ "paddingBottom": "",
306
+ "paddingLeft": "",
307
+ "paddingRight": "",
308
+ "paddingSync": true,
309
+ "borderRadiusTL": "",
310
+ "borderRadiusTR": "",
311
+ "borderRadiusBL": "",
312
+ "borderRadiusBR": "",
313
+ "borderRadiusSync": true,
314
+ "borderTop": "0",
315
+ "borderBottom": "0",
316
+ "borderLeft": "0",
317
+ "borderRight": "0",
318
+ "borderSync": true,
319
+ "borderStyle": "solid"
320
+ }
321
+ }
322
+ ],
323
+ "settings": {
324
+ "bgStyle": "s",
325
+ "bgGradient": {
326
+ "type": "linear",
327
+ "position": "center",
328
+ "angle": 0,
329
+ "color1": "",
330
+ "color1location": 0,
331
+ "color2": "",
332
+ "color2location": 100
333
+ },
334
+ "colGutter": 0,
335
+ "width": "1000",
336
+ "bgColor": "",
337
+ "bgImage": "",
338
+ "bgPosition": "",
339
+ "marginTop": "",
340
+ "shadow": "",
341
+ "paddingTop": "0",
342
+ "paddingBottom": "0",
343
+ "paddingLeft": "0",
344
+ "paddingRight": "0",
345
+ "paddingSync": true,
346
+ "borderRadiusTL": "",
347
+ "borderRadiusTR": "",
348
+ "borderRadiusBL": "",
349
+ "borderRadiusBR": "",
350
+ "borderRadiusSync": true,
351
+ "borderTop": "0",
352
+ "borderBottom": "0",
353
+ "borderLeft": "0",
354
+ "borderRight": "0",
355
+ "borderSync": true,
356
+ "borderStyle": "solid"
357
+ }
358
+ }
359
+ ],
360
+ "settings": {
361
+ "bgStyle": "s",
362
+ "bgGradient": {
363
+ "type": "linear",
364
+ "position": "center",
365
+ "angle": 0,
366
+ "color1": "",
367
+ "color1location": 0,
368
+ "color2": "",
369
+ "color2location": 100
370
+ },
371
+ "contentWidth": 1,
372
+ "width": "1000",
373
+ "bgColor": "",
374
+ "bgImage": "",
375
+ "bgPosition": "",
376
+ "marginTop": "",
377
+ "shadow": "",
378
+ "paddingTop": "10",
379
+ "paddingBottom": "10",
380
+ "paddingLeft": "10",
381
+ "paddingRight": "10",
382
+ "paddingSync": true,
383
+ "borderRadiusTL": "",
384
+ "borderRadiusTR": "",
385
+ "borderRadiusBL": "",
386
+ "borderRadiusBR": "",
387
+ "borderRadiusSync": true,
388
+ "borderTop": "0",
389
+ "borderBottom": "0",
390
+ "borderLeft": "0",
391
+ "borderRight": "0",
392
+ "borderSync": true,
393
+ "borderStyle": "solid"
394
+ }
395
+ }
396
+ ],
397
+ "settings":{
398
+ "bgStyle":"s",
399
+ "bgGradient":{
400
+ "type":"linear",
401
+ "position":"center",
402
+ "angle":0,
403
+ "color1":"",
404
+ "color1location":0,
405
+ "color2":"",
406
+ "color2location":100
407
+ },
408
+ "bgColor":"#FFFFFF",
409
+ "bgImage":"",
410
+ "bgDimming":0,
411
+ "bgOverlayColor":"",
412
+ "bgPosition":"cover",
413
+ "buttonColor":"#000000",
414
+ "headerColor":"#000000",
415
+ "linkColor":"#FF0000",
416
+ "linkDarkerColor":"#cc0000",
417
+ "textColor":"#272727",
418
+ "textFont":"'Helvetica Neue', Arial, sans-serif",
419
+ "textFontVariant":"400",
420
+ "headerFont":"'Helvetica Neue', Arial, sans-serif",
421
+ "headerFontVariant":"400",
422
+ "contentPosition":"1",
423
+ "customCss":"",
424
+ "headCss":"#sp-page{color:#272727} #sp-page .sp-header-tag-h1,#sp-page .sp-header-tag-h2,#sp-page .sp-header-tag-h3,#sp-page .sp-header-tag-h4,#sp-page .sp-header-tag-h5,#sp-page .sp-header-tag-h6{color:#000000}#sp-page h1,#sp-page h2,#sp-page h3,#sp-page h4,#sp-page h5,#sp-page h6{color:#000000; font-family:'Helvetica Neue', Arial, sans-serif;font-weight:400;font-style:normal} #sp-page a{color:#FF0000} #sp-page a:hover{color:#cc0000}#sp-page .btn{background-color:#000000}body{background-color:#FFFFFF; background-image:;}",
425
+ "mobileCss":"",
426
+ "placeholderCss":"",
427
+ "useVideoBg":false
428
+ }
429
+ }
430
+ }
app/backwards/csp5-template.json ADDED
@@ -0,0 +1,884 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "enable_recaptcha": false,
3
+ "template_id": 71,
4
+ "cspv5_id": false,
5
+ "post_title": "cspv5",
6
+ "post_name": "cspv5",
7
+ "post_status": "draft",
8
+ "show_powered_by_link": true,
9
+ "affiliate_url": "",
10
+ "header_scripts": "",
11
+ "footer_scripts": "",
12
+ "conversion_scripts": "",
13
+ "disable_default_excluded_urls": false,
14
+ "include_exclude_type": "0",
15
+ "include_list": "",
16
+ "exclude_list": "",
17
+ "bypass_phrase": "",
18
+ "bypass_expires": "2",
19
+ "bypass_cookie": false,
20
+ "access_by_ip": "",
21
+ "access_by_role": [],
22
+ "redirect_mode": false,
23
+ "redirect_url": "",
24
+ "domain_mapping_status": false,
25
+ "domain_mapping": "",
26
+ "exclude_list_404": "",
27
+ "email_integration_id": "",
28
+ "is_new": false,
29
+ "page_type": "lp",
30
+ "document": {
31
+ "sections": [
32
+ {
33
+ "id": "m7rics",
34
+ "type": "section",
35
+ "rows": [
36
+ {
37
+ "id": "gjjf4e",
38
+ "type": "row",
39
+ "colType": "1-col",
40
+ "cols": [
41
+ {
42
+ "id": "o86pkf",
43
+ "type": "col",
44
+ "blocks": [
45
+ {
46
+ "id": "n952ha",
47
+ "elType": "block",
48
+ "type": "image",
49
+ "settings": {
50
+ "unit": "px",
51
+ "src": "http://am.testing.seedprod.local/wp-content/uploads/2020/07/sp-logo-brown-compressor-1.png",
52
+ "altTxt": "",
53
+ "link": "",
54
+ "width": "",
55
+ "height": "",
56
+ "marginTop": "0",
57
+ "paddingTop": "20",
58
+ "paddingBottom": "",
59
+ "paddingLeft": "",
60
+ "paddingRight": "",
61
+ "paddingSync": true,
62
+ "imagePadding": "",
63
+ "align": "center",
64
+ "shadow": "",
65
+ "imageBorderRadius": "",
66
+ "imageBorderTop": "0",
67
+ "imageBorderBottom": "0",
68
+ "imageBorderLeft": "0",
69
+ "imageBorderRight": "0",
70
+ "imageBorderSync": true,
71
+ "imageBorderStyle": "solid",
72
+ "imageBorderColor": "",
73
+ "blockTemplateId": false
74
+ }
75
+ },
76
+ {
77
+ "id": "kd1maz",
78
+ "elType": "block",
79
+ "type": "header",
80
+ "settings": {
81
+ "headerTxt": "Coming Soon",
82
+ "tag": "h1",
83
+ "textColor": "",
84
+ "bgColor": "",
85
+ "beforeIcon": "",
86
+ "afterIcon": "",
87
+ "marginTop": "0",
88
+ "paddingTop": "",
89
+ "paddingBottom": "",
90
+ "paddingLeft": "",
91
+ "paddingRight": "",
92
+ "paddingSync": true,
93
+ "borderRadius": "",
94
+ "border": "",
95
+ "borderStyle": "",
96
+ "borderSize": "",
97
+ "borderColor": "",
98
+ "shadow": "",
99
+ "textShadow": "",
100
+ "font": "",
101
+ "fontVariant": "",
102
+ "fontSize": "42",
103
+ "fontSize_mobile": "",
104
+ "lineHeight": "",
105
+ "lineHeight_mobile": "",
106
+ "letterSpacing": "",
107
+ "letterSpacing_mobile": "",
108
+ "typographyBold": "",
109
+ "typographyItalic": "",
110
+ "typographyUnderline": "",
111
+ "align": "center",
112
+ "typographyLetterCase": ""
113
+ }
114
+ },
115
+ {
116
+ "id": "dlj26b",
117
+ "elType": "block",
118
+ "type": "spacer",
119
+ "settings": {
120
+ "height": 12
121
+ }
122
+ },
123
+ {
124
+ "id": "l6pn7u",
125
+ "elType": "block",
126
+ "type": "text",
127
+ "settings": {
128
+ "txt": "<p>Something really cool is coming!</p>",
129
+ "textColor": "",
130
+ "bgColor": "",
131
+ "beforeIcon": "",
132
+ "afterIcon": "",
133
+ "marginTop": "0",
134
+ "paddingTop": "",
135
+ "paddingBottom": "",
136
+ "paddingLeft": "",
137
+ "paddingRight": "",
138
+ "paddingSync": true,
139
+ "borderRadius": "",
140
+ "border": "",
141
+ "borderStyle": "",
142
+ "borderSize": "",
143
+ "borderColor": "",
144
+ "shadow": "",
145
+ "textShadow": "",
146
+ "font": "",
147
+ "fontVariant": "",
148
+ "fontSize": "",
149
+ "fontSize_mobile": "",
150
+ "lineHeight": "",
151
+ "lineHeight_mobile": "",
152
+ "letterSpacing": "",
153
+ "letterSpacing_mobile": "",
154
+ "typographyBold": "",
155
+ "typographyItalic": "",
156
+ "typographyUnderline": "",
157
+ "align": "center",
158
+ "typographyLetterCase": ""
159
+ }
160
+ }
161
+ ],
162
+ "settings": {
163
+ "bgStyle": "s",
164
+ "bgGradient": {
165
+ "type": "linear",
166
+ "position": "center",
167
+ "angle": 0,
168
+ "color1": "",
169
+ "color1location": 0,
170
+ "color2": "",
171
+ "color2location": 100
172
+ },
173
+ "colWidth": "",
174
+ "bgColor": "",
175
+ "bgImage": "",
176
+ "bgPosition": "",
177
+ "marginTop": "",
178
+ "shadow": "",
179
+ "paddingTop": "",
180
+ "paddingBottom": "",
181
+ "paddingLeft": "",
182
+ "paddingRight": "",
183
+ "paddingSync": true,
184
+ "borderRadius": "",
185
+ "borderTop": "0",
186
+ "borderBottom": "0",
187
+ "borderLeft": "0",
188
+ "borderRight": "0",
189
+ "borderSync": true,
190
+ "borderStyle": "solid"
191
+ }
192
+ }
193
+ ],
194
+ "settings": {
195
+ "bgStyle": "s",
196
+ "bgGradient": {
197
+ "type": "linear",
198
+ "position": "center",
199
+ "angle": 0,
200
+ "color1": "",
201
+ "color1location": 0,
202
+ "color2": "",
203
+ "color2location": 100
204
+ },
205
+ "colGutter": 0,
206
+ "width": "1000",
207
+ "bgColor": "",
208
+ "bgImage": "",
209
+ "bgPosition": "",
210
+ "marginTop": "",
211
+ "shadow": "",
212
+ "paddingTop": "0",
213
+ "paddingBottom": "0",
214
+ "paddingLeft": "0",
215
+ "paddingRight": "0",
216
+ "paddingSync": true,
217
+ "borderRadiusTL": "",
218
+ "borderRadiusTR": "",
219
+ "borderRadiusBL": "",
220
+ "borderRadiusBR": "",
221
+ "borderRadiusSync": true,
222
+ "borderTop": "0",
223
+ "borderBottom": "0",
224
+ "borderLeft": "0",
225
+ "borderRight": "0",
226
+ "borderSync": true,
227
+ "borderStyle": "solid"
228
+ }
229
+ },
230
+ {
231
+ "id": "mk4eeu",
232
+ "type": "row",
233
+ "colType": "1-col",
234
+ "cols": [
235
+ {
236
+ "id": "haa96x",
237
+ "type": "col",
238
+ "blocks": [
239
+ {
240
+ "id": "wexx4b",
241
+ "elType": "block",
242
+ "type": "optin-form",
243
+ "settings": {
244
+ "align": "left",
245
+ "items": [
246
+ {
247
+ "type": "email",
248
+ "label": "Enter Your Email",
249
+ "txt": "Email",
250
+ "width": 70,
251
+ "required": true,
252
+ "display": true
253
+ },
254
+ {
255
+ "type": "name",
256
+ "label": "Enter Your Name",
257
+ "txt": "Name",
258
+ "width": "100",
259
+ "required": false,
260
+ "display": false
261
+ },
262
+ {
263
+ "type": "optin_confirm",
264
+ "label": "Optin Confirmation",
265
+ "txt": "Optin Confirmation",
266
+ "width": "100",
267
+ "required": true,
268
+ "display": false
269
+ }
270
+ ],
271
+ "action": "1",
272
+ "redirectUrl": "",
273
+ "thankyouTxt": "Thank You, we'll be in touch soon.",
274
+ "btnSize": "3",
275
+ "inputSize": 16,
276
+ "bgColor": "",
277
+ "btnWidth": 30,
278
+ "btnTxt": "Notify Me",
279
+ "btnSubTxt": "",
280
+ "btnPaddingTop": 11,
281
+ "btnPaddingLeft": 16,
282
+ "inputPadding": 8,
283
+ "fieldBGColor": "#F5F5F5",
284
+ "fieldTextColor": "#444444",
285
+ "fieldBorderColor": "#dddddd",
286
+ "fieldborderTop": "1",
287
+ "fieldborderBottom": "1",
288
+ "fieldborderLeft": "1",
289
+ "fieldborderRight": "1",
290
+ "fieldborderSync": true,
291
+ "beforeIcon": "",
292
+ "afterIcon": "",
293
+ "shadow": "",
294
+ "borderRadius": 4,
295
+ "font": "",
296
+ "fontVariant": "",
297
+ "fontSize": 18,
298
+ "fontSize_mobile": "",
299
+ "lineHeight": "",
300
+ "lineHeight_mobile": "",
301
+ "letterSpacing": "",
302
+ "letterSpacing_mobile": "",
303
+ "typographyBold": "",
304
+ "typographyItalic": "",
305
+ "typographyUnderline": "",
306
+ "typographyLetterCase": "",
307
+ "marginTop": "0",
308
+ "paddingTop": "10",
309
+ "paddingBottom": "0",
310
+ "paddingLeft": "10",
311
+ "paddingRight": "10",
312
+ "paddingSync": false,
313
+ "gap": false,
314
+ "blockTemplateId": false,
315
+ "btnStyle": ""
316
+ }
317
+ },
318
+ {
319
+ "id": "chgk0d",
320
+ "elType": "block",
321
+ "type": "text",
322
+ "settings": {
323
+ "txt": "<p>Privacy Policy</p>",
324
+ "textColor": "",
325
+ "bgColor": "",
326
+ "beforeIcon": "",
327
+ "afterIcon": "",
328
+ "marginTop": "0",
329
+ "paddingTop": "0",
330
+ "paddingBottom": "",
331
+ "paddingLeft": "",
332
+ "paddingRight": "",
333
+ "paddingSync": false,
334
+ "borderRadius": "",
335
+ "border": "",
336
+ "borderStyle": "",
337
+ "borderSize": "",
338
+ "borderColor": "",
339
+ "shadow": "",
340
+ "textShadow": "",
341
+ "font": "",
342
+ "fontVariant": "",
343
+ "fontSize": 12,
344
+ "fontSize_mobile": "",
345
+ "lineHeight": "",
346
+ "lineHeight_mobile": "",
347
+ "letterSpacing": "",
348
+ "letterSpacing_mobile": "",
349
+ "typographyBold": "",
350
+ "typographyItalic": "",
351
+ "typographyUnderline": "",
352
+ "align": "center",
353
+ "typographyLetterCase": ""
354
+ }
355
+ },
356
+ {
357
+ "id": "sjyyp8",
358
+ "elType": "block",
359
+ "type": "spacer",
360
+ "settings": {
361
+ "height": 32
362
+ }
363
+ },
364
+ {
365
+ "id": "p2i5rp",
366
+ "elType": "block",
367
+ "type": "countdown",
368
+ "settings": {
369
+ "countdownType": "",
370
+ "vtHours": "0",
371
+ "vtMinutes": "30",
372
+ "vtSeconds": "0",
373
+ "action": 1,
374
+ "thankyouTxt": "",
375
+ "redirectUrl": "",
376
+ "size": "md",
377
+ "timezone": "America/New_York",
378
+ "endDate": "2020-08-31",
379
+ "endTime": "",
380
+ "endTimestamp": 1598846400,
381
+ "bgColor": "",
382
+ "labelColor": "",
383
+ "dayTxt": "Days",
384
+ "hourTxt": "Hours",
385
+ "minuteTxt": "Minutes",
386
+ "secondTxt": "Seconds",
387
+ "spaceBetween": "20",
388
+ "marginTop": "0",
389
+ "paddingTop": "",
390
+ "paddingBottom": "",
391
+ "paddingLeft": "",
392
+ "paddingRight": "",
393
+ "paddingSync": true,
394
+ "borderRadius": 4,
395
+ "border": "",
396
+ "borderStyle": "",
397
+ "borderSize": "",
398
+ "borderColor": "",
399
+ "shadow": "",
400
+ "font": "",
401
+ "fontVariant": "",
402
+ "fontSize": 13,
403
+ "fontSize_mobile": "",
404
+ "lineHeight": "",
405
+ "lineHeight_mobile": "",
406
+ "letterSpacing": "",
407
+ "letterSpacing_mobile": "",
408
+ "typographyBold": "",
409
+ "typographyItalic": "",
410
+ "typographyUnderline": "",
411
+ "align": "center",
412
+ "typographyLetterCase": "uppercase",
413
+ "blockTemplateId": 1
414
+ }
415
+ },
416
+ {
417
+ "id": "mgz70l",
418
+ "elType": "block",
419
+ "type": "spacer",
420
+ "settings": {
421
+ "height": 12
422
+ }
423
+ },
424
+ {
425
+ "id": "tr6wre",
426
+ "elType": "block",
427
+ "type": "social-profiles",
428
+ "settings": {
429
+ "iconStyle": "1",
430
+ "iconPadding": 15,
431
+ "iconSize": 24,
432
+ "iconColor": "#000000",
433
+ "size": "md",
434
+ "items": [
435
+ {
436
+ "type": "facebook",
437
+ "label": "",
438
+ "url": ""
439
+ },
440
+ {
441
+ "type": "twitter",
442
+ "label": "",
443
+ "url": ""
444
+ },
445
+ {
446
+ "type": "instagram",
447
+ "label": "",
448
+ "url": ""
449
+ },
450
+ {
451
+ "type": "youtube",
452
+ "label": "",
453
+ "url": ""
454
+ }
455
+ ],
456
+ "spaceBetween": "10",
457
+ "marginTop": "0",
458
+ "paddingTop": "",
459
+ "paddingBottom": "",
460
+ "paddingLeft": "",
461
+ "paddingRight": "",
462
+ "paddingSync": true,
463
+ "borderRadius": "",
464
+ "border": "",
465
+ "borderStyle": "",
466
+ "borderSize": "",
467
+ "borderColor": "",
468
+ "shadow": "",
469
+ "align": "center",
470
+ "blockTemplateId": false
471
+ }
472
+ },
473
+ {
474
+ "id": "am9n27",
475
+ "elType": "block",
476
+ "type": "spacer",
477
+ "settings": {
478
+ "height": 12
479
+ }
480
+ },
481
+ {
482
+ "id": "si7lh6",
483
+ "elType": "block",
484
+ "type": "social-sharing",
485
+ "settings": {
486
+ "size": "sm",
487
+ "items": [
488
+ {
489
+ "type": "facebook",
490
+ "label": "",
491
+ "meta": "",
492
+ "url": ""
493
+ },
494
+ {
495
+ "type": "twitter",
496
+ "label": "",
497
+ "meta": "",
498
+ "url": ""
499
+ }
500
+ ],
501
+ "spaceBetween": "20",
502
+ "marginTop": "0",
503
+ "paddingTop": "",
504
+ "paddingBottom": "",
505
+ "paddingLeft": "",
506
+ "paddingRight": "",
507
+ "paddingSync": true,
508
+ "borderRadius": "",
509
+ "border": "",
510
+ "borderStyle": "",
511
+ "borderSize": "",
512
+ "borderColor": "",
513
+ "shadow": "",
514
+ "align": "center"
515
+ }
516
+ },
517
+ {
518
+ "id": "mgz70k",
519
+ "elType": "block",
520
+ "type": "spacer",
521
+ "settings": {
522
+ "height": 12
523
+ }
524
+ },
525
+ {
526
+ "id": "pb4yks",
527
+ "elType": "block",
528
+ "type": "progress-bar",
529
+ "settings": {
530
+ "txt": "My Text",
531
+ "textShadow": "",
532
+ "shadow": "",
533
+ "width": "60",
534
+ "color": "",
535
+ "outerColor": "#F7F7F7",
536
+ "borderRadius": "3",
537
+ "font": "",
538
+ "fontVariant": "",
539
+ "fontSize": "",
540
+ "fontSize_mobile": "",
541
+ "lineHeight": "",
542
+ "lineHeight_mobile": "",
543
+ "letterSpacing": "",
544
+ "letterSpacing_mobile": "",
545
+ "typographyBold": "",
546
+ "typographyItalic": "",
547
+ "typographyUnderline": "",
548
+ "align": "center",
549
+ "typographyLetterCase": "",
550
+ "marginTop": "0",
551
+ "paddingTop": "",
552
+ "paddingBottom": "",
553
+ "paddingLeft": "",
554
+ "paddingRight": "",
555
+ "paddingSync": true,
556
+ "blockTemplateId": false
557
+ }
558
+ },
559
+ {
560
+ "id": "l6pn7i",
561
+ "elType": "block",
562
+ "type": "text",
563
+ "settings": {
564
+ "txt": "",
565
+ "textColor": "",
566
+ "bgColor": "",
567
+ "beforeIcon": "",
568
+ "afterIcon": "",
569
+ "marginTop": "0",
570
+ "paddingTop": "",
571
+ "paddingBottom": "",
572
+ "paddingLeft": "",
573
+ "paddingRight": "",
574
+ "paddingSync": true,
575
+ "borderRadius": "",
576
+ "border": "",
577
+ "borderStyle": "",
578
+ "borderSize": "",
579
+ "borderColor": "",
580
+ "shadow": "",
581
+ "textShadow": "",
582
+ "font": "",
583
+ "fontVariant": "",
584
+ "fontSize": "",
585
+ "fontSize_mobile": "",
586
+ "lineHeight": "",
587
+ "lineHeight_mobile": "",
588
+ "letterSpacing": "",
589
+ "letterSpacing_mobile": "",
590
+ "typographyBold": "",
591
+ "typographyItalic": "",
592
+ "typographyUnderline": "",
593
+ "align": "center",
594
+ "typographyLetterCase": ""
595
+ }
596
+ },
597
+ {
598
+ "id": "xzhp18",
599
+ "elType": "block",
600
+ "type": "custom-html",
601
+ "settings": {
602
+ "code": "",
603
+ "marginTop": "0",
604
+ "paddingTop": "",
605
+ "paddingBottom": "",
606
+ "paddingLeft": "",
607
+ "paddingRight": "",
608
+ "paddingSync": true
609
+ }
610
+ }
611
+ ],
612
+ "settings": {
613
+ "bgStyle": "s",
614
+ "bgGradient": {
615
+ "type": "linear",
616
+ "position": "center",
617
+ "angle": 0,
618
+ "color1": "",
619
+ "color1location": 0,
620
+ "color2": "",
621
+ "color2location": 100
622
+ },
623
+ "colWidth": "",
624
+ "bgColor": "",
625
+ "bgImage": "",
626
+ "bgPosition": "",
627
+ "marginTop": "",
628
+ "shadow": "",
629
+ "paddingTop": "",
630
+ "paddingBottom": "",
631
+ "paddingLeft": "",
632
+ "paddingRight": "",
633
+ "paddingSync": true,
634
+ "borderRadius": "",
635
+ "borderTop": "0",
636
+ "borderBottom": "0",
637
+ "borderLeft": "0",
638
+ "borderRight": "0",
639
+ "borderSync": true,
640
+ "borderStyle": "solid"
641
+ }
642
+ }
643
+ ],
644
+ "settings": {
645
+ "bgStyle": "s",
646
+ "bgGradient": {
647
+ "type": "linear",
648
+ "position": "center",
649
+ "angle": 0,
650
+ "color1": "",
651
+ "color1location": 0,
652
+ "color2": "",
653
+ "color2location": 100
654
+ },
655
+ "colGutter": 0,
656
+ "width": 500,
657
+ "bgColor": "",
658
+ "bgImage": "",
659
+ "bgPosition": "",
660
+ "marginTop": "",
661
+ "shadow": "",
662
+ "paddingTop": "0",
663
+ "paddingBottom": "0",
664
+ "paddingLeft": "0",
665
+ "paddingRight": "0",
666
+ "paddingSync": true,
667
+ "borderRadiusTL": "",
668
+ "borderRadiusTR": "",
669
+ "borderRadiusBL": "",
670
+ "borderRadiusBR": "",
671
+ "borderRadiusSync": true,
672
+ "borderTop": "0",
673
+ "borderBottom": "0",
674
+ "borderLeft": "0",
675
+ "borderRight": "0",
676
+ "borderSync": true,
677
+ "borderStyle": "solid"
678
+ }
679
+ }
680
+ ],
681
+ "settings": {
682
+ "bgStyle": "s",
683
+ "bgGradient": {
684
+ "type": "linear",
685
+ "position": "center",
686
+ "angle": 0,
687
+ "color1": "",
688
+ "color1location": 0,
689
+ "color2": "",
690
+ "color2location": 100
691
+ },
692
+ "contentWidth": "2",
693
+ "width": 660,
694
+ "bgColor": "",
695
+ "bgImage": "",
696
+ "bgPosition": "",
697
+ "marginTop": "20",
698
+ "shadow": "",
699
+ "paddingTop": "10",
700
+ "paddingBottom": "10",
701
+ "paddingLeft": "10",
702
+ "paddingRight": "10",
703
+ "paddingSync": true,
704
+ "borderRadius": "",
705
+ "borderTop": "0",
706
+ "borderBottom": "0",
707
+ "borderLeft": "0",
708
+ "borderRight": "0",
709
+ "borderSync": true,
710
+ "borderStyle": "solid",
711
+ "borderRadiusTL": "",
712
+ "borderRadiusTR": "",
713
+ "borderRadiusBL": "",
714
+ "borderRadiusBR": "",
715
+ "borderRadiusSync": true
716
+ }
717
+ },
718
+ {
719
+ "id": "nlx4vk",
720
+ "type": "section",
721
+ "rows": [
722
+ {
723
+ "id": "eh9zvk",
724
+ "type": "row",
725
+ "colType": "1-col",
726
+ "cols": [
727
+ {
728
+ "id": "rk78p0",
729
+ "type": "col",
730
+ "blocks": [
731
+ {
732
+ "id": "ih3xlk",
733
+ "elType": "block",
734
+ "type": "spacer",
735
+ "settings": {
736
+ "height": 10
737
+ }
738
+ }
739
+ ],
740
+ "settings": {
741
+ "bgStyle": "s",
742
+ "bgGradient": {
743
+ "type": "linear",
744
+ "position": "center",
745
+ "angle": 0,
746
+ "color1": "",
747
+ "color1location": 0,
748
+ "color2": "",
749
+ "color2location": 100
750
+ },
751
+ "colWidth": "",
752
+ "bgColor": "",
753
+ "bgImage": "",
754
+ "bgPosition": "",
755
+ "marginTop": "",
756
+ "shadow": "",
757
+ "paddingTop": "",
758
+ "paddingBottom": "",
759
+ "paddingLeft": "",
760
+ "paddingRight": "",
761
+ "paddingSync": true,
762
+ "borderRadiusTL": "",
763
+ "borderRadiusTR": "",
764
+ "borderRadiusBL": "",
765
+ "borderRadiusBR": "",
766
+ "borderRadiusSync": true,
767
+ "borderTop": "0",
768
+ "borderBottom": "0",
769
+ "borderLeft": "0",
770
+ "borderRight": "0",
771
+ "borderSync": true,
772
+ "borderStyle": "solid"
773
+ }
774
+ }
775
+ ],
776
+ "settings": {
777
+ "bgStyle": "s",
778
+ "bgGradient": {
779
+ "type": "linear",
780
+ "position": "center",
781
+ "angle": 0,
782
+ "color1": "",
783
+ "color1location": 0,
784
+ "color2": "",
785
+ "color2location": 100
786
+ },
787
+ "colGutter": 0,
788
+ "width": "1000",
789
+ "bgColor": "",
790
+ "bgImage": "",
791
+ "bgPosition": "",
792
+ "marginTop": "",
793
+ "shadow": "",
794
+ "paddingTop": "0",
795
+ "paddingBottom": "0",
796
+ "paddingLeft": "0",
797
+ "paddingRight": "0",
798
+ "paddingSync": true,
799
+ "borderRadiusTL": "",
800
+ "borderRadiusTR": "",
801
+ "borderRadiusBL": "",
802
+ "borderRadiusBR": "",
803
+ "borderRadiusSync": true,
804
+ "borderTop": "0",
805
+ "borderBottom": "0",
806
+ "borderLeft": "0",
807
+ "borderRight": "0",
808
+ "borderSync": true,
809
+ "borderStyle": "solid"
810
+ }
811
+ }
812
+ ],
813
+ "settings": {
814
+ "bgStyle": "s",
815
+ "bgGradient": {
816
+ "type": "linear",
817
+ "position": "center",
818
+ "angle": 0,
819
+ "color1": "",
820
+ "color1location": 0,
821
+ "color2": "",
822
+ "color2location": 100
823
+ },
824
+ "contentWidth": 1,
825
+ "width": "1000",
826
+ "bgColor": "",
827
+ "bgImage": "",
828
+ "bgPosition": "",
829
+ "marginTop": "",
830
+ "shadow": "",
831
+ "paddingTop": "10",
832
+ "paddingBottom": "10",
833
+ "paddingLeft": "10",
834
+ "paddingRight": "10",
835
+ "paddingSync": true,
836
+ "borderRadiusTL": "",
837
+ "borderRadiusTR": "",
838
+ "borderRadiusBL": "",
839
+ "borderRadiusBR": "",
840
+ "borderRadiusSync": true,
841
+ "borderTop": "0",
842
+ "borderBottom": "0",
843
+ "borderLeft": "0",
844
+ "borderRight": "0",
845
+ "borderSync": true,
846
+ "borderStyle": "solid"
847
+ }
848
+ }
849
+ ],
850
+ "settings": {
851
+ "bgStyle": "s",
852
+ "bgGradient": {
853
+ "type": "linear",
854
+ "position": "center",
855
+ "angle": 0,
856
+ "color1": "",
857
+ "color1location": 0,
858
+ "color2": "",
859
+ "color2location": 100
860
+ },
861
+ "bgColor": "#FFFFFF",
862
+ "bgImage": "",
863
+ "bgDimming": "",
864
+ "bgOverlayColor": "",
865
+ "bgPosition": "cover",
866
+ "buttonColor": "#000000",
867
+ "headerColor": "#000000",
868
+ "linkColor": "#0078FF",
869
+ "linkDarkerColor": "#0060cc",
870
+ "textColor": "#000000",
871
+ "textFont": "Open Sans",
872
+ "textFontVariant": "400",
873
+ "headerFont": "Open Sans",
874
+ "headerFontVariant": "700",
875
+ "contentPosition": "4",
876
+ "customCss": "",
877
+ "headCss": "#sp-page{color:#000000} #sp-page .sp-header-tag-h1,#sp-page .sp-header-tag-h2,#sp-page .sp-header-tag-h3,#sp-page .sp-header-tag-h4,#sp-page .sp-header-tag-h5,#sp-page .sp-header-tag-h6{color:#000000}#sp-page h1,#sp-page h2,#sp-page h3,#sp-page h4,#sp-page h5,#sp-page h6{color:#000000; font-family:'Open Sans';font-weight:700;font-style:normal} #sp-page a{color:#0078FF} #sp-page a:hover{color:#0060cc}#sp-page .btn{background-color:#000000}body{background-color:#FFFFFF; background-image:;}",
878
+ "mobileCss": "",
879
+ "placeholderCss": "#sp-wexx4b input::placeholder {color:rgba(68, 68, 68, 0.7) }",
880
+ "useVideoBg": false,
881
+ "useVideoBgUrl":""
882
+ }
883
+ }
884
+ }
app/backwards/email-template.json ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "integration_type": "",
3
+ "mailchimp": {
4
+ "api_key": "",
5
+ "connection_name": null,
6
+ "lists": {},
7
+ "list_id": "",
8
+ "double_optin": false
9
+ },
10
+ "drip": {
11
+ "api_token": "",
12
+ "account_id": "",
13
+ "connection_name": null,
14
+ "list_id": "",
15
+ "lists": {}
16
+ },
17
+ "campaignmonitor": {
18
+ "api_key": "",
19
+ "client_id": "",
20
+ "connection_name": null,
21
+ "list_id": "",
22
+ "lists": {}
23
+ },
24
+ "getresponse": {
25
+ "api_key": "",
26
+ "client_id": "",
27
+ "connection_name": null,
28
+ "list_id": "",
29
+ "lists": {}
30
+ },
31
+ "icontact": {
32
+ "username": "",
33
+ "password": "",
34
+ "connection_name": null,
35
+ "list_id": "",
36
+ "lists": {}
37
+ },
38
+ "madmimi": {
39
+ "api_key": "",
40
+ "username": "",
41
+ "connection_name": null,
42
+ "list_id": "",
43
+ "lists": {}
44
+ },
45
+ "sendy": {
46
+ "url": "",
47
+ "api_key": "",
48
+ "list_id": ""
49
+ },
50
+ "convertkit": {
51
+ "api_secret": "",
52
+ "api_key": "",
53
+ "connection_name": null,
54
+ "lists": {},
55
+ "list_id": ""
56
+ },
57
+ "aweber": {
58
+ "authorization_code": null,
59
+ "connection_name": null,
60
+ "list_id": null,
61
+ "lists": [],
62
+ "consumer_key": "",
63
+ "consumer_secret": "",
64
+ "access_key": "",
65
+ "access_secret": ""
66
+ },
67
+ "activecampaign": {
68
+ "api_url": "",
69
+ "api_key": "",
70
+ "connection_name": null,
71
+ "lists": {},
72
+ "list_id": ""
73
+ },
74
+ "constantcontact": [],
75
+ "recaptcha": {
76
+ "enabled": false
77
+ },
78
+ "zapier": {
79
+ "url": "",
80
+ "enabled": false
81
+ }
82
+ }
{themes → app/backwards/themes}/default/bootstrap/css/bootstrap.min.css RENAMED
File without changes
{themes → app/backwards/themes}/default/bootstrap/js/bootstrap.min.js RENAMED
File without changes
{themes → app/backwards/themes}/default/images/seedprod-credit.png RENAMED
File without changes
{themes → app/backwards/themes}/default/index.php RENAMED
File without changes
{themes → app/backwards/themes}/default/rtl.css RENAMED
File without changes
{themes → app/backwards/themes}/default/style.css RENAMED
File without changes
app/bootstrap.php ADDED
@@ -0,0 +1,392 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /**
5
+ * Enqueue Styles and Scripts
6
+ */
7
+ function seedprod_lite_admin_enqueue_scripts($hook_suffix)
8
+ {
9
+ // global admin style
10
+ wp_enqueue_style(
11
+ 'seedprod-global-admin',
12
+ SEEDPROD_PLUGIN_URL . 'public/css/global-admin.css',
13
+ false,
14
+ SEEDPROD_VERSION
15
+ );
16
+
17
+ $is_localhost = seedprod_lite_is_localhost();
18
+
19
+ // Load our admin styles and scripts only on our pages
20
+ if (strpos($hook_suffix, 'seedprod_lite') !== false) {
21
+ // remove conflicting scripts
22
+ wp_dequeue_script('googlesitekit_admin');
23
+
24
+ $vue_app_folder = 'lite';
25
+ if (strpos($hook_suffix, 'seedprod_lite_builder') !== false || strpos($hook_suffix, 'seedprod_lite_template') !== false) {
26
+ if ($is_localhost) {
27
+ } else {
28
+ wp_register_script(
29
+ 'seedprod_vue_builder_app_1',
30
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/index.js',
31
+ array(),
32
+ SEEDPROD_VERSION,
33
+ true
34
+ );
35
+ wp_register_script(
36
+ 'seedprod_vue_builder_app_2',
37
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/chunk-vendors.js',
38
+ array(),
39
+ SEEDPROD_VERSION,
40
+ true
41
+ );
42
+ wp_register_script(
43
+ 'seedprod_vue_builder_app_3',
44
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/chunk-common.js',
45
+ array(),
46
+ SEEDPROD_VERSION,
47
+ true
48
+ );
49
+ wp_enqueue_script('seedprod_vue_builder_app_1');
50
+ wp_enqueue_script('seedprod_vue_builder_app_2');
51
+ wp_enqueue_script('seedprod_vue_builder_app_3');
52
+ wp_enqueue_style('seedprod_vue_builder_app_css_1', SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/css/chunk-vendors.css', false, SEEDPROD_VERSION);
53
+ }
54
+ } else {
55
+ if ($is_localhost) {
56
+ } else {
57
+ wp_register_script(
58
+ 'seedprod_vue_admin_app_1',
59
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/admin.js',
60
+ array(),
61
+ SEEDPROD_VERSION,
62
+ true
63
+ );
64
+ wp_register_script(
65
+ 'seedprod_vue_admin_app_2',
66
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/chunk-vendors.js',
67
+ array(),
68
+ SEEDPROD_VERSION,
69
+ true
70
+ );
71
+ wp_register_script(
72
+ 'seedprod_vue_admin_app_3',
73
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/js/chunk-common.js',
74
+ array(),
75
+ SEEDPROD_VERSION,
76
+ true
77
+ );
78
+ wp_enqueue_script('seedprod_vue_admin_app_1');
79
+ wp_enqueue_script('seedprod_vue_admin_app_2');
80
+ wp_enqueue_script('seedprod_vue_admin_app_3');
81
+ wp_enqueue_style(
82
+ 'seedprod_vue_admin_app_css_1',
83
+ SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/css/chunk-vendors.css',
84
+ false,
85
+ SEEDPROD_VERSION
86
+ );
87
+ // wp_enqueue_style(
88
+ // 'seedprod_vue_admin_app_css_2',
89
+ // SEEDPROD_PLUGIN_URL . 'public/'.$vue_app_folder.'/vue-backend/css/admin.css',
90
+ // false,
91
+ // SEEDPROD_VERSION
92
+ // );
93
+ }
94
+ }
95
+
96
+ if (strpos($hook_suffix, 'seedprod_lite_builder') !== false) {
97
+ wp_enqueue_style(
98
+ 'seedprod-css',
99
+ SEEDPROD_PLUGIN_URL . 'public/css/admin-style.min.css',
100
+ false,
101
+ SEEDPROD_VERSION
102
+ );
103
+ wp_enqueue_style(
104
+ 'seedprod-builder-css',
105
+ SEEDPROD_PLUGIN_URL . 'public/css/tailwind-builder.min.css',
106
+ false,
107
+ SEEDPROD_VERSION
108
+ );
109
+
110
+ // Load WPForms CSS assets.
111
+ if (function_exists('wpforms')) {
112
+ add_filter( 'wpforms_global_assets', '__return_true' );
113
+ wpforms()->frontend->assets_css();
114
+ }
115
+ }
116
+
117
+ if (strpos($hook_suffix, 'seedprod_lite_template') !== false) {
118
+ wp_enqueue_style(
119
+ 'seedprod-css',
120
+ SEEDPROD_PLUGIN_URL . 'public/css/admin-style.min.css',
121
+ false,
122
+ SEEDPROD_VERSION
123
+ );
124
+ wp_enqueue_style(
125
+ 'seedprod-builder-css',
126
+ SEEDPROD_PLUGIN_URL . 'public/css/tailwind-builder.min.css',
127
+ false,
128
+ SEEDPROD_VERSION
129
+ );
130
+ }
131
+
132
+
133
+ if (strpos($hook_suffix, 'seedprod_lite_builder') === false) {
134
+ wp_enqueue_style(
135
+ 'seedprod-css',
136
+ SEEDPROD_PLUGIN_URL . 'public/css/tailwind-admin.min.css',
137
+ false,
138
+ SEEDPROD_VERSION
139
+ );
140
+ }
141
+
142
+ wp_enqueue_style('seedprod-google-fonts', 'https://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,700italic,400,600,700&display=swap', false);
143
+
144
+ wp_enqueue_style(
145
+ 'seedprod-fontawesome',
146
+ SEEDPROD_PLUGIN_URL . 'public/fontawesome/css/all.min.css',
147
+ false,
148
+ SEEDPROD_VERSION
149
+ );
150
+
151
+ wp_register_script(
152
+ 'seedprod-iframeresizer',
153
+ SEEDPROD_PLUGIN_URL . 'public/js/iframeResizer.min.js',
154
+ array(),
155
+ SEEDPROD_VERSION,
156
+ false
157
+ );
158
+ wp_enqueue_script('seedprod-iframeresizer');
159
+
160
+ wp_enqueue_media();
161
+ wp_enqueue_script('wp-tinymce');
162
+ wp_enqueue_editor();
163
+ }
164
+ }
165
+ add_action('admin_enqueue_scripts', 'seedprod_lite_admin_enqueue_scripts');
166
+
167
+
168
+
169
+ function seedprod_lite_wp_enqueue_styles()
170
+ {
171
+ // wp_register_style(
172
+ // 'seedprod-style',
173
+ // SEEDPROD_PLUGIN_URL . 'public/css/seedprod-style.min.css',
174
+ // false,
175
+ // SEEDPROD_VERSION
176
+ // );
177
+ //wp_enqueue_style('seedprod-style');
178
+
179
+ $is_user_logged_in = is_user_logged_in();
180
+ if ($is_user_logged_in) {
181
+ wp_enqueue_style(
182
+ 'seedprod-global-admin',
183
+ SEEDPROD_PLUGIN_URL . 'public/css/global-admin.css',
184
+ false,
185
+ SEEDPROD_VERSION
186
+ );
187
+ }
188
+
189
+ wp_register_style(
190
+ 'seedprod-fontawesome',
191
+ SEEDPROD_PLUGIN_URL . 'public/fontawesome/css/all.min.css',
192
+ false,
193
+ SEEDPROD_VERSION
194
+ );
195
+
196
+ //wp_enqueue_style('seedprod-fontawesome');
197
+ }
198
+ add_action('init', 'seedprod_lite_wp_enqueue_styles');
199
+
200
+
201
+ /**
202
+ * Display settings link on plugin page
203
+ */
204
+ add_filter('plugin_action_links', 'seedprod_lite_plugin_action_links', 10, 2);
205
+
206
+ function seedprod_lite_plugin_action_links($links, $file)
207
+ {
208
+ $plugin_file = SEEDPROD_SLUG;
209
+
210
+ if ($file == $plugin_file) {
211
+ $settings_link = '<a href="admin.php?page=seedprod_lite">Setup</a>';
212
+ array_unshift($links, $settings_link);
213
+ }
214
+ return $links;
215
+ }
216
+
217
+ /**
218
+ * Remove other plugin's style from our page so they don't conflict
219
+ */
220
+
221
+ add_action('admin_enqueue_scripts', 'seedprod_lite_deregister_backend_styles', PHP_INT_MAX);
222
+
223
+ function seedprod_lite_deregister_backend_styles()
224
+ {
225
+ // remove scripts registered by the theme so they don't screw up our page's style
226
+ if (isset($_GET['page']) && strpos($_GET['page'], 'seedprod_lite_builder') !== false) {
227
+ wp_dequeue_style( 'dashicons',9999 );
228
+
229
+ if (empty($_GET['sp-debug'])) {
230
+ global $wp_styles;
231
+ // list of styles to keep else remove
232
+ $keep_styles = "media-views|editor-buttons|imgareaselect|buttons|wp-auth-check|wpforms-full";
233
+ $s = explode("|", $keep_styles);
234
+
235
+ $wpforms_url = plugins_url('wpforms');
236
+
237
+ foreach ($wp_styles->queue as $handle) {
238
+ //echo '<br> '.$handle;
239
+ if (!in_array($handle, $s)) {
240
+ if (strpos($handle, 'seedprod') === false) {
241
+ wp_dequeue_style($handle);
242
+ wp_deregister_style($handle);
243
+ //echo '<br>removed '.$handle;
244
+ }
245
+ }
246
+ }
247
+
248
+ // foreach ($wp_styles->registered as $handle => $asset) {
249
+ // //echo '<br> '.$handle;
250
+ // if (!in_array($handle, $s)) {
251
+ // if (strpos($handle, 'seedprod') === false && strpos($asset->src, $wpforms_url) === false) {
252
+ // wp_dequeue_style($handle);
253
+ // wp_deregister_style($handle);
254
+ // echo '<br>removed '.$handle;
255
+ // }
256
+ // }
257
+ // }
258
+
259
+
260
+
261
+
262
+
263
+ // remove scripts
264
+
265
+ $s = 'admin-bar|common|utils|wp-auth-check|media-upload|jquery|media-editor|media-audiovideo|mce-view|image-edit|wp-tinymce|editor|quicktags|wplink|jquery-ui-autocomplete|thickbox|svg-painter|jquery-ui-core|jquery-ui-mouse|jquery-ui-accordion|jquery-ui-datepicker|jquery-ui-dialog|jquery-ui-slider|jquery-ui-sortable|jquery-ui-droppable|jquery-ui-tabs|jquery-ui-widget';
266
+ $d = explode("|", urldecode($s));
267
+
268
+ global $wp_scripts;
269
+ foreach ($wp_scripts->queue as $handle) :
270
+ //echo '<br>removed '.$handle;
271
+
272
+ if (!empty($d)) {
273
+ if (!in_array($handle, $d)) {
274
+ if (strpos($handle, 'seedprod') === false) {
275
+ wp_dequeue_script($handle);
276
+ wp_deregister_script($handle);
277
+ //echo '<br>removed '.$handle;
278
+ }
279
+ }
280
+ }
281
+ endforeach;
282
+ }
283
+ }
284
+ }
285
+
286
+
287
+ add_filter('admin_body_class', 'seedprod_lite_add_admin_body_classes');
288
+ function seedprod_lite_add_admin_body_classes($classes)
289
+ {
290
+ if (!empty($_GET['page']) && strpos($_GET['page'], 'seedprod_lite') !== false) {
291
+ $classes .= ' seedprod-body seedprod-lite';
292
+ }
293
+ if (!empty($_GET['page']) && (strpos($_GET['page'], 'seedprod_lite_builder') !== false)) {
294
+ $classes .= ' seedprod-builder seedprod-lite';
295
+ }
296
+ return $classes;
297
+ }
298
+
299
+
300
+ // Review Request
301
+ add_action('admin_footer_text', 'seedprod_lite_admin_footer');
302
+
303
+ function seedprod_lite_admin_footer($text)
304
+ {
305
+ global $current_screen;
306
+
307
+ if (!empty($current_screen->id) && strpos($current_screen->id, 'seedprod') !== false && SEEDPROD_BUILD == 'lite') {
308
+ $url = 'https://wordpress.org/support/plugin/coming-soon/reviews/?filter=5#new-post';
309
+ $text = sprintf(__('Please rate <strong>SeedProd</strong> <a href="%s" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from the SeedProd team!', 'coming-soon'), $url, $url);
310
+ }
311
+ return $text;
312
+ }
313
+
314
+
315
+
316
+ // Add or Upgrade DB
317
+ add_action('admin_init', 'seedprod_lite_upgrade', 0);
318
+
319
+ /**
320
+ * Upgrade setting pages. This allows you to run an upgrade script when the version changes.
321
+ *
322
+ */
323
+ function seedprod_lite_upgrade()
324
+ {
325
+
326
+ // try to update license key
327
+ $old_key = get_option('seed_cspv5_license_key');
328
+ $new_key = get_option('seedprod_api_key');
329
+ if(!empty($old_key) && empty($new_key)){
330
+ update_option('seedprod_api_key',$old_key);
331
+ $r = seedprod_lite_save_api_key($old_key);
332
+ }
333
+
334
+ // get current version
335
+ $seedprod_current_version = get_option('seedprod_version');
336
+ $upgrade_complete = false;
337
+ if (empty($seedprod_current_version)) {
338
+ $seedprod_current_version = 0;
339
+ }
340
+
341
+ //if ($seedprod_current_version === 0) {
342
+ if (version_compare($seedprod_current_version, SEEDPROD_VERSION) === -1 || !empty($_GET['seedprod_force_db_setup'])) {
343
+ // Upgrade db if new version
344
+ seedprod_lite_database_setup();
345
+ $upgrade_complete = true;
346
+ }
347
+
348
+ if ($upgrade_complete) {
349
+ update_option('seedprod_version', SEEDPROD_VERSION);
350
+ }
351
+ //}
352
+ }
353
+
354
+ /**
355
+ * Create Database to Store Emails
356
+ */
357
+ function seedprod_lite_database_setup()
358
+ {
359
+ global $wpdb;
360
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
361
+
362
+ $sql = "CREATE TABLE `$tablename` (
363
+ id int(11) unsigned NOT NULL AUTO_INCREMENT,
364
+ page_id int(11) NOT NULL,
365
+ page_uuid varchar(255) DEFAULT NULL,
366
+ email varchar(255) DEFAULT NULL,
367
+ fname varchar(255) DEFAULT NULL,
368
+ lname varchar(255) DEFAULT NULL,
369
+ ref_url varchar(255) DEFAULT NULL,
370
+ clicks int(11) NOT NULL DEFAULT '0',
371
+ conversions int(11) NOT NULL DEFAULT '0',
372
+ referrer int(11) NOT NULL DEFAULT '0',
373
+ confirmed int(11) NOT NULL DEFAULT '0',
374
+ optin_confirm int(11) NOT NULL DEFAULT '0',
375
+ ip varchar(255) DEFAULT NULL,
376
+ meta text DEFAULT NULL,
377
+ created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
378
+ PRIMARY KEY (id),
379
+ KEY csp3_subscribers_page_uuid_idx (page_uuid)
380
+ );";
381
+
382
+ require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
383
+
384
+ $test = dbDelta($sql);
385
+ }
386
+
387
+ function seedprod_lite_change_footer_version($str) {
388
+ if (!empty($_GET['page']) && strpos($_GET['page'], 'seedprod_lite') !== false) {
389
+ return $str.' - SeedProd '.SEEDPROD_VERSION;
390
+ }
391
+ }
392
+ add_filter( 'update_footer', 'seedprod_lite_change_footer_version', 9999 );
app/cpt.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Register Custom Post Type
4
+ function seedprod_lite_post_type() {
5
+
6
+ $args = array(
7
+ 'supports' => array( 'title', 'editor', 'revisions' ),
8
+ 'public' => false,
9
+ 'capability_type' => 'page',
10
+ 'show_ui' => false,
11
+ 'publicly_queryable' => true,
12
+ );
13
+ register_post_type( 'seedprod', $args );
14
+
15
+ }
16
+ $sedprod_pt = post_type_exists('seedprod');
17
+ if($sedprod_pt === false){
18
+ add_action( 'init', 'seedprod_lite_post_type', 0 );
19
+ }
app/functions-addons.php ADDED
@@ -0,0 +1,375 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Install addon.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+ function seedprod_lite_install_addon()
8
+ {
9
+
10
+ // Run a security check.
11
+ check_ajax_referer('seedprod_lite_install_addon', 'nonce');
12
+
13
+ // Check for permissions.
14
+ if (! current_user_can('install_plugins')) {
15
+ wp_send_json_error();
16
+ }
17
+
18
+
19
+
20
+ // Install the addon.
21
+ if (isset($_POST['plugin'])) {
22
+ $download_url = $_POST['plugin'];
23
+
24
+ global $hook_suffix;
25
+
26
+ // Set the current screen to avoid undefined notices.
27
+ set_current_screen();
28
+
29
+ // Prepare variables.
30
+ $method = '';
31
+ $url = add_query_arg(
32
+ array(
33
+ 'page' => 'seedprod_lite'
34
+ ),
35
+ admin_url('admin.php')
36
+ );
37
+ $url = esc_url($url);
38
+
39
+ // Start output bufferring to catch the filesystem form if credentials are needed.
40
+ ob_start();
41
+ if (false === ($creds = request_filesystem_credentials($url, $method, false, false, null))) {
42
+ $form = ob_get_clean();
43
+ echo json_encode(array( 'form' => $form ));
44
+ wp_die();
45
+ }
46
+
47
+ // If we are not authenticated, make it happen now.
48
+ if (! WP_Filesystem($creds)) {
49
+ ob_start();
50
+ request_filesystem_credentials($url, $method, true, false, null);
51
+ $form = ob_get_clean();
52
+ echo json_encode(array( 'form' => $form ));
53
+ wp_die();
54
+ }
55
+
56
+ // We do not need any extra credentials if we have gotten this far, so let's install the plugin.
57
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
58
+ global $wp_version;
59
+ if (version_compare($wp_version,'5.3.0') >= 0) {
60
+ require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin53.php';
61
+ }else{
62
+ require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin.php';
63
+ }
64
+
65
+
66
+ // Create the plugin upgrader with our custom skin.
67
+ $installer = new Plugin_Upgrader($skin = new SeedProd_Skin());
68
+ $installer->install($download_url);
69
+
70
+ // Flush the cache and return the newly installed plugin basename.
71
+ wp_cache_flush();
72
+ if ($installer->plugin_info()) {
73
+ $plugin_basename = $installer->plugin_info();
74
+ echo json_encode(array( 'plugin' => $plugin_basename ));
75
+ wp_die();
76
+ }
77
+ }
78
+
79
+ // Send back a response.
80
+ echo json_encode(true);
81
+ wp_die();
82
+ }
83
+
84
+
85
+ /**
86
+ * Deactivate addon.
87
+ *
88
+ * @since 1.0.0
89
+ */
90
+ function seedprod_lite_deactivate_addon()
91
+ {
92
+
93
+ // Run a security check.
94
+ check_ajax_referer('seedprod_lite_deactivate_addon', 'nonce');
95
+
96
+ // Check for permissions.
97
+ if (! current_user_can('activate_plugins')) {
98
+ wp_send_json_error();
99
+ }
100
+
101
+ $type = 'addon';
102
+ if (! empty($_POST['type'])) {
103
+ $type = sanitize_key($_POST['type']);
104
+ }
105
+
106
+ if (isset($_POST['plugin'])) {
107
+ deactivate_plugins($_POST['plugin']);
108
+
109
+ if ('plugin' === $type) {
110
+ wp_send_json_success(esc_html__('Plugin deactivated.', 'coming-soon'));
111
+ } else {
112
+ wp_send_json_success(esc_html__('Addon deactivated.', 'coming-soon'));
113
+ }
114
+ }
115
+
116
+ wp_send_json_error(esc_html__('Could not deactivate the addon. Please deactivate from the Plugins page.', 'coming-soon'));
117
+ }
118
+
119
+
120
+ /**
121
+ * Activate addon.
122
+ *
123
+ * @since 1.0.0
124
+ */
125
+ function seedprod_lite_activate_addon()
126
+ {
127
+
128
+ // Run a security check.
129
+ check_ajax_referer('seedprod_lite_activate_addon', 'nonce');
130
+
131
+ // Check for permissions.
132
+ if (! current_user_can('activate_plugins')) {
133
+ wp_send_json_error();
134
+ }
135
+
136
+ if (isset($_POST['plugin'])) {
137
+ $type = 'addon';
138
+ if (! empty($_POST['type'])) {
139
+ $type = sanitize_key($_POST['type']);
140
+ }
141
+
142
+ $activate = activate_plugins($_POST['plugin']);
143
+
144
+ if (! is_wp_error($activate)) {
145
+ if ('plugin' === $type) {
146
+ wp_send_json_success(esc_html__('Plugin activated.', 'coming-soon'));
147
+ } else {
148
+ wp_send_json_success(esc_html__('Addon activated.', 'coming-soon'));
149
+ }
150
+ }
151
+ }
152
+
153
+ wp_send_json_error(esc_html__('Could not activate addon. Please activate from the Plugins page.', 'coming-soon'));
154
+ }
155
+
156
+ function seedprod_lite_get_plugins_list()
157
+ {
158
+ check_ajax_referer('seedprod_lite_get_plugins_list', 'nonce');
159
+
160
+ $am_plugins = array(
161
+ 'google-analytics-for-wordpress/googleanalytics.php' => 'monsterinsights' ,
162
+ 'google-analytics-premium/googleanalytics-premium.php' => 'monsterinsights-pro' ,
163
+ 'optinmonster/optin-monster-wp-api.php' => 'optinmonster',
164
+ 'wp-mail-smtp/wp_mail_smtp.php' => 'wpmailsmtp' ,
165
+ 'wp-mail-smtp-pro/wp_mail_smtp.php' => 'wpmailsmtp-pro' ,
166
+ 'wpforms-lite/wpforms.php' => 'wpforms' ,
167
+ 'wpforms/wpforms.php' => 'wpforms-pro' ,
168
+ 'rafflepress/rafflepress.php' => 'rafflepress' ,
169
+ 'rafflepress-pro/rafflepress-pro.php' => 'rafflepress-pro' ,
170
+ 'trustpulse-api/trustpulse.php' => 'trustpulse' ,
171
+ 'google-analytics-dashboard-for-wp/gadwp.php' => 'exactmetrics',
172
+ 'exactmetrics-premium/exactmetrics-premium.php' => 'exactmetrics-pro',
173
+ 'all-in-one-seo-pack/all_in_one_seo_pack.php' => 'all-in-one' ,
174
+ 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php' => 'all-in-one-pro' ,
175
+ 'seo-by-rank-math/rank-math.php' => 'rank-math',
176
+ 'wordpress-seo/wp-seo.php' => 'yoast' ,
177
+ 'autodescription/autodescription.php' => 'seo-framework' ,
178
+ );
179
+ $all_plugins = get_plugins();
180
+
181
+ $response = array();
182
+
183
+ foreach ($am_plugins as $slug => $label) {
184
+ if (array_key_exists($slug, $all_plugins)) {
185
+ if (is_plugin_active($slug)) {
186
+ $response[$label] = array('label' => __('Active', 'coming-soon'), 'status' => 1) ;
187
+ } else {
188
+ $response[$label] = array('label' => __('Inactive', 'coming-soon'), 'status' => 2);
189
+ }
190
+ } else {
191
+ $response[$label]= array('label' => __('Not Installed', 'coming-soon'), 'status' => 0);
192
+ }
193
+ }
194
+
195
+
196
+ wp_send_json($response);
197
+ }
198
+
199
+ function seedprod_lite_get_plugins_array()
200
+ {
201
+
202
+ $am_plugins = array(
203
+ 'google-analytics-for-wordpress/googleanalytics.php' => 'monsterinsights' ,
204
+ 'google-analytics-premium/googleanalytics-premium.php' => 'monsterinsights-pro' ,
205
+ 'optinmonster/optin-monster-wp-api.php' => 'optinmonster',
206
+ 'wp-mail-smtp/wp_mail_smtp.php' => 'wpmailsmtp' ,
207
+ 'wp-mail-smtp-pro/wp_mail_smtp.php' => 'wpmailsmtp-pro' ,
208
+ 'wpforms-lite/wpforms.php' => 'wpforms' ,
209
+ 'wpforms/wpforms.php' => 'wpforms-pro' ,
210
+ 'rafflepress/rafflepress.php' => 'rafflepress' ,
211
+ 'rafflepress-pro/rafflepress-pro.php' => 'rafflepress-pro' ,
212
+ 'trustpulse-api/trustpulse.php' => 'trustpulse' ,
213
+ 'google-analytics-dashboard-for-wp/gadwp.php' => 'exactmetrics',
214
+ 'exactmetrics-premium/exactmetrics-premium.php' => 'exactmetrics-pro',
215
+ 'all-in-one-seo-pack/all_in_one_seo_pack.php' => 'all-in-one' ,
216
+ 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php' => 'all-in-one-pro' ,
217
+ 'seo-by-rank-math/rank-math.php' => 'rank-math',
218
+ 'wordpress-seo/wp-seo.php' => 'yoast' ,
219
+ 'autodescription/autodescription.php' => 'seo-framework' ,
220
+ );
221
+ $all_plugins = get_plugins();
222
+
223
+ $response = array();
224
+
225
+ foreach ($am_plugins as $slug => $label) {
226
+ if (array_key_exists($slug, $all_plugins)) {
227
+ if (is_plugin_active($slug)) {
228
+ $response[$label] = array('label' => __('Active', 'coming-soon'), 'status' => 1) ;
229
+ } else {
230
+ $response[$label] = array('label' => __('Inactive', 'coming-soon'), 'status' => 2);
231
+ }
232
+ } else {
233
+ $response[$label]= array('label' => __('Not Installed', 'coming-soon'), 'status' => 0);
234
+ }
235
+ }
236
+
237
+
238
+ return $response;
239
+ }
240
+
241
+ function seedprod_lite_get_form_plugins_list()
242
+ {
243
+
244
+ $am_plugins = array(
245
+ 'wpforms/wpforms.php' => 'wpforms' ,
246
+ 'wpforms-lite/wpforms.php' => 'wpforms-lite',
247
+ );
248
+ $all_plugins = get_plugins();
249
+
250
+ $response = array();
251
+
252
+ foreach ($am_plugins as $slug => $label) {
253
+ if (array_key_exists($slug, $all_plugins)) {
254
+ if (is_plugin_active($slug)) {
255
+ $response[$label] = 1; // Active
256
+ } else {
257
+ $response[$label] = 2; // InActive
258
+ }
259
+ } else {
260
+ $response[$label]= 0; // Not installed
261
+ }
262
+ }
263
+
264
+
265
+ return $response;
266
+ }
267
+
268
+ function seedprod_lite_get_giveaway_plugins_list()
269
+ {
270
+
271
+ $am_plugins = array(
272
+ 'rafflepress-pro/rafflepress-pro.php' => 'rafflepress-pro' ,
273
+ 'rafflepress/rafflepress.php' => 'rafflepress',
274
+ );
275
+ $all_plugins = get_plugins();
276
+
277
+ $response = array();
278
+
279
+ foreach ($am_plugins as $slug => $label) {
280
+ if (array_key_exists($slug, $all_plugins)) {
281
+ if (is_plugin_active($slug)) {
282
+ $response[$label] = 1; // Active
283
+ } else {
284
+ $response[$label] = 2; // InActive
285
+ }
286
+ } else {
287
+ $response[$label]= 0; // Not installed
288
+ }
289
+ }
290
+
291
+
292
+ return $response;
293
+ }
294
+
295
+
296
+ function seedprod_lite_get_seo_plugins_list()
297
+ {
298
+
299
+ $am_plugins = array(
300
+ 'all-in-one-seo-pack/all_in_one_seo_pack.php' => 'all-in-one' ,
301
+ 'seo-by-rank-math/rank-math.php' => 'rank-math',
302
+ 'wordpress-seo/wp-seo.php' => 'yoast' ,
303
+ 'autodescription/autodescription.php' => 'seo-framework' ,
304
+ );
305
+ $all_plugins = get_plugins();
306
+
307
+ $response = array();
308
+
309
+ foreach ($am_plugins as $slug => $label) {
310
+ if (array_key_exists($slug, $all_plugins)) {
311
+ if (is_plugin_active($slug)) {
312
+ $response[$label] = 1; // Active
313
+ } else {
314
+ $response[$label] = 2; // InActive
315
+ }
316
+ } else {
317
+ $response[$label]= 0; // Not installed
318
+ }
319
+ }
320
+
321
+
322
+ return $response;
323
+ }
324
+
325
+ function seedprod_lite_get_analytics_plugins_list()
326
+ {
327
+
328
+ $am_plugins = array(
329
+ 'google-analytics-for-wordpress/googleanalytics.php' => 'monster-insights' ,
330
+ 'google-analytics-dashboard-for-wp/gadwp.php' => 'exactmetrics',
331
+ );
332
+ $all_plugins = get_plugins();
333
+
334
+ $response = array();
335
+
336
+ foreach ($am_plugins as $slug => $label) {
337
+ if (array_key_exists($slug, $all_plugins)) {
338
+ if (is_plugin_active($slug)) {
339
+ $response[$label] = 1; // Active
340
+ } else {
341
+ $response[$label] = 2; // InActive
342
+ }
343
+ } else {
344
+ $response[$label]= 0; // Not installed
345
+ }
346
+ }
347
+
348
+
349
+ return $response;
350
+ }
351
+
352
+ function seedprod_lite_get_plugins_install_url($slug)
353
+ {
354
+ $action = 'install-plugin';
355
+ $url = wp_nonce_url(
356
+ add_query_arg(
357
+ array(
358
+ 'action' => $action,
359
+ 'plugin' => $slug
360
+ ),
361
+ admin_url( 'update.php' )
362
+ ),
363
+ $action.'_'.$slug
364
+ );
365
+
366
+ return $url;
367
+
368
+ }
369
+
370
+ function seedprod_lite_get_plugins_activate_url($slug)
371
+ {
372
+ $url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . urlencode( $slug ), 'activate-plugin_' . $slug );
373
+ return $url;
374
+
375
+ }
app/functions-utils.php ADDED
@@ -0,0 +1,861 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Get IP
5
+ */
6
+ function seedprod_lite_get_ip()
7
+ {
8
+ $ip = '';
9
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) and strlen($_SERVER['HTTP_X_FORWARDED_FOR'])>6) {
10
+ $ip = strip_tags($_SERVER['HTTP_X_FORWARDED_FOR']);
11
+ } elseif (!empty($_SERVER['HTTP_CLIENT_IP']) and strlen($_SERVER['HTTP_CLIENT_IP'])>6) {
12
+ $ip = strip_tags($_SERVER['HTTP_CLIENT_IP']);
13
+ } elseif (!empty($_SERVER['REMOTE_ADDR']) and strlen($_SERVER['REMOTE_ADDR'])>6) {
14
+ $ip = strip_tags($_SERVER['REMOTE_ADDR']);
15
+ }//endif
16
+ if (!$ip) {
17
+ $ip="127.0.0.1";
18
+ }
19
+ return strip_tags($ip);
20
+ }
21
+
22
+ /**
23
+ * Update cookie length for bypass url
24
+ */
25
+ function seedprod_lite_change_wp_cookie_logout( $expirein ) {
26
+ global $seed_cspv5_bypass_expires;
27
+ if(!empty($seed_cspv5_bypass_expires)){
28
+ return $seed_cspv5_bypass_expires; // Modify the exire cookie
29
+ }else{
30
+ return $expirein;
31
+ }
32
+ }
33
+
34
+
35
+ /**
36
+ * Get roles
37
+ */
38
+ function seedprod_lite_get_roles() {
39
+ global $wp_roles;
40
+
41
+ if ( ! isset( $wp_roles ) )
42
+ $wp_roles = new WP_Roles();
43
+ $roles = $wp_roles->get_names();
44
+
45
+ if ( is_multisite() ){
46
+ $roles['superadmin'] = __('SuperAdmin','coming-soon');
47
+ }
48
+ $roles['anyoneloggedin'] = __('Anyone Logged In','coming-soon');
49
+
50
+ return $roles;
51
+ }
52
+
53
+
54
+ /**
55
+ * Get Enviroment
56
+ */
57
+ function seedprod_lite_is_localhost()
58
+ {
59
+ // $localhost = array('127.0.0.1','::1');
60
+
61
+ // $is_localhost = false;
62
+ // if (in_array($_SERVER['REMOTE_ADDR'], $localhost) || !empty($_GET['debug'])) {
63
+ // $is_localhost = true;
64
+ // }
65
+ $is_localhost = false;
66
+ if (defined('SEEDPROD_LOCAL_JS')) {
67
+ $is_localhost = true;
68
+ }
69
+
70
+ return $is_localhost;
71
+ }
72
+
73
+ // YouTube video ID
74
+ function seedprod_lite_youtube_id_from_url($url) {
75
+ $pattern =
76
+ '%^# Match any youtube URL
77
+ (?:https?://)? # Optional scheme. Either http or https
78
+ (?:www\.)? # Optional www subdomain
79
+ (?: # Group host alternatives
80
+ youtu\.be/ # Either youtu.be,
81
+ | youtube\.com # or youtube.com
82
+ (?: # Group path alternatives
83
+ /embed/ # Either /embed/
84
+ | /v/ # or /v/
85
+ | /watch\?v= # or /watch\?v=
86
+ ) # End path alternatives.
87
+ ) # End host alternatives.
88
+ ([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.
89
+ $%x'
90
+ ;
91
+ $result = preg_match($pattern, $url, $matches);
92
+ if (false !== $result) {
93
+ if(isset($matches[1]))
94
+ return $matches[1];
95
+ }
96
+ return false;
97
+ }
98
+
99
+ /**
100
+ * Entry Options
101
+ */
102
+ function seedprod_lite_block_options()
103
+ {
104
+ $block_options = array(
105
+ array('name'=>__('Column','coming-soon'),'is_pro'=> false,'cat'=>'layout','type'=>'column', 'id'=>1, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M4 5v13h17V5H4zm10 2v9h-3V7h3zM6 7h3v9H6V7zm13 9h-3V7h3v9z"/></svg>'),
106
+ // array('name'=>__('2 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'2-col', 'id'=>2),
107
+ // array('name'=>__('3 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'3-col', 'id'=>3),
108
+ // array('name'=>__('4 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'4-col', 'id'=>4),
109
+ // array('name'=>__('5 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'5-col', 'id'=>5),
110
+ // array('name'=>__('6 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'6-col', 'id'=>6),
111
+ // array('name'=>__('Left Sidebar','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'left-sidebar', 'id'=>7),
112
+ // array('name'=>__('Right Sidebar','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'right-sidebar', 'id'=>8),
113
+
114
+ // array('name'=>__('6 Column','coming-soon'),'is_pro'=> false ,'cat'=>'layout','type'=>'6-col', 'id'=>6),
115
+
116
+ array('name'=>__('Headline','coming-soon'),'is_pro'=> false,'cat'=>'common','type'=>'header', 'id'=>9, 'icon' => '<svg viewBox="0 0 12 17" class="sp-w-14px sp-fill-current sp-pb-2" xmlns="http://www.w3.org/2000/svg">
117
+ <path d="M9 0.800049V7.04005H3V0.800049H0V16.4H3V10.16H9V16.4H12V0.800049H9Z"/>
118
+ </svg>
119
+ '),
120
+ //array('name'=>__('Sub Headline','coming-soon'),'is_pro'=> false,'cat'=>'common','type'=>'sub-header', 'id'=>10, 'icon' => 'fas fa-heading'),
121
+ array('name'=>__('Text','coming-soon'),'is_pro'=> false,'cat'=>'common','type'=>'text', 'id'=>11, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" class="sp-w-6 sp-fill-current "><rect x="0" fill="none"/><g><path d="M15 2H7.54c-.83 0-1.59.2-2.28.6-.7.41-1.25.96-1.65 1.65C3.2 4.94 3 5.7 3 6.52s.2 1.58.61 2.27c.4.69.95 1.24 1.65 1.64.69.41 1.45.61 2.28.61h.43V17c0 .27.1.51.29.71.2.19.44.29.71.29.28 0 .51-.1.71-.29.2-.2.3-.44.3-.71V5c0-.27.09-.51.29-.71.2-.19.44-.29.71-.29s.51.1.71.29c.19.2.29.44.29.71v12c0 .27.1.51.3.71.2.19.43.29.71.29.27 0 .51-.1.71-.29.19-.2.29-.44.29-.71V4H15c.27 0 .5-.1.7-.3.2-.19.3-.43.3-.7s-.1-.51-.3-.71C15.5 2.1 15.27 2 15 2z"/></g></svg>'),
122
+ array('name'=>__('List','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'bullet-list', 'id'=>12, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current"><g fill="none"><path d="M0 0h24v24H0V0z"/><path d="M0 0h24v24H0V0z" opacity=".87"/></g><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z"/></svg>'),
123
+ array('name'=>__('Button','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'button', 'id'=>13, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" class="sp-w-6 sp-fill-current " viewBox="0 0 24 24" ><g><rect fill="none" height="24" width="24"/></g><g><g><path d="M18.19,12.44l-3.24-1.62c1.29-1,2.12-2.56,2.12-4.32c0-3.03-2.47-5.5-5.5-5.5s-5.5,2.47-5.5,5.5c0,2.13,1.22,3.98,3,4.89 v3.26c-2.15-0.46-2.02-0.44-2.26-0.44c-0.53,0-1.03,0.21-1.41,0.59L4,16.22l5.09,5.09C9.52,21.75,10.12,22,10.74,22h6.3 c0.98,0,1.81-0.7,1.97-1.67l0.8-4.71C20.03,14.32,19.38,13.04,18.19,12.44z M17.84,15.29L17.04,20h-6.3 c-0.09,0-0.17-0.04-0.24-0.1l-3.68-3.68l4.25,0.89V6.5c0-0.28,0.22-0.5,0.5-0.5c0.28,0,0.5,0.22,0.5,0.5v6h1.76l3.46,1.73 C17.69,14.43,17.91,14.86,17.84,15.29z M8.07,6.5c0-1.93,1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5c0,0.95-0.38,1.81-1,2.44V6.5 c0-1.38-1.12-2.5-2.5-2.5c-1.38,0-2.5,1.12-2.5,2.5v2.44C8.45,8.31,8.07,7.45,8.07,6.5z"/></g></g></svg>'),
124
+ array('name'=>__('Image','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'image', 'id'=>14, 'icon' => '<svg class="sp-w-6 sp-fill-current " xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14 6 17h12l-3.86-5.14z"/></svg>'),
125
+ array('name'=>__('Video','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'video', 'id'=>15, 'icon' => '<svg class="sp-w-6 sp-fill-current " xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" ><path d="M0 0h24v24H0V0z" fill="none"/><path d="M15 8v8H5V8h10m1-2H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4V7c0-.55-.45-1-1-1z"/></svg>'),
126
+ array('name'=>__('Divider','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'divider', 'id'=>17, 'icon' => '
127
+ <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><g><rect fill="none" height="24" width="24"/></g><g><g><g><path d="M20,9H4v2h16V9z M4,15h16v-2H4V15z"/></g></g></g></svg>'),
128
+ array('name'=>__('Spacer','coming-soon'),'is_pro'=> false ,'cat'=>'common','type'=>'spacer', 'id'=>24, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current sp-transform sp-rotate-90" ><path d="M0 0h24v24H0z" fill="none"/><path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.24zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l-4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z"/></svg>'),
129
+
130
+
131
+ array('name'=>__('Giveaway','coming-soon'),'is_pro'=> false ,'cat'=>'adv','type'=>'giveaway', 'id'=>32, 'icon' => '<svg class="sp-w-5 sp-fill-current " viewBox="0 0 394 416" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
132
+ <path d="M161.294,281.219 C151.445,281.219 143.462,289.202 143.462,299.049 C143.462,308.896 151.445,316.878 161.294,316.878 C171.139,316.878 179.122,308.896 179.122,299.049 C179.122,289.202 171.139,281.219 161.294,281.219 Z M232.979,281.219 C223.132,281.219 215.149,289.202 215.149,299.049 C215.149,308.896 223.132,316.878 232.979,316.878 C242.826,316.878 250.806,308.896 250.806,299.049 C250.806,289.202 242.826,281.219 232.979,281.219 Z M32.608,123.757 C30.714,158.655 31.726,255.445 32.608,292.617 C32.68,295.618 34.565,297.889 37.042,299.527 C58.017,313.458 79.698,326.395 101.835,338.541 C98.77,308.445 98.261,273.714 107.731,252.542 C111.467,244.191 119.577,237.434 130.383,232.272 C111.019,204.919 98.751,172.762 95.699,143.461 C91.243,100.685 159.191,80.829 161.091,113.506 C163.202,149.839 167.026,185.74 173.214,221.056 C180.966,220.166 188.963,219.72 196.962,219.708 C205.077,219.704 213.195,220.154 221.06,221.056 C227.245,185.74 231.071,149.839 233.18,113.506 C235.079,80.829 303.03,100.685 298.574,143.461 C295.523,172.762 283.254,204.919 263.891,232.272 C274.694,237.434 282.806,244.191 286.542,252.542 C295.99,273.665 295.504,308.286 292.458,338.332 C314.469,326.252 336.023,313.381 356.885,299.527 C359.356,297.889 361.245,295.618 361.316,292.617 C362.199,255.445 363.21,158.655 361.316,123.757 C361.008,120.766 359.356,118.487 356.885,116.846 C307.739,84.205 254.723,57.023 201.025,32.736 C199.667,32.123 198.314,31.818 196.962,31.818 C195.61,31.818 194.257,32.123 192.902,32.736 C139.201,57.023 86.185,84.205 37.042,116.846 C34.565,118.487 32.913,120.766 32.608,123.757 Z M1.328,120.554 C2.595,108.178 9.333,97.499 19.644,90.651 C70.294,57.012 124.602,29.116 179.943,4.087 C190.893,-0.864 203.032,-0.864 213.981,4.087 C269.323,29.116 323.628,57.012 374.28,90.651 C384.913,97.713 392.019,109.24 392.712,122.052 C394.273,150.787 393.913,180.541 393.792,209.337 C393.674,237.33 393.416,265.374 392.75,293.359 C392.432,306.785 385.326,318.385 374.28,325.719 C323.628,359.361 269.323,387.262 213.981,412.29 C203.032,417.237 190.893,417.237 179.943,412.29 C124.602,387.262 70.294,359.361 19.644,325.719 C8.596,318.385 1.493,306.785 1.174,293.359 C0.509,265.374 0.248,237.33 0.132,209.337 C0.047,189.407 -0.464,137.991 1.328,120.554 L1.328,120.554 Z" id="Fill-5"></path>
133
+ </svg>'),
134
+
135
+ array('name'=>__('Contact Form','coming-soon'),'is_pro'=> false ,'cat'=>'adv','type'=>'contact-form', 'id'=>23, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="sp-w-5 sp-fill-current "><path fill="currentColor" d="M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"></path></svg>'),
136
+
137
+
138
+ array('name'=>__('Optin Form','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'optin-form', 'id'=>22, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 4.99L4 6h16zm0 12H4V8l8 5 8-5v10z"/></svg>'),
139
+
140
+ array('name'=>__('Countdown','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'countdown', 'id'=>16, 'icon' => '
141
+
142
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M15.07 1.01h-6v2h6v-2zm-4 13h2v-6h-2v6zm8.03-6.62l1.42-1.42c-.43-.51-.9-.99-1.41-1.41l-1.42 1.42C16.14 4.74 14.19 4 12.07 4c-4.97 0-9 4.03-9 9s4.02 9 9 9 9-4.03 9-9c0-2.11-.74-4.06-1.97-5.61zm-7.03 12.62c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"/></svg>'),
143
+ array('name'=>__('Social Profiles','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'social-profiles', 'id'=>18, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 13.75c-2.34 0-7 1.17-7 3.5V19h14v-1.75c0-2.33-4.66-3.5-7-3.5zM4.34 17c.84-.58 2.87-1.25 4.66-1.25s3.82.67 4.66 1.25H4.34zM9 12c1.93 0 3.5-1.57 3.5-3.5S10.93 5 9 5 5.5 6.57 5.5 8.5 7.07 12 9 12zm0-5c.83 0 1.5.67 1.5 1.5S9.83 10 9 10s-1.5-.67-1.5-1.5S8.17 7 9 7zm7.04 6.81c1.16.84 1.96 1.96 1.96 3.44V19h4v-1.75c0-2.02-3.5-3.17-5.96-3.44zM15 12c1.93 0 3.5-1.57 3.5-3.5S16.93 5 15 5c-.54 0-1.04.13-1.5.35.63.89 1 1.98 1 3.15s-.37 2.26-1 3.15c.46.22.96.35 1.5.35z"/></svg>'),
144
+ array('name'=>__('Social Sharing','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'social-sharing', 'id'=>19, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM6 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm12 7.02c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"/></svg>'),
145
+ //array('name'=>__('Form','coming-soon'),'is_pro'=> false ,'cat'=>'adv','type'=>'form', 'id'=>25, 'icon' => 'far fa-envelope'),
146
+
147
+ array('name'=>__('Progress Bar','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'progress-bar', 'id'=>24, 'icon' => '
148
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current sp-transform sp-rotate-90"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M5 9.2h3V19H5V9.2zM10.6 5h2.8v14h-2.8V5zm5.6 8H19v6h-2.8v-6z"/></svg>'),
149
+ array('name'=>__('Icon','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'icon', 'id'=>24, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z"/></svg>'),
150
+ array('name'=>__('Image Box','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'feature', 'id'=>24, 'icon' => '
151
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M0 0h24v24H0V0z" fill="none"/><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14zM4 6h9v7H4z"/></svg>'),
152
+
153
+ array('name'=>__('Icon Box','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'iconfeature', 'id'=>26, 'icon' => '
154
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h18v14zM5 10h9v2H5zm0-3h9v2H5z"/></svg>'),
155
+
156
+ array('name'=>__('Nav Menu','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'nav', 'id'=>25, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>'),
157
+
158
+ array('name'=>__('Anchor','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'anchor', 'id'=>30, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current" ><path d="M17,15l1.55,1.55c-0.96,1.69-3.33,3.04-5.55,3.37V11h3V9h-3V7.82C14.16,7.4,15,6.3,15,5c0-1.65-1.35-3-3-3S9,3.35,9,5 c0,1.3,0.84,2.4,2,2.82V9H8v2h3v8.92c-2.22-0.33-4.59-1.68-5.55-3.37L7,15l-4-3v3c0,3.88,4.92,7,9,7s9-3.12,9-7v-3L17,15z M12,4 c0.55,0,1,0.45,1,1s-0.45,1-1,1s-1-0.45-1-1S11.45,4,12,4z"/></g></svg>'),
159
+
160
+ array('name'=>__('Star Rating','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'starrating', 'id'=>31, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="sp-w-6 sp-fill-current "><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 7.13l.97 2.29.47 1.11 1.2.1 2.47.21-1.88 1.63-.91.79.27 1.18.56 2.41-2.12-1.28-1.03-.64-1.03.62-2.12 1.28.56-2.41.27-1.18-.91-.79-1.88-1.63 2.47-.21 1.2-.1.47-1.11.97-2.27M12 2L9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2z"/></svg>'),
161
+
162
+
163
+
164
+ array('name'=>__('Shortcode','coming-soon'),'is_pro'=> true ,'cat'=>'adv','type'=>'shortcode', 'id'=>21, 'icon' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="sp-w-6 sp-fill-current"><path d="M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"/></svg>'),
165
+
166
+ array('name'=>__('Custom HTML','coming-soon'),'is_pro'=> false ,'cat'=>'adv','type'=>'custom-html', 'id'=>20, 'icon' => '
167
+ <svg xmlns="http://www.w3.org/2000/svg"class="sp-w-6 sp-fill-current " viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>'),
168
+
169
+
170
+
171
+ );
172
+
173
+
174
+
175
+ return $block_options ;
176
+ }
177
+
178
+
179
+ /**
180
+ * Get times
181
+ */
182
+ function seedprod_lite_get_default_timezone()
183
+ {
184
+ $general_settings = get_option('seedprod_settings');
185
+ $timezone = 'UTC';
186
+
187
+ if (!empty($general_settings)) {
188
+ $general_settings = json_decode($general_settings);
189
+ if (!empty($general_settings->default_timezone)) {
190
+ $timezone = $general_settings->default_timezone;
191
+ }
192
+ }
193
+
194
+ return $timezone;
195
+ }
196
+
197
+
198
+
199
+ /**
200
+ * Get times
201
+ */
202
+ function seedprod_lite_get_times()
203
+ {
204
+ $times = array();
205
+ $times[] = array('v'=> '', 'l'=> __('Select Time', 'coming-soon'));
206
+ $times[] = array('v'=> '00:00', 'l'=>'12:00 A.M.');
207
+ $times[] = array('v'=> '00:30', 'l'=>'12:30 A.M.');
208
+ $times[] = array('v'=> '01:00', 'l'=>'1:00 A.M.');
209
+ $times[] = array('v'=> '01:30', 'l'=>'1:30 A.M.');
210
+ $times[] = array('v'=> '02:00', 'l'=>'2:00 A.M.');
211
+ $times[] = array('v'=> '02:30', 'l'=>'2:30 A.M.');
212
+ $times[] = array('v'=> '03:00', 'l'=>'3:00 A.M.');
213
+ $times[] = array('v'=> '03:30', 'l'=>'3:30 A.M.');
214
+ $times[] = array('v'=> '04:00', 'l'=>'4:00 A.M.');
215
+ $times[] = array('v'=> '04:30', 'l'=>'4:30 A.M.');
216
+ $times[] = array('v'=> '05:00', 'l'=>'5:00 A.M.');
217
+ $times[] = array('v'=> '05:30', 'l'=>'5:30 A.M.');
218
+ $times[] = array('v'=> '06:00', 'l'=>'6:00 A.M.');
219
+ $times[] = array('v'=> '06:30', 'l'=>'6:30 A.M.');
220
+ $times[] = array('v'=> '07:00', 'l'=>'7:00 A.M.');
221
+ $times[] = array('v'=> '07:30', 'l'=>'7:30 A.M.');
222
+ $times[] = array('v'=> '08:00', 'l'=>'8:00 A.M.');
223
+ $times[] = array('v'=> '08:30', 'l'=>'8:30 A.M.');
224
+ $times[] = array('v'=> '09:00', 'l'=>'9:00 A.M.');
225
+ $times[] = array('v'=> '09:30', 'l'=>'9:30 A.M.');
226
+ $times[] = array('v'=> '10:00', 'l'=>'10:00 A.M.');
227
+ $times[] = array('v'=> '10:30', 'l'=>'10:30 A.M.');
228
+ $times[] = array('v'=> '11:00', 'l'=>'11:00 A.M.');
229
+ $times[] = array('v'=> '11:30', 'l'=>'11:30 A.M.');
230
+ $times[] = array('v'=> '12:00', 'l'=>'12:00 P.M.');
231
+ $times[] = array('v'=> '12:30', 'l'=>'12:30 P.M.');
232
+ $times[] = array('v'=> '13:00', 'l'=>'1:00 P.M.');
233
+ $times[] = array('v'=> '13:30', 'l'=>'1:30 P.M.');
234
+ $times[] = array('v'=> '14:00', 'l'=>'2:00 P.M.');
235
+ $times[] = array('v'=> '14:30', 'l'=>'2:30 P.M.');
236
+ $times[] = array('v'=> '15:00', 'l'=>'3:00 P.M.');
237
+ $times[] = array('v'=> '15:30', 'l'=>'3:30 P.M.');
238
+ $times[] = array('v'=> '16:00', 'l'=>'4:00 P.M.');
239
+ $times[] = array('v'=> '16:30', 'l'=>'4:30 P.M.');
240
+ $times[] = array('v'=> '17:00', 'l'=>'5:00 P.M.');
241
+ $times[] = array('v'=> '17:30', 'l'=>'5:30 P.M.');
242
+ $times[] = array('v'=> '18:00', 'l'=>'6:00 P.M.');
243
+ $times[] = array('v'=> '18:30', 'l'=>'6:30 P.M.');
244
+ $times[] = array('v'=> '19:00', 'l'=>'7:00 P.M.');
245
+ $times[] = array('v'=> '19:30', 'l'=>'7:30 P.M.');
246
+ $times[] = array('v'=> '20:00', 'l'=>'8:00 P.M.');
247
+ $times[] = array('v'=> '20:30', 'l'=>'8:30 P.M.');
248
+ $times[] = array('v'=> '21:00', 'l'=>'9:00 P.M.');
249
+ $times[] = array('v'=> '21:30', 'l'=>'9:30 P.M.');
250
+ $times[] = array('v'=> '22:00', 'l'=>'10:00 P.M.');
251
+ $times[] = array('v'=> '22:30', 'l'=>'10:30 P.M.');
252
+ $times[] = array('v'=> '23:00', 'l'=>'11:00 P.M.');
253
+ $times[] = array('v'=> '23:30', 'l'=>'11:30 P.M.');
254
+
255
+ return $times;
256
+ }
257
+
258
+ /**
259
+ * Check per
260
+ */
261
+ function seedprod_lite_get_api_key()
262
+ {
263
+ $seedprod_api_key = '';
264
+
265
+ if (defined('SEEDPROD_API_KEY')) {
266
+ $seedprod_api_key = SEEDPROD_API_KEY;
267
+ }
268
+
269
+ if (empty($seedprod_api_key)) {
270
+ $seedprod_api_key = get_option('seedprod_api_key ');
271
+ }
272
+
273
+ return $seedprod_api_key;
274
+ }
275
+
276
+ /**
277
+ * Get timezones
278
+ */
279
+ function seedprod_lite_get_timezones()
280
+ {
281
+ // timezones
282
+ $zonen = array();
283
+ $continents = array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific');
284
+
285
+ foreach (timezone_identifiers_list() as $zone) {
286
+ $zone = explode('/', $zone);
287
+ if (!in_array($zone[0], $continents)) {
288
+ continue;
289
+ }
290
+
291
+ // This determines what gets set and translated - we don't translate Etc/* strings here, they are done later
292
+ $exists = array(
293
+ 0 => (isset($zone[0]) && $zone[0]),
294
+ 1 => (isset($zone[1]) && $zone[1]),
295
+ 2 => (isset($zone[2]) && $zone[2]),
296
+ );
297
+ $exists[3] = ($exists[0] && 'Etc' !== $zone[0]);
298
+ $exists[4] = ($exists[1] && $exists[3]);
299
+ $exists[5] = ($exists[2] && $exists[3]);
300
+
301
+ $zonen[] = array(
302
+ 'continent' => ($exists[0] ? $zone[0] : ''),
303
+ 'city' => ($exists[1] ? $zone[1] : ''),
304
+ 'subcity' => ($exists[2] ? $zone[2] : ''),
305
+ 't_continent' => ($exists[3] ? translate(str_replace('_', ' ', $zone[0]), 'continents-cities') : ''),
306
+ 't_city' => ($exists[4] ? translate(str_replace('_', ' ', $zone[1]), 'continents-cities') : ''),
307
+ 't_subcity' => ($exists[5] ? translate(str_replace('_', ' ', $zone[2]), 'continents-cities') : '')
308
+ );
309
+ }
310
+ usort($zonen, '_wp_timezone_choice_usort_callback');
311
+
312
+ $structure = array();
313
+
314
+ foreach ($zonen as $key => $zone) {
315
+ // Build value in an array to join later
316
+ $value = array( $zone['continent'] );
317
+
318
+ if (empty($zone['city'])) {
319
+ // It's at the continent level (generally won't happen)
320
+ $display = $zone['t_continent'];
321
+ } else {
322
+ // It's inside a continent group
323
+
324
+ // Continent optgroup
325
+ if (!isset($zonen[$key - 1]) || $zonen[$key - 1]['continent'] !== $zone['continent']) {
326
+ $label = $zone['t_continent'];
327
+ //$structure[] = $label ;
328
+ }
329
+
330
+
331
+ // Add the city to the value
332
+ $value[] = $zone['city'];
333
+
334
+ // get offset
335
+ // $timezone = $label.'/'.str_replace(' ', '_', $zone['t_city']);
336
+ // $time = new \DateTime('now', new DateTimeZone($timezone));
337
+ // $timezoneOffset = $time->format('P');
338
+
339
+
340
+
341
+
342
+ $display = $zone['t_city'];
343
+ ;
344
+ if (!empty($zone['subcity'])) {
345
+ // Add the subcity to the value
346
+ $value[] = $zone['subcity'];
347
+ $display .= ' - ' . $zone['t_subcity'];
348
+ }
349
+ }
350
+
351
+
352
+
353
+ // Build the value
354
+ $value = join('/', $value);
355
+
356
+
357
+ // get offset
358
+ $time = new \DateTime('now', new DateTimeZone($value));
359
+ $timezoneOffset = $time->format('P');
360
+ $structure[$label][] = array('v'=> $value, 'l'=>$display.' ('.$timezoneOffset.' GMT)');
361
+ }
362
+
363
+ $structure['UTC'][] = array('v'=> "UTC", 'l'=>"UTC");
364
+
365
+ return $structure;
366
+ }
367
+
368
+
369
+ /**
370
+ * Add to array if value does not exist
371
+ */
372
+ function seedprod_lite_array_add($arr, $key, $value)
373
+ {
374
+ if (!array_key_exists($key, $arr)) {
375
+ $arr[$key] = $value;
376
+ }
377
+ return $arr;
378
+ }
379
+
380
+
381
+
382
+
383
+ /**
384
+ * Check per
385
+ */
386
+ function seedprod_lite_cu($rper = null)
387
+ {
388
+ if (!empty($rper)) {
389
+ $uper = explode(",", get_option('seedprod_per'));
390
+ if (in_array($rper, $uper)) {
391
+ return true;
392
+ } else {
393
+ return false;
394
+ }
395
+ } else {
396
+ $a = get_option('seedprod_a');
397
+ if ($a) {
398
+ return true;
399
+ } else {
400
+ return false;
401
+ }
402
+ }
403
+ }
404
+
405
+
406
+ function seedprod_lite_upgrade_link($medium = 'link')
407
+ {
408
+ return apply_filters('seedprod_lite_upgrade_link', 'https://seedprod.com/lite-upgrade/?utm_source=WordPress&utm_campaign=liteplugin&utm_medium=' . sanitize_key(apply_filters('seedprod_lite_upgrade_link_medium', $medium)));
409
+ }
410
+
411
+
412
+ function seedprod_lite_disable_admin_notices()
413
+ {
414
+ global $wp_filter;
415
+ if (is_user_admin()) {
416
+ if (isset($wp_filter['user_admin_notices'])) {
417
+ unset($wp_filter['user_admin_notices']);
418
+ }
419
+ } elseif (isset($wp_filter['admin_notices'])) {
420
+ unset($wp_filter['admin_notices']);
421
+ }
422
+ if (isset($wp_filter['all_admin_notices'])) {
423
+ unset($wp_filter['all_admin_notices']);
424
+ }
425
+ }
426
+ if (!empty($_GET['page']) && strpos($_GET['page'], 'seedprod') !== false) {
427
+ add_action('admin_print_scripts', 'seedprod_lite_disable_admin_notices');
428
+ }
429
+
430
+
431
+ function seedprod_lite_plugin_nonce()
432
+ {
433
+ check_ajax_referer('seedprod_lite_plugin_nonce', 'nonce');
434
+
435
+ if (! current_user_can('install_plugins')) {
436
+ wp_send_json_error();
437
+ }
438
+
439
+ $install_plugin_nonce = wp_create_nonce('install-plugin_'.sanitize_text_field($_POST['plugin']));
440
+
441
+ wp_send_json($install_plugin_nonce);
442
+ }
443
+
444
+ function seedprod_lite_is_dev_url($url = '')
445
+ {
446
+ $is_local_url = false;
447
+ // Trim it up
448
+ $url = strtolower(trim($url));
449
+ // Need to get the host...so let's add the scheme so we can use parse_url
450
+ if (false === strpos($url, 'http://') && false === strpos($url, 'https://')) {
451
+ $url = 'http://' . $url;
452
+ }
453
+ $url_parts = parse_url($url);
454
+ $host = ! empty($url_parts['host']) ? $url_parts['host'] : false;
455
+ if (! empty($url) && ! empty($host)) {
456
+ if (false !== ip2long($host)) {
457
+ if (! filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
458
+ $is_local_url = true;
459
+ }
460
+ } elseif ('localhost' === $host) {
461
+ $is_local_url = true;
462
+ }
463
+
464
+ $tlds_to_check = array( '.local', ':8888', ':8080', ':8081', '.invalid', '.example', '.test' );
465
+ foreach ($tlds_to_check as $tld) {
466
+ if (false !== strpos($host, $tld)) {
467
+ $is_local_url = true;
468
+ break;
469
+ }
470
+ }
471
+ if (substr_count($host, '.') > 1) {
472
+ $subdomains_to_check = array( 'dev.', '*.staging.', 'beta.', 'test.' );
473
+ foreach ($subdomains_to_check as $subdomain) {
474
+ $subdomain = str_replace('.', '(.)', $subdomain);
475
+ $subdomain = str_replace(array( '*', '(.)' ), '(.*)', $subdomain);
476
+ if (preg_match('/^(' . $subdomain . ')/', $host)) {
477
+ $is_local_url = true;
478
+ break;
479
+ }
480
+ }
481
+ }
482
+ }
483
+ return $is_local_url;
484
+ }
485
+
486
+
487
+ function seedprod_lite_find_fonts_in_doc($someArray) {
488
+ if(empty($someArray)){
489
+ return false;
490
+ }
491
+ $load_fonts = array();
492
+ $load_variants = array();
493
+ $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($someArray), RecursiveIteratorIterator::SELF_FIRST);
494
+ foreach ($iterator as $k => $v) {
495
+ $indent = str_repeat('&nbsp;', 10 * $iterator->getDepth());
496
+ // Not at end: show key only
497
+ if ($iterator->hasChildren()) {
498
+ //echo "$indent$k :<br>";
499
+ // At end: show key, value and path
500
+ } else {
501
+ for ($p = array(), $i = 0, $z = $iterator->getDepth(); $i <= $z; $i++) {
502
+ $p[] = $iterator->getSubIterator($i)->key();
503
+ }
504
+ $path = implode(',', $p);
505
+ //echo "$indent$k : $v : path -> $path<br>";
506
+ // get font
507
+ if(stripos($k, 'font') !== false && stripos($k, 'variant') === false && !empty($v) && strpos($v, ',') === false && stripos($k, 'fontSize') === false){
508
+ $load_fonts[] = array("k"=>$k,"v"=>$v,"p"=>$path);
509
+ }
510
+ // get variant
511
+ if(stripos($k, 'font') !== false && stripos($k, 'variant') !== false && !empty($v) && strpos($v, ',') === false){
512
+ $load_variants[] = array("k"=>$k,"v"=>$v,"p"=>$path);
513
+ }
514
+
515
+
516
+ }
517
+ }
518
+ return array_merge($load_fonts,$load_variants);
519
+ }
520
+
521
+ function seedprod_lite_construct_font_str($doc_settings) {
522
+ $fonts = seedprod_lite_find_fonts_in_doc($doc_settings);
523
+ $myfonts = array();
524
+ $myvariants = array();
525
+ if(!empty($fonts)){
526
+ foreach($fonts as $k => $v){
527
+ if(stripos($v['k'], 'font') !== false && stripos($v['k'], 'variant') === false){
528
+ if(empty($myfonts[$v['v']])){
529
+ $myfonts[$v['v']] = array();
530
+ }
531
+
532
+ foreach($fonts as $k2 => $v2){
533
+ if($v['p'].'Variant' === $v2['p']){
534
+ $myfonts[$v['v']][] = $v2['v'];
535
+ }
536
+ }
537
+ }
538
+ }
539
+
540
+ foreach($myfonts as $k3 => $v3){
541
+ $myfonts[$k3] = array_unique($v3);
542
+ }
543
+ }
544
+ $google_fonts_str = '';
545
+ if(!empty($myfonts)){
546
+ $google_fonts_str = 'https://fonts.googleapis.com/css?family=';
547
+ $c = 1;
548
+ foreach($myfonts as $k4 => $v4){
549
+ $end = '|';
550
+ if(count($myfonts) == $c){
551
+ $end = '';
552
+ }
553
+ $google_fonts_str .= urlencode($k4);
554
+ if(!empty($v4)){
555
+ $google_fonts_str .= ':' . implode(',',$v4);
556
+ }
557
+
558
+ $google_fonts_str .= $end;
559
+ $c++;
560
+ }
561
+ $google_fonts_str .= '&display=swap';
562
+ }
563
+ return $google_fonts_str;
564
+ }
565
+
566
+
567
+ add_filter('_wp_post_revision_fields','seedprod_lite_wp_post_revision_fields',11,2);
568
+ function seedprod_lite_wp_post_revision_fields($fields, $post){
569
+ if(!empty($post['post_content_filtered']) && strpos($post['post_content'], 'sp-page') !== false){
570
+ $fields['post_content_filtered'] = 'Content Filtered';
571
+ return $fields;
572
+ }else{
573
+ return $fields;
574
+ }
575
+ }
576
+
577
+
578
+ add_filter( 'page_row_actions', 'seedprod_lite_filter_page_row_actions', 11, 2 );
579
+ function seedprod_lite_filter_page_row_actions( $actions, $post ) {
580
+ $has_settings = get_post_meta( $post->ID, '_seedprod_page', true );
581
+ if ( !empty($has_settings)) {
582
+ $id = $post->ID;
583
+ $actions['edit_seedprod'] = sprintf(
584
+ '<a href="%1$s">%2$s</a>',
585
+ admin_url().'admin.php?page=seedprod_lite_builder&id='.$id.'#/setup/'.$id,
586
+ __( 'Edit with SeedProd', 'seedprod' )
587
+ );
588
+ // unset($actions['inline hide-if-no-js']);
589
+ }
590
+
591
+ return $actions;
592
+ }
593
+
594
+ //add_filter( 'get_edit_post_link', 'seedprod_lite_filter_get_edit_post_link', 11, 3 );
595
+ function seedprod_lite_filter_get_edit_post_link( $link, $id, $context ) {
596
+ $has_settings = get_post_meta( $id, '_seedprod_page', true );
597
+ if ( !empty($has_settings)) {
598
+ $link = admin_url(). 'admin.php?page=seedprod_lite_builder&id='.$id.'#/setup/'.$id;
599
+ }
600
+ return $link;
601
+ }
602
+
603
+ /**
604
+ * Dismiss Settings Lite CTA
605
+ */
606
+ function seedprod_lite_dismiss_settings_lite_cta()
607
+ {
608
+ if (check_ajax_referer('seedprod_lite_dismiss_settings_lite_cta')) {
609
+ $_POST = stripslashes_deep($_POST);
610
+
611
+ if (!empty($_POST['dismiss'])) {
612
+ update_option('seedprod_dismiss_settings_lite_cta', true);
613
+
614
+ $response = array(
615
+ 'status'=> 'true',
616
+
617
+ );
618
+ }
619
+
620
+ // Send Response
621
+ wp_send_json($response);
622
+ exit;
623
+ }
624
+ }
625
+
626
+ /**
627
+ * Dismiss Lite Banners
628
+ */
629
+ function seedprod_lite_dismiss_upsell()
630
+ {
631
+ if (check_ajax_referer('seedprod_lite_dismiss_upsell')) {
632
+ $_POST = stripslashes_deep($_POST);
633
+
634
+ if (!empty($_POST['id'])) {
635
+ $ts = time();
636
+ update_option('seedprod_dismiss_upsell_'.$_POST['id'], $ts );
637
+ $response = array(
638
+ 'status'=> 'true',
639
+
640
+ );
641
+ }
642
+
643
+ // Send Response
644
+ wp_send_json($response);
645
+ exit;
646
+ }
647
+ }
648
+
649
+ function seedprod_lite_get_expire_times(){
650
+ return array(
651
+ '1' => "1 Hour",
652
+ '2' => "2 Hours",
653
+ '3' => "3 Hours",
654
+ '4' => "4 Hours",
655
+ '5' => "5 Hours",
656
+ '6' => "6 Hours",
657
+ '7' => "7 Hours",
658
+ '8' => "8 Hours",
659
+ '9' => "9 Hours",
660
+ '10' => "10 Hours",
661
+ '11' => "11 Hours",
662
+ '12' => "12 Hours",
663
+ '13' => "13 Hours",
664
+ '14' => "14 Hours",
665
+ '15' => "15 Hours",
666
+ '16' => "16 Hours",
667
+ '17' => "17 Hours",
668
+ '18' => "18 Hours",
669
+ '19' => "19 Hours",
670
+ '20' => "20 Hours",
671
+ '21' => "21 Hours",
672
+ '21' => "22 Hours",
673
+ '23' => "23 Hours",
674
+ '24' => "1 Day",
675
+ '48' => "2 Days",
676
+ '72' => "3 Days",
677
+ '96' => "4 Days",
678
+ '120' => "5 Days",
679
+ '144' => "6 Days",
680
+ '168' => "7 Days",
681
+ '192' => "8 Days",
682
+ '216' => "9 Days",
683
+ '240' => "10 Days",
684
+ '264' => "11 Days",
685
+ '288' => "12 Days",
686
+ '312' => "13 Days",
687
+ '336' => "14 Days",
688
+ '360' => "15 Days",
689
+ '384' => "16 Days",
690
+ '408' => "17 Days",
691
+ '432' => "18 Days",
692
+ '456' => "19 Days",
693
+ '480' => "20 Days",
694
+ '504' => "21 Days",
695
+ '528' => "22 Days",
696
+ '552' => "23 Days",
697
+ '576' => "24 Days",
698
+ '600' => "25 Days",
699
+ '624' => "26 Days",
700
+ '648' => "27 Days",
701
+ '672' => "28 Days",
702
+ '696' => "29 Days",
703
+ '720' => "30 Days",
704
+ '8760' => "1 Year",
705
+ );
706
+ }
707
+
708
+
709
+ function seedprod_lite_get_system_info() {
710
+
711
+ global $wpdb;
712
+
713
+ // Get theme info.
714
+ $theme_data = wp_get_theme();
715
+ $theme = $theme_data->Name . ' ' . $theme_data->Version;
716
+
717
+ $return = '### Begin System Info ###' . "\n\n";
718
+
719
+ // WPForms info.
720
+ $return .= '-- SeedProd Info' . "\n\n";
721
+
722
+ // Now the basics...
723
+ $return .= "\n" . '-- Site Info' . "\n\n";
724
+ $return .= 'Site URL: ' . site_url() . "\n";
725
+ $return .= 'Home URL: ' . home_url() . "\n";
726
+ $return .= 'Multisite: ' . ( is_multisite() ? 'Yes' : 'No' ) . "\n";
727
+
728
+ // WordPress configuration.
729
+ $return .= "\n" . '-- WordPress Configuration' . "\n\n";
730
+ $return .= 'Version: ' . get_bloginfo( 'version' ) . "\n";
731
+ $return .= 'Language: ' . ( defined( 'WPLANG' ) && WPLANG ? WPLANG : 'en_US' ) . "\n";
732
+ $return .= 'Permalink Structure: ' . ( get_option( 'permalink_structure' ) ? get_option( 'permalink_structure' ) : 'Default' ) . "\n";
733
+ $return .= 'Active Theme: ' . $theme . "\n";
734
+ $return .= 'Show On Front: ' . get_option( 'show_on_front' ) . "\n";
735
+ // Only show page specs if front page is set to 'page'.
736
+ if ( get_option( 'show_on_front' ) === 'page' ) {
737
+ $front_page_id = get_option( 'page_on_front' );
738
+ $blog_page_id = get_option( 'page_for_posts' );
739
+
740
+ $return .= 'Page On Front: ' . ( 0 != $front_page_id ? get_the_title( $front_page_id ) . ' (#' . $front_page_id . ')' : 'Unset' ) . "\n";
741
+ $return .= 'Page For Posts: ' . ( 0 != $blog_page_id ? get_the_title( $blog_page_id ) . ' (#' . $blog_page_id . ')' : 'Unset' ) . "\n";
742
+ }
743
+ $return .= 'ABSPATH: ' . ABSPATH . "\n";
744
+ $return .= 'Table Prefix: ' . 'Length: ' . strlen( $wpdb->prefix ) . ' Status: ' . ( strlen( $wpdb->prefix ) > 16 ? 'ERROR: Too long' : 'Acceptable' ) . "\n";
745
+ $return .= 'WP_DEBUG: ' . ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
746
+ $return .= 'WPFORMS_DEBUG: ' . ( defined( 'WPFORMS_DEBUG' ) ? WPFORMS_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
747
+ $return .= 'Memory Limit: ' . WP_MEMORY_LIMIT . "\n";
748
+ $return .= 'Registered Post Stati: ' . implode( ', ', get_post_stati() ) . "\n";
749
+
750
+ // @todo WPForms configuration/specific details.
751
+ $return .= "\n" . '-- WordPress Uploads/Constants' . "\n\n";
752
+ $return .= 'WP_CONTENT_DIR: ' . ( defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR ? WP_CONTENT_DIR : 'Disabled' : 'Not set' ) . "\n";
753
+ $return .= 'WP_CONTENT_URL: ' . ( defined( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL ? WP_CONTENT_URL : 'Disabled' : 'Not set' ) . "\n";
754
+ $return .= 'UPLOADS: ' . ( defined( 'UPLOADS' ) ? UPLOADS ? UPLOADS : 'Disabled' : 'Not set' ) . "\n";
755
+
756
+ $uploads_dir = wp_upload_dir();
757
+
758
+ $return .= 'wp_uploads_dir() path: ' . $uploads_dir['path'] . "\n";
759
+ $return .= 'wp_uploads_dir() url: ' . $uploads_dir['url'] . "\n";
760
+ $return .= 'wp_uploads_dir() basedir: ' . $uploads_dir['basedir'] . "\n";
761
+ $return .= 'wp_uploads_dir() baseurl: ' . $uploads_dir['baseurl'] . "\n";
762
+
763
+ // Get plugins that have an update.
764
+ $updates = get_plugin_updates();
765
+
766
+ // Must-use plugins.
767
+ // NOTE: MU plugins can't show updates!
768
+ $muplugins = get_mu_plugins();
769
+ if ( count( $muplugins ) > 0 && ! empty( $muplugins ) ) {
770
+ $return .= "\n" . '-- Must-Use Plugins' . "\n\n";
771
+
772
+ foreach ( $muplugins as $plugin => $plugin_data ) {
773
+ $return .= $plugin_data['Name'] . ': ' . $plugin_data['Version'] . "\n";
774
+ }
775
+ }
776
+
777
+ // WordPress active plugins.
778
+ $return .= "\n" . '-- WordPress Active Plugins' . "\n\n";
779
+
780
+ $plugins = get_plugins();
781
+ $active_plugins = get_option( 'active_plugins', array() );
782
+
783
+ foreach ( $plugins as $plugin_path => $plugin ) {
784
+ if ( ! in_array( $plugin_path, $active_plugins, true ) ) {
785
+ continue;
786
+ }
787
+ $update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
788
+ $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
789
+ }
790
+
791
+ // WordPress inactive plugins.
792
+ $return .= "\n" . '-- WordPress Inactive Plugins' . "\n\n";
793
+
794
+ foreach ( $plugins as $plugin_path => $plugin ) {
795
+ if ( in_array( $plugin_path, $active_plugins, true ) ) {
796
+ continue;
797
+ }
798
+ $update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
799
+ $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
800
+ }
801
+
802
+ if ( is_multisite() ) {
803
+ // WordPress Multisite active plugins.
804
+ $return .= "\n" . '-- Network Active Plugins' . "\n\n";
805
+
806
+ $plugins = wp_get_active_network_plugins();
807
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
808
+
809
+ foreach ( $plugins as $plugin_path ) {
810
+ $plugin_base = plugin_basename( $plugin_path );
811
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) ) {
812
+ continue;
813
+ }
814
+ $update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
815
+ $plugin = get_plugin_data( $plugin_path );
816
+ $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
817
+ }
818
+ }
819
+
820
+ // Server configuration (really just versions).
821
+ $return .= "\n" . '-- Webserver Configuration' . "\n\n";
822
+ $return .= 'PHP Version: ' . PHP_VERSION . "\n";
823
+ $return .= 'MySQL Version: ' . $wpdb->db_version() . "\n";
824
+ $return .= 'Webserver Info: ' . $_SERVER['SERVER_SOFTWARE'] . "\n";
825
+
826
+ // PHP configs... now we're getting to the important stuff.
827
+ $return .= "\n" . '-- PHP Configuration' . "\n\n";
828
+ $return .= 'Memory Limit: ' . ini_get( 'memory_limit' ) . "\n";
829
+ $return .= 'Upload Max Size: ' . ini_get( 'upload_max_filesize' ) . "\n";
830
+ $return .= 'Post Max Size: ' . ini_get( 'post_max_size' ) . "\n";
831
+ $return .= 'Upload Max Filesize: ' . ini_get( 'upload_max_filesize' ) . "\n";
832
+ $return .= 'Time Limit: ' . ini_get( 'max_execution_time' ) . "\n";
833
+ $return .= 'Max Input Vars: ' . ini_get( 'max_input_vars' ) . "\n";
834
+ $return .= 'Display Errors: ' . ( ini_get( 'display_errors' ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A' ) . "\n";
835
+
836
+ // PHP extensions and such.
837
+ $return .= "\n" . '-- PHP Extensions' . "\n\n";
838
+ $return .= 'cURL: ' . ( function_exists( 'curl_init' ) ? 'Supported' : 'Not Supported' ) . "\n";
839
+ $return .= 'fsockopen: ' . ( function_exists( 'fsockopen' ) ? 'Supported' : 'Not Supported' ) . "\n";
840
+ $return .= 'SOAP Client: ' . ( class_exists( 'SoapClient', false ) ? 'Installed' : 'Not Installed' ) . "\n";
841
+ $return .= 'Suhosin: ' . ( extension_loaded( 'suhosin' ) ? 'Installed' : 'Not Installed' ) . "\n";
842
+
843
+ // Session stuff.
844
+ $return .= "\n" . '-- Session Configuration' . "\n\n";
845
+ $return .= 'Session: ' . ( isset( $_SESSION ) ? 'Enabled' : 'Disabled' ) . "\n";
846
+
847
+ // The rest of this is only relevant if session is enabled.
848
+ if ( isset( $_SESSION ) ) {
849
+ $return .= 'Session Name: ' . esc_html( ini_get( 'session.name' ) ) . "\n";
850
+ $return .= 'Cookie Path: ' . esc_html( ini_get( 'session.cookie_path' ) ) . "\n";
851
+ $return .= 'Save Path: ' . esc_html( ini_get( 'session.save_path' ) ) . "\n";
852
+ $return .= 'Use Cookies: ' . ( ini_get( 'session.use_cookies' ) ? 'On' : 'Off' ) . "\n";
853
+ $return .= 'Use Only Cookies: ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
854
+ }
855
+
856
+ $return .= "\n" . '### End System Info ###';
857
+
858
+ return $return;
859
+ }
860
+
861
+
app/includes/nameparse.php ADDED
@@ -0,0 +1,263 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Name: nameparse.php
4
+ Version: 0.2a
5
+ Date: 030507
6
+ First: 030407
7
+ License: GNU General Public License v2
8
+ Bugs: If one of the words in the middle name is Ben (or St., for that matter),
9
+ or any other possible last-name prefix, the name MUST be entered in
10
+ last-name-first format. If the last-name parsing routines get ahold
11
+ of any prefix, they tie up the rest of the name up to the suffix. i.e.:
12
+
13
+ William Ben Carey would yield 'Ben Carey' as the last name, while,
14
+ Carey, William Ben would yield 'Carey' as last and 'Ben' as middle.
15
+
16
+ This is a problem inherent in the prefix-parsing routines algorithm,
17
+ and probably will not be fixed. It's not my fault that there's some
18
+ odd overlap between various languages. Just don't name your kids
19
+ 'Something Ben Something', and you should be alright.
20
+
21
+ */
22
+
23
+ function seedprod_lite_norm_str($string) {
24
+ return trim(strtolower(
25
+ str_replace('.','',$string)));
26
+ }
27
+
28
+ function seedprod_lite_in_array_norm($needle,$haystack) {
29
+ return in_array(seedprod_lite_norm_str($needle),$haystack);
30
+ }
31
+
32
+ function seedprod_lite_parse_name($fullname) {
33
+ $titles = array('dr','miss','mr','mrs','ms','judge');
34
+ $prefices = array('ben','bin','da','dal','de','del','der','de','e',
35
+ 'la','le','san','st','ste','van','vel','von');
36
+ $suffices = array('esq','esquire','jr','sr','2','ii','iii','iv');
37
+
38
+ $pieces = explode(',',preg_replace('/\s+/',' ',trim($fullname)));
39
+ $n_pieces = count($pieces);
40
+
41
+ switch($n_pieces) {
42
+ case 1: // array(title first middles last suffix)
43
+ $subp = explode(' ',trim($pieces[0]));
44
+ $n_subp = count($subp);
45
+ for($i = 0; $i < $n_subp; $i++) {
46
+ $curr = trim($subp[$i]);
47
+ $next = trim(@$subp[$i+1]);
48
+
49
+ if($i == 0 && seedprod_lite_in_array_norm($curr,$titles)) {
50
+ $out['title'] = $curr;
51
+ continue;
52
+ }
53
+
54
+ if(empty($out)){
55
+ $out['first'] = '';
56
+ $out['last'] = '';
57
+ }
58
+
59
+ if(!$out['first']) {
60
+ $out['first'] = $curr;
61
+ continue;
62
+ }
63
+
64
+ if($i == $n_subp-2 && $next && seedprod_lite_in_array_norm($next,$suffices)) {
65
+ if($out['last']) {
66
+ $out['last'] .= " $curr";
67
+ }
68
+ else {
69
+ $out['last'] = $curr;
70
+ }
71
+ $out['suffix'] = $next;
72
+ break;
73
+ }
74
+
75
+ if($i == $n_subp-1) {
76
+ if($out['last']) {
77
+ $out['last'] .= " $curr";
78
+ }
79
+ else {
80
+ $out['last'] = $curr;
81
+ }
82
+ continue;
83
+ }
84
+
85
+ if(seedprod_lite_in_array_norm($curr,$prefices)) {
86
+ if($out['last']) {
87
+ $out['last'] .= " $curr";
88
+ }
89
+ else {
90
+ $out['last'] = $curr;
91
+ }
92
+ continue;
93
+ }
94
+
95
+ if($next == 'y' || $next == 'Y') {
96
+ if($out['last']) {
97
+ $out['last'] .= " $curr";
98
+ }
99
+ else {
100
+ $out['last'] = $curr;
101
+ }
102
+ continue;
103
+ }
104
+
105
+ if($out['last']) {
106
+ $out['last'] .= " $curr";
107
+ continue;
108
+ }
109
+
110
+ if($out['middle']) {
111
+ $out['middle'] .= " $curr";
112
+ }
113
+ else {
114
+ $out['middle'] = $curr;
115
+ }
116
+ }
117
+ break;
118
+ case 2:
119
+ switch(seedprod_lite_in_array_norm($pieces[1],$suffices)) {
120
+ case TRUE: // array(title first middles last,suffix)
121
+ $subp = explode(' ',trim($pieces[0]));
122
+ $n_subp = count($subp);
123
+ for($i = 0; $i < $n_subp; $i++) {
124
+ $curr = trim($subp[$i]);
125
+ $next = trim($subp[$i+1]);
126
+
127
+ if($i == 0 && seedprod_lite_in_array_norm($curr,$titles)) {
128
+ $out['title'] = $curr;
129
+ continue;
130
+ }
131
+
132
+ if(!$out['first']) {
133
+ $out['first'] = $curr;
134
+ continue;
135
+ }
136
+
137
+ if($i == $n_subp-1) {
138
+ if($out['last']) {
139
+ $out['last'] .= " $curr";
140
+ }
141
+ else {
142
+ $out['last'] = $curr;
143
+ }
144
+ continue;
145
+ }
146
+
147
+ if(seedprod_lite_in_array_norm($curr,$prefices)) {
148
+ if($out['last']) {
149
+ $out['last'] .= " $curr";
150
+ }
151
+ else {
152
+ $out['last'] = $curr;
153
+ }
154
+ continue;
155
+ }
156
+
157
+ if($next == 'y' || $next == 'Y') {
158
+ if($out['last']) {
159
+ $out['last'] .= " $curr";
160
+ }
161
+ else {
162
+ $out['last'] = $curr;
163
+ }
164
+ continue;
165
+ }
166
+
167
+ if($out['last']) {
168
+ $out['last'] .= " $curr";
169
+ continue;
170
+ }
171
+
172
+ if($out['middle']) {
173
+ $out['middle'] .= " $curr";
174
+ }
175
+ else {
176
+ $out['middle'] = $curr;
177
+ }
178
+ }
179
+ $out['suffix'] = trim($pieces[1]);
180
+ break;
181
+ case FALSE: // array(last,title first middles suffix)
182
+ $subp = explode(' ',trim($pieces[1]));
183
+ $n_subp = count($subp);
184
+ for($i = 0; $i < $n_subp; $i++) {
185
+ $curr = trim($subp[$i]);
186
+ $next = trim($subp[$i+1]);
187
+
188
+ if($i == 0 && seedprod_lite_in_array_norm($curr,$titles)) {
189
+ $out['title'] = $curr;
190
+ continue;
191
+ }
192
+
193
+ if(!$out['first']) {
194
+ $out['first'] = $curr;
195
+ continue;
196
+ }
197
+
198
+ if($i == $n_subp-2 && $next &&
199
+ seedprod_lite_in_array_norm($next,$suffices)) {
200
+ if($out['middle']) {
201
+ $out['middle'] .= " $curr";
202
+ }
203
+ else {
204
+ $out['middle'] = $curr;
205
+ }
206
+ $out['suffix'] = $next;
207
+ break;
208
+ }
209
+
210
+ if($i == $n_subp-1 && seedprod_lite_in_array_norm($curr,$suffices)) {
211
+ $out['suffix'] = $curr;
212
+ continue;
213
+ }
214
+
215
+ if($out['middle']) {
216
+ $out['middle'] .= " $curr";
217
+ }
218
+ else {
219
+ $out['middle'] = $curr;
220
+ }
221
+ }
222
+ $out['last'] = $pieces[0];
223
+ break;
224
+ }
225
+ unset($pieces);
226
+ break;
227
+ case 3: // array(last,title first middles,suffix)
228
+ $subp = explode(' ',trim($pieces[1]));
229
+ $n_subp = count($subp);
230
+ for($i = 0; $i < $n_subp; $i++) {
231
+ $curr = trim($subp[$i]);
232
+ $next = trim($subp[$i+1]);
233
+ if($i == 0 && seedprod_lite_in_array_norm($curr,$titles)) {
234
+ $out['title'] = $curr;
235
+ continue;
236
+ }
237
+
238
+ if(!$out['first']) {
239
+ $out['first'] = $curr;
240
+ continue;
241
+ }
242
+
243
+ if($out['middle']) {
244
+ $out['middle'] .= " $curr";
245
+ }
246
+ else {
247
+ $out['middle'] = $curr;
248
+ }
249
+ }
250
+
251
+ $out['last'] = trim($pieces[0]);
252
+ $out['suffix'] = trim($pieces[2]);
253
+ break;
254
+ default: // unparseable
255
+ unset($pieces);
256
+ break;
257
+ }
258
+
259
+ return $out;
260
+ }
261
+
262
+
263
+ ?>
lib/seed_csp4_lessc.inc.php → app/includes/seedprod_lessc.inc.php RENAMED
@@ -4,7 +4,7 @@
4
  * lessphp v0.3.8
5
  * http://leafo.net/lessphp
6
  *
7
- * LESS css compiler, adapted from http://seed_csp4_lesscss.org
8
  *
9
  * Copyright 2012, Leaf Corcoran <leafot@gmail.com>
10
  * Licensed under MIT or GPLv3, see LICENSE
@@ -15,29 +15,29 @@
15
  * The less compiler and parser.
16
  *
17
  * Converting LESS to CSS is a three stage process. The incoming file is parsed
18
- * by `seed_csp4_lessc_parser` into a syntax tree, then it is compiled into another tree
19
- * representing the CSS structure by `seed_csp4_lessc`. The CSS tree is fed into a
20
- * formatter, like `seed_csp4_lessc_formatter` which then outputs CSS as a string.
21
  *
22
  * During the first compile, all values are *reduced*, which means that their
23
  * types are brought to the lowest form before being dump as strings. This
24
  * handles math equations, variable dereferences, and the like.
25
  *
26
- * The `parse` function of `seed_csp4_lessc` is the entry point.
27
  *
28
  * In summary:
29
  *
30
- * The `seed_csp4_lessc` class creates an intstance of the parser, feeds it LESS code,
31
  * then transforms the resulting tree to a CSS tree. This class also holds the
32
  * evaluation context, such as all available mixins and variables at any given
33
  * time.
34
  *
35
- * The `seed_csp4_lessc_parser` class is only concerned with parsing its input.
36
  *
37
- * The `seed_csp4_lessc_formatter` takes a CSS tree, and dumps it to a formatted string,
38
  * handling things like indentation.
39
  */
40
- class seed_csp4_lessc {
41
  static public $VERSION = "v0.3.8";
42
  static protected $TRUE = array("keyword", "true");
43
  static protected $FALSE = array("keyword", "false");
@@ -177,7 +177,7 @@ class seed_csp4_lessc {
177
  * Compiling the block involves pushing a fresh environment on the stack,
178
  * and iterating through the props, compiling each one.
179
  *
180
- * See seed_csp4_lessc::compileProp()
181
  *
182
  */
183
  protected function compileBlock($block) {
@@ -591,7 +591,7 @@ class seed_csp4_lessc {
591
 
592
  // check for a rest
593
  $last = end($args);
594
- if ($last[0] == "rest") {
595
  $rest = array_slice($values, count($args) - 1);
596
  $this->set($last[1], $this->reduce(array("list", " ", $rest)));
597
  }
@@ -651,7 +651,7 @@ class seed_csp4_lessc {
651
  if ($suffix !== null &&
652
  $subProp[0] == "assign" &&
653
  is_string($subProp[1]) &&
654
- $subProp[1]{0} != $this->vPrefix)
655
  {
656
  $subProp[2] = array(
657
  'list', ' ',
@@ -1543,9 +1543,9 @@ class seed_csp4_lessc {
1543
  // inject array of unparsed strings into environment as variables
1544
  protected function injectVariables($args) {
1545
  $this->pushEnv();
1546
- $parser = new seed_csp4_lessc_parser($this, __METHOD__);
1547
  foreach ($args as $name => $strValue) {
1548
- if ($name{0} != '@') $name = '@'.$name;
1549
  $parser->count = 0;
1550
  $parser->buffer = (string)$strValue;
1551
  if (!$parser->propertyValue($value)) {
@@ -1720,7 +1720,7 @@ class seed_csp4_lessc {
1720
  }
1721
 
1722
  protected function makeParser($name) {
1723
- $parser = new seed_csp4_lessc_parser($this, $name);
1724
  $parser->writeComments = $this->preserveComments;
1725
 
1726
  return $parser;
@@ -1731,11 +1731,11 @@ class seed_csp4_lessc {
1731
  }
1732
 
1733
  protected function newFormatter() {
1734
- $className = "seed_csp4_lessc_formatter_lessjs";
1735
  if (!empty($this->formatterName)) {
1736
  if (!is_string($this->formatterName))
1737
  return $this->formatterName;
1738
- $className = "seed_csp4_lessc_formatter_$this->formatterName";
1739
  }
1740
 
1741
  return new $className;
@@ -1957,7 +1957,7 @@ class seed_csp4_lessc {
1957
 
1958
  // responsible for taking a string of LESS code and converting it into a
1959
  // syntax tree
1960
- class seed_csp4_lessc_parser {
1961
  static protected $nextBlockId = 0; // used to uniquely identify blocks
1962
 
1963
  static protected $precedence = array(
@@ -2005,10 +2005,10 @@ class seed_csp4_lessc_parser {
2005
  // caches preg escaped literals
2006
  static protected $literalCache = array();
2007
 
2008
- public function __construct($seed_csp4_lessc, $sourceName = null) {
2009
  $this->eatWhiteDefault = true;
2010
  // reference to less needed for vPrefix, mPrefix, and parentSelector
2011
- $this->seed_csp4_lessc = $seed_csp4_lessc;
2012
 
2013
  $this->sourceName = $sourceName; // name used for error messages
2014
 
@@ -2016,12 +2016,12 @@ class seed_csp4_lessc_parser {
2016
 
2017
  if (!self::$operatorString) {
2018
  self::$operatorString =
2019
- '('.implode('|', array_map(array('seed_csp4_lessc', 'preg_quote'),
2020
  array_keys(self::$precedence))).')';
2021
 
2022
- $commentSingle = seed_csp4_lessc::preg_quote(self::$commentSingle);
2023
- $commentMultiLeft = seed_csp4_lessc::preg_quote(self::$commentMultiLeft);
2024
- $commentMultiRight = seed_csp4_lessc::preg_quote(self::$commentMultiRight);
2025
 
2026
  self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight;
2027
  self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais';
@@ -2071,7 +2071,7 @@ class seed_csp4_lessc_parser {
2071
  * functions represent discrete grammatical rules for the language, and
2072
  * they are able to capture the text that represents those rules.
2073
  *
2074
- * Consider the function seed_csp4_lessc::keyword(). (all parse functions are
2075
  * structured the same)
2076
  *
2077
  * The function takes a single reference argument. When calling the
@@ -2080,7 +2080,7 @@ class seed_csp4_lessc_parser {
2080
  * argument, advance the position in the buffer, and return true. If it
2081
  * fails then it won't advance the buffer and it will return false.
2082
  *
2083
- * All of these parse functions are powered by seed_csp4_lessc::match(), which behaves
2084
  * the same way, but takes a literal regular expression. Sometimes it is
2085
  * more convenient to use match instead of creating a new function.
2086
  *
@@ -2089,7 +2089,7 @@ class seed_csp4_lessc_parser {
2089
  *
2090
  * But, if some of the rules in the chain succeed before one fails, then
2091
  * the buffer position will be left at an invalid state. In order to
2092
- * avoid this, seed_csp4_lessc::seek() is used to remember and set buffer positions.
2093
  *
2094
  * Before parsing a chain, use $s = $this->seek() to remember the current
2095
  * position into $s. Then if a chain fails, use $this->seek($s) to
@@ -2201,7 +2201,7 @@ class seed_csp4_lessc_parser {
2201
  $hidden = true;
2202
  if (!isset($block->args)) {
2203
  foreach ($block->tags as $tag) {
2204
- if (!is_string($tag) || $tag{0} != $this->seed_csp4_lessc->mPrefix) {
2205
  $hidden = false;
2206
  break;
2207
  }
@@ -2246,7 +2246,7 @@ class seed_csp4_lessc_parser {
2246
  protected function isDirective($dirname, $directives) {
2247
  // TODO: cache pattern in parser
2248
  $pattern = implode("|",
2249
- array_map(array("seed_csp4_lessc", "preg_quote"), $directives));
2250
  $pattern = '/^(-[a-z-]+-)?(' . $pattern . ')$/i';
2251
 
2252
  return preg_match($pattern, $dirname);
@@ -2255,8 +2255,8 @@ class seed_csp4_lessc_parser {
2255
  protected function fixTags($tags) {
2256
  // move @ tags out of variable namespace
2257
  foreach ($tags as &$tag) {
2258
- if ($tag{0} == $this->seed_csp4_lessc->vPrefix)
2259
- $tag[0] = $this->seed_csp4_lessc->mPrefix;
2260
  }
2261
  return $tags;
2262
  }
@@ -2271,7 +2271,7 @@ class seed_csp4_lessc_parser {
2271
 
2272
  if (count($values) == 0) return false;
2273
 
2274
- $exps = seed_csp4_lessc::compressList($values, ' ');
2275
  return true;
2276
  }
2277
 
@@ -2369,7 +2369,7 @@ class seed_csp4_lessc_parser {
2369
 
2370
  if (count($values) == 0) return false;
2371
 
2372
- $value = seed_csp4_lessc::compressList($values, ', ');
2373
  return true;
2374
  }
2375
 
@@ -2531,7 +2531,7 @@ class seed_csp4_lessc_parser {
2531
  $this->eatWhiteDefault = false;
2532
 
2533
  $stop = array("'", '"', "@{", $end);
2534
- $stop = array_map(array("seed_csp4_lessc", "preg_quote"), $stop);
2535
  // $stop[] = self::$commentMulti;
2536
 
2537
  if (!is_null($rejectStrs)) {
@@ -2609,7 +2609,7 @@ class seed_csp4_lessc_parser {
2609
 
2610
  // look for either ending delim , escape, or string interpolation
2611
  $patt = '([^\n]*?)(@\{|\\\\|' .
2612
- seed_csp4_lessc::preg_quote($delim).')';
2613
 
2614
  $oldWhite = $this->eatWhiteDefault;
2615
  $this->eatWhiteDefault = false;
@@ -2655,7 +2655,7 @@ class seed_csp4_lessc_parser {
2655
  $this->keyword($var) &&
2656
  $this->literal("}", false))
2657
  {
2658
- $out = array("variable", $this->seed_csp4_lessc->vPrefix . $var);
2659
  $this->eatWhiteDefault = $oldWhite;
2660
  if ($this->eatWhiteDefault) $this->whitespace();
2661
  return true;
@@ -2810,7 +2810,7 @@ class seed_csp4_lessc_parser {
2810
  if ($this->whitespace()) $value .= " ";
2811
 
2812
  // escape parent selector, (yuck)
2813
- $value = str_replace($this->seed_csp4_lessc->parentSelector, "$&$", $value);
2814
  return true;
2815
  }
2816
 
@@ -2910,13 +2910,13 @@ class seed_csp4_lessc_parser {
2910
  // consume a less variable
2911
  protected function variable(&$name) {
2912
  $s = $this->seek();
2913
- if ($this->literal($this->seed_csp4_lessc->vPrefix, false) &&
2914
  ($this->variable($sub) || $this->keyword($name)))
2915
  {
2916
  if (!empty($sub)) {
2917
  $name = array('variable', $sub);
2918
  } else {
2919
- $name = $this->seed_csp4_lessc->vPrefix.$name;
2920
  }
2921
  return true;
2922
  }
@@ -2948,7 +2948,7 @@ class seed_csp4_lessc_parser {
2948
  protected function end() {
2949
  if ($this->literal(';')) {
2950
  return true;
2951
- } elseif ($this->count == strlen($this->buffer) || $this->buffer{$this->count} == '}') {
2952
  // if there is end of file or a closing block next then we don't need a ;
2953
  return true;
2954
  }
@@ -3031,7 +3031,7 @@ class seed_csp4_lessc_parser {
3031
  }
3032
 
3033
  if (!isset(self::$literalCache[$what])) {
3034
- self::$literalCache[$what] = seed_csp4_lessc::preg_quote($what);
3035
  }
3036
 
3037
  return $this->match(self::$literalCache[$what], $m, $eatWhitespace);
@@ -3071,7 +3071,7 @@ class seed_csp4_lessc_parser {
3071
  } else {
3072
  $validChars = $allowNewline ? "." : "[^\n]";
3073
  }
3074
- if (!$this->match('('.$validChars.'*?)'.seed_csp4_lessc::preg_quote($what), $m, !$until)) return false;
3075
  if ($until) $this->count -= strlen($what); // give back $what
3076
  $out = $m[1];
3077
  return true;
@@ -3241,7 +3241,7 @@ class seed_csp4_lessc_parser {
3241
 
3242
  }
3243
 
3244
- class seed_csp4_lessc_formatter_classic {
3245
  public $indentChar = " ";
3246
 
3247
  public $break = "\n";
@@ -3336,7 +3336,7 @@ class seed_csp4_lessc_formatter_classic {
3336
  }
3337
  }
3338
 
3339
- class seed_csp4_lessc_formatter_compressed extends seed_csp4_lessc_formatter_classic {
3340
  public $disableSingle = true;
3341
  public $open = "{";
3342
  public $selectorSeparator = ",";
@@ -3349,7 +3349,7 @@ class seed_csp4_lessc_formatter_compressed extends seed_csp4_lessc_formatter_cla
3349
  }
3350
  }
3351
 
3352
- class seed_csp4_lessc_formatter_lessjs extends seed_csp4_lessc_formatter_classic {
3353
  public $disableSingle = true;
3354
  public $breakSelectors = true;
3355
  public $assignSeparator = ": ";
4
  * lessphp v0.3.8
5
  * http://leafo.net/lessphp
6
  *
7
+ * LESS css compiler, adapted from http://seedprod_lesscss.org
8
  *
9
  * Copyright 2012, Leaf Corcoran <leafot@gmail.com>
10
  * Licensed under MIT or GPLv3, see LICENSE
15
  * The less compiler and parser.
16
  *
17
  * Converting LESS to CSS is a three stage process. The incoming file is parsed
18
+ * by `seedprod_lessc_parser` into a syntax tree, then it is compiled into another tree
19
+ * representing the CSS structure by `seedprod_lessc`. The CSS tree is fed into a
20
+ * formatter, like `seedprod_lessc_formatter` which then outputs CSS as a string.
21
  *
22
  * During the first compile, all values are *reduced*, which means that their
23
  * types are brought to the lowest form before being dump as strings. This
24
  * handles math equations, variable dereferences, and the like.
25
  *
26
+ * The `parse` function of `seedprod_lessc` is the entry point.
27
  *
28
  * In summary:
29
  *
30
+ * The `seedprod_lessc` class creates an intstance of the parser, feeds it LESS code,
31
  * then transforms the resulting tree to a CSS tree. This class also holds the
32
  * evaluation context, such as all available mixins and variables at any given
33
  * time.
34
  *
35
+ * The `seedprod_lessc_parser` class is only concerned with parsing its input.
36
  *
37
+ * The `seedprod_lessc_formatter` takes a CSS tree, and dumps it to a formatted string,
38
  * handling things like indentation.
39
  */
40
+ class seedprod_lessc {
41
  static public $VERSION = "v0.3.8";
42
  static protected $TRUE = array("keyword", "true");
43
  static protected $FALSE = array("keyword", "false");
177
  * Compiling the block involves pushing a fresh environment on the stack,
178
  * and iterating through the props, compiling each one.
179
  *
180
+ * See seedprod_lessc::compileProp()
181
  *
182
  */
183
  protected function compileBlock($block) {
591
 
592
  // check for a rest
593
  $last = end($args);
594
+ if (is_array($last) && $last[0] == "rest") {
595
  $rest = array_slice($values, count($args) - 1);
596
  $this->set($last[1], $this->reduce(array("list", " ", $rest)));
597
  }
651
  if ($suffix !== null &&
652
  $subProp[0] == "assign" &&
653
  is_string($subProp[1]) &&
654
+ $subProp[1][0] != $this->vPrefix)
655
  {
656
  $subProp[2] = array(
657
  'list', ' ',
1543
  // inject array of unparsed strings into environment as variables
1544
  protected function injectVariables($args) {
1545
  $this->pushEnv();
1546
+ $parser = new seedprod_lessc_parser($this, __METHOD__);
1547
  foreach ($args as $name => $strValue) {
1548
+ if ($name[0] != '@') $name = '@'.$name;
1549
  $parser->count = 0;
1550
  $parser->buffer = (string)$strValue;
1551
  if (!$parser->propertyValue($value)) {
1720
  }
1721
 
1722
  protected function makeParser($name) {
1723
+ $parser = new seedprod_lessc_parser($this, $name);
1724
  $parser->writeComments = $this->preserveComments;
1725
 
1726
  return $parser;
1731
  }
1732
 
1733
  protected function newFormatter() {
1734
+ $className = "seedprod_lessc_formatter_lessjs";
1735
  if (!empty($this->formatterName)) {
1736
  if (!is_string($this->formatterName))
1737
  return $this->formatterName;
1738
+ $className = "seedprod_lessc_formatter_$this->formatterName";
1739
  }
1740
 
1741
  return new $className;
1957
 
1958
  // responsible for taking a string of LESS code and converting it into a
1959
  // syntax tree
1960
+ class seedprod_lessc_parser {
1961
  static protected $nextBlockId = 0; // used to uniquely identify blocks
1962
 
1963
  static protected $precedence = array(
2005
  // caches preg escaped literals
2006
  static protected $literalCache = array();
2007
 
2008
+ public function __construct($seedprod_lessc, $sourceName = null) {
2009
  $this->eatWhiteDefault = true;
2010
  // reference to less needed for vPrefix, mPrefix, and parentSelector
2011
+ $this->seedprod_lessc = $seedprod_lessc;
2012
 
2013
  $this->sourceName = $sourceName; // name used for error messages
2014
 
2016
 
2017
  if (!self::$operatorString) {
2018
  self::$operatorString =
2019
+ '('.implode('|', array_map(array('seedprod_lessc', 'preg_quote'),
2020
  array_keys(self::$precedence))).')';
2021
 
2022
+ $commentSingle = seedprod_lessc::preg_quote(self::$commentSingle);
2023
+ $commentMultiLeft = seedprod_lessc::preg_quote(self::$commentMultiLeft);
2024
+ $commentMultiRight = seedprod_lessc::preg_quote(self::$commentMultiRight);
2025
 
2026
  self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight;
2027
  self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais';
2071
  * functions represent discrete grammatical rules for the language, and
2072
  * they are able to capture the text that represents those rules.
2073
  *
2074
+ * Consider the function seedprod_lessc::keyword(). (all parse functions are
2075
  * structured the same)
2076
  *
2077
  * The function takes a single reference argument. When calling the
2080
  * argument, advance the position in the buffer, and return true. If it
2081
  * fails then it won't advance the buffer and it will return false.
2082
  *
2083
+ * All of these parse functions are powered by seedprod_lessc::match(), which behaves
2084
  * the same way, but takes a literal regular expression. Sometimes it is
2085
  * more convenient to use match instead of creating a new function.
2086
  *
2089
  *
2090
  * But, if some of the rules in the chain succeed before one fails, then
2091
  * the buffer position will be left at an invalid state. In order to
2092
+ * avoid this, seedprod_lessc::seek() is used to remember and set buffer positions.
2093
  *
2094
  * Before parsing a chain, use $s = $this->seek() to remember the current
2095
  * position into $s. Then if a chain fails, use $this->seek($s) to
2201
  $hidden = true;
2202
  if (!isset($block->args)) {
2203
  foreach ($block->tags as $tag) {
2204
+ if (!is_string($tag) || $tag[0] != $this->seedprod_lessc->mPrefix) {
2205
  $hidden = false;
2206
  break;
2207
  }
2246
  protected function isDirective($dirname, $directives) {
2247
  // TODO: cache pattern in parser
2248
  $pattern = implode("|",
2249
+ array_map(array("seedprod_lessc", "preg_quote"), $directives));
2250
  $pattern = '/^(-[a-z-]+-)?(' . $pattern . ')$/i';
2251
 
2252
  return preg_match($pattern, $dirname);
2255
  protected function fixTags($tags) {
2256
  // move @ tags out of variable namespace
2257
  foreach ($tags as &$tag) {
2258
+ if ($tag[0] == $this->seedprod_lessc->vPrefix)
2259
+ $tag[0] = $this->seedprod_lessc->mPrefix;
2260
  }
2261
  return $tags;
2262
  }
2271
 
2272
  if (count($values) == 0) return false;
2273
 
2274
+ $exps = seedprod_lessc::compressList($values, ' ');
2275
  return true;
2276
  }
2277
 
2369
 
2370
  if (count($values) == 0) return false;
2371
 
2372
+ $value = seedprod_lessc::compressList($values, ', ');
2373
  return true;
2374
  }
2375
 
2531
  $this->eatWhiteDefault = false;
2532
 
2533
  $stop = array("'", '"', "@{", $end);
2534
+ $stop = array_map(array("seedprod_lessc", "preg_quote"), $stop);
2535
  // $stop[] = self::$commentMulti;
2536
 
2537
  if (!is_null($rejectStrs)) {
2609
 
2610
  // look for either ending delim , escape, or string interpolation
2611
  $patt = '([^\n]*?)(@\{|\\\\|' .
2612
+ seedprod_lessc::preg_quote($delim).')';
2613
 
2614
  $oldWhite = $this->eatWhiteDefault;
2615
  $this->eatWhiteDefault = false;
2655
  $this->keyword($var) &&
2656
  $this->literal("}", false))
2657
  {
2658
+ $out = array("variable", $this->seedprod_lessc->vPrefix . $var);
2659
  $this->eatWhiteDefault = $oldWhite;
2660
  if ($this->eatWhiteDefault) $this->whitespace();
2661
  return true;
2810
  if ($this->whitespace()) $value .= " ";
2811
 
2812
  // escape parent selector, (yuck)
2813
+ $value = str_replace($this->seedprod_lessc->parentSelector, "$&$", $value);
2814
  return true;
2815
  }
2816
 
2910
  // consume a less variable
2911
  protected function variable(&$name) {
2912
  $s = $this->seek();
2913
+ if ($this->literal($this->seedprod_lessc->vPrefix, false) &&
2914
  ($this->variable($sub) || $this->keyword($name)))
2915
  {
2916
  if (!empty($sub)) {
2917
  $name = array('variable', $sub);
2918
  } else {
2919
+ $name = $this->seedprod_lessc->vPrefix.$name;
2920
  }
2921
  return true;
2922
  }
2948
  protected function end() {
2949
  if ($this->literal(';')) {
2950
  return true;
2951
+ } elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') {
2952
  // if there is end of file or a closing block next then we don't need a ;
2953
  return true;
2954
  }
3031
  }
3032
 
3033
  if (!isset(self::$literalCache[$what])) {
3034
+ self::$literalCache[$what] = seedprod_lessc::preg_quote($what);
3035
  }
3036
 
3037
  return $this->match(self::$literalCache[$what], $m, $eatWhitespace);
3071
  } else {
3072
  $validChars = $allowNewline ? "." : "[^\n]";
3073
  }
3074
+ if (!$this->match('('.$validChars.'*?)'.seedprod_lessc::preg_quote($what), $m, !$until)) return false;
3075
  if ($until) $this->count -= strlen($what); // give back $what
3076
  $out = $m[1];
3077
  return true;
3241
 
3242
  }
3243
 
3244
+ class seedprod_lessc_formatter_classic {
3245
  public $indentChar = " ";
3246
 
3247
  public $break = "\n";
3336
  }
3337
  }
3338
 
3339
+ class seedprod_lessc_formatter_compressed extends seedprod_lessc_formatter_classic {
3340
  public $disableSingle = true;
3341
  public $open = "{";
3342
  public $selectorSeparator = ",";
3349
  }
3350
  }
3351
 
3352
+ class seedprod_lessc_formatter_lessjs extends seedprod_lessc_formatter_classic {
3353
  public $disableSingle = true;
3354
  public $breakSelectors = true;
3355
  public $assignSeparator = ": ";
{framework → app/includes}/skin.php RENAMED
@@ -4,7 +4,7 @@
4
  *
5
  * @since 6.0.0
6
  *
7
- * @package ComingSoon
8
  * @subpackage Upgrader Skin
9
  * @author Chris Christoff
10
  */
@@ -14,7 +14,7 @@ if (! defined('ABSPATH')) {
14
  exit;
15
  }
16
 
17
- class ComingSoon_Skin extends WP_Upgrader_Skin
18
  {
19
 
20
  /**
4
  *
5
  * @since 6.0.0
6
  *
7
+ * @package SeedProd
8
  * @subpackage Upgrader Skin
9
  * @author Chris Christoff
10
  */
14
  exit;
15
  }
16
 
17
+ class SeedProd_Skin extends WP_Upgrader_Skin
18
  {
19
 
20
  /**
app/includes/skin53.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Skin class.
4
+ *
5
+ * @since 6.0.0
6
+ *
7
+ * @package SeedProd
8
+ * @subpackage Upgrader Skin
9
+ * @author Chris Christoff
10
+ */
11
+
12
+ // Exit if accessed directly
13
+ if (! defined('ABSPATH')) {
14
+ exit;
15
+ }
16
+
17
+ class SeedProd_Skin extends WP_Upgrader_Skin
18
+ {
19
+
20
+ /**
21
+ * Primary class constructor.
22
+ *
23
+ * @since 6.0.0
24
+ *
25
+ * @param array $args Empty array of args (we will use defaults).
26
+ */
27
+ public function __construct($args = array())
28
+ {
29
+ parent::__construct();
30
+ }
31
+
32
+ /**
33
+ * Set the upgrader object and store it as a property in the parent class.
34
+ *
35
+ * @since 6.0.0
36
+ *
37
+ * @param object $upgrader The upgrader object (passed by reference).
38
+ */
39
+ public function set_upgrader(&$upgrader)
40
+ {
41
+ if (is_object($upgrader)) {
42
+ $this->upgrader =& $upgrader;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Set the upgrader result and store it as a property in the parent class.
48
+ *
49
+ * @since 6.0.0
50
+ *
51
+ * @param object $result The result of the install process.
52
+ */
53
+ public function set_result($result)
54
+ {
55
+ $this->result = $result;
56
+ }
57
+
58
+ /**
59
+ * Empty out the header of its HTML content and only check to see if it has
60
+ * been performed or not.
61
+ *
62
+ * @since 6.0.0
63
+ */
64
+ public function header()
65
+ {
66
+ }
67
+
68
+ /**
69
+ * Empty out the footer of its HTML contents.
70
+ *
71
+ * @since 6.0.0
72
+ */
73
+ public function footer()
74
+ {
75
+ }
76
+
77
+ /**
78
+ * Instead of outputting HTML for errors, json_encode the errors and send them
79
+ * back to the Ajax script for processing.
80
+ *
81
+ * @since 6.0.0
82
+ *
83
+ * @param array $errors Array of errors with the install process.
84
+ */
85
+ public function error($errors)
86
+ {
87
+ if (! empty($errors)) {
88
+ echo json_encode(array( 'error' => esc_html__('There was an error installing the addon. Please try again.', 'coming-soon') ));
89
+ die;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Empty out the feedback method to prevent outputting HTML strings as the install
95
+ * is progressing.
96
+ *
97
+ * @since 6.0.0
98
+ *
99
+ * @param string $string The feedback string.
100
+ */
101
+ public function feedback($string, ...$args)
102
+ {
103
+ }
104
+ }
app/includes/upgrade.php ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Ajax handler for grabbing the upgrade url.
5
+ */
6
+ function seedprod_lite_upgrade_license()
7
+ {
8
+ check_ajax_referer('seedprod_lite_upgrade_license');
9
+
10
+ // Check for permissions.
11
+ if (! current_user_can('install_plugins')) {
12
+ wp_send_json_error(array( 'message' => esc_html__('You are not allowed to install plugins.', 'coming-soon') ));
13
+ }
14
+
15
+ // Check for local dev sites
16
+ // if (seedprod_lite_is_dev_url(home_url())) {
17
+ // wp_send_json_success(array(
18
+ // 'url' => 'https://www.seedprod.com/docs/go-lite-pro/#manual-upgrade',
19
+ // ));
20
+ // }
21
+
22
+ // Check for a license key.
23
+ $license_key = seedprod_lite_get_api_key();
24
+ if (empty($license_key)) {
25
+ wp_send_json_error(array( 'message' => esc_html__('You are not licensed.', 'coming-soon') ));
26
+ }
27
+
28
+ $url = esc_url_raw(
29
+ add_query_arg(
30
+ array(
31
+ 'page' => 'seedprod_lite',
32
+ ),
33
+ admin_url('admin.php')
34
+ )
35
+ );
36
+
37
+ // Verify pro version is not installed.
38
+ $active = activate_plugin('seedprod-pro/seedprod-pro.php', false, false, true);
39
+ if (! is_wp_error($active)) {
40
+ // Deactivate plugin.
41
+ //deactivate_plugins(plugin_basename('seedprod-pro/seedprod-pro.php'));
42
+ wp_send_json_error(array(
43
+ 'message' => esc_html__('Pro version is already installed.', 'coming-soon'),
44
+ 'reload' => true,
45
+ ));
46
+ }
47
+
48
+ // Verifiy licnese key
49
+ $license = seedprod_lite_save_api_key($license_key);
50
+
51
+ // Redirect.
52
+ $oth = hash('sha512', wp_rand());
53
+ update_option('seedprod_one_click_upgrade', $oth);
54
+ $version = SEEDPROD_VERSION;
55
+ $file = $license['body']->download_link;
56
+ $siteurl = admin_url();
57
+ $endpoint = admin_url('admin-ajax.php');
58
+ $redirect = admin_url('admin.php?page=seedprod_lite#/settings');
59
+
60
+ $url = add_query_arg(array(
61
+ 'api_token' => get_option('seedprod_api_token'),
62
+ 'license_key' => $license_key,
63
+ 'oth' => $oth,
64
+ 'endpoint' => $endpoint,
65
+ 'version' => $version,
66
+ 'siteurl' => $siteurl,
67
+ 'redirect' => rawurldecode(base64_encode($redirect)),
68
+ 'file' => rawurldecode(base64_encode($file)),
69
+ ), SEEDPROD_WEB_API_URL.'upgrade-free-to-pro');
70
+
71
+ wp_send_json_success(array(
72
+ 'url' => $url,
73
+ ));
74
+ }
75
+
76
+ add_action('wp_ajax_seedprod_upgrade_license', 'seedprod_upgrade_license');
77
+
78
+ /**
79
+ * Endpoint for one-click upgrade.
80
+ */
81
+ function seedprod_lite_run_one_click_upgrade()
82
+ {
83
+ $error = esc_html__('Could not install upgrade. Please download from seedprod.com and install manually.', 'coming-soon');
84
+
85
+ // verify params present (oth & download link).
86
+ $post_oth = ! empty($_REQUEST['oth']) ? sanitize_text_field($_REQUEST['oth']) : '';
87
+ $post_url = ! empty($_REQUEST['file']) ? $_REQUEST['file'] : '';
88
+ if (empty($post_oth) || empty($post_url)) {
89
+ wp_send_json_error($error);
90
+ }
91
+ // Verify oth.
92
+ $oth = get_option('seedprod_one_click_upgrade');
93
+ if (empty($oth)) {
94
+ wp_send_json_error($error);
95
+ }
96
+ if (! hash_equals($oth, $post_oth)) {
97
+ wp_send_json_error($error);
98
+ }
99
+ // Delete so cannot replay.
100
+ delete_option('seedprod_one_click_upgrade');
101
+ // Set the current screen to avoid undefined notices.
102
+ set_current_screen('insights_page_seedprod_settings');
103
+ // Prepare variables.
104
+ $url = esc_url_raw(
105
+ add_query_arg(
106
+ array(
107
+ 'page' => 'seedprod-settings',
108
+ ),
109
+ admin_url('admin.php')
110
+ )
111
+ );
112
+ // Verify pro not activated.
113
+ if (is_plugin_active('seedprod-pro/seedprod-pro.php')) {
114
+ deactivate_plugins(plugin_basename('seedprod/seedprod.php'));
115
+ wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
116
+ }
117
+ // Verify pro not installed.
118
+ $active = activate_plugin('seedprod-pro/seedprod-pro.php', $url, false, true);
119
+ if (! is_wp_error($active)) {
120
+ deactivate_plugins(plugin_basename('seedprod/seedprod.php'));
121
+ wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
122
+ }
123
+
124
+ $creds = request_filesystem_credentials($url, '', false, false, null);
125
+ // Check for file system permissions.
126
+ if (false === $creds) {
127
+ wp_send_json_error($error);
128
+ }
129
+ if (! WP_Filesystem($creds)) {
130
+ wp_send_json_error($error);
131
+ }
132
+ // We do not need any extra credentials if we have gotten this far, so let's install the plugin.
133
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
134
+
135
+ if (version_compare($wp_version,'5.3.0') >= 0) {
136
+ require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin53.php';
137
+ }else{
138
+ require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin.php';
139
+ }
140
+ // Do not allow WordPress to search/download translations, as this will break JS output.
141
+ remove_action('upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20);
142
+ // Create the plugin upgrader with our custom skin.
143
+ $installer = new Plugin_Upgrader($skin = new SeedProd_Skin());
144
+ // Error check.
145
+ if (! method_exists($installer, 'install')) {
146
+ wp_send_json_error($error);
147
+ }
148
+
149
+ // Check license key.
150
+ $license_key = seedprod_lite_get_api_key();
151
+ if (empty($license_key)) {
152
+ wp_send_json_error(new WP_Error('403', esc_html__('You are not licensed.', 'coming-soon')));
153
+ }
154
+
155
+ $license = seedprod_lite_save_api_key($license_key);
156
+ if (empty($license['body']->download_link)) {
157
+ wp_send_json_error();
158
+ }
159
+
160
+ $installer->install($license['body']->download_link); // phpcs:ignore
161
+ // Flush the cache and return the newly installed plugin basename.
162
+ wp_cache_flush();
163
+ if ($installer->plugin_info()) {
164
+ $plugin_basename = $installer->plugin_info();
165
+
166
+ // Deactivate the lite version first.
167
+ deactivate_plugins(plugin_basename('seedprod/seedprod.php'));
168
+
169
+ // Activate the plugin silently.
170
+ $activated = activate_plugin($plugin_basename, '', false, true);
171
+ if (! is_wp_error($activated)) {
172
+ wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
173
+ } else {
174
+ // Reactivate the lite plugin if pro activation failed.
175
+ activate_plugin(plugin_basename('seedprod/seedprod.php'), '', false, true);
176
+ wp_send_json_error(esc_html__('Pro version installed but needs to be activated from the Plugins page inside your WordPress admin.', 'coming-soon'));
177
+ }
178
+ }
179
+ wp_send_json_error($error);
180
+ }
app/license.php ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /**
5
+ * Welcome Page On Activation
6
+ */
7
+ add_action('admin_init', 'seedprod_lite_welcome_screen_do_activation_redirect');
8
+
9
+ function seedprod_lite_welcome_screen_do_activation_redirect()
10
+ {
11
+ // Check PHP Version
12
+ if (version_compare(phpversion(), '5.3.3', '<=')) {
13
+ wp_die(__("The minimum required version of PHP to run this plugin is PHP Version 5.3.3<br>Please contact your hosting company and ask them to upgrade this site's php verison.", 'coming-soon'), __("Upgrade PHP", 'coming-soon'), 200);
14
+ }
15
+
16
+ // Bail if no activation redirect
17
+ if (! get_transient('_seedprod_welcome_screen_activation_redirect')) {
18
+ return;
19
+ }
20
+
21
+ // Delete the redirect transient
22
+ delete_transient('_seedprod_welcome_screen_activation_redirect');
23
+
24
+ // Bail if activating from network, or bulk
25
+ if (is_network_admin() || isset($_GET['activate-multi'])) {
26
+ return;
27
+ }
28
+
29
+ // Redirect to our page
30
+ wp_safe_redirect(add_query_arg(array( 'page' => 'seedprod_lite' ), admin_url('admin.php')).'#/welcome');
31
+ }
32
+
33
+
34
+
35
+ /**
36
+ * Save API Key
37
+ */
38
+ function seedprod_lite_save_api_key($api_key = null)
39
+ {
40
+ if (check_ajax_referer('seedprod_nonce', '_wpnonce', false) || ! empty($api_key)) {
41
+ if (empty($api_key)) {
42
+ $api_key = $_POST['api_key'];
43
+ }
44
+
45
+ if (defined('SEEDPROD_LOCAL_JS')) {
46
+ $slug = 'seedprod-coming-soon-pro-5/seedprod-coming-soon-pro-5.php';
47
+ }else{
48
+ $slug = SEEDPROD_SLUG;
49
+ }
50
+
51
+ // Validate the api key
52
+ $data = array(
53
+ 'action' => 'info',
54
+ 'license_key' => $api_key,
55
+ 'token' => get_option('seedprod_token'),
56
+ 'wp_version' => get_bloginfo('version'),
57
+ 'domain' => home_url(),
58
+ 'installed_version' => SEEDPROD_VERSION,
59
+ 'slug' => $slug,
60
+ );
61
+
62
+ if (empty($data['license_key'])) {
63
+ $response = array(
64
+ 'status'=> 'false',
65
+ 'msg'=> __('License Key is Required.','')
66
+ );
67
+ wp_send_json($response);
68
+ exit;
69
+ }
70
+
71
+ $headers = array();
72
+
73
+ // Build the headers of the request.
74
+ $headers = wp_parse_args(
75
+ $headers,
76
+ array(
77
+ 'Accept' => 'application/json',
78
+ )
79
+ );
80
+
81
+ $url = SEEDPROD_API_URL.'update';
82
+ $response = wp_remote_post($url, array('body' => $data,'headers'=> $headers));
83
+
84
+ $status_code = wp_remote_retrieve_response_code($response);
85
+
86
+ if (is_wp_error($response)) {
87
+ $response = array(
88
+ 'status'=> 'false',
89
+ 'ip'=> seedprod_lite_get_ip(),
90
+ 'msg'=> $response->get_error_message(),
91
+ );
92
+ wp_send_json($response);
93
+ }
94
+
95
+ if ($status_code != 200) {
96
+ $response = array(
97
+ 'status'=> 'false',
98
+ 'ip'=> seedprod_lite_get_ip(),
99
+ 'msg'=> $response['response']['message'],
100
+ );
101
+ wp_send_json($response);
102
+ }
103
+
104
+
105
+ $body = wp_remote_retrieve_body($response);
106
+
107
+ if (!empty($body)) {
108
+ $body = json_decode($body);
109
+ }
110
+
111
+
112
+ if (!empty($body->valid) && $body->valid === true) {
113
+ // Store API key
114
+ update_option('seedprod_user_id', $body->user_id);
115
+ update_option('seedprod_api_token', $body->api_token);
116
+ update_option('seedprod_api_key', $data['license_key']);
117
+ update_option('seedprod_api_message', $body->message);
118
+ update_option('seedprod_license_name', $body->license_name);
119
+ update_option('seedprod_a', true);
120
+ update_option('seedprod_per', $body->per);
121
+ $response = array(
122
+ 'status'=> 'true',
123
+ 'license_name'=>sprintf( __("You currently have the <strong>%s</strong> license.", 'coming-soon' ),$body->license_name),
124
+ 'msg'=>$body->message,
125
+ 'body'=> $body,
126
+ );
127
+ } elseif(isset($body->valid) && $body->valid === false) {
128
+ $api_msg = __('Invalid License Key.', 'coming-soon');
129
+ if ($body->message != 'Unauthenticated.') {
130
+ $api_msg = $body->message;
131
+ }
132
+ update_option('seedprod_license_name', '');
133
+ update_option('seedprod_api_token', '');
134
+ update_option('seedprod_api_key', '');
135
+ update_option('seedprod_api_message', $api_msg);
136
+ update_option('seedprod_a', false);
137
+ update_option('seedprod_per', '');
138
+ $response = array(
139
+ 'status'=> 'false',
140
+ 'license_name'=>'',
141
+ 'msg'=> $api_msg,
142
+ 'body'=> $body,
143
+ );
144
+ }
145
+
146
+ // Send Response
147
+ if (!empty($_POST['api_key'])) {
148
+ wp_send_json($response);
149
+ exit;
150
+ } else {
151
+ return $response;
152
+ }
153
+ }
154
+ }
155
+
app/load_controller.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once(SEEDPROD_PLUGIN_PATH.'app/cpt.php');
4
+ require_once(SEEDPROD_PLUGIN_PATH.'app/admin-bar-menu.php');
5
+ require_once(SEEDPROD_PLUGIN_PATH.'app/notifications.php');
6
+ require_once(SEEDPROD_PLUGIN_PATH.'app/render-lp.php');
7
+ require_once(SEEDPROD_PLUGIN_PATH.'app/render-csp-mm.php');
8
+ //require_once(SEEDPROD_PLUGIN_PATH.'app/render-domain-mapping.php');
9
+ require_once(SEEDPROD_PLUGIN_PATH.'app/backwards/backwards_compatibility.php');
10
+ require_once(SEEDPROD_PLUGIN_PATH.'app/subscriber.php');
11
+ add_action( 'plugins_loaded', array( 'seedprod_lite_Render', 'get_instance' ) );
12
+ add_action( 'plugins_loaded', array( 'SeedProd_Notifications', 'get_instance' ) );
13
+
14
+ if (is_admin()) {
15
+ // Admin Only
16
+ require_once(SEEDPROD_PLUGIN_PATH.'app/settings.php');
17
+ require_once(SEEDPROD_PLUGIN_PATH.'app/lpage.php');
18
+ //require_once(SEEDPROD_PLUGIN_PATH.'app/subscriber.php');
19
+ require_once(SEEDPROD_PLUGIN_PATH.'app/functions-addons.php');
20
+ if(SEEDPROD_BUILD == 'lite'){
21
+ require_once(SEEDPROD_PLUGIN_PATH.'app/review.php');
22
+ }
23
+ } else {
24
+ // Public only
25
+ }
26
+
27
+
28
+ // Load on Public and Admin
29
+ require_once(SEEDPROD_PLUGIN_PATH.'app/license.php');
30
+ require_once(SEEDPROD_PLUGIN_PATH.'app/functions-utils.php');
31
+ require_once(SEEDPROD_PLUGIN_PATH.'app/includes/upgrade.php');
32
+
33
+
34
+
35
+
36
+
37
+ function seedprod_lite_admin_js (){
38
+ // Make Admin upgrade submenu link target _blank
39
+ echo "
40
+ <script>
41
+ jQuery( document ).ready(function($) {
42
+ $('#sp-lite-admin-menu__upgrade').parent().attr('target','_blank');
43
+ });
44
+ </script>
45
+ ";
46
+
47
+ if(!empty($_GET['post'])){
48
+ $id = $_GET['post'];
49
+ $is_seedprod = 0;
50
+ if (!empty(get_post_meta($id, '_seedprod_page', true))) {
51
+ $is_seedprod = get_post_meta($id, '_seedprod_page', true);
52
+ }
53
+ $post_type = get_post_type($id);
54
+ // $edit_link = sprintf(
55
+ // '<a href="%1$s">%2$s</a>',
56
+ // admin_url().'admin.php?page=seedprod_lite_builder&id='.$id.'#/setup/'.$id,
57
+ // __( 'Edit with SeedProd', 'seedprod' );
58
+
59
+ $setup_url = admin_url().'admin.php?page=seedprod_lite_builder&id='.$id.'#/template/'.$id;
60
+ $edit_url = admin_url().'admin.php?page=seedprod_lite_builder&id='.$id.'#/setup/'.$id;
61
+ if ($post_type == 'page') {
62
+ echo "
63
+ <script>
64
+ jQuery( document ).ready(function($) {
65
+ var checkExist = setInterval(function() {
66
+ if ($('.edit-post-header-toolbar').length) {
67
+ if(1 === ".$is_seedprod."){
68
+ $('.block-editor-block-list__layout').hide().after('<div style=\"text-align:center; \">This page is managed by SeedProd<br><a href=\"".$edit_url."\" class=\"button button-primary\" style=\"display:flex; align-items:center; justify-content:center; margin:auto; width:200px; font-size: 18px; margin-top:10px\"><img src=\"".SEEDPROD_PLUGIN_URL."public/svg/admin-bar-icon.svg\" style=\"margin-right:7px; margin-top:5px\"> Edit with SeedProd</a></div>');
69
+
70
+ }
71
+ clearInterval(checkExist);
72
+ }
73
+ if ($('#postdivrich').length) {
74
+ if(1 === ".$is_seedprod."){
75
+ $('#postdivrich').html('<div style=\"text-align:center; \">This page is managed by SeedProd<br><a href=\"".$edit_url."\" class=\"button button-primary\" style=\"display:flex; align-items:center; justify-content:center; margin:auto; width:220px; font-size: 16px; margin-top:10px\"><img src=\"".SEEDPROD_PLUGIN_URL."public/svg/admin-bar-icon.svg\" style=\"margin-right:7px; margin-top:5px\"> Edit with SeedProd</a></div>');
76
+ clearInterval(checkExist);
77
+ }
78
+ }
79
+ }, 100);
80
+
81
+ });
82
+ </script>
83
+ ";
84
+ }
85
+ }
86
+ }
87
+ add_action( 'admin_footer', 'seedprod_lite_admin_js' );
app/lpage.php ADDED
@@ -0,0 +1,937 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Get lpage Lists
4
+ */
5
+ function seedprod_lite_get_lpage_list()
6
+ {
7
+ if (check_ajax_referer('seedprod_nonce')) {
8
+ global $wpdb;
9
+
10
+ $tablename = $wpdb->prefix . 'posts';
11
+ $meta_tablename = $wpdb->prefix . 'postmeta';
12
+
13
+ $sql = "SELECT id,post_title as name,meta_value as uuid FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
14
+
15
+ $sql .= ' WHERE post_status != "trash" AND post_type = "page" AND meta_key = "_seedprod_page_uuid"' ;
16
+ $response = $wpdb->get_results($sql);
17
+
18
+ wp_send_json($response);
19
+ }
20
+ }
21
+
22
+ /* Check Slug */
23
+
24
+ function seedprod_lite_slug_exists()
25
+ {
26
+ if (check_ajax_referer('seedprod_lite_slug_exists')) {
27
+ $post_name = $_POST['post_name'];
28
+ global $wpdb;
29
+ $tablename = $wpdb->prefix . 'posts';
30
+ $sql = "SELECT post_name FROM $tablename";
31
+ $sql .= " WHERE post_name = %s" ;
32
+ $safe_sql = $wpdb->prepare($sql, $post_name);
33
+ $result = $wpdb->get_var($safe_sql);
34
+ if (empty($result)) {
35
+ wp_send_json_success();
36
+ } else {
37
+ wp_send_json_error();
38
+ }
39
+ }
40
+ }
41
+
42
+ /*
43
+ * New lpage
44
+ */
45
+ function seedprod_lite_new_lpage()
46
+ {
47
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_template' && isset($_GET['id']) && $_GET['id'] == '0') {
48
+ // get theme code
49
+
50
+ $id = absint($_GET['id']) ;
51
+
52
+ $type = 'lp';
53
+ if (!empty($_GET['type'])) {
54
+ $type = sanitize_text_field($_GET['type']);
55
+ }
56
+
57
+ // base page settings
58
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/data-templates/basic-page.php');
59
+ $settings = json_decode($seedprod_basic_lpage);
60
+ $settings->is_new = true;
61
+ $settings->page_type = $type;
62
+
63
+
64
+ $cpt = 'page';
65
+ if ($type == 'cs' || $type == 'mm' || $type == 'p404') {
66
+ $cpt = 'seedprod';
67
+ }
68
+
69
+ $slug = '';
70
+ if ($type == 'cs') {
71
+ $slug= 'sp-cs';
72
+ $lpage_name = $slug;
73
+ $settings->no_conflict_mode = true;
74
+ }
75
+ if ($type == 'mm') {
76
+ $slug= 'sp-mm';
77
+ $lpage_name = $slug;
78
+ $settings->no_conflict_mode = true;
79
+ }
80
+ if ($type == 'p404') {
81
+ $slug= 'sp-p404';
82
+ $lpage_name = $slug;
83
+ $settings->no_conflict_mode = true;
84
+ }
85
+ $settings = wp_json_encode($settings);
86
+
87
+ // Insert
88
+ $id = wp_insert_post(
89
+ array(
90
+ 'comment_status' => 'closed',
91
+ 'ping_status' => 'closed',
92
+ 'post_content'=>'',
93
+ 'post_status' => 'draft',
94
+ 'post_title'=>'seedprod',
95
+ 'post_type'=> $cpt,
96
+ 'post_name'=>$slug,
97
+ 'post_content_filtered'=> $settings,
98
+ 'meta_input' => array(
99
+ '_seedprod_page' => true,
100
+ '_seedprod_page_uuid' => wp_generate_uuid4(),
101
+ )),
102
+ true
103
+ );
104
+
105
+
106
+ // record coming soon page_id
107
+ if ($type == 'cs') {
108
+ update_option('seedprod_coming_soon_page_id', $id);
109
+ }
110
+ if ($type == 'mm') {
111
+ update_option('seedprod_maintenance_mode_page_id', $id);
112
+ }
113
+ if ($type == 'p404') {
114
+ update_option('seedprod_404_page_id', $id);
115
+ }
116
+
117
+ if ($type == 'lp') {
118
+ if (is_numeric($id)) {
119
+ $lpage_name = esc_html__('New Page', 'coming-soon') . " (ID #$id)";
120
+ } else {
121
+ $lpage_name = esc_html__('New Page', 'coming-soon');
122
+ }
123
+ }
124
+
125
+
126
+
127
+ wp_update_post(
128
+ array(
129
+ 'ID' => $id,
130
+ 'post_title'=>$lpage_name,
131
+ )
132
+ );
133
+
134
+
135
+ wp_redirect('admin.php?page=seedprod_lite_template&id='.$id.'#/template/'.$id);
136
+ exit();
137
+ }
138
+ }
139
+
140
+ /*
141
+ * lpage Datatable
142
+ */
143
+ function seedprod_lite_lpage_datatable()
144
+ {
145
+ if (check_ajax_referer('seedprod_nonce')) {
146
+ $data = array('');
147
+ $current_page = 1;
148
+ if (!empty(absint($_GET['current_page']))) {
149
+ $current_page = absint($_GET['current_page']);
150
+ }
151
+ $per_page=10;
152
+
153
+ $filter = null;
154
+ if (!empty($_GET['filter'])) {
155
+ $filter = sanitize_text_field($_GET['filter']);
156
+ if ($filter == 'all') {
157
+ $filter = null;
158
+ }
159
+ }
160
+
161
+ if (!empty($_GET['s'])) {
162
+ $filter = null;
163
+ }
164
+
165
+ // Get records
166
+ global $wpdb;
167
+ $tablename = $wpdb->prefix . 'posts';
168
+ $meta_tablename = $wpdb->prefix . 'postmeta';
169
+
170
+ $sql = "SELECT * FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
171
+
172
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page"' ;
173
+
174
+ if (! empty($filter)) {
175
+ if (esc_sql($filter) == 'published') {
176
+ $sql .= ' AND post_status = "publish" ';
177
+ }
178
+ if (esc_sql($filter) == 'drafts') {
179
+ $sql .= ' AND post_status = "draft" ';
180
+ }
181
+ if (esc_sql($filter) == 'scheduled') {
182
+ $sql .= ' AND post_status = "future" ';
183
+ }
184
+ if (esc_sql($filter) == 'archived') {
185
+ $sql .= ' AND post_status = "trash" ';
186
+ }
187
+ } else {
188
+ $sql .= 'AND post_status != "trash"';
189
+ }
190
+
191
+ if (!empty($_GET['s'])) {
192
+ $sql .= ' AND post_title LIKE "%'. esc_sql(trim(sanitize_text_field($_GET['s']))) .'%"';
193
+ }
194
+
195
+ if (! empty($_GET['orderby'])) {
196
+ $orderby = $_GET['orderby'];
197
+ if ($orderby == 'date') {
198
+ $orderby = 'post_modified';
199
+ }
200
+ if ($orderby == 'name') {
201
+ $orderby = 'post_title';
202
+ }
203
+ $sql .= ' ORDER BY ' . esc_sql($orderby);
204
+
205
+ if (sanitize_text_field($_GET['order']) === 'desc') {
206
+ $order = 'DESC';
207
+ } else {
208
+ $order = 'ASC';
209
+ }
210
+ $sql .= ' ' . $order;
211
+ } else {
212
+ $sql .= ' ORDER BY id DESC';
213
+ }
214
+
215
+ $sql .= " LIMIT $per_page";
216
+ if (empty($_POST['s'])) {
217
+ $sql .= ' OFFSET ' . ($current_page - 1) * $per_page;
218
+ }
219
+
220
+ $results = $wpdb->get_results($sql);
221
+
222
+ $data = array();
223
+ foreach ($results as $v) {
224
+
225
+ // Format Date
226
+ //$modified_at = date(get_option('date_format').' '.get_option('time_format'), strtotime($v->post_modified));
227
+
228
+ $modified_at = date("Y/m/d", strtotime($v->post_modified));
229
+
230
+ $posted_at = date("Y/m/d", strtotime($v->post_date));
231
+
232
+ $url = get_permalink($v->ID);
233
+
234
+ if ($v->post_status == 'publish') {
235
+ $status = 'Published';
236
+ }
237
+ if ($v->post_status == 'draft') {
238
+ $status = 'Draft';
239
+ }
240
+ if ($v->post_status == 'future') {
241
+ $status = 'Scheduled';
242
+ }
243
+ if ($v->post_status == 'trash') {
244
+ $status = 'Trash';
245
+ }
246
+
247
+ // Load Data
248
+
249
+ $data[] = array(
250
+ 'id' => $v->ID,
251
+ 'name' => $v->post_title,
252
+ 'status' => $status,
253
+ 'post_status' => $v->post_status,
254
+ 'url' => $url,
255
+ 'modified_at' => $modified_at,
256
+ 'posted_at' => $posted_at,
257
+ );
258
+ }
259
+
260
+ $totalitems = seedprod_lite_lpage_get_data_total($filter);
261
+ $views = seedprod_lite_lpage_get_views($filter);
262
+
263
+ $response = array(
264
+ 'rows' => $data,
265
+ 'totalitems' => $totalitems,
266
+ 'totalpages' => ceil($totalitems/10),
267
+ 'currentpage'=> $current_page,
268
+ 'views'=>$views,
269
+ );
270
+
271
+ wp_send_json($response);
272
+ }
273
+ }
274
+
275
+
276
+ function seedprod_lite_lpage_get_data_total($filter = null)
277
+ {
278
+ global $wpdb;
279
+
280
+ $tablename = $wpdb->prefix . 'posts';
281
+ $meta_tablename = $wpdb->prefix . 'postmeta';
282
+
283
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
284
+
285
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page"' ;
286
+
287
+ if (! empty($filter)) {
288
+ if (esc_sql($filter) == 'published') {
289
+ $sql .= ' AND post_status = "publish" ';
290
+ }
291
+ if (esc_sql($filter) == 'drafts') {
292
+ $sql .= ' AND post_status = "draft" ';
293
+ }
294
+ if (esc_sql($filter) == 'scheduled') {
295
+ $sql .= ' AND post_status = "future" ';
296
+ }
297
+ if (esc_sql($filter) == 'archived') {
298
+ $sql .= ' AND post_status = "trash" ';
299
+ }
300
+ } else {
301
+ $sql .= ' AND post_status != "trash"';
302
+ }
303
+
304
+ if (!empty($_GET['s'])) {
305
+ $sql .= ' AND post_name LIKE "%'. esc_sql(sanitize_text_field($_GET['s'])) .'%"';
306
+ }
307
+
308
+ $results = $wpdb->get_var($sql);
309
+ return $results;
310
+ }
311
+
312
+
313
+
314
+ function seedprod_lite_lpage_get_views($filter = null)
315
+ {
316
+ $views = array();
317
+ $current = (!empty($filter) ? $filter : 'all');
318
+ $current = sanitize_text_field($current);
319
+
320
+ global $wpdb;
321
+ $tablename = $wpdb->prefix . 'posts';
322
+ $meta_tablename = $wpdb->prefix . 'postmeta';
323
+
324
+ //All link
325
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
326
+
327
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND post_status != "trash" AND meta_key = "_seedprod_page"' ;
328
+
329
+ $results = $wpdb->get_var($sql);
330
+ $class = ($current == 'all' ? ' class="current"' :'');
331
+ $all_url = remove_query_arg('filter');
332
+ $views['all'] = $results;
333
+
334
+ //Published link
335
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
336
+
337
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page" AND post_status = "publish" ' ;
338
+
339
+ $results = $wpdb->get_var($sql);
340
+ $running_url = add_query_arg('filter', 'publish');
341
+ $class = ($current == 'publish' ? ' class="current"' :'');
342
+ $views['published'] = $results;
343
+
344
+ //Drafts link
345
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
346
+
347
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page" AND post_status = "draft" ' ;
348
+
349
+ $results = $wpdb->get_var($sql);
350
+ $upcoming_url = add_query_arg('filter', 'drafts');
351
+ $class = ($current == 'drafts' ? ' class="current"' :'');
352
+ $views['drafts'] = $results;
353
+
354
+ //Scheduled link
355
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
356
+
357
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page" AND post_status = "future" ' ;
358
+
359
+ $results = $wpdb->get_var($sql);
360
+ $ended_url = add_query_arg('filter', 'scheduled');
361
+ $class = ($current == 'scheduled' ? ' class="current"' :'');
362
+ $views['scheduled'] = $results;
363
+
364
+ //Trash link
365
+ $sql = "SELECT count(*) FROM $tablename p LEFT JOIN $meta_tablename pm ON (pm.post_id = p.ID)";
366
+
367
+ $sql .= ' WHERE 1 = 1 AND post_type = "page" AND meta_key = "_seedprod_page" AND post_status = "trash" ' ;
368
+
369
+ $results = $wpdb->get_var($sql);
370
+ $archived_url = add_query_arg('filter', 'archived');
371
+ $class = ($current == 'archived' ? ' class="current"' :'');
372
+ $views['archived'] = $results;
373
+
374
+ return $views;
375
+ }
376
+
377
+ /*
378
+ * Duplicate lpage
379
+ */
380
+
381
+ function seedprod_lite_duplicate_lpage()
382
+ {
383
+ if (check_ajax_referer('seedprod_lite_duplicate_lpage')) {
384
+ $id = '';
385
+ if (!empty($_GET['id'])) {
386
+ $id = absint($_GET['id']);
387
+ }
388
+
389
+ $post = get_post($id);
390
+ $json = json_decode($post->post_content_filtered);
391
+
392
+ $args = array(
393
+ 'comment_status' => 'closed',
394
+ 'ping_status' => 'closed',
395
+ 'post_content' => $post->post_content,
396
+ 'post_content_filtered' => $post->post_content_filtered,
397
+ 'post_status' => 'draft',
398
+ 'post_title' => $post->post_title .'- Copy',
399
+ 'post_type' => 'page',
400
+ 'post_name'=> '',
401
+ 'meta_input' => array(
402
+ '_seedprod_page' => true,
403
+ '_seedprod_page_uuid' => wp_generate_uuid4(),
404
+ )
405
+ );
406
+
407
+ $new_post_id = wp_insert_post($args, true);
408
+ // reinsert json due to slash bug
409
+ global $wpdb;
410
+ $tablename = $wpdb->prefix . 'posts';
411
+ $wpdb->update(
412
+ $tablename,
413
+ array(
414
+ 'post_content_filtered' => $json, // string
415
+ ),
416
+ array( 'ID' => $new_post_id ),
417
+ array(
418
+ '%s', // value1
419
+ ),
420
+ array( '%d' )
421
+ );
422
+
423
+
424
+
425
+ wp_send_json(array('status'=> true));
426
+ }
427
+ }
428
+
429
+
430
+ /*
431
+ * Archive Selected lpage
432
+ */
433
+ function seedprod_lite_archive_selected_lpages()
434
+ {
435
+ if (check_ajax_referer('seedprod_lite_archive_selected_lpages')) {
436
+ if (current_user_can('list_users')) {
437
+ if (!empty($_GET['ids'])) {
438
+ $ids = array_map('intval', explode(",", $_GET['ids']));
439
+ foreach ($ids as $v) {
440
+ wp_trash_post($v);
441
+ }
442
+
443
+ wp_send_json(array('status'=> true));
444
+ }
445
+ }
446
+ }
447
+ }
448
+
449
+ /*
450
+ * Unarchive Selected lpage
451
+ */
452
+ function seedprod_lite_unarchive_selected_lpages($ids)
453
+ {
454
+ if (check_ajax_referer('seedprod_lite_unarchive_selected_lpages')) {
455
+ if (current_user_can('list_users')) {
456
+ if (!empty($_GET['ids'])) {
457
+ $ids = array_map('intval', explode(",", $_GET['ids']));
458
+ foreach ($ids as $v) {
459
+ wp_untrash_post($v);
460
+ }
461
+
462
+ wp_send_json(array('status'=> true));
463
+ }
464
+ }
465
+ }
466
+ }
467
+
468
+ /*
469
+ * Delete Archived lpage
470
+ */
471
+ function seedprod_lite_delete_archived_lpages()
472
+ {
473
+ if (check_ajax_referer('seedprod_lite_delete_archived_lpages')) {
474
+ if (current_user_can('list_users')) {
475
+ if (!empty($_GET['ids'])) {
476
+ $ids = array_map('intval', explode(",", $_GET['ids']));
477
+ foreach ($ids as $v) {
478
+ wp_delete_post($v);
479
+ }
480
+
481
+ wp_send_json(array('status'=> true));
482
+ }
483
+ }
484
+ }
485
+ }
486
+
487
+ /*
488
+ * Start lpage Now
489
+ */
490
+
491
+ function seedprod_lite_start_lpage()
492
+ {
493
+ if (check_ajax_referer('seedprod_lite_start_lpage')) {
494
+ $id = '';
495
+ if (!empty($_GET['id'])) {
496
+ $id = absint($_GET['id']);
497
+ }
498
+
499
+ global $wpdb;
500
+ $tablename = $wpdb->prefix . 'seedprod_pages';
501
+ $sql = "SELECT * FROM $tablename";
502
+ $sql .= " WHERE id = %d" ;
503
+ $safe_sql = $wpdb->prepare($sql, $id);
504
+ $result = $wpdb->get_row($safe_sql);
505
+
506
+ $starts = gmdate('Y-m-d H:i:s', time() - 60);
507
+
508
+ $settings = json_decode($result->settings);
509
+ $settings->starts = $starts;
510
+ $settings = wp_json_encode($settings);
511
+
512
+ $r = $wpdb->update(
513
+ $tablename,
514
+ array(
515
+ 'starts' => $starts,
516
+ 'settings' => $settings,
517
+ ),
518
+ array('id' => $id),
519
+ array(
520
+ '%s',
521
+ '%s',
522
+ ),
523
+ array( '%d' )
524
+ );
525
+
526
+ wp_send_json(array('status'=> true));
527
+ }
528
+ }
529
+
530
+
531
+ /*
532
+ * End lpage Now
533
+ */
534
+
535
+ function seedprod_lite_end_lpage()
536
+ {
537
+ if (check_ajax_referer('seedprod_lite_end_lpage')) {
538
+ $id = '';
539
+ if (!empty($_GET['id'])) {
540
+ $id = absint($_GET['id']);
541
+ }
542
+
543
+ global $wpdb;
544
+ $tablename = $wpdb->prefix . 'seedprod_pages';
545
+ $sql = "SELECT * FROM $tablename";
546
+ $sql .= " WHERE id = %d" ;
547
+ $safe_sql = $wpdb->prepare($sql, $id);
548
+ $result = $wpdb->get_row($safe_sql);
549
+
550
+ $ends = gmdate('Y-m-d H:i:s', time() - 60);
551
+
552
+ $settings = json_decode($result->settings);
553
+ $settings->ends = $ends;
554
+ $settings = wp_json_encode($settings);
555
+
556
+ $r = $wpdb->update(
557
+ $tablename,
558
+ array(
559
+ 'ends' => $ends,
560
+ 'settings' => $settings,
561
+ ),
562
+ array('id' => $id),
563
+ array(
564
+ '%s',
565
+ '%s',
566
+ ),
567
+ array( '%d' )
568
+ );
569
+ wp_send_json(array('status'=> true));
570
+ }
571
+ }
572
+
573
+
574
+ /*
575
+ * enable Disable lpage
576
+ */
577
+
578
+ function seedprod_lite_enable_disable_lpage()
579
+ {
580
+ if (check_ajax_referer('seedprod_lite_enable_disable_lpage')) {
581
+ $id = '';
582
+ if (!empty($_GET['id'])) {
583
+ $id = absint($_GET['id']);
584
+ }
585
+
586
+ $active = true;
587
+ if (!empty($_GET['current_state']) && $_GET['current_state'] != 'true') {
588
+ $active = false;
589
+ }
590
+
591
+
592
+ // Get the lpage of the id passed in.
593
+ global $wpdb;
594
+ $tablename = $wpdb->prefix . 'seedprod_pages';
595
+ $r = $wpdb->update(
596
+ $tablename,
597
+ array(
598
+ 'active' => $active,
599
+ ),
600
+ array('id' => $id),
601
+ array(
602
+ '%d',
603
+
604
+ ),
605
+ array( '%d' )
606
+ );
607
+ if ($active) {
608
+ wp_send_json(array('status'=> 'enabled'));
609
+ } else {
610
+ wp_send_json(array('status'=> 'disabled'));
611
+ }
612
+ }
613
+ }
614
+
615
+
616
+
617
+ /*
618
+ * Save/Update lpage
619
+ */
620
+
621
+ function seedprod_lite_save_lpage()
622
+ {
623
+ if (check_ajax_referer('seedprod_nonce')) {
624
+
625
+
626
+ // Validate
627
+ $errors = array();
628
+ // if(!is_email($_POST['product']['email'])){
629
+ // $errors['email'] = 'Please enter a valid email.';
630
+ // }
631
+
632
+ if (!empty($errors)) {
633
+ header('Content-Type: application/json');
634
+ header('Status: 400 Bad Request');
635
+ echo json_encode($errors);
636
+ exit();
637
+ }
638
+
639
+ // clean slashes post
640
+ $sp_post = $_POST;
641
+ $sp_post['lpage_html'] = stripslashes_deep($sp_post['lpage_html']);
642
+
643
+ // remove uneeded code
644
+ $html = $sp_post['lpage_html'];
645
+ if (!empty($html)) {
646
+ $html = preg_replace("'<span class=\"sp-hidden\">START-REMOVE</span>[\s\S]+?<span class=\"sp-hidden\">END-REMOVE</span>'", '', $html);
647
+ $html = preg_replace("'<span class=\"sp-hidden\">START-COUNTDOWN-REMOVE</span>[\s\S]+?<span class=\"sp-hidden\">END-COUNTDOWN-REMOVE</span>'", '', $html);
648
+ $html = preg_replace("'seedprod-jscode'", 'script', $html);
649
+ $html = preg_replace("'<!---->'", '', $html);
650
+ $html = preg_replace("'<!--'", '', $html);
651
+ $html = preg_replace("'-->'", '', $html);
652
+ $html = preg_replace("'contenteditable=\"true\"'", '', $html);
653
+ $html = preg_replace("'spellcheck=\"false\"'", '', $html);
654
+ }
655
+
656
+ // sanitize post
657
+ $lpage_id = absint($sp_post['lpage_id']);
658
+ $lpage_name = sanitize_text_field($sp_post['lpage_name']);
659
+ $lpage_slug = sanitize_title($sp_post['lpage_slug']);
660
+ $lpage_post_status = sanitize_title($sp_post['lpage_post_status']);
661
+ $settings = $sp_post['settings'];
662
+ //$settings = wp_json_encode(json_decode( stripslashes($sp_post['settings'])));
663
+
664
+ // set update array
665
+ $update = array();
666
+ $update['ID'] = $lpage_id;
667
+ if (!empty($lpage_name)) {
668
+ $update['post_title'] = $lpage_name;
669
+ }
670
+ if (!empty($lpage_slug)) {
671
+ $update['post_name'] = $lpage_slug;
672
+ }
673
+ if (!empty($lpage_post_status)) {
674
+ $update['post_status'] = $lpage_post_status;
675
+ }
676
+ if (!empty($html)) {
677
+ $update['post_content'] = $html;
678
+ }
679
+ if (!empty($settings)) {
680
+ $update['post_content_filtered'] = $settings;
681
+ }
682
+
683
+ $status = '';
684
+ if (empty($lpage_id)) {
685
+ wp_die();
686
+ } else {
687
+ if (!empty($sp_post['save_type']) && $sp_post['save_type'] == 'autosave') {
688
+ $update['post_ID'] = $lpage_id;
689
+ $id = wp_create_post_autosave($update);
690
+ $status = 'autosave';
691
+ } else {
692
+ wp_update_post($update);
693
+ $status = 'updated';
694
+ }
695
+ }
696
+
697
+
698
+ $response = array(
699
+ 'status' => $status,
700
+ 'id' => $lpage_id ,
701
+ //'revisions' => $revisions,
702
+ );
703
+
704
+ // clear any migration flags
705
+ $i = get_option('seedprod_csp4_imported');
706
+ if ($i == 1) {
707
+ delete_option('seedprod_csp4_imported');
708
+ delete_option('seedprod_show_csp4');
709
+ update_option('seedprod_csp4_migrated', true);
710
+ }
711
+
712
+ $i = get_option('seedprod_cspv5_imported');
713
+ if ($i == 1) {
714
+ delete_option('seedprod_cspv5_imported');
715
+ delete_option('seedprod_show_cspv5');
716
+ update_option('seedprod_cspv5_migrated', true);
717
+ }
718
+
719
+ // migrate landong page if id exists
720
+ $settings = json_decode(stripslashes_deep($sp_post['settings']));
721
+ if (!empty($settings->cspv5_id)) {
722
+ $cspv5_id = $settings->cspv5_id;
723
+ global $wpdb;
724
+ $tablename = $wpdb->prefix . 'cspv5_pages';
725
+ $r = $wpdb->update(
726
+ $tablename,
727
+ array(
728
+ 'meta' => 'migrated',
729
+ ),
730
+ array( 'id' => $cspv5_id ),
731
+ array(
732
+ '%s',
733
+ ),
734
+ array( '%d' )
735
+ );
736
+ }
737
+
738
+ wp_send_json($response);
739
+ }
740
+ }
741
+
742
+ function seedprod_lite_get_revisisons()
743
+ {
744
+ $lpage_id = absint($_POST['lpage_id']);
745
+ $revisions = wp_get_post_revisions($lpage_id, array('numberposts'=>50));
746
+ foreach ($revisions as $v) {
747
+ $v->time_ago = human_time_diff(strtotime($v->post_date_gmt));
748
+ $v->post_date_formated = date('M j \a\t '.get_option('time_format'), strtotime($v->post_date));
749
+ $authordata = get_userdata($v->post_author);
750
+ $v->author_name = $authordata->data->user_nicename;
751
+ $v->author_email = md5($authordata->data->user_email);
752
+ unset($v->post_content);
753
+
754
+ // $created_at = date(get_option('date_format').' '.get_option('time_format'), strtotime($v->post_date));
755
+ }
756
+ $revisions = array_values($revisions);
757
+
758
+ $response = array(
759
+ 'id' => $lpage_id ,
760
+ 'revisions' => $revisions,
761
+ );
762
+
763
+
764
+
765
+ wp_send_json($response);
766
+ }
767
+
768
+
769
+
770
+
771
+ function seedprod_lite_get_utc_offset()
772
+ {
773
+ if (check_ajax_referer('seedprod_lite_get_utc_offset')) {
774
+ $_POST = stripslashes_deep($_POST);
775
+
776
+ $timezone = sanitize_text_field($_POST['timezone']);
777
+ $ends = sanitize_text_field($_POST['ends']);
778
+ $ends_time = sanitize_text_field($_POST['ends_time']);
779
+
780
+ //$ends = substr($ends, 0, strpos($ends, 'T'));
781
+ $ends = $ends .' '. $ends_time;
782
+ $ends_timestamp = strtotime($ends. ' '.$timezone);
783
+ $ends_utc = date('Y-m-d H:i:s', $ends_timestamp);
784
+
785
+ // countdown status
786
+ $countdown_status = '';
787
+ if (!empty($starts_utc) && time() < strtotime($starts_utc." UTC")) {
788
+ $countdown_status = __('Starts in', 'coming-soon').' '.human_time_diff(time(), $starts_timestamp);
789
+ } elseif (!empty($ends_utc) && time() > strtotime($ends_utc." UTC")) {
790
+ $countdown_status = __('Ended', 'coming-soon').' '.human_time_diff(time(), $ends_timestamp).' ago';
791
+ }
792
+
793
+
794
+ $response = array(
795
+ 'ends_timestamp' => $ends_timestamp,
796
+ 'countdown_status' => $countdown_status,
797
+ );
798
+
799
+ wp_send_json($response);
800
+ }
801
+ }
802
+
803
+
804
+
805
+ /*
806
+ * Save/Update lpages Template
807
+ */
808
+
809
+ function seedprod_lite_save_template()
810
+ {
811
+ // get template code and set name and slug
812
+ if (check_ajax_referer('seedprod_nonce')) {
813
+ $_POST = stripslashes_deep($_POST);
814
+
815
+ $status = false;
816
+ $lpage_id = null;
817
+
818
+ if (empty(absint($_POST['lpage_id']))) {
819
+ // shouldn't get here
820
+ $response = array(
821
+ 'status' => $status,
822
+ 'id' => $lpage_id,
823
+ 'code' => '',
824
+ );
825
+
826
+ wp_send_json($response, 403);
827
+ } else {
828
+ $lpage_id = absint($_POST['lpage_id']);
829
+ $template_id = absint($_POST['lpage_template_id']);
830
+
831
+ if ($template_id != 99999) {
832
+ $template_code = seedprod_lite_get_template_code($template_id);
833
+ }
834
+
835
+
836
+ // merge in template code to settings
837
+ global $wpdb;
838
+ $tablename = $wpdb->prefix . 'posts';
839
+ $sql = "SELECT * FROM $tablename WHERE id = %d";
840
+ $safe_sql = $wpdb->prepare($sql, $lpage_id);
841
+ $lpage = $wpdb->get_row($safe_sql);
842
+ $settings = json_decode($lpage->post_content_filtered, true);
843
+ $settings['template_id'] = $template_id;
844
+ if ($template_id != 99999) {
845
+ unset($settings['document']);
846
+ $template_code_merge = json_decode($template_code, true);
847
+ $settings = $settings + $template_code_merge;
848
+ }
849
+
850
+ $settings['page_type'] = sanitize_text_field($_POST['lpage_type']);
851
+
852
+ // save settings
853
+ // $r = wp_update_post(
854
+ // array(
855
+ // 'ID' => $lpage_id,
856
+ // 'post_title'=>sanitize_text_field($_POST['lpage_name']),
857
+ // 'post_content_filtered'=> json_encode($settings),
858
+ // 'post_name' => sanitize_title($_POST['lpage_slug']),
859
+ // )
860
+ // );
861
+
862
+ global $wpdb;
863
+ $tablename = $wpdb->prefix . 'posts';
864
+ $r = $wpdb->update(
865
+ $tablename,
866
+ array(
867
+ 'post_title'=>sanitize_text_field($_POST['lpage_name']),
868
+ 'post_content_filtered'=> json_encode($settings),
869
+ 'post_name' => sanitize_title($_POST['lpage_slug']),
870
+ ),
871
+ array( 'ID' => $lpage_id ),
872
+ array(
873
+ '%s',
874
+ '%s',
875
+ '%s',
876
+ ),
877
+ array( '%d' )
878
+ );
879
+
880
+
881
+ $status = 'updated';
882
+ }
883
+
884
+ $response = array(
885
+ 'status' => $status,
886
+ 'id' => $lpage_id ,
887
+ 'code' => $template_code,
888
+ );
889
+
890
+ wp_send_json($response);
891
+ }
892
+ }
893
+
894
+ function seedprod_lite_get_template_code($id)
895
+ {
896
+ // Get themes
897
+ $code = '';
898
+
899
+ $apikey = get_option('seedprod_api_token');
900
+ if(empty($apikey)){
901
+ $url = SEEDPROD_API_URL.'templates-preview?id='.$id.'&filter=template_code'.'&api_token='.$apikey;
902
+ }else{
903
+ $url = SEEDPROD_API_URL.'templates?id='.$id.'&filter=template_code'.'&api_token='.$apikey;
904
+ }
905
+
906
+
907
+ $response = wp_remote_get($url);
908
+
909
+ if (is_wp_error($response)) {
910
+ $code = $response->get_error_message();
911
+ } else {
912
+ $response_code = wp_remote_retrieve_response_code($response);
913
+ if ($response_code == '200') {
914
+ //set_transient('seedprod_template_code_'.$id,$response['body'],86400);
915
+ $code = $response['body'];
916
+ //error_log($code);
917
+ } else {
918
+ $code = __("<br><br>Please enter a valid license key to access the themes. You can still proceed to create a page with the default theme.<br> <a class='seedprod_no_themes' href='?theme=0'>Click to continue &#8594;</a>", 'coming-soon');
919
+ }
920
+ }
921
+
922
+ return $code;
923
+ }
924
+
925
+ function seedprod_lite_get_namespaced_custom_css()
926
+ {
927
+ if (check_ajax_referer('seedprod_lite_get_namespaced_custom_css')) {
928
+ if(!empty($_POST['css'])){
929
+ $css = $_POST['css'];
930
+ require_once(SEEDPROD_PLUGIN_PATH.'app/includes/seedprod_lessc.inc.php');
931
+ $less = new seedprod_lessc();
932
+ $style = $less->parse('.sp-html {'.$css.'}');
933
+ echo $style;
934
+ exit();
935
+ }
936
+ }
937
+ }
{framework → app}/notifications.php RENAMED
@@ -173,9 +173,10 @@ if (!class_exists('SeedProd_Notifications')) {
173
  }
174
 
175
  // Ignore if license type does not match.
176
-
177
- $license_name = 'unlicensed';
178
-
 
179
  if (! in_array('any', $notification['type'])) {
180
  if (! in_array($license_name, $notification['type'])) {
181
  continue;
@@ -345,11 +346,11 @@ if (!class_exists('SeedProd_Notifications')) {
345
  check_ajax_referer('seedprod_lite_notification_dismiss', '_wpnonce');
346
 
347
  // Check for access and required param.
348
- if (! $this->has_access() || empty($_REQUEST['id'])) {
349
  wp_send_json_error();
350
  }
351
 
352
- $id = sanitize_text_field(wp_unslash($_REQUEST['id']));
353
  $option = $this->get_option();
354
  $type = is_numeric($id) ? 'feed' : 'events';
355
 
@@ -425,7 +426,7 @@ if (!class_exists('SeedProd_Notifications')) {
425
  //add_action( 'seedprod_notification', array( 'SeedProd_Notifications', 'update' ) );
426
  if (!function_exists('seedprod_lite_do_notifications')) {
427
 
428
- add_action('seedprod_lite_notifications', 'seedprod_lite_do_notifications');
429
  function seedprod_lite_do_notifications()
430
  {
431
  $notifications = new SeedProd_Notifications();
173
  }
174
 
175
  // Ignore if license type does not match.
176
+ $license_name = get_option('seedprod_license_name');
177
+ if (empty($license_name)) {
178
+ $license_name = 'unlicensed';
179
+ }
180
  if (! in_array('any', $notification['type'])) {
181
  if (! in_array($license_name, $notification['type'])) {
182
  continue;
346
  check_ajax_referer('seedprod_lite_notification_dismiss', '_wpnonce');
347
 
348
  // Check for access and required param.
349
+ if (! $this->has_access() || empty($_POST['id'])) {
350
  wp_send_json_error();
351
  }
352
 
353
+ $id = sanitize_text_field(wp_unslash($_POST['id']));
354
  $option = $this->get_option();
355
  $type = is_numeric($id) ? 'feed' : 'events';
356
 
426
  //add_action( 'seedprod_notification', array( 'SeedProd_Notifications', 'update' ) );
427
  if (!function_exists('seedprod_lite_do_notifications')) {
428
 
429
+ add_action('seedprod_notifications', 'seedprod_lite_do_notifications');
430
  function seedprod_lite_do_notifications()
431
  {
432
  $notifications = new SeedProd_Notifications();
app/render-csp-mm.php ADDED
@@ -0,0 +1,617 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Render Pages
4
+ */
5
+
6
+
7
+ class seedprod_lite_Render
8
+ {
9
+
10
+ /**
11
+ * Instance of this class.
12
+ *
13
+ * @since 1.0.0
14
+ *
15
+ * @var object
16
+ */
17
+ protected static $instance = null;
18
+ private $path = null;
19
+
20
+ public function __construct()
21
+ {
22
+
23
+ // exit if preview
24
+ if (!empty($_GET['post_type']) && !empty($_GET['preview']) && $_GET['post_type'] == 'seedprod' && $_GET['preview'] =='true') {
25
+ return false;
26
+ }
27
+
28
+ if (!seedprod_lite_cu('none')) {
29
+ $ts = get_option('seedprod_settings');
30
+ if (!empty($ts)) {
31
+ $seedprod_settings = json_decode($ts, true);
32
+ if (!empty($seedprod_settings)) {
33
+ extract($seedprod_settings);
34
+ }
35
+ } else {
36
+ return false;
37
+ }
38
+
39
+
40
+ // Actions & Filters if the landing page is active or being previewed
41
+ if (!empty($seedprod_settings['enable_coming_soon_mode']) || !empty($seedprod_settings['enable_maintenance_mode'])) {
42
+ if (function_exists('bp_is_active')) {
43
+ add_action('template_redirect', array(&$this,'render_comingsoon_page'), 9);
44
+ } else {
45
+ $priority = 10;
46
+ if (function_exists('tve_frontend_enqueue_scripts')) {
47
+ $priority = 8;
48
+ }
49
+ // FreshFramework
50
+ if (class_exists('ffFrameworkVersionManager')) {
51
+ $priority = 1;
52
+ }
53
+ // Seoframwork
54
+ if (function_exists('the_seo_framework_pre_load')) {
55
+ $priority = 1;
56
+ }
57
+ // jetpack subscribe
58
+ if (isset($_REQUEST['jetpack_subscriptions_widget'])) {
59
+ $priority = 11;
60
+ }
61
+
62
+ // show legacy versions if we need to
63
+ #TODO Check if coming soon mode or mm mode and import settings
64
+ $seedprod_show_csp4 = get_option('seedprod_show_csp4');
65
+ $seedprod_show_cspv5 = get_option('seedprod_show_cspv5');
66
+ if($seedprod_show_cspv5){
67
+ require_once(SEEDPROD_PLUGIN_PATH.'app/backwards/cspv5-functions.php');
68
+ add_action('template_redirect', 'seedprod_lite_cspv5_render_comingsoon_page', $priority);
69
+ }elseif($seedprod_show_csp4){
70
+ require_once(SEEDPROD_PLUGIN_PATH.'app/backwards/csp4-functions.php');
71
+ add_action('template_redirect', 'seedprod_lite_csp4_render_comingsoon_page', $priority);
72
+ }else{
73
+ add_action('template_redirect', array(&$this,'render_comingsoon_page'), $priority);
74
+ }
75
+
76
+ add_action('admin_bar_menu', 'seedprod_lite_admin_bar_menu', 999);
77
+ }
78
+ add_action('init', array( &$this, 'remove_ngg_print_scripts' ));
79
+ }
80
+ }
81
+
82
+ // enable /disable coming soon/maintenanace mode
83
+ add_action('init', array(&$this,'csp_mm_api'));
84
+ }
85
+
86
+ /**
87
+ * Return an instance of this class.
88
+ */
89
+ public static function get_instance()
90
+ {
91
+
92
+ // If the single instance hasn't been set, set it now.
93
+ if (null == self::$instance) {
94
+ self::$instance = new self;
95
+ }
96
+
97
+ return self::$instance;
98
+ }
99
+
100
+ public function remove_ngg_print_scripts()
101
+ {
102
+ if (class_exists('C_Photocrati_Resource_Manager')) {
103
+ remove_all_actions('wp_print_footer_scripts', 1);
104
+ }
105
+ }
106
+
107
+
108
+
109
+
110
+ /**
111
+ * coming soon mode/maintence mode api
112
+ * mode 0 /disable 1/ coming soon mode 2/maintenance mode
113
+ * curl http://wordpress.dev/?seed_cspv5_token=4b51fd72-69b7-4796-8d24-f3499c2ec44b&seed_cspv5_mode=1
114
+ */
115
+ public function csp_mm_api()
116
+ {
117
+ $seedprod_api_key= '';
118
+ if (defined('SEEDPROD_API_KEY')) {
119
+ $seedprod_api_key = SEEDPROD_API_KEY;
120
+ }
121
+ if (empty($seedprod_api_key)) {
122
+ $seedprod_api_key = get_option('seedprod_api_key');
123
+ }
124
+ if (!empty($seedprod_api_key)) {
125
+ if (isset($_REQUEST['seedprod_token']) && $_REQUEST['seedprod_token'] == $seedprod_api_key) {
126
+ if (isset($_REQUEST['seedprod_mode'])) {
127
+ $mode = $_REQUEST['seedprod_mode'];
128
+ $ts = get_option('seedprod_settings');
129
+ $seedprod_settings = json_decode($ts, true);
130
+
131
+
132
+ if (!empty($seedprod_settings)) {
133
+ if ($mode == 0) {
134
+
135
+ echo '0';
136
+ $seedprod_settings['enable_coming_soon_mode'] = false;
137
+ $seedprod_settings['enable_maintenance_mode'] = false;
138
+
139
+ } elseif ($mode == 1) {
140
+
141
+ echo '1';
142
+ $seedprod_settings['enable_coming_soon_mode'] = true;
143
+ $seedprod_settings['enable_maintenance_mode'] = false;
144
+
145
+ } elseif ($mode == 2) {
146
+
147
+ echo '2';
148
+ $seedprod_settings['enable_coming_soon_mode'] = false;
149
+ $seedprod_settings['enable_maintenance_mode'] = true;
150
+
151
+ }
152
+
153
+ update_option('seedprod_settings', json_encode($seedprod_settings));
154
+ exit();
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+
161
+
162
+
163
+
164
+
165
+
166
+ /**
167
+ * Display the coming soon/ maintenance mode page
168
+ */
169
+ public function render_comingsoon_page()
170
+ {
171
+
172
+ // Top Level Settings
173
+ $ts = get_option('seedprod_settings');
174
+ $seedprod_settings = json_decode($ts);
175
+
176
+ // Page Info
177
+ $page_id = 0;
178
+
179
+ //Get Coming Soon Page Id
180
+ if (!empty($seedprod_settings->enable_coming_soon_mode)) {
181
+ $page_id = get_option('seedprod_coming_soon_page_id');
182
+ } elseif (!empty($seedprod_settings->enable_maintenance_mode)) {
183
+ $page_id = get_option('seedprod_maintenance_mode_page_id');
184
+ }
185
+
186
+ if (empty($page_id)) {
187
+ wp_die('Your Coming Soon or Maintenance page needs to be setup.');
188
+ }
189
+
190
+
191
+ // Get Page
192
+ global $wpdb;
193
+ $tablename = $wpdb->prefix . 'posts';
194
+ $sql = "SELECT * FROM $tablename WHERE id= %d";
195
+ $safe_sql = $wpdb->prepare($sql, absint($page_id));
196
+ $page = $wpdb->get_row($safe_sql);
197
+
198
+ $settings = json_decode($page->post_content_filtered);
199
+
200
+ // redirect mode
201
+ $enable_redirect_mode = false;
202
+ $redirect_url = $settings->redirect_url;
203
+ if(!empty($settings->redirect_mode)){
204
+ $enable_redirect_mode = true;
205
+ }
206
+ if(empty($redirect_url)){
207
+ $enable_redirect_mode = false;
208
+ }
209
+
210
+ // Countdown Launch
211
+ // if(!empty($settings['countdown_date']) && !empty($settings['enable_countdown']) && !empty($settings['countdown_launch'])){
212
+
213
+ // $date = new DateTime($settings['countdown_date'], new DateTimeZone($settings['countdown_timezone']));
214
+ // $timestamp = $date->format('U');
215
+ // // var_dump($timestamp);
216
+ // // var_dump(time());
217
+
218
+ // // Launch this biatch
219
+ // if($timestamp <= time()){
220
+ // // Email the admin the site has been launched
221
+ // $message = __(sprintf('%s has been launched.',home_url()), 'seedprod');
222
+ // $result = wp_mail( get_option('admin_email'), __(sprintf('%s has been launched.',home_url()), 'seedprod'), $message);
223
+
224
+ // $o = get_option('seed_cspv5_settings_content');
225
+ // //var_dump($o);
226
+ // $o['status'] = 0;
227
+ // update_option('seed_cspv5_settings_content', $o);
228
+ // return false;
229
+
230
+ // }
231
+ // }
232
+
233
+
234
+ // Check for Bypass Code
235
+ $bypass_param = false;
236
+ if (!empty($_GET['bypass'])) {
237
+ $bypass_param = $_GET['bypass'];
238
+ }
239
+ if (is_multisite() || $settings->bypass_cookie) {
240
+
241
+ //Check for Client View
242
+ if (isset($_COOKIE['wp-seedprod-bypass']) && ((strtolower(basename($_SERVER['REQUEST_URI'])) == trim(strtolower($settings->bypass_phrase))) || (strtolower($bypass_param) == trim(strtolower($settings->bypass_phrase)))) && !empty($settings->bypass_phrase)) {
243
+ if (!empty($_REQUEST['return'])) {
244
+ nocache_headers();
245
+ header('Cache-Control: max-age=0, private');
246
+ header('Location: '.urldecode($_REQUEST['return'])) ;
247
+ exit;
248
+ } else {
249
+ nocache_headers();
250
+ header('Cache-Control: max-age=0, private');
251
+ header('Location: '.home_url().'?'.rand()) ;
252
+ exit;
253
+ }
254
+ }
255
+
256
+ // Don't show Coming Soon Page if client View is active
257
+ $bypass_hash = md5($settings->bypass_phrase . get_current_blog_id());
258
+ if (isset($_COOKIE['wp-seedprod-bypass']) && $_COOKIE['wp-seedprod-bypass'] == $bypass_hash && !empty($settings->bypass_phrase)) {
259
+ nocache_headers();
260
+ header('Cache-Control: max-age=0, private');
261
+ return false;
262
+ } else {
263
+ nocache_headers();
264
+ header('Cache-Control: max-age=0, private');
265
+ setcookie("wp-seedprod-bypass", "", time()-3600);
266
+ }
267
+
268
+
269
+
270
+ // If Client view is not empty and we are on the client view url set cookie.
271
+ if (!empty($settings->bypass_phrase)) {
272
+ if ((strtolower(basename($_SERVER['REQUEST_URI'])) == trim(strtolower($settings->bypass_phrase))) || (strtolower($bypass_param) == trim(strtolower($settings->bypass_phrase)))) {
273
+ if (!empty($settings->bypass_expires)) {
274
+ $exipres_in = time()+ (3600 * $settings->bypass_expires);
275
+ } else {
276
+ $exipres_in = time()+172800;
277
+ }
278
+
279
+
280
+ setcookie("wp-seedprod-bypass", $bypass_hash, $exipres_in, COOKIEPATH, COOKIE_DOMAIN, false);
281
+
282
+
283
+ if (!empty($_REQUEST['return'])) {
284
+ nocache_headers();
285
+ header('Cache-Control: max-age=0, private');
286
+ header('Location: '.urldecode($_REQUEST['return'])) ;
287
+ exit;
288
+ } else {
289
+ nocache_headers();
290
+ header('Cache-Control: max-age=0, private');
291
+ header('Location: '.home_url().'?'.rand()) ;
292
+ exit;
293
+ }
294
+ }
295
+ }
296
+ } else {
297
+
298
+
299
+ // ClientView
300
+ if (!empty($settings->bypass_phrase)) {
301
+
302
+
303
+ // If client view url is passed in log user in
304
+ if ((strtolower(basename($_SERVER['REQUEST_URI'])) == trim(strtolower($settings->bypass_phrase))) || (strtolower($bypass_param) == trim(strtolower($settings->bypass_phrase)))) {
305
+ if (!username_exists('seedprod_bypass_user_'.$settings->bypass_phrase)) {
306
+ $user_id = wp_create_user('seedprod_bypass_user_'.$settings->bypass_phrase, wp_generate_password());
307
+ $user = new WP_User($user_id);
308
+ $user->set_role('none');
309
+ }
310
+
311
+
312
+ if (!empty($settings->bypass_expires)) {
313
+ global $seedprod_bypass_expires;
314
+ $seedprod_bypass_expires = (3600 * $settings->bypass_expires);
315
+ }
316
+
317
+ $bypass_hash = md5($settings->bypass_phrase . get_current_blog_id());
318
+ setcookie("wp-seedprod-bypass", $bypass_hash, 0, COOKIEPATH, COOKIE_DOMAIN, false);
319
+
320
+
321
+ add_filter('auth_cookie_expiration', 'seedprod_lite_change_wp_cookie_logout');
322
+
323
+ // Log user in auto
324
+ $username = 'seedprod_bypass_user_'.$settings->bypass_phrase;
325
+ if (!is_user_logged_in()) {
326
+ $user = get_user_by('login', $username);
327
+ $user_id = $user->ID;
328
+ wp_set_current_user($user_id, $username);
329
+ wp_set_auth_cookie($user_id);
330
+ do_action('wp_login', $username, $user);
331
+ update_user_meta($user_id, 'show_admin_bar_front', false);
332
+ }
333
+
334
+ if (!empty($_REQUEST['return'])) {
335
+ nocache_headers();
336
+ header('Cache-Control: max-age=0, private');
337
+ header('Location: '.urldecode($_REQUEST['return'])) ;
338
+ exit;
339
+ } else {
340
+ nocache_headers();
341
+ header('Cache-Control: max-age=0, private');
342
+ header('Location: '.home_url().'?'.rand()) ;
343
+ exit;
344
+ }
345
+ }
346
+ }
347
+ }
348
+
349
+ // Check for excluded IP's
350
+ if (!empty($settings->access_by_ip)) {
351
+ $ip = seedprod_lite_get_ip();
352
+ $exclude_ips = explode("\n", $settings->access_by_ip);
353
+ if (is_array($exclude_ips) && in_array($ip, $exclude_ips)) {
354
+ return false;
355
+ }
356
+ }
357
+
358
+
359
+
360
+ if (!empty($settings->include_exclude_type) && $settings->include_exclude_type == '2') {
361
+ if (substr($settings->include_list, 0, 3) != '>>>') {
362
+
363
+ // Check for included pages
364
+ if (!empty($settings->include_list)) {
365
+ //$url = preg_replace('/\?ref=\d*/','',$_SERVER['REQUEST_URI']);
366
+ // TODO lok for when wordpress is in sub folder
367
+ $request_uri = explode('?', $_SERVER['REQUEST_URI']);
368
+ $url = rtrim(ltrim($request_uri[0], '/'), '/');
369
+
370
+ $r = array_intersect(explode('/', $url), explode('/', home_url()));
371
+
372
+ $url = str_replace($r, '', $url);
373
+
374
+ $url = str_replace('/', '', $url);
375
+ //var_dump($url);
376
+
377
+ $include_urls = explode("\n", $settings->include_list);
378
+ $include_urls = array_filter($include_urls);
379
+ $include_urls = str_replace(home_url(), "", $include_urls);
380
+ $include_urls = str_replace('/', '', $include_urls);
381
+ //$include_urls = array_filter($include_urls);
382
+ //var_dump($include_urls);
383
+ //var_dump($url);
384
+ $post_id = '';
385
+ global $post;
386
+ //var_dump($post->ID);
387
+ if (!empty($post->ID)) {
388
+ $post_id = $post->ID;
389
+ }
390
+
391
+ $show_coming_soon_page = false;
392
+
393
+ if (is_array($include_urls) && (in_array($url, $include_urls) || in_array($post_id, $include_urls))) {
394
+ $show_coming_soon_page = true;
395
+ }
396
+
397
+ // check wildcard urls
398
+ $urls_to_test = $include_urls;
399
+ $urls_to_test = str_replace(home_url(), "", $urls_to_test);
400
+ $url_uri = $_SERVER['REQUEST_URI'];
401
+ foreach ($urls_to_test as $url_to_test) {
402
+ if (strpos($url_to_test, '*') !== false) {
403
+ // Wildcard url
404
+ $url_to_test = str_replace("*", "", $url_to_test);
405
+ if (strpos($url_uri, untrailingslashit($url_to_test)) !== false) {
406
+ $show_coming_soon_page = true;
407
+ }
408
+ }
409
+ }
410
+
411
+ if ($show_coming_soon_page === false) {
412
+ return false;
413
+ }
414
+ }
415
+ } else {
416
+ // Check for included pages regex
417
+ $settings->include_list = substr($settings->include_list, 3);
418
+ if (!empty($settings->include_list) && @preg_match("/{$settings->include_list}/", $_SERVER['REQUEST_URI']) == 0) {
419
+ return false;
420
+ }
421
+ }
422
+ }
423
+
424
+ // Check for excludes pages
425
+ if (!empty($settings->include_exclude_type) && $settings->include_exclude_type == '3') {
426
+ if (substr($settings->exclude_list, 0, 3) != '>>>') {
427
+ if (!empty($settings->exclude_list)) {
428
+ //$url = preg_replace('/\?ref=\d*/','',$_SERVER['REQUEST_URI']);
429
+ $request_uri = explode('?', $_SERVER['REQUEST_URI']);
430
+ $url = rtrim(ltrim($request_uri[0], '/'), '/');
431
+
432
+ $r = array_intersect(explode('/', $url), explode('/', home_url()));
433
+
434
+ $url = str_replace($r, '', $url);
435
+
436
+ $url = str_replace('/', '', $url);
437
+ //var_dump($url);
438
+
439
+ $exclude_urls = explode("\n", $settings->exclude_list);
440
+ $exclude_urls = array_filter($exclude_urls);
441
+ $exclude_urls = str_replace(home_url(), "", $exclude_urls);
442
+ $exclude_urls = str_replace('/', '', $exclude_urls);
443
+ //$exclude_urls = array_filter($exclude_urls);
444
+ $post_id = '';
445
+ global $post;
446
+ //var_dump($post->ID);
447
+ if (!empty($post->ID)) {
448
+ $post_id = $post->ID;
449
+ }
450
+
451
+ // check exact urls
452
+ if (is_array($exclude_urls) && (in_array($url, $exclude_urls) || in_array($post_id, $exclude_urls))) {
453
+ return false;
454
+ }
455
+
456
+ // check wildcard urls
457
+ $urls_to_test = $exclude_urls;
458
+ $urls_to_test = str_replace(home_url(), "", $urls_to_test);
459
+ $url_uri = $_SERVER['REQUEST_URI'];
460
+ foreach ($urls_to_test as $url_to_test) {
461
+ if (strpos($url_to_test, '*') !== false) {
462
+ // Wildcard url
463
+ $url_to_test = str_replace("*", "", $url_to_test);
464
+ if (strpos($url_uri, untrailingslashit($url_to_test)) !== false) {
465
+ return false;
466
+ }
467
+ }
468
+ }
469
+
470
+ // Check for affiliateWP
471
+ if (class_exists('Affiliate_WP') && (strpos($url, 'ref') !== false)) {
472
+ return false;
473
+ }
474
+ }
475
+ } else {
476
+
477
+ // Check for excluded pages
478
+ $settings->exclude_list = substr($settings->exclude_list, 3);
479
+ if (!empty($settings->exclude_list) && @preg_match("/{$settings->exclude_list}/", $_SERVER['REQUEST_URI']) > 0) {
480
+ return false;
481
+ }
482
+ }
483
+ }
484
+
485
+
486
+
487
+ // Only show the Coming Soon Page on the home page
488
+ if (!empty($settings->include_exclude_type) && $settings->include_exclude_type == '1') {
489
+ if ($_SERVER['REQUEST_URI'] == "/" || substr($_SERVER['REQUEST_URI'], 0, 2) == '/?') {
490
+ } else {
491
+ return false;
492
+ }
493
+ }
494
+
495
+
496
+
497
+ // Check if redirect url and exclude
498
+ if (!empty($enable_redirect_mode) && !empty($redirect_url)) {
499
+ $r_url = parse_url($redirect_url);
500
+ if ($r_url['host'] == $_SERVER['HTTP_HOST'] && $r_url['path'] == $_SERVER['REQUEST_URI']) {
501
+ return false;
502
+ }
503
+ }
504
+
505
+ // Exit if a custom login page
506
+ if (!empty($settings->disable_default_excluded_urls)) {
507
+ if (preg_match("/login|admin|dashboard|account/i", $_SERVER['REQUEST_URI']) > 0) {
508
+ return false;
509
+ }
510
+ }
511
+
512
+
513
+ //Exit if wysija double opt-in
514
+ if (isset($emaillist) && $emaillist == 'wysija' && preg_match("/wysija/i", $_SERVER['REQUEST_URI']) > 0) {
515
+ return false;
516
+ }
517
+
518
+ if (isset($emaillist) && $emaillist == 'mailpoet' && preg_match("/mailpoet/i", $_SERVER['REQUEST_URI']) > 0) {
519
+ return false;
520
+ }
521
+
522
+ if (isset($emaillist) && $emaillist == 'mymail' && preg_match("/confirm/i", $_SERVER['REQUEST_URI']) > 0) {
523
+ return false;
524
+ }
525
+
526
+
527
+
528
+ //Limit access by role
529
+ if (!empty($settings->access_by_role) && !isset($_COOKIE['wp-seedprod-bypass'])) {
530
+ foreach ($settings->access_by_role as $v) {
531
+ $v = str_replace(' ', '', strtolower($v));
532
+ if ($v == 'anyoneloggedin' && is_user_logged_in()) {
533
+ return false;
534
+ }
535
+ if (current_user_can($v)) {
536
+ return false;
537
+ }
538
+ }
539
+ } elseif (is_user_logged_in()) {
540
+ return false;
541
+ }
542
+
543
+
544
+
545
+ // Finally check if we should show the coming soon page.
546
+ // do not cache this page
547
+ if(!defined('DONOTCACHEPAGE')) {
548
+ define('DONOTCACHEPAGE', true);
549
+ }
550
+ if(!defined('DONOTCDN')) {
551
+ define('DONOTCDN', true);
552
+ }
553
+ if(!defined('DONOTCACHEDB')) {
554
+ define('DONOTCACHEDB', true);
555
+ }
556
+ if(!defined('DONOTMINIFY')) {
557
+ define('DONOTMINIFY', true);
558
+ }
559
+ if(!defined('DONOTCACHEOBJECT')) {
560
+ define('DONOTCACHEOBJECT', true);
561
+ }
562
+ nocache_headers();
563
+
564
+ // set headers
565
+ if (!empty($seedprod_settings->enable_maintenance_mode)) {
566
+ if (empty($settings)) {
567
+ echo __("Please create your Maintenance Page in the plugin settings.", "seedprod-coming-soon-pro");
568
+ exit();
569
+ }
570
+ header('HTTP/1.1 503 Service Temporarily Unavailable');
571
+ header('Status: 503 Service Temporarily Unavailable');
572
+ header('Retry-After: 86400'); // retry in a day
573
+ } elseif (!empty($enable_redirect_mode)) {
574
+ if (!empty($redirect_url)) {
575
+ wp_redirect($redirect_url);
576
+ exit;
577
+ } else {
578
+ echo __("Please create enter your redirect url in the plugin settings.", "seedprod-coming-soon-pro");
579
+ exit();
580
+ }
581
+ } else {
582
+ if (empty($settings)) {
583
+ echo __("Please create your Coming Soon Page in the plugin settings.", "seedprod-coming-soon-pro");
584
+ exit();
585
+ }
586
+ header("HTTP/1.1 200 OK");
587
+
588
+ }
589
+
590
+ if (is_feed()) {
591
+ header('Content-Type: text/html; charset=UTF-8');
592
+ }
593
+
594
+
595
+
596
+
597
+ // keep for backwards compatability
598
+ $upload_dir = wp_upload_dir();
599
+ if (is_multisite()) {
600
+ $path = $upload_dir['baseurl'].'/seedprod/'.get_current_blog_id().'/template-'.$page_id.'/index.php';
601
+ } else {
602
+ $path = $upload_dir['basedir'].'/seedprod/template-'.$page_id.'/index.php';
603
+ }
604
+
605
+ if (!empty($page->html) && 1 == 0) {
606
+ echo $page->html;
607
+ } else {
608
+ if (file_exists($path)) {
609
+ require_once($path);
610
+ } else {
611
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/seedprod-preview.php');
612
+ }
613
+ }
614
+
615
+ exit();
616
+ }
617
+ }
app/render-domain-mapping.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //query custom db fake
3
+ $mapped = array(
4
+ 'domain'=> 'ddd.test',
5
+ 'path' => 'mypath',
6
+ 'mapped_page_id' => 5349,
7
+ );
8
+ $seedprod_page_mapped_id = null;
9
+ $seedprod_page_mapped_url = null;
10
+
11
+ // get requested url
12
+ $seedprod_page_mapped_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
13
+ $url_parsed = parse_url($seedprod_page_mapped_url);
14
+
15
+ // see if we have a match, real plugin would query db for domain, then path
16
+ if($url_parsed['host'] == $mapped['domain'] && $url_parsed['path'] == '/'.$mapped['path']){
17
+ // if we match show the mapped page
18
+ $seedprod_page_mapped_id = $mapped['mapped_page_id'];
19
+ if(function_exists('bp_is_active')){
20
+ add_action( 'template_redirect', 'seedprod_lite_mapped_domain_render',9);
21
+ }else{
22
+ add_action( 'template_redirect', 'seedprod_lite_mapped_domain_render',10);
23
+ }
24
+ }
25
+
26
+ function seedprod_lite_mapped_domain_render(){
27
+ global $seedprod_page_mapped_id;
28
+ if(!empty($seedprod_page_mapped_id)){
29
+ $has_settings = get_post_meta( $seedprod_page_mapped_id, '_seedprod_page', true );
30
+ if (!empty($has_settings)) {
31
+ // Get Page
32
+ global $wpdb;
33
+ $tablename = $wpdb->prefix . 'posts';
34
+ $sql = "SELECT * FROM $tablename WHERE id= %d";
35
+ $safe_sql = $wpdb->prepare($sql, absint($seedprod_page_mapped_id));
36
+ $page = $wpdb->get_row($safe_sql);
37
+
38
+ $settings = json_decode($page->post_content_filtered);
39
+
40
+ $template = SEEDPROD_PLUGIN_PATH.'resources/views/seedprod-preview.php';
41
+ add_action('wp_enqueue_scripts', 'seedprod_lite_deregister_styles', PHP_INT_MAX);
42
+ add_filter( 'option_siteurl', 'seedprod_lite_modify_url' );
43
+ add_filter( 'option_home', 'seedprod_lite_modify_url' );
44
+ add_filter( 'script_loader_src', 'seedprod_lite_modify_asset_url', 10, 2 );
45
+ add_filter( 'style_loader_src', 'seedprod_lite_modify_asset_url', 10, 2 );
46
+ add_filter( 'stylesheet_directory_uri', 'seedprod_lite_modify_url' );
47
+ add_filter( 'template_directory_uri', 'seedprod_lite_modify_url' );
48
+ add_filter( 'pre_get_document_title', 'seedprod_lite_replace_title', 10, 2 );
49
+ //remove_action( 'wp_head', '_wp_render_title_tag', 1 );
50
+ header("HTTP/1.1 200 OK");
51
+ $is_mapped =true;
52
+ require_once($template);
53
+
54
+ exit();
55
+ }
56
+ }
57
+ }
58
+
59
+ function seedprod_lite_modify_url( $url ) {
60
+ return seedprod_lite_replace_url( $url );
61
+ }
62
+
63
+ function seedprod_lite_modify_asset_url( $url, $handle ) {
64
+ return seedprod_lite_replace_url( $url );
65
+ }
66
+
67
+ function seedprod_lite_replace_url( $url ) {
68
+ global $seedprod_page_mapped_url;
69
+ $url_parsed = parse_url($seedprod_page_mapped_url);
70
+ $new_domain = $url_parsed['scheme'].'://'.$url_parsed['host'];
71
+ if(strpos($url,'/wp-content/') != false){
72
+ $domain = explode('/wp-content/',$url);
73
+ $url = str_replace($domain[0],$new_domain,$url);
74
+ }elseif(strpos($url,'/wp-includes/') != false){
75
+ $domain = explode('/wp-includes/',$url);
76
+ $url = str_replace($domain[0],$new_domain,$url);
77
+ }else{
78
+ $url = $new_domain;
79
+ }
80
+ return $url;
81
+ }
82
+
83
+ function seedprod_lite_replace_title($title){
84
+ global $seedprod_page_mapped_url;
85
+ $url_parsed = parse_url($seedprod_page_mapped_url);
86
+ $new_domain = $url_parsed['host'];
87
+ global $wp_query;
88
+ //if (is_404()) {
89
+ $title = $new_domain;
90
+ //}
91
+
92
+ return $title;
93
+ }
app/render-lp.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Landing Page Render
4
+ */
5
+
6
+ //add_action('template_include', 'seedprod_lppage_render');
7
+ add_filter( 'template_include','seedprod_lite_lppage_render');
8
+
9
+ function seedprod_lite_lppage_render($template){
10
+ global $post;
11
+ if(!empty($post)){
12
+ $has_settings = get_post_meta( $post->ID, '_seedprod_page', true );
13
+ if (!empty($has_settings) && $post->post_type = 'page') {
14
+
15
+ $template = SEEDPROD_PLUGIN_PATH.'resources/views/seedprod-preview.php';
16
+ add_action('wp_enqueue_scripts', 'seedprod_lite_deregister_styles', PHP_INT_MAX);
17
+ }
18
+ }
19
+ return $template;
20
+ }
21
+
22
+ // clean theme styles on our custom landing pages
23
+
24
+ function seedprod_lite_deregister_styles(){
25
+ global $wp_styles;
26
+ //var_dump($wp_styles->registered);
27
+ foreach ($wp_styles->queue as $handle) {
28
+ //echo '<br> '.$handle;
29
+ if (strpos($wp_styles->registered[$handle]->src, 'wp-content/themes') !== false) {
30
+ //var_dump($wp_styles->registered[$handle]->src);
31
+ wp_dequeue_style($handle);
32
+ wp_deregister_style($handle);
33
+ }
34
+ }
35
+ };
app/review.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Ask for some love.
4
+ *
5
+ * @package SeedProd
6
+ * @author SeedProd
7
+ * @since 1.1.3
8
+ * @license GPL-2.0+
9
+ * @copyright Copyright (c) 2018, SeedProd LLC
10
+ */
11
+ class seedprod_lite_Review {
12
+ /**
13
+ * Primary class constructor.
14
+ *
15
+ * @since 7.0.7
16
+ */
17
+ public function __construct() {
18
+ // Admin notice requesting review.
19
+ add_action( 'admin_notices', array( $this, 'review_request' ) );
20
+ add_action( 'wp_ajax_seedprod_review_dismiss', array( $this, 'review_dismiss' ) );
21
+ }
22
+ /**
23
+ * Add admin notices as needed for reviews.
24
+ *
25
+ * @since 7.0.7
26
+ */
27
+ public function review_request() {
28
+ // Only consider showing the review request to admin users.
29
+ if ( ! is_super_admin() ) {
30
+ return;
31
+ }
32
+
33
+ // If the user has opted out of product annoucement notifications, don't
34
+ // display the review request.
35
+ if ( get_option( 'seedprod_hide_review') ) {
36
+ return;
37
+ }
38
+ // Verify that we can do a check for reviews.
39
+ $review = get_option( 'seedprod_review' );
40
+ $time = time();
41
+ $load = false;
42
+
43
+ if ( ! $review ) {
44
+ $review = array(
45
+ 'time' => $time,
46
+ 'dismissed' => false,
47
+ );
48
+ update_option( 'seedprod_review', $review );
49
+ } else {
50
+ // Check if it has been dismissed or not.
51
+ if ( ( isset( $review['dismissed'] ) && ! $review['dismissed'] ) && ( isset( $review['time'] ) && ( ( $review['time'] + DAY_IN_SECONDS ) <= $time ) ) ) {
52
+ $load = true;
53
+ }
54
+ }
55
+
56
+ // If we cannot load, return early.
57
+ if ( ! $load ) {
58
+ return;
59
+ }
60
+
61
+ $this->review();
62
+ }
63
+
64
+ /**
65
+ * Maybe show review request.
66
+ *
67
+ * @since 7.0.7
68
+ */
69
+ public function review() {
70
+ // Fetch when plugin was initially installed.
71
+ $activated = get_option( 'seedprod_over_time', array() );
72
+ if ( ! empty( $activated['installed_date'] ) ) {
73
+ // Only continue if plugin has been installed for at least 7 days.
74
+ // if ( ( $activated['installed_date'] + ( DAY_IN_SECONDS * 7 ) ) > time() ) {
75
+ // return;
76
+ // }
77
+ } else {
78
+ $data = array(
79
+ 'installed_version' => SEEDPROD_VERSION,
80
+ 'installed_date' => time(),
81
+ );
82
+
83
+ update_option( 'seedprod_over_time', $data );
84
+ return;
85
+ }
86
+
87
+ // Only proceed if they have created at least 1 lpage that is atleast 7 days old
88
+ global $wpdb;
89
+ $tablename = $wpdb->prefix . 'seedprod_pages';
90
+ $sql = "SELECT id FROM $tablename WHERE deleted_at IS NULL and created_at <= (DATE(NOW()) - INTERVAL 7 DAY) ORDER BY created_at LIMIT 1";
91
+ $number_of_lpages = $wpdb->get_var($sql);
92
+ if ( empty( $number_of_lpages ) ) {
93
+ return;
94
+ }
95
+
96
+
97
+ $feedback_url = 'https://www.seedprod.com/plugin-feedback/?utm_source=liteplugin&utm_medium=review-notice&utm_campaign=feedback&utm_content='.SEEDPROD_VERSION;
98
+ // We have a candidate! Output a review message.
99
+ ?>
100
+ <div class="notice notice-info is-dismissible seedprod-review-notice">
101
+ <div class="seedprod-review-step seedprod-review-step-1">
102
+ <p><?php esc_html_e( 'Are you enjoying SeedProd?', 'coming-soon' ); ?></p>
103
+ <p>
104
+ <a href="#" class="seedprod-review-switch-step" data-step="3"><?php esc_html_e( 'Yes', 'coming-soon' ); ?></a><br />
105
+ <a href="#" class="seedprod-review-switch-step" data-step="2"><?php esc_html_e( 'Not Really', 'coming-soon' ); ?></a>
106
+ </p>
107
+ </div>
108
+ <div class="seedprod-review-step seedprod-review-step-2" style="display: none">
109
+ <p><?php esc_html_e( 'We\'re sorry to hear you aren\'t enjoying SeedProd. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'coming-soon' ); ?></p>
110
+ <p>
111
+ <a href="<?php echo esc_url( $feedback_url ); ?>" class="seedprod-dismiss-review-notice seedprod-review-out"><?php esc_html_e( 'Give Feedback', 'coming-soon' ); ?></a><br>
112
+ <a href="#" class="seedprod-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'No thanks', 'coming-soon' ); ?></a>
113
+ </p>
114
+ </div>
115
+ <div class="seedprod-review-step seedprod-review-step-3" style="display: none">
116
+ <p><?php esc_html_e( 'That’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'coming-soon' ); ?></p>
117
+ <p><strong><?php echo wp_kses( __( '~ John Turner<br>Co-Founder of SeedProd', 'coming-soon' ), array( 'br' => array() ) ); ?></strong></p>
118
+ <p>
119
+ <a href="https://wordpress.org/support/plugin/seedprod/reviews/?filter=5#new-post" class="seedprod-dismiss-review-notice seedprod-review-out" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it', 'coming-soon' ); ?></a><br>
120
+ <a href="#" class="seedprod-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later', 'coming-soon' ); ?></a><br>
121
+ <a href="#" class="seedprod-dismiss-review-notice" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'I already did', 'coming-soon' ); ?></a>
122
+ </p>
123
+ </div>
124
+ </div>
125
+ <script type="text/javascript">
126
+ jQuery( document ).ready( function ( $ ) {
127
+ $( document ).on( 'click', '.seedprod-dismiss-review-notice, .seedprod-review-notice button', function ( event ) {
128
+ if ( ! $( this ).hasClass( 'seedprod-review-out' ) ) {
129
+ event.preventDefault();
130
+ }
131
+ $.post( ajaxurl, {
132
+ action: 'seedprod_review_dismiss'
133
+ } );
134
+ $( '.seedprod-review-notice' ).remove();
135
+ } );
136
+
137
+ $( document ).on( 'click', '.seedprod-review-switch-step', function ( e ) {
138
+ e.preventDefault();
139
+ var target = $( this ).attr( 'data-step' );
140
+ if ( target ) {
141
+ var notice = $( this ).closest( '.seedprod-review-notice' );
142
+ var review_step = notice.find( '.seedprod-review-step-' + target );
143
+ if ( review_step.length > 0 ) {
144
+ notice.find( '.seedprod-review-step:visible').fadeOut( function ( ) {
145
+ review_step.fadeIn();
146
+ });
147
+ }
148
+ }
149
+ })
150
+ } );
151
+ </script>
152
+ <?php
153
+ }
154
+ /**
155
+ * Dismiss the review admin notice
156
+ *
157
+ * @since 7.0.7
158
+ */
159
+ public function review_dismiss() {
160
+ $review = get_option( 'seedprod_review', array() );
161
+ $review['time'] = time();
162
+ $review['dismissed'] = true;
163
+ update_option( 'seedprod_review', $review );
164
+ die;
165
+ }
166
+ }
167
+ new seedprod_lite_Review;
app/routes.php ADDED
@@ -0,0 +1,357 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /**
5
+ * Postback Routes
6
+ */
7
+
8
+
9
+
10
+ /**
11
+ * Admin Menu Routes
12
+ */
13
+
14
+
15
+ add_action('admin_menu', 'seedprod_lite_create_menus');
16
+
17
+ function seedprod_lite_create_menus()
18
+ {
19
+
20
+ // get notifications count
21
+ $notification = '';
22
+ $n = new SeedProd_Notifications();
23
+ $notifications_count = $n->get_count();
24
+ if (!empty($notifications_count)) {
25
+ $notification = '<div class="seedprod-menu-notification-counter"><span>'.$notifications_count.'</span></div>';
26
+ }
27
+
28
+ add_menu_page(
29
+ 'SeedProd',
30
+ 'SeedProd'.$notification,
31
+ 'edit_others_posts',
32
+ 'seedprod_lite',
33
+ 'seedprod_lite_dashboard_page',
34
+ 'data:image/svg+xml;base64,' . 'PHN2ZyB3aWR0aD0iMTI1IiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEyNSAxMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDBDMCAwIDIuOTE2NjQgMC4xOTc4OTQgNjIuODIxMiA4LjAyNjgzQzEyMi43MjYgMTUuODU1OCAxNDMuNDU5IDc2LjYwNjQgMTA2Ljc4MSAxMjkuNjI4QzExMi40NTQgODIuMjUyNyAxMDIuMDcgMzMuMTA2MiA2MC4zNjA1IDI3LjM2MDZDMTguNjUwNSAyMS42MTUxIDIyLjI4MzQgMjIuNDk1NCAyMi4yODM0IDIyLjQ5NTRDMjIuMjgzNCAyMi40OTU0IDIyLjk3NDUgMzIuOTI5OSAyNi44ODgzIDYwLjk3OTlDMzAuODAyMSA4OS4wMjk5IDUyLjcwMzUgMTAyLjc4NiA3MS44NzA0IDEwOS44NjhDNzEuODcwNCAxMDkuODY4IDcyLjk5NDUgNzcuMDQwMSA2Mi4zMDA3IDYyLjU5MDlDNTEuNjA2OSA0OC4xNDE4IDM4LjMwMjYgMzguNTQ2IDM4LjMwMjYgMzguNTQ2QzM4LjMwMjYgMzguNTQ2IDY5LjU2OCA0Mi4yOTYgODEuMzcyMiA2NC4xMDE5QzkzLjE3NjQgODUuOTA3OCA5Mi4wMjY1IDEzMiA5Mi4wMjY1IDEzMkw3OS4yOTI1IDEzMS4zNDFDNDUuMDI4NCAxMjcuMjI1IDEzLjAxNzIgMTA2LjU5MSA3LjU3NDIzIDYzLjNDMi4xMzEzIDIwLjAwODggMCAwIDAgMFoiIGZpbGw9ImJsYWNrIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDBDMCAwIDIuOTE2NjQgMC4xOTc4OTQgNjIuODIxMiA4LjAyNjgzQzEyMi43MjYgMTUuODU1OCAxNDMuNDU5IDc2LjYwNjQgMTA2Ljc4MSAxMjkuNjI4QzExMi40NTQgODIuMjUyNyAxMDIuMDcgMzMuMTA2MiA2MC4zNjA1IDI3LjM2MDZDMTguNjUwNSAyMS42MTUxIDIyLjI4MzQgMjIuNDk1NCAyMi4yODM0IDIyLjQ5NTRDMjIuMjgzNCAyMi40OTU0IDIyLjk3NDUgMzIuOTI5OSAyNi44ODgzIDYwLjk3OTlDMzAuODAyMSA4OS4wMjk5IDUyLjcwMzUgMTAyLjc4NiA3MS44NzA0IDEwOS44NjhDNzEuODcwNCAxMDkuODY4IDcyLjk5NDUgNzcuMDQwMSA2Mi4zMDA3IDYyLjU5MDlDNTEuNjA2OSA0OC4xNDE4IDM4LjMwMjYgMzguNTQ2IDM4LjMwMjYgMzguNTQ2QzM4LjMwMjYgMzguNTQ2IDY5LjU2OCA0Mi4yOTYgODEuMzcyMiA2NC4xMDE5QzkzLjE3NjQgODUuOTA3OCA5Mi4wMjY1IDEzMiA5Mi4wMjY1IDEzMkw3OS4yOTI1IDEzMS4zNDFDNDUuMDI4NCAxMjcuMjI1IDEzLjAxNzIgMTA2LjU5MSA3LjU3NDIzIDYzLjNDMi4xMzEzIDIwLjAwODggMCAwIDAgMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+',
35
+ 200
36
+ );
37
+
38
+ add_submenu_page(
39
+ 'seedprod_lite',
40
+ __("Pages", 'coming-soon'),
41
+ __("Pages", 'coming-soon'),
42
+ 'edit_others_posts',
43
+ 'seedprod_lite',
44
+ 'seedprod_lite_dashboard_page'
45
+ );
46
+
47
+
48
+ add_submenu_page(
49
+ 'seedprod_lite',
50
+ __("Subscribers", 'coming-soon'),
51
+ __("Subscribers", 'coming-soon'),
52
+ 'edit_others_posts',
53
+ 'seedprod_lite_subscribers',
54
+ 'seedprod_lite_subscribers_page'
55
+ );
56
+
57
+ add_submenu_page(
58
+ 'seedprod_lite',
59
+ __("Settings", 'coming-soon'),
60
+ __("Settings", 'coming-soon'),
61
+ 'edit_others_posts',
62
+ 'seedprod_lite_settings',
63
+ 'seedprod_lite_settings_page'
64
+ );
65
+
66
+ add_submenu_page(
67
+ 'seedprod_lite',
68
+ __("Growth Tools", 'coming-soon'),
69
+ __("Growth Tools", 'coming-soon'),
70
+ 'edit_others_posts',
71
+ 'seedprod_lite_growth_tools',
72
+ 'seedprod_lite_growth_tools_page'
73
+ );
74
+
75
+ add_submenu_page(
76
+ 'seedprod_lite',
77
+ __("About Us", 'coming-soon'),
78
+ __("About Us", 'coming-soon'),
79
+ 'read',
80
+ 'seedprod_lite_about_us',
81
+ 'seedprod_lite_about_us_page'
82
+ );
83
+
84
+ if (SEEDPROD_BUILD == 'lite') {
85
+ add_submenu_page(
86
+ 'seedprod_lite',
87
+ __("Get Pro", 'coming-soon'),
88
+ '<span id="sp-lite-admin-menu__upgrade" style="color:#ff845b">'.__("Get Pro", 'coming-soon').'</span>',
89
+ 'read',
90
+ 'seedprod_lite_get_pro',
91
+ 'seedprod_lite_get_pro_page'
92
+ );
93
+ }
94
+
95
+ add_submenu_page(
96
+ 'seedprod_lite',
97
+ __("Templates", 'coming-soon'),
98
+ __("Templates", 'coming-soon'),
99
+ 'read',
100
+ 'seedprod_lite_template',
101
+ 'seedprod_lite_template_page'
102
+ );
103
+
104
+ add_submenu_page(
105
+ 'seedprod_lite',
106
+ __("Builder", 'coming-soon'),
107
+ __("Builder", 'coming-soon'),
108
+ 'read',
109
+ 'seedprod_lite_builder',
110
+ 'seedprod_lite_builder_page'
111
+ );
112
+
113
+
114
+ add_submenu_page(
115
+ 'seedprod_lite',
116
+ __("Import/Export", 'coming-soon'),
117
+ __("Import/Export", 'coming-soon'),
118
+ 'edit_others_posts',
119
+ 'sp_pro_importexport',
120
+ 'seedprod_lite_importexport_page'
121
+ );
122
+
123
+ add_submenu_page(
124
+ 'seedprod_lite',
125
+ __("Debug", 'coming-soon'),
126
+ __("Debug", 'coming-soon'),
127
+ 'read',
128
+ 'sp_pro_debug',
129
+ 'seedprod_lite_debug_page'
130
+ );
131
+ }
132
+
133
+ add_action('admin_head', 'seedprod_lite_remove_menus');
134
+
135
+ function seedprod_lite_remove_menus()
136
+ {
137
+ remove_submenu_page('seedprod_lite', 'seedprod_lite_builder');
138
+ remove_submenu_page('seedprod_lite', 'seedprod_lite_template');
139
+ remove_submenu_page('seedprod_lite', 'sp_pro_importexport');
140
+ remove_submenu_page('seedprod_lite', 'sp_pro_debug');
141
+ }
142
+
143
+ function seedprod_lite_importexport_page()
144
+ {
145
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/importexport.php');
146
+ }
147
+
148
+ function seedprod_lite_debug_page()
149
+ {
150
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/debug.php');
151
+ }
152
+
153
+ function seedprod_lite_dashboard_page()
154
+ {
155
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/dashboard.php');
156
+ }
157
+
158
+
159
+ function seedprod_lite_builder_page()
160
+ {
161
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/builder.php');
162
+ }
163
+
164
+ function seedprod_lite_template_page()
165
+ {
166
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/views/builder.php');
167
+ }
168
+
169
+
170
+ /* Short circuit new request */
171
+
172
+ add_action('admin_init', 'seedprod_lite_new_lpage', 1);
173
+
174
+
175
+ /* Redirect to SPA */
176
+
177
+ add_action('admin_init', 'seedprod_lite_redirect_to_site', 1);
178
+
179
+ function seedprod_lite_redirect_to_site()
180
+ {
181
+ // settings page
182
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_settings') {
183
+ wp_redirect('admin.php?page=seedprod_lite#/settings');
184
+ exit();
185
+ }
186
+ // subscribers
187
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_subscribers') {
188
+ wp_redirect('admin.php?page=seedprod_lite#/subscribers/0');
189
+ exit();
190
+ }
191
+
192
+ // growth tools page
193
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_growth_tools') {
194
+ wp_redirect('admin.php?page=seedprod_lite#/growth-tools');
195
+ exit();
196
+ }
197
+
198
+ // about us page
199
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_about_us') {
200
+ wp_redirect('admin.php?page=seedprod_lite#/aboutus');
201
+ exit();
202
+ }
203
+
204
+ // getpro page
205
+ if (isset($_GET['page']) && $_GET['page'] == 'seedprod_lite_get_pro') {
206
+ wp_redirect(seedprod_lite_upgrade_link('wp-sidebar-menu'));
207
+ exit();
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Ajax Request Routes
213
+ */
214
+
215
+ function seedprod_lite_render_shortcode()
216
+ {
217
+ //ob_start();
218
+ echo do_shortcode('[wpforms id="67" title="false" description="false"]');
219
+ //echo do_shortcode('[rafflepress id="23"]');
220
+ //echo 'html';
221
+ //return ob_get_clean();
222
+ exit;
223
+ }
224
+
225
+ if (defined('DOING_AJAX')) {
226
+ add_action('wp_ajax_seedprod_lite_render_shortcode', 'seedprod_lite_render_shortcode');
227
+
228
+ add_action('wp_ajax_seedprod_lite_dismiss_settings_lite_cta', 'seedprod_lite_dismiss_settings_lite_cta');
229
+
230
+ add_action('wp_ajax_seedprod_lite_save_settings', 'seedprod_lite_save_settings');
231
+ add_action('wp_ajax_seedprod_lite_save_api_key', 'seedprod_lite_save_api_key');
232
+
233
+
234
+ add_action('wp_ajax_seedprod_lite_save_template', 'seedprod_lite_save_template');
235
+ add_action('wp_ajax_seedprod_lite_save_lpage', 'seedprod_lite_save_lpage');
236
+ add_action('wp_ajax_seedprod_lite_get_revisions', 'seedprod_lite_get_revisisons');
237
+ add_action('wp_ajax_seedprod_lite_get_utc_offset', 'seedprod_lite_get_utc_offset');
238
+ add_action('wp_ajax_seedprod_lite_get_namespaced_custom_css', 'seedprod_lite_get_namespaced_custom_css');
239
+ add_action('wp_ajax_seedprod_lite_get_stockimages', 'seedprod_lite_get_stockimages');
240
+
241
+ add_action('wp_ajax_seedprod_lite_slug_exists', 'seedprod_lite_slug_exists');
242
+ add_action('wp_ajax_seedprod_lite_lpage_datatable', 'seedprod_lite_lpage_datatable');
243
+ add_action('wp_ajax_seedprod_lite_duplicate_lpage', 'seedprod_lite_duplicate_lpage');
244
+ add_action('wp_ajax_seedprod_lite_get_lpage_list', 'seedprod_lite_get_lpage_list');
245
+ add_action('wp_ajax_seedprod_lite_archive_selected_lpages', 'seedprod_lite_archive_selected_lpages');
246
+ add_action('wp_ajax_seedprod_lite_unarchive_selected_lpages', 'seedprod_lite_unarchive_selected_lpages');
247
+ add_action('wp_ajax_seedprod_lite_delete_archived_lpages', 'seedprod_lite_delete_archived_lpages');
248
+ add_action('wp_ajax_seedprod_lite_end_lpage', 'seedprod_lite_end_lpage');
249
+ add_action('wp_ajax_seedprod_lite_start_lpage', 'seedprod_lite_start_lpage');
250
+ add_action('wp_ajax_seedprod_lite_enable_disable_lpage', 'seedprod_lite_enable_disable_lpage');
251
+
252
+ add_action('wp_ajax_seedprod_lite_update_subscriber_count', 'seedprod_lite_update_subscriber_count');
253
+ add_action('wp_ajax_seedprod_lite_subscribers_datatable', 'seedprod_lite_subscribers_datatable');
254
+
255
+ add_action('wp_ajax_seedprod_lite_get_plugins_list', 'seedprod_lite_get_plugins_list');
256
+
257
+ add_action('wp_ajax_seedprod_lite_install_addon', 'seedprod_lite_install_addon');
258
+ add_action('wp_ajax_seedprod_lite_activate_addon', 'seedprod_lite_activate_addon');
259
+ add_action('wp_ajax_seedprod_lite_deactivate_addon', 'seedprod_lite_deactivate_addon');
260
+
261
+ add_action('wp_ajax_seedprod_lite_install_addon', 'seedprod_lite_install_addon');
262
+ add_action('wp_ajax_seedprod_lite_deactivate_addon', 'seedprod_lite_deactivate_addon');
263
+ add_action('wp_ajax_seedprod_lite_activate_addon', 'seedprod_lite_activate_addon');
264
+ add_action('wp_ajax_seedprod_lite_plugin_nonce', 'seedprod_lite_plugin_nonce');
265
+
266
+ add_action('wp_ajax_nopriv_seedprod_lite_run_one_click_upgrade', 'seedprod_lite_run_one_click_upgrade');
267
+ add_action('wp_ajax_seedprod_lite_upgrade_license', 'seedprod_lite_upgrade_license');
268
+
269
+ add_action('wp_ajax_seedprod_lite_get_wpforms', 'seedprod_lite_get_wpforms');
270
+ add_action('wp_ajax_seedprod_lite_get_wpform', 'seedprod_lite_get_wpform');
271
+ add_action('wp_ajax_seedprod_lite_get_rafflepress', 'seedprod_lite_get_rafflepress');
272
+ add_action('wp_ajax_seedprod_lite_get_rafflepress_code', 'seedprod_lite_get_rafflepress_code');
273
+
274
+
275
+
276
+ add_action('wp_ajax_seedprod_lite_dismiss_upsell', 'seedprod_lite_dismiss_upsell');
277
+
278
+ }
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ function seedprod_lite_get_wpforms()
287
+ {
288
+ if (check_ajax_referer('seedprod_nonce')) {
289
+ $forms = array();
290
+ if (function_exists('wpforms')) {
291
+ $forms = \wpforms()->form->get('', array( 'order' => 'DESC' ));
292
+ $forms = ! empty($forms) ? $forms : array();
293
+ $forms = array_map(
294
+ function ($form) {
295
+ $form->post_title = wp_html_excerpt(htmlspecialchars_decode( $form->post_title, ENT_QUOTES ), 100);
296
+ return $form;
297
+ },
298
+ $forms
299
+ );
300
+ }
301
+
302
+ wp_send_json($forms);
303
+ }
304
+ }
305
+
306
+ function seedprod_lite_get_wpform() {
307
+
308
+ if (check_ajax_referer('seedprod_nonce') && function_exists('wpforms_display')) {
309
+ $form_id = filter_input(INPUT_GET, 'form_id', FILTER_SANITIZE_NUMBER_INT);
310
+ $form_title = filter_input(INPUT_GET, 'form_title', FILTER_VALIDATE_BOOLEAN);
311
+ $form_description = filter_input(INPUT_GET, 'form_description', FILTER_VALIDATE_BOOLEAN);
312
+ ob_start();
313
+ ?>
314
+ <link rel='stylesheet' id='wpforms-full-css' href='<?php echo content_url() ?>/plugins/wpforms-lite/assets/css/wpforms-full.css' media='all' />
315
+ <?php
316
+ wpforms_display($form_id, $form_title, $form_description);
317
+ return wp_send_json(ob_get_clean());
318
+ }
319
+ }
320
+
321
+ function seedprod_lite_get_rafflepress()
322
+ {
323
+ if (check_ajax_referer('seedprod_nonce')) {
324
+ $giveaways = array();
325
+ $rp_version = 'lite';
326
+ if(function_exists('rafflepress_pro_load_textdomain')){
327
+ $rp_version = 'pro';
328
+ }
329
+ if (function_exists('rafflepress_'.$rp_version.'_activation') || function_exists('rafflepress_'.$rp_version.'')) {
330
+ global $wpdb;
331
+ $tablename = $wpdb->prefix . 'rafflepress_giveaways';
332
+ $sql = "SELECT id,name FROM $tablename WHERE deleted_at IS NULL";
333
+ $giveaways = $wpdb->get_results($sql);
334
+ }
335
+
336
+ wp_send_json($giveaways);
337
+ }
338
+ }
339
+
340
+ function seedprod_lite_get_rafflepress_code() {
341
+
342
+ if (check_ajax_referer('seedprod_nonce')) {
343
+ $id = filter_input(INPUT_GET, 'form_id', FILTER_SANITIZE_NUMBER_INT);
344
+ ob_start();
345
+ ?>
346
+ <div class="sp-relative">
347
+ <div class="rafflepress-giveaway-iframe-wrapper rpoverlay">
348
+ <iframe id="rafflepress-<?php echo $id ?>"
349
+ src="<?php echo home_url().'?rpid='.$id.'?iframe=1&giframe='.$a['giframe'].'&rpr='.$ref.'&parent_url='.urlencode($parent_url) ?>&<?php echo mt_rand(1, 99999); ?>"
350
+ frameborder="0" scrolling="no" allowtransparency="true" style="width:100%; height:400px" ></iframe>
351
+ </div>
352
+ </div>
353
+ <?php
354
+ $code = ob_get_clean();
355
+ return wp_send_json($code);
356
+ }
357
+ }
app/settings.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Save Settings
5
+ */
6
+ function seedprod_lite_save_settings()
7
+ {
8
+ if (check_ajax_referer('seedprod_nonce')) {
9
+ if (!empty($_POST['settings'])) {
10
+ $settings = stripslashes_deep($_POST['settings']);
11
+
12
+ // publish page if not published when active
13
+ $s = json_decode($settings );
14
+ $update = array();
15
+ $update['post_status'] = 'publish';
16
+
17
+ if($s->enable_coming_soon_mode === true){
18
+ $csp_id = get_option('seedprod_coming_soon_page_id');
19
+ $update['ID'] = $csp_id;
20
+ }
21
+ if($s->enable_maintenance_mode === true){
22
+ $mm_id = get_option('seedprod_maintenance_mode_page_id');
23
+ $update['ID'] = $mm_id;
24
+ }
25
+ if($s->enable_404_mode === true){
26
+ $p404_id = get_option('seedprod_404_page_id');
27
+ $update['ID'] = $p404_id;
28
+ }
29
+ wp_update_post($update);
30
+
31
+ update_option('seedprod_settings', $settings);
32
+
33
+ $response = array(
34
+ 'status'=> 'true',
35
+ 'msg'=> __('Settings Updated', 'coming-soon')
36
+ );
37
+ } else {
38
+ $response = array(
39
+ 'status'=> 'false',
40
+ 'msg'=> __('Error Updating Settings', 'coming-soon')
41
+ );
42
+ }
43
+
44
+ // Send Response
45
+ wp_send_json($response);
46
+ exit;
47
+ }
48
+ }
app/subscriber.php ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * subscribers Datatable
5
+ */
6
+ function seedprod_lite_subscribers_datatable()
7
+ {
8
+ if (check_ajax_referer('seedprod_nonce')) {
9
+ $data = array('');
10
+ $current_page = 1;
11
+ if (!empty(absint($_GET['current_page']))) {
12
+ $current_page = absint($_GET['current_page']);
13
+ }
14
+ $per_page=100;
15
+
16
+ $filter = null;
17
+ if (!empty($_GET['filter'])) {
18
+ $filter = sanitize_text_field($_GET['filter']);
19
+ if ($filter == 'all') {
20
+ $filter = null;
21
+ }
22
+ }
23
+
24
+ if (!empty($_GET['s'])) {
25
+ $filter = null;
26
+ }
27
+
28
+
29
+ global $wpdb;
30
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
31
+
32
+ // Get records
33
+
34
+ $sql = "SELECT *
35
+ FROM $tablename
36
+ ";
37
+
38
+ if(!empty($_GET['id'])){
39
+ $sql .= ' WHERE page_uuid = "'.esc_sql($_GET['id']). '"';;
40
+ }else{
41
+ $sql .= ' WHERE 1 =1 ';
42
+ }
43
+
44
+ if (!empty($_GET['s'])) {
45
+ $sql .= ' AND email LIKE "%'. esc_sql(trim(sanitize_text_field($_GET['s']))).'%"';
46
+ }
47
+
48
+ if (! empty($_GET['orderby'])) {
49
+ // $orderby = $_GET['orderby'];
50
+ // if ($_GET['orderby'] == 'entries') {
51
+ // $orderby = 'entries_count';
52
+ // }
53
+ // $sql .= ' ORDER BY ' . esc_sql(sanitize_text_field($orderby));
54
+ // if(sanitize_text_field($_GET['order']) === 'desc'){
55
+ // $order = 'DESC';
56
+ // }else{
57
+ // $order = 'ASC';
58
+ // }
59
+ // $sql .= ' ' . $order;
60
+ } else {
61
+ $sql .= ' ORDER BY created DESC';
62
+ }
63
+
64
+ $sql .= " LIMIT $per_page";
65
+ if (empty($_GET['s'])) {
66
+ $sql .= ' OFFSET ' . ($current_page - 1) * $per_page;
67
+ }
68
+
69
+ $results = $wpdb->get_results($sql);
70
+ //var_dump($results);
71
+ $data = array();
72
+ foreach ($results as $v) {
73
+
74
+ // Format Date
75
+ $created_at = date(get_option('date_format').' '.get_option('time_format'), strtotime($v->created));
76
+
77
+
78
+ // Load Data
79
+ $data[] = array(
80
+ 'id' => $v->id,
81
+ 'email' => $v->email,
82
+ 'name' => $v->fname.' '.$v->lname,
83
+ 'created_at' => $created_at,
84
+ 'page_uuid' => $v->page_uuid,
85
+ );
86
+ }
87
+
88
+ $totalitems = seedprod_lite_subscribers_get_data_total($filter);
89
+ $views = seedprod_lite_subscribers_get_views($filter);
90
+
91
+ // Get recent subscriber data
92
+ $chart_timeframe = 7;
93
+ if(!empty($_GET['interval'])){
94
+ $chart_timeframe = absint($_GET['interval']);
95
+ }
96
+
97
+ if (empty($_GET['id'])) {
98
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
99
+ $sql = 'SELECT count(id) as count,DATE_FORMAT(created,"%Y-%m-%d") as created FROM '.$tablename.' ';
100
+ $sql .= ' WHERE created >= DATE(NOW()) - INTERVAL '.esc_sql($chart_timeframe).' DAY GROUP BY DAY(created)';
101
+ $recent_subscribers = $wpdb->get_results($sql);
102
+
103
+
104
+ } else {
105
+
106
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
107
+ $sql = 'SELECT count(id) as count,DATE_FORMAT(created,"%Y-%m-%d") as created FROM '.$tablename.' ';
108
+ $sql .= ' WHERE page_uuid = "'.esc_sql($_GET['id']). '"';
109
+ $sql .= ' AND created >= DATE(NOW()) - INTERVAL '.esc_sql($chart_timeframe).' DAY GROUP BY DAY(created)';
110
+ $recent_subscribers = $wpdb->get_results($sql);
111
+ }
112
+
113
+
114
+ $now = new \DateTime("$chart_timeframe days ago", new \DateTimeZone('America/New_York'));
115
+ $interval = new \DateInterval('P1D'); // 1 Day interval
116
+ $period = new \DatePeriod($now, $interval, $chart_timeframe); // 7 Days
117
+
118
+ $recent_subscribers_data = array(
119
+ array("Year","Subscribers"),
120
+ );
121
+ foreach ($period as $day) {
122
+ $key = $day->format('Y-m-d');
123
+ $display_key = $day->format('M j');
124
+ $no_val = true;
125
+ foreach ($recent_subscribers as $v) {
126
+ if ($key == $v->created) {
127
+ $recent_subscribers_data[] = array($display_key,absint($v->count));
128
+ $no_val = false;
129
+ }
130
+ }
131
+ if ($no_val) {
132
+ $recent_subscribers_data[] = array($display_key,0);
133
+ }
134
+ }
135
+
136
+ $response = array(
137
+ 'recent_subscribers' => $recent_subscribers_data,
138
+ 'rows' => $data,
139
+ 'lpage_name' => '',
140
+ 'totalitems' => $totalitems,
141
+ 'totalpages' => ceil($totalitems/$per_page),
142
+ 'currentpage'=> $current_page,
143
+ 'views'=>$views,
144
+ );
145
+
146
+ wp_send_json($response);
147
+ }
148
+ }
149
+
150
+ function seedprod_lite_subscribers_get_data_total($filter = null)
151
+ {
152
+ global $wpdb;
153
+
154
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
155
+
156
+ $sql = "SELECT count(id) FROM $tablename";
157
+
158
+ if(!empty($_GET['id'])){
159
+ $sql .= ' WHERE page_uuid = '.esc_sql($_GET['id']);
160
+ }else{
161
+ $sql .= ' WHERE 1 =1 ';
162
+ }
163
+
164
+ if (!empty($_GET['s'])) {
165
+ $sql .= ' AND email LIKE "%'. esc_sql(trim(sanitize_text_field($_GET['s']))).'%"';
166
+ }
167
+
168
+ $results = $wpdb->get_var($sql);
169
+ return $results;
170
+ }
171
+
172
+ function seedprod_lite_subscribers_get_views($filter = null)
173
+ {
174
+ $views = array();
175
+ $current = (!empty($filter) ? $filter : 'all');
176
+
177
+ global $wpdb;
178
+ $tablename = $wpdb->prefix . 'csp3_subscribers';
179
+
180
+ //All link
181
+ $sql = "SELECT count(id) FROM $tablename";
182
+
183
+ if(!empty($_GET['id'])){
184
+ $sql .= ' WHERE lpage_id = '.esc_sql($_GET['id']);
185
+ }else{
186
+ $sql .= ' WHERE 1 =1 ';
187
+ }
188
+
189
+ $results = $wpdb->get_var($sql);
190
+ $class = ($current == 'all' ? ' class="current"' :'');
191
+ $all_url = remove_query_arg('filter');
192
+ $views['all'] = $results;
193
+
194
+ return $views;
195
+ }
196
+
197
+
198
+ /*
199
+ * Update Subscriber
200
+ */
201
+ function seedprod_lite_update_subscriber_count()
202
+ {
203
+ if (check_ajax_referer('seedprod_lite_update_subscriber_count')) {
204
+ update_option('seedprod_subscriber_count', 1);
205
+ }
206
+
207
+ }
208
+
209
+
coming-soon.php CHANGED
@@ -1,189 +1,112 @@
1
- <?php
2
- /*
3
- * Plugin Name: Coming Soon Page, Under Construction & Maintenance Mode by SeedProd
4
- * Plugin URI: http://www.seedprod.com
5
- * Description: The #1 Coming Soon Page, Under Construction & Maintenance Mode plugin for WordPress.
6
- * Version: 5.1.3
7
- * Author: SeedProd
8
- * Author URI: http://www.seedprod.com
9
- * Text Domain: coming-soon
10
- * Domain Path: /languages
11
- * License: GPL-2.0+
12
- * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
13
- * Copyright 2012 John Turner (email : john@seedprod.com, twitter : @johnturner)
14
- */
15
-
16
- /**
17
- * Default Constants
18
- */
19
- define('SEED_CSP4_SHORTNAME', 'seed_csp4'); // Used to reference namespace functions.
20
- define('SEED_CSP4_SLUG', 'coming-soon/coming-soon.php'); // Used for settings link.
21
- define('SEED_CSP4_TEXTDOMAIN', 'coming-soon'); // Your textdomain
22
- define('SEED_CSP4_PLUGIN_NAME', __('Coming Soon Page & Maintenance Mode by SeedProd', 'coming-soon')); // Plugin Name shows up on the admin settings screen.
23
- define('SEED_CSP4_VERSION', '5.1.3'); // Plugin Version Number. Recommend you use Semantic Versioning http://semver.org/
24
- define('SEED_CSP4_PLUGIN_PATH', plugin_dir_path(__FILE__)); // Example output: /Applications/MAMP/htdocs/wordpress/wp-content/plugins/seed_csp4/
25
- define('SEED_CSP4_PLUGIN_URL', plugin_dir_url(__FILE__)); // Example output: http://localhost:8888/wordpress/wp-content/plugins/seed_csp4/
26
- define('SEED_CSP4_TABLENAME', 'seed_csp4_subscribers');
27
-
28
-
29
- /**
30
- * Load Translation
31
- */
32
- function seed_csp4_load_textdomain()
33
- {
34
- load_plugin_textdomain('coming-soon', false, dirname(plugin_basename(__FILE__)) . '/languages/');
35
- }
36
- add_action('plugins_loaded', 'seed_csp4_load_textdomain');
37
-
38
-
39
- /**
40
- * Upon activation of the plugin, see if we are running the required version and deploy theme in defined.
41
- *
42
- * @since 0.1.0
43
- */
44
- function seed_csp4_activation()
45
- {
46
- // Store the plugin version when initial install occurred.
47
- $has_seed_csp4_settings_content = get_option('seed_csp4_settings_content');
48
- if (!empty($has_seed_csp4_settings_content)) {
49
- add_option('seed_csp4_initial_version', 0, '', false);
50
- } else {
51
- add_option('seed_csp4_initial_version', SEED_CSP4_VERSION, '', false);
52
- }
53
-
54
-
55
- // Store the plugin version activated to reference with upgrades.
56
- update_option('seed_csp4_version', SEED_CSP4_VERSION, false);
57
- require_once('inc/default-settings.php');
58
- add_option('seed_csp4_settings_content', unserialize($seed_csp4_settings_deafults['seed_csp4_settings_content']));
59
- add_option('seed_csp4_settings_design', unserialize($seed_csp4_settings_deafults['seed_csp4_settings_design']));
60
- add_option('seed_csp4_settings_advanced', unserialize($seed_csp4_settings_deafults['seed_csp4_settings_advanced']));
61
- }
62
- register_activation_hook(__FILE__, 'seed_csp4_activation');
63
-
64
-
65
-
66
- // Welcome Page
67
-
68
- register_activation_hook(__FILE__, 'seed_csp4_welcome_screen_activate');
69
- function seed_csp4_welcome_screen_activate()
70
- {
71
- set_transient('_seed_csp4_welcome_screen_activation_redirect', true, 30);
72
-
73
- // set cron to fetch feed
74
- if (! wp_next_scheduled( 'seedprod_lite_notifications')) {
75
- wp_schedule_event(time(), 'daily', 'seedprod_lite_notifications');
76
- }
77
- }
78
-
79
- /**
80
- * Deactivate
81
- */
82
- register_deactivation_hook(__FILE__, 'seed_csp4_deactivate');
83
- function seed_csp4_deactivate(){
84
- wp_clear_scheduled_hook( 'seedprod_lite_notifications');
85
- }
86
-
87
-
88
-
89
-
90
- add_action('admin_init', 'seed_csp4_welcome_screen_do_activation_redirect');
91
- function seed_csp4_welcome_screen_do_activation_redirect()
92
- {
93
- // Bail if no activation redirect
94
- if (! get_transient('_seed_csp4_welcome_screen_activation_redirect')) {
95
- return;
96
- }
97
-
98
- // Delete the redirect transient
99
- delete_transient('_seed_csp4_welcome_screen_activation_redirect');
100
-
101
- // Bail if activating from network, or bulk
102
- if (is_network_admin() || isset($_GET['activate-multi'])) {
103
- return;
104
- }
105
-
106
- // Redirect to bbPress about page
107
- wp_safe_redirect(add_query_arg(array( 'page' => 'seed_csp4' ), admin_url('admin.php')));
108
-
109
- }
110
-
111
-
112
- /***************************************************************************
113
- * Load Required Files
114
- ***************************************************************************/
115
-
116
- // Global
117
- global $seed_csp4_settings;
118
-
119
- require_once(SEED_CSP4_PLUGIN_PATH.'framework/get-settings.php');
120
- $seed_csp4_settings = seed_csp4_get_settings();
121
-
122
- require_once(SEED_CSP4_PLUGIN_PATH.'inc/class-seed-csp4.php');
123
- add_action('plugins_loaded', array( 'SEED_CSP4', 'get_instance' ));
124
- require_once(SEED_CSP4_PLUGIN_PATH.'framework/notifications.php');
125
-
126
- if (is_admin()) {
127
- // Admin Only
128
- require_once(SEED_CSP4_PLUGIN_PATH.'inc/config-settings.php');
129
- require_once(SEED_CSP4_PLUGIN_PATH.'framework/framework.php');
130
- add_action('plugins_loaded', array( 'SEED_CSP4_ADMIN', 'get_instance' ));
131
- require_once(SEED_CSP4_PLUGIN_PATH.'framework/review.php');
132
- if(version_compare(phpversion(), '5.3.3', '>=')){
133
- require_once( SEED_CSP4_PLUGIN_PATH.'lib/setup_tgmpa.php' );
134
- require_once( SEED_CSP4_PLUGIN_PATH.'lib/TGMPA.php' );
135
- }
136
- } else {
137
- // Public only
138
- }
139
-
140
-
141
- // Clear Popular Caches
142
- add_action('update_option_seed_csp4_settings_content', 'seed_csp4_clear_known_caches', 10, 2);
143
-
144
- function seed_csp4_clear_known_caches($o, $n)
145
- {
146
- try {
147
- if (isset($o['status']) && isset($n['status'])) {
148
- if ($o['status'] != $n['status']) {
149
-
150
- // Clear Litespeed cache
151
- method_exists('LiteSpeed_Cache_API', 'purge_all') && LiteSpeed_Cache_API::purge_all() ;
152
-
153
- // WP Super Cache
154
- if (function_exists('wp_cache_clear_cache')) {
155
- wp_cache_clear_cache();
156
- }
157
-
158
- // W3 Total Cahce
159
- if (function_exists('w3tc_pgcache_flush')) {
160
- w3tc_pgcache_flush();
161
- }
162
-
163
- // Site ground
164
- if (class_exists('SG_CachePress_Supercacher') && method_exists('SG_CachePress_Supercacher ', 'purge_cache')) {
165
- SG_CachePress_Supercacher::purge_cache(true);
166
- }
167
-
168
- // Endurance Cache
169
- if (class_exists('Endurance_Page_Cache')) {
170
- $e = new Endurance_Page_Cache;
171
- $e->purge_all();
172
- }
173
-
174
- // WP Fastest Cache
175
- if (isset($GLOBALS['wp_fastest_cache']) && method_exists($GLOBALS['wp_fastest_cache'], 'deleteCache')) {
176
- $GLOBALS['wp_fastest_cache']->deleteCache(true);
177
- }
178
- }
179
- }
180
- } catch (Exception $e) {
181
- }
182
- }
183
-
184
-
185
- function seed_csp4_admin_upgrade_link($medium = 'link')
186
- {
187
- return apply_filters('seed_csp4_upgrade_link', 'https://www.seedprod.com/ultimate-coming-soon-page-vs-coming-soon-pro/?utm_source=WordPress&utm_medium=' . sanitize_key(apply_filters('seed_csp4_upgrade_link_medium', $medium)) . '&utm_campaign=liteplugin');
188
- }
189
-
1
+ <?php
2
+ /*
3
+ Plugin Name: Coming Soon Page, Maintenance Mode & Landing Pages by SeedProd
4
+ Plugin URI: https://www.seedprod.com
5
+ Description: The #1 Coming Soon Page, Under Construction & Maintenance Mode plugin for WordPress.
6
+ Version: 6.0.6
7
+ Author: SeedProd
8
+ Author URI: https://www.seedprod.com
9
+ TextDomain: coming-soon
10
+ Domain Path: /languages
11
+ License: GPLv2 or later
12
+ */
13
+
14
+ /**
15
+ * Default Constants
16
+ */
17
+ define('SEEDPROD_BUILD', 'lite');
18
+ define('SEEDPROD_SLUG', 'coming-soon/coming-soon.php');
19
+ define('SEEDPROD_VERSION', '6.0.6');
20
+ define('SEEDPROD_PLUGIN_PATH', plugin_dir_path(__FILE__));
21
+ // Example output: /Applications/MAMP/htdocs/wordpress/wp-content/plugins/seedprod/
22
+ define('SEEDPROD_PLUGIN_URL', plugin_dir_url(__FILE__));
23
+ // Example output: http://localhost:8888/wordpress/wp-content/plugins/seedprod/
24
+
25
+ if (defined('SEEDPROD_LOCAL_JS')) {
26
+ define('SEEDPROD_API_URL', 'http://api.seedprod.test/v4/');
27
+ define('SEEDPROD_WEB_API_URL', 'http://v4app.seedprod.test/');
28
+ define( 'SEEDPROD_BACKGROUND_DOWNLOAD_API_URL', 'https://api.seedprod.com/v3/background_download' );
29
+
30
+ } else {
31
+ define('SEEDPROD_API_URL', 'https://api.seedprod.com/v4/');
32
+ define('SEEDPROD_WEB_API_URL', 'https://app.seedprod.com/');
33
+ }
34
+
35
+
36
+
37
+
38
+ /**
39
+ * Load Translation
40
+ */
41
+ function seedprod_lite_load_textdomain() {
42
+ load_plugin_textdomain( 'coming-soon', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
43
+ }
44
+ add_action('plugins_loaded', 'seedprod_lite_load_textdomain');
45
+
46
+
47
+ /**
48
+ * Upon activation of the plugin check php version, load defaults and show welcome screen.
49
+ */
50
+
51
+ function seedprod_lite_activation()
52
+ {
53
+ seedprod_lite_check_for_free_version();
54
+
55
+
56
+ update_option('seedprod_run_activation', true, '', false);
57
+
58
+ // Load and Set Default Settings
59
+ require_once(SEEDPROD_PLUGIN_PATH.'resources/data-templates/default-settings.php');
60
+ add_option('seedprod_settings', $seedprod_default_settings);
61
+
62
+ // Set inital version
63
+ $data = array(
64
+ 'installed_version' => SEEDPROD_VERSION,
65
+ 'installed_date' => time(),
66
+ 'installed_pro' => SEEDPROD_BUILD,
67
+ );
68
+
69
+ add_option( 'seedprod_over_time', $data );
70
+
71
+ // Set a token
72
+ add_option('seedprod_token', wp_generate_uuid4());
73
+
74
+ // Welcome Page Flag
75
+ set_transient('_seedprod_welcome_screen_activation_redirect', true, 30);
76
+
77
+ // set cron to fetch feed
78
+ if (! wp_next_scheduled( 'seedprod_notifications')) {
79
+ wp_schedule_event(time(), 'daily', 'seedprod_notifications');
80
+ }
81
+
82
+ }
83
+
84
+ register_activation_hook(__FILE__, 'seedprod_lite_activation');
85
+
86
+
87
+ /**
88
+ * Deactivate Flush Rules
89
+ */
90
+
91
+ function seedprod_lite_deactivate()
92
+ {
93
+ wp_clear_scheduled_hook( 'seedprod_notifications');
94
+ }
95
+
96
+ register_deactivation_hook(__FILE__, 'seedprod_lite_deactivate');
97
+
98
+
99
+
100
+ /**
101
+ * Load Plugin
102
+ */
103
+ require_once(SEEDPROD_PLUGIN_PATH.'app/bootstrap.php');
104
+ require_once(SEEDPROD_PLUGIN_PATH.'app/routes.php');
105
+ require_once(SEEDPROD_PLUGIN_PATH.'app/load_controller.php');
106
+
107
+ /**
108
+ * Maybe Migrate
109
+ */
110
+ add_action('upgrader_process_complete', 'seedprod_lite_check_for_free_version');
111
+ add_action('init', 'seedprod_lite_check_for_free_version');
112
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/coming-soon-pro-sidebar.png DELETED
Binary file
framework/field-types/checkbox.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- $c = 0;
8
- if(empty($options[ $id ]) || !is_array($options[ $id ])){
9
- $options[ $id ] = array();
10
- }
11
- foreach ( $option_values as $k => $v ) {
12
- echo "<input class='$id' type='checkbox' name='{$setting_id}[$id][]' value='$k' " . ( in_array( $k, ( empty( $options[ $id ] ) ? array( ) : $options[ $id ] ) ) ? 'checked' : '' ) . " /> $v<br/>";
13
- $c++;
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/color.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(!isset($options[ $id ])){
7
- $options[ $id ] = '';
8
- }
9
-
10
- echo "<input id='$id' class='pickcolor-field' type='text' name='{$setting_id}[$id]' value='" . esc_attr( $options[ $id ] ) . "' style='background-color:" . ( empty( $options[ $id ] ) ? $default_value : $options[ $id ] ) . ";' />";
11
-
12
- wp_enqueue_script( 'seed_csp4-color-js', SEED_CSP4_PLUGIN_URL . 'framework/field-types/js/color.js', array(
13
- 'wp-color-picker'
14
- ),false, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/date.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- $option_values = array(
8
- '01'=>__('01-Jan','coming-soon'),
9
- '02'=>__('02-Feb','coming-soon'),
10
- '03'=>__('03-Mar','coming-soon'),
11
- '04'=>__('04-Apr','coming-soon'),
12
- '05'=>__('05-May','coming-soon'),
13
- '06'=>__('06-Jun','coming-soon'),
14
- '07'=>__('07-Jul','coming-soon'),
15
- '08'=>__('08-Aug','coming-soon'),
16
- '09'=>__('09-Sep','coming-soon'),
17
- '10'=>__('10-Oct','coming-soon'),
18
- '11'=>__('11-Nov','coming-soon'),
19
- '12'=>__('12-Dec','coming-soon'),
20
- );
21
-
22
-
23
- echo "<select id='mm' name='{$setting_id}[$id][month]'>";
24
- foreach ( $option_values as $k => $v ) {
25
- echo "<option value='$k' " . selected( $options[ $id ]['month'], $k, false ) . ">$v</option>";
26
- }
27
- echo "</select>";
28
-
29
- echo "<input id='jj' class='small-text' name='{$setting_id}[$id][day]' placeholder='".__('day','coming-soon')."' type='text' value='" . esc_attr( $options[ $id ]['day'] ) . "' />";
30
-
31
- echo ',';
32
- echo "<input id='aa' class='small-text' name='{$setting_id}[$id][year]' placeholder='".__('year','coming-soon')."' type='text' value='" . esc_attr( $options[ $id ]['year'] ) . "' /><br>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/daterange.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- $option_values = array(
8
- '01'=>__('01-Jan','coming-soon'),
9
- '02'=>__('02-Feb','coming-soon'),
10
- '03'=>__('03-Mar','coming-soon'),
11
- '04'=>__('04-Apr','coming-soon'),
12
- '05'=>__('05-May','coming-soon'),
13
- '06'=>__('06-Jun','coming-soon'),
14
- '07'=>__('07-Jul','coming-soon'),
15
- '08'=>__('08-Aug','coming-soon'),
16
- '09'=>__('09-Sep','coming-soon'),
17
- '10'=>__('10-Oct','coming-soon'),
18
- '11'=>__('11-Nov','coming-soon'),
19
- '12'=>__('12-Dec','coming-soon'),
20
- );
21
-
22
- _e('Start Date', 'coming-soon');
23
- echo "<select id='mm' name='{$setting_id}[$id][start_month]'>";
24
- foreach ( $option_values as $k => $v ) {
25
- echo "<option value='$k' " . selected( $options[ $id ]['start_month'], $k, false ) . ">$v</option>";
26
- }
27
- echo "</select>";
28
-
29
- echo "<input id='jj' class='small-text' placeholder='".__('day','coming-soon')."' name='{$setting_id}[$id][start_day]' type='text' value='" . esc_attr( $options[ $id ]['start_day'] ) . "' />";
30
-
31
- echo ',';
32
- echo "<input id='aa' class='small-text' placeholder='".__('year','coming-soon')."' name='{$setting_id}[$id][start_year]' type='text' value='" . esc_attr( $options[ $id ]['start_year'] ) . "' />";
33
-
34
- echo '&nbsp;&nbsp;&nbsp;&nbsp;';
35
- _e('End Date', 'coming-soon');
36
- echo "<select id='mm' name='{$setting_id}[$id][end_month]'>";
37
- foreach ( $option_values as $k => $v ) {
38
- echo "<option value='$k' " . selected( $options[ $id ]['end_month'], $k, false ) . ">$v</option>";
39
- }
40
- echo "</select>";
41
-
42
- echo "<input id='jj' class='small-text' placeholder='".__('day','coming-soon')."' name='{$setting_id}[$id][end_day]' type='text' value='" . esc_attr( $options[ $id ]['end_day'] ) . "' />";
43
-
44
- echo ',';
45
- echo "<input id='aa' class='small-text' placeholder='".__('year','coming-soon')."' name='{$setting_id}[$id][end_year]' type='text' value='" . esc_attr( $options[ $id ]['end_year'] ) . "' /><br>";
46
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/export.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- $seed_csp4_s1 = get_option('seed_csp4_settings_1');
8
- $seed_csp4_s2 = get_option('seed_csp4_settings_2');
9
- $seed_csp4_s3 = get_option('seed_csp4_settings_4');
10
- $settings = array( );
11
- foreach ( $this->options as $k ) {
12
- switch ( $k[ 'type' ] ) {
13
- case 'setting':
14
- $s = get_option( $k[ 'id' ]);
15
- if(is_array($s)){
16
- $settings[$k[ 'id' ]] = $s;
17
- }
18
- break;
19
- }
20
- }
21
-
22
- $export = json_encode($settings);
23
-
24
- echo "<textarea id='$id' class='large-text'>" . $export . "</textarea><br>";
25
-
26
- echo '
27
- <script>
28
- jQuery(document).ready(function($) {
29
- $("#export").click(function(){this.select()});
30
- });
31
- </script>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/import.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- $ajax_url = html_entity_decode(wp_nonce_url('admin-ajax.php?action=seed_csp4_import_settings','seed_csp4_import_settings'));
8
-
9
- echo "<textarea id='import_settings' class='large-text'></textarea><br><button id='import-settings-btn' type='button' class='button-secondary'>Import</button>";
10
-
11
- echo "<script>
12
- jQuery(document).ready(function($) {
13
- $('#import-settings-btn').click(function() {
14
- if(confirm(seed_csp4_msgs.import_confirm)){
15
- var settings = $('#import_settings').val();
16
- $.post('{$ajax_url}',{settings: settings}, function(data) {
17
- if(data == '1'){
18
- $('#import-settings-btn').html('Import Successful').attr('disabled','disabled');
19
- setTimeout('csp4_reload_page()',2000);
20
- }
21
- });
22
- }
23
- });
24
- });
25
- </script>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/js/color.js DELETED
@@ -1,6 +0,0 @@
1
- // For Color Field Type
2
-
3
- jQuery(document).ready(function($){
4
- $('.pickcolor-field').wpColorPicker();
5
- });
6
-
 
 
 
 
 
 
framework/field-types/js/upload.js DELETED
@@ -1,31 +0,0 @@
1
- // For Upload Field Type
2
-
3
- jQuery(document).ready(function($){
4
- var _custom_media = true,
5
- _orig_send_attachment = wp.media.editor.send.attachment;
6
-
7
- $('.upload-button').click(function(e) {
8
- var send_attachment_bkp = wp.media.editor.send.attachment;
9
- var button = $(this);
10
- var id = jQuery(this).prev('input');
11
- _custom_media = true;
12
- wp.media.editor.send.attachment = function(props, attachment){
13
- var size = props.size;
14
- var att =attachment.sizes[size];
15
-
16
- //props.size
17
- if ( _custom_media ) {
18
- $(id).val(att.url);
19
- } else {
20
- return _orig_send_attachment.apply( this, [props, attachment] );
21
- };
22
- }
23
-
24
- wp.media.editor.open(button);
25
- return false;
26
- });
27
-
28
- $('.add_media').on('click', function(){
29
- _custom_media = false;
30
- });
31
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/multiselect.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- if(empty($options[$id])){
8
- $options[$id] = array();
9
- }
10
-
11
- echo "<select multiple='multiple' id='$id' class='" . ( empty( $class ) ? 'all-options' : $class ) . "' name='{$setting_id}[$id][]'>";
12
-
13
- foreach ( $option_values as $k => $v ) {
14
-
15
-
16
- echo "<option value='$k' " . (in_array($k,$options[$id],true)?'selected':'') . ">$v</option>";
17
- }
18
- echo "</select><br>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/password.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(empty($options[ $id ])){
7
- $options[ $id ] = '';
8
- }
9
- echo "<input id='$id' class='" . ( empty( $class ) ? 'regular-text' : $class ) . "' name='{$setting_id}[$id]' type='password' value='" . esc_attr( $options[ $id ] ) . "' /><br>";
 
 
 
 
 
 
 
 
 
framework/field-types/radio.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- foreach ( $option_values as $k => $v ) {
8
- echo "<input class='$id' type='radio' name='{$setting_id}[$id]' value='$k' " . checked( $options[ $id ], $k, false ) . " /> $v<br/>";
9
- }
 
 
 
 
 
 
 
 
 
framework/field-types/select.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- echo "<select id='$id' class='" . ( empty( $class ) ? '' : $class ) . "' name='{$setting_id}[$id]'>";
8
- foreach ( $option_values as $k => $v ) {
9
- if(is_array($v)){
10
- echo '<optgroup label="'.ucwords($k).'">';
11
- foreach ( $v as $k1=>$v1 ) {
12
- echo "<option value='$k1' " . selected( $options[ $id ], $k1, false ) . ">$v1</option>";
13
- }
14
- echo '</optgroup>';
15
- }else{
16
- if(!isset($options[ $id ])){
17
- $options[ $id ] = '';
18
- }
19
- echo "<option value='$k' " . selected( $options[ $id ], $k, false ) . ">$v</option>";
20
- }
21
- }
22
- echo "</select> ";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/text.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(!empty($options[ $id ]))
7
- echo "<p id='$id' class='" . ( empty( $class ) ? '' : $class ) . "' >".$options[ $id ] ."</p>";
 
 
 
 
 
 
 
framework/field-types/textarea.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(empty($options[ $id ])){
7
- $options[ $id ] = '';
8
- }
9
- echo "<textarea id='$id' class='" . ( empty( $class ) ? '' : $class ) . "' name='{$setting_id}[$id]'>" . $options[ $id ] . "</textarea><br>";
 
 
 
 
 
 
 
 
 
framework/field-types/textbox.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(empty($options[ $id ])){
7
- $options[ $id ] = '';
8
- }
9
- echo "<input id='$id' class='" . ( empty( $class ) ? 'regular-text' : $class ) . "' name='{$setting_id}[$id]' type='text' value='" . esc_attr( $options[ $id ] ) . "' /><br>";
 
 
 
 
 
 
 
 
 
framework/field-types/themes.php DELETED
@@ -1,65 +0,0 @@
1
- <div id="seed-csp4-themes-preview">
2
- <div class="seed-csp4-themes-preview-grid seed-csp4-clear">
3
-
4
- <div class="seed-csp4-themes-preview-item " >
5
- <div class="seed-ribbon">
6
- <span>Pro</span>
7
- </div>
8
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/1.jpg"></a>
9
- </div>
10
-
11
- <div class="seed-csp4-themes-preview-item " >
12
- <div class="seed-ribbon">
13
- <span>Pro</span>
14
- </div>
15
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/22.jpg"></a>
16
- </div>
17
-
18
- <div class="seed-csp4-themes-preview-item " >
19
- <div class="seed-ribbon">
20
- <span>Pro</span>
21
- </div>
22
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/37.jpg"></a>
23
- </div>
24
-
25
- <div class="seed-csp4-themes-preview-item " >
26
- <div class="seed-ribbon">
27
- <span>Pro</span>
28
- </div>
29
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/51.jpg"></a>
30
- </div>
31
-
32
- <div class="seed-csp4-themes-preview-item " >
33
- <div class="seed-ribbon">
34
- <span>Pro</span>
35
- </div>
36
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/19.jpg"></a>
37
- </div>
38
-
39
- <div class="seed-csp4-themes-preview-item " >
40
- <div class="seed-ribbon">
41
- <span>Pro</span>
42
- </div>
43
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/31.jpg"></a>
44
- </div>
45
-
46
- <div class="seed-csp4-themes-preview-item " >
47
- <div class="seed-ribbon">
48
- <span>Pro</span>
49
- </div>
50
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/18.jpg"></a>
51
- </div>
52
-
53
- <div class="seed-csp4-themes-preview-item " >
54
- <div class="seed-ribbon">
55
- <span>Pro</span>
56
- </div>
57
- <a href="admin.php?page=seed_csp4_themes"><img src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/themes/23.jpg"></a>
58
- </div>
59
-
60
- </div>
61
- <p style="font-size:13px">Click any theme to see the 50+ themes include in the Pro Version.</p>
62
- </div>
63
-
64
- <div id="seed-csp4-themes-preview-gradient">
65
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/upload.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
-
7
- if(!isset($options[ $id ]))
8
- $options[ $id ] = null;
9
-
10
-
11
- echo "<input id='$id' class='" . ( empty( $class ) ? 'regular-text' : $class ) . "' name='{$setting_id}[$id]' type='text' value='" . esc_attr( $options[ $id ] ) . "' />";
12
- echo "<input id='{$id}_upload_image_button' class='button-secondary upload-button' type='button' value='" . __( 'Media Image Library', 'coming-soon' ) . "' /><br>";
13
-
14
- wp_enqueue_script( 'seed_csp4-upload-js', SEED_CSP4_PLUGIN_URL . 'framework/field-types/js/upload.js', array() );
15
- wp_enqueue_media();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/field-types/wpeditor.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- // {$setting_id}[$id] - Contains the setting id, this is what it will be stored in the db as.
3
- // $class - optional class value
4
- // $id - setting id
5
- // $options[$id] value from the db
6
- if(empty($options[ $id ])){
7
- $options[ $id ] = '';
8
- }
9
- $content = $options[ $id ];
10
- $editor_id = $id;
11
- $args = array(
12
- 'textarea_name' => "{$setting_id}[$id]"
13
- );
14
-
15
- wp_editor( $content, $editor_id, $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/framework.php DELETED
@@ -1,1071 +0,0 @@
1
- <?php
2
- /**
3
- * seed_csp4 Admin
4
- *
5
- * @package WordPress
6
- * @subpackage seed_csp4
7
- * @since 0.1.0
8
- */
9
-
10
-
11
- class SEED_CSP4_ADMIN
12
- {
13
- public $plugin_version = SEED_CSP4_VERSION;
14
- public $plugin_name = SEED_CSP4_PLUGIN_NAME;
15
-
16
- /**
17
- * Instance of this class.
18
- *
19
- * @since 1.0.0
20
- *
21
- * @var object
22
- */
23
- protected static $instance = null;
24
-
25
- /**
26
- * Slug of the plugin screen.
27
- *
28
- * @since 1.0.0
29
- *
30
- * @var string
31
- */
32
- protected $plugin_screen_hook_suffix = null;
33
-
34
- /**
35
- * Load Hooks
36
- */
37
- public function __construct()
38
- {
39
- if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX)) {
40
- add_action('admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ));
41
- add_action('admin_menu', array( &$this, 'create_menus' ));
42
- add_action('admin_init', array( &$this, 'reset_defaults' ));
43
- add_action('admin_init', array( &$this, 'create_settings' ));
44
- add_filter('plugin_action_links', array( &$this, 'plugin_action_links' ), 10, 2);
45
- add_filter('tmp_grunion_allow_editor_view', '__return_false');
46
- if(version_compare(phpversion(), '5.3.3', '>=')){
47
- add_action( 'wpms_tgmpa_register', 'coming_soon_init_recommendations' );
48
- }
49
- }
50
-
51
- if (defined('DOING_AJAX')) {
52
- // Background API Ajax
53
- add_action('wp_ajax_seed_csp4_backgrounds', array(&$this,'backgrounds'));
54
- }
55
- }
56
-
57
- /**
58
- * Return an instance of this class.
59
- *
60
- * @since 1.0.0
61
- *
62
- * @return object A single instance of this class.
63
- */
64
- public static function get_instance()
65
- {
66
-
67
- // If the single instance hasn't been set, set it now.
68
- if (null == self::$instance) {
69
- self::$instance = new self;
70
- }
71
-
72
- return self::$instance;
73
- }
74
-
75
- /**
76
- * backgrounds api
77
- *
78
- */
79
- public function backgrounds()
80
- {
81
- if (check_ajax_referer('seed_csp4_backgrounds')) {
82
- $r = array();
83
- $page = '';
84
- if (isset($_REQUEST['page'])) {
85
- $page = $_REQUEST['page'];
86
- $page = '?page='.$page;
87
- $r['page'] = $_REQUEST['page'];
88
- }
89
- $query = '';
90
- if (isset($_REQUEST['query'])) {
91
- $query = $_REQUEST['query'];
92
- $query = '?query='.$query;
93
- $r['query'] = $_REQUEST['query'];
94
- }
95
-
96
- if (false === (get_transient('seed_csp4_backgrounds_page_'.$query.$page))) {
97
- //f(1){
98
- //echo 'miss';
99
-
100
- $bg_api = 'https://api.seedprod.com/v3/free_background_search';
101
-
102
- $url = $bg_api.'?'.http_build_query($r);
103
- $response = wp_remote_get($url);
104
- //var_dump($url);
105
- if (is_wp_error($response)) {
106
- $error_message = $response->get_error_message();
107
- echo "Something went wrong: $error_message";
108
- } else {
109
- $response_code = wp_remote_retrieve_response_code($response);
110
- if ($response_code == '200') {
111
- set_transient('seed_csp4_backgrounds_page_'.$query.$page, $response['body'], 604800);
112
- echo $response['body'];
113
- } else {
114
- echo 'There was an issue loading the stock images. Please try again later.';
115
- }
116
- }
117
- } else {
118
- //echo 'hit';
119
- echo get_transient('seed_csp4_backgrounds_page_'.$query.$page);
120
- }
121
-
122
-
123
-
124
- exit();
125
- }
126
- }
127
-
128
- /**
129
- * Reset the settings page. Reset works per settings id.
130
- *
131
- */
132
- public function reset_defaults()
133
- {
134
- if (isset($_POST[ 'seed_csp4_reset' ])) {
135
- $option_page = $_POST[ 'option_page' ];
136
- check_admin_referer($option_page . '-options');
137
- require_once(SEED_CSP4_PLUGIN_PATH.'inc/default-settings.php');
138
-
139
- $_POST[ $_POST[ 'option_page' ] ] = $seed_csp4_settings_deafults[$_POST[ 'option_page' ]];
140
- add_settings_error('general', 'seed_csp4-settings-reset', __("Settings reset."), 'updated');
141
- }
142
- }
143
-
144
-
145
- /**
146
- * Properly enqueue styles and scripts for our theme options page.
147
- *
148
- * This function is attached to the admin_enqueue_scripts action hook.
149
- *
150
- * @since 0.1.0
151
- * @param string $hook_suffix The name of the current page we are on.
152
- */
153
- public function admin_enqueue_scripts($hook_suffix)
154
- {
155
- if (strpos($hook_suffix, 'seed_csp4') === false) {
156
- return;
157
- }
158
-
159
- wp_enqueue_script('media-upload');
160
- wp_enqueue_script('jquery-ui-sortable');
161
- wp_enqueue_script('wp-lists');
162
- wp_enqueue_script('seed_csp4-framework-js', SEED_CSP4_PLUGIN_URL . 'framework/settings-scripts.js', array( 'jquery' ), $this->plugin_version);
163
- wp_enqueue_script('seed_csp4-magnific-popup-js', SEED_CSP4_PLUGIN_URL . 'public/vendor/magnific-popup/jquery.magnific-popup.min.js', array( 'jquery' ), $this->plugin_version);
164
- wp_enqueue_script('seed_csp4-tingle', SEED_CSP4_PLUGIN_URL . 'public/vendor/tingle/tingle.min.js', array(), $this->plugin_version);
165
- wp_enqueue_script('theme-preview');
166
- wp_enqueue_style('thickbox');
167
- wp_enqueue_style('media-upload');
168
- wp_enqueue_style('wp-color-picker');
169
- wp_enqueue_style('seed_csp4-framework-css', SEED_CSP4_PLUGIN_URL . 'framework/settings-style.css', false, $this->plugin_version);
170
- wp_enqueue_style('font-awesome-solid', SEED_CSP4_PLUGIN_URL . 'public/vendor/fontawesome/css/solid.min.css', false, $this->plugin_version, false, $this->plugin_version);
171
- wp_enqueue_style('font-awesome-brands', SEED_CSP4_PLUGIN_URL . 'public/vendor/fontawesome/css/brands.min.css', false, $this->plugin_version, false, $this->plugin_version);
172
- wp_enqueue_style('font-awesome', SEED_CSP4_PLUGIN_URL . 'public/vendor/fontawesome/css/fontawesome.min.css', false, $this->plugin_version, false, $this->plugin_version);
173
- wp_enqueue_style('seed_csp4-magnific-popup-js', SEED_CSP4_PLUGIN_URL . 'public/vendor/magnific-popup/magnific-popup.css', false, $this->plugin_version, false, $this->plugin_version);
174
- wp_enqueue_style('seed_csp4-tingle-css', SEED_CSP4_PLUGIN_URL . 'public/vendor/tingle/tingle.min.css', false, $this->plugin_version, false, $this->plugin_version);
175
- }
176
-
177
- /**
178
- * Creates WordPress Menu pages from an array in the config file.
179
- *
180
- * This function is attached to the admin_menu action hook.
181
- *
182
- * @since 0.1.0
183
- */
184
- public function create_menus()
185
- {
186
- // get notifications count
187
- $notification = '';
188
- $n = new SeedProd_Notifications();
189
- $notifications_count = $n->get_count();
190
- if(!empty( $notifications_count)){
191
- $notification = ' <span class="update-plugins"><span class="plugin-count">'.$notifications_count.'</span></span>';
192
- }
193
-
194
- add_menu_page(
195
- "SeedProd",
196
- "SeedProd".$notification,
197
- 'manage_options',
198
- 'seed_csp4',
199
- array( &$this , 'option_page' ),
200
- SEED_CSP4_PLUGIN_URL . 'public/images/menu-logo.png',
201
- 200
202
- );
203
-
204
- add_submenu_page(
205
- 'seed_csp4',
206
- __("Settings", 'coming-soon'),
207
- __("Settings", 'coming-soon'),
208
- 'manage_options',
209
- 'seed_csp4',
210
- array( &$this , 'option_page' )
211
- );
212
-
213
- add_submenu_page(
214
- 'seed_csp4',
215
- __("Themes", 'coming-soon'),
216
- __("Themes", 'coming-soon'),
217
- 'manage_options',
218
- 'seed_csp4_themes',
219
- array( &$this , 'themes_page' )
220
- );
221
-
222
- add_submenu_page(
223
- 'seed_csp4',
224
- __("Free Stock Images", 'coming-soon'),
225
- __("Free Stock Images", 'coming-soon'),
226
- 'manage_options',
227
- 'seed_csp4_stockimages',
228
- array( &$this , 'stockimages_page' )
229
- );
230
-
231
-
232
-
233
- add_submenu_page(
234
- 'seed_csp4',
235
- __("Subscribers", 'coming-soon'),
236
- __("Subscribers", 'coming-soon'),
237
- 'manage_options',
238
- 'seed_csp4_subscribers',
239
- array( &$this , 'subscribers_page' )
240
- );
241
-
242
- $plugins = seed_csp4_plugins_active();
243
- if($plugins['rafflepress-pro'] == 'Not Installed'){
244
- add_submenu_page(
245
- 'seed_csp4',
246
- __("Giveaways", 'coming-soon'),
247
- __("Giveaways", 'coming-soon'),
248
- 'manage_options',
249
- 'seed_csp4_giveaways',
250
- array( &$this , 'giveaways_page' )
251
- );
252
- }
253
-
254
- add_submenu_page(
255
- 'seed_csp4',
256
- __("Addons", 'coming-soon'),
257
- __("<span style='color:#ff9a4b'>Addons</span>", 'coming-soon'),
258
- 'manage_options',
259
- 'seed_csp4_addons',
260
- array( &$this , 'addons_page' )
261
- );
262
-
263
- add_submenu_page(
264
- 'seed_csp4',
265
- __("Suggest a Feature", 'coming-soon'),
266
- __("Suggest a Feature &raquo;", 'coming-soon'),
267
- 'manage_options',
268
- 'seed_csp4_suggest',
269
- array( &$this , 'suggest_page' )
270
- );
271
- }
272
-
273
- public function themes_page()
274
- {
275
- include SEED_CSP4_PLUGIN_PATH.'resources/views/themes.php';
276
- }
277
-
278
- public function stockimages_page()
279
- {
280
- include SEED_CSP4_PLUGIN_PATH.'resources/views/stockimages.php';
281
- }
282
-
283
- public function giveaways_page()
284
- {
285
- include SEED_CSP4_PLUGIN_PATH.'resources/views/giveaways.php';
286
- }
287
-
288
- public function subscribers_page()
289
- {
290
- include SEED_CSP4_PLUGIN_PATH.'resources/views/subscribers.php';
291
- }
292
-
293
- public function addons_page()
294
- {
295
- include SEED_CSP4_PLUGIN_PATH.'resources/views/addons.php';
296
- }
297
-
298
- public function suggest_page()
299
- {
300
- ?>
301
- <script>
302
- window.open('https://www.seedprod.com/suggest-a-feature/', '_blank');
303
- window.location.href = "admin.php?page=seed_csp4";
304
- </script>
305
-
306
- <?php
307
- }
308
-
309
-
310
-
311
- /**
312
- * Display settings link on plugin page
313
- */
314
- public function plugin_action_links($links, $file)
315
- {
316
- $plugin_file = SEED_CSP4_SLUG;
317
-
318
- if ($file == $plugin_file) {
319
- $settings_link = '<a href="admin.php?page=seed_csp4">Settings</a>';
320
- array_unshift($links, $settings_link);
321
- }
322
- return $links;
323
- }
324
-
325
-
326
- /**
327
- * Allow Tabs on the Settings Page
328
- *
329
- */
330
- public function plugin_options_tabs()
331
- {
332
- $menu_slug = null;
333
- $page = $_REQUEST[ 'page' ];
334
- $uses_tabs = false;
335
- $current_tab = isset($_GET[ 'tab' ]) ? $_GET[ 'tab' ] : false;
336
-
337
- //Check if this config uses tabs
338
- foreach (seed_csp4_get_options() as $v) {
339
- if ($v[ 'type' ] == 'tab') {
340
- $uses_tabs = true;
341
- break;
342
- }
343
- }
344
-
345
- // If uses tabs then generate the tabs
346
- if ($uses_tabs) {
347
- echo '<h2 class="nav-tab-wrapper" style="padding-left:20px">';
348
- $c = 1;
349
- foreach (seed_csp4_get_options() as $v) {
350
- if (isset($v[ 'menu_slug' ])) {
351
- $menu_slug = $v[ 'menu_slug' ];
352
- }
353
- if ($menu_slug == $page && $v[ 'type' ] == 'tab') {
354
- $active = '';
355
- if ($current_tab) {
356
- $active = $current_tab == $v[ 'id' ] ? 'nav-tab-active' : '';
357
- } elseif ($c == 1) {
358
- $active = 'nav-tab-active';
359
- }
360
- if ($v[ 'id' ] == 'seed_csp4_subscribers') {
361
- echo '<a id="'.$v[ 'id' ].'" class="nav-tab ' . $active . '" href="admin.php?page=seed_csp4_subscribers">';
362
- } else {
363
- echo '<a id="'.$v[ 'id' ].'" class="nav-tab ' . $active . '" href="?page=' . $menu_slug . '&tab=' . $v[ 'id' ] . '">';
364
- }
365
-
366
- if ($v[ 'id' ] == 'seed_csp4_setting') {
367
- echo '<i class="fas fa-edit"></i> ';
368
- }
369
- if ($v[ 'id' ] == 'seed_csp4_design') {
370
- echo '<i class="fas fa-image"></i> ';
371
- }
372
- if ($v[ 'id' ] == 'seed_csp4_subscribers') {
373
- echo '<i class="fas fa-users"></i> ';
374
- }
375
- if ($v[ 'id' ] == 'seed_csp4_advanced') {
376
- echo '<i class="fas fa-code"></i> ';
377
- }
378
- echo $v[ 'label' ] . '</a>';
379
- $c++;
380
- }
381
- }
382
- echo '<a class="nav-tab seed_csp4-preview thickbox-preview" target="_blank" href="'.home_url().'?cs_preview=true" title="'.__('&larr; Close Window', 'coming-soon').'"><i class="fas fa-external-link-alt"></i> '.__('Live Preview', 'coming-soon').'</a>';
383
-
384
- echo '<a class="nav-tab seed_csp4-support seed-csp4-cta" style="background-color: #04be5b;color: #fff" href="'.seed_csp4_admin_upgrade_link('upgrade-tab').'" target="_blank" rel="noopener noreferrer"><i class="fas fa-star"></i> '.__('Upgrade to Pro for More Features', 'coming-soon').'</a>';
385
-
386
-
387
- echo '</h2>';
388
- }
389
- }
390
-
391
- /**
392
- * Get the layout for the page. classic|2-col
393
- *
394
- */
395
- public function get_page_layout()
396
- {
397
- $layout = 'classic';
398
- foreach (seed_csp4_get_options() as $v) {
399
- switch ($v[ 'type' ]) {
400
- case 'menu':
401
- $page = $_REQUEST[ 'page' ];
402
- if ($page == $v[ 'menu_slug' ]) {
403
- if (isset($v[ 'layout' ])) {
404
- $layout = $v[ 'layout' ];
405
- }
406
- }
407
- break;
408
- }
409
- }
410
- return $layout;
411
- }
412
-
413
- /**
414
- * Render the option pages.
415
- *
416
- * @since 0.1.0
417
- */
418
- public function option_page()
419
- {
420
- $menu_slug = null;
421
- $page = $_REQUEST[ 'page' ];
422
- $layout = $this->get_page_layout(); ?>
423
-
424
-
425
- <div class="wrap columns-2 seed-csp4">
426
- <div id="seed_csp4_header">
427
- <?php include SEED_CSP4_PLUGIN_PATH.'resources/views/quicklinks.php'; ?>
428
- <h1>
429
- <img style="width:150px;margin-right:10px;margin-bottom: -2px;vertical-align: text-bottom;"
430
- src="<?php echo SEED_CSP4_PLUGIN_URL ?>public/images/seedprod-logo.png">
431
- Coming Soon Page and Maintenance Mode Lite
432
- <span class="seed_csp4_version" style="font-size: 10px;"> Version <?php echo SEED_CSP4_VERSION; ?></span>
433
- </h1>
434
- <?php
435
- // Get notifications
436
- $notifications = new SeedProd_Notifications();
437
- $notifications = $notifications->get();
438
-
439
- ?>
440
- <?php foreach ($notifications as $v) { ?>
441
- <div
442
- id="sp-notification-<?php echo $v['id'] ?>"
443
- style="display: flex;background: #fff2ee; margin:20px; border-radius:4px; border: 2px solid #f1460d; color:#f1460d; padding:20px; font-size:16px"
444
- >
445
-
446
- <div style="flex-grow:1">
447
- <div
448
- style="font-weight:bold; margin-bottom:10px; display:flex; justify-content:space-between"
449
- >
450
- <?php echo $v['title'] ?>
451
- <span
452
- style="cursor:pointer; width: 20px"
453
- id="sp-dismiss-<?php echo $v['id'] ?>"
454
- >
455
- <svg
456
- xmlns="http://www.w3.org/2000/svg"
457
- viewBox="0 0 24 24"
458
- style="width:18px; fill:#999"
459
- >
460
- <path d="M0 0h24v24H0V0z" fill="none" />
461
- <path
462
- d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
463
- />
464
- </svg>
465
- </span>
466
- </div>
467
- <div style="margin-bottom:10px"><?php echo $v['content'] ?></div>
468
- <div style="display:flex;justify-content:space-between">
469
- <div>
470
- <?php if(!empty($v['btns']['main'])){ ?>
471
- <a
472
- href="<?php echo $v['btns']['main']['url'] ?>"
473
- class="button button-primary"
474
- style="margin-right:5px"
475
- target="_blank"
476
- ><?php echo $v['btns']['main']['text'] ?></a>
477
- <?php } ?>
478
- <?php if(!empty($v['btns']['alt'])){ ?>
479
- <a
480
-
481
- href="<?php echo $v['btns']['alt']['url'] ?>"
482
- class="button button-secondary"
483
- target="_blank"
484
- ><?php echo $v['btns']['alt']['text'] ?></a>
485
- <?php } ?>
486
- </div>
487
- </div>
488
- </div>
489
- </div>
490
-
491
- <script>
492
- <?php $ajax_url = html_entity_decode(wp_nonce_url('admin-ajax.php?action=seedprod_lite_notification_dismiss', 'seedprod_lite_notification_dismiss')); ?>
493
- var seedprod_dismiss_<?php echo $v['id'] ?> = "<?php echo $ajax_url; ?>";
494
- jQuery( "#sp-dismiss-<?php echo $v['id'] ?>" ).click(function() {
495
-
496
- jQuery.get( seedprod_dismiss_<?php echo $v['id'] ?>+'&id=<?php echo $v['id'] ?>', function( data ) {
497
- jQuery( "#sp-notification-<?php echo $v['id'] ?>" ).hide();
498
- } );
499
- });
500
- </script>
501
- <?php } ?>
502
-
503
-
504
-
505
-
506
-
507
-
508
- <?php $this->plugin_options_tabs(); ?>
509
- </div>
510
-
511
- <div class="seed-wrap">
512
- <?php if ($layout == '2-col'): ?>
513
- <div id="poststuff">
514
- <div id="post-body" class="metabox-holder columns-2">
515
- <div id="post-body-content">
516
- <?php endif; ?>
517
- <?php if (!empty($_GET['tab'])) {
518
- do_action('seed_csp4_render_page', array('tab'=>$_GET['tab']));
519
- } ?>
520
- <form action="options.php" method="post">
521
-
522
- <!-- <input name="submit" type="submit" value="<?php _e('Save All Changes', 'coming-soon'); ?>" class="button-primary"/> -->
523
- <?php if (!empty($_GET['tab']) && $_GET['tab'] != 'seed_csp4_tab_3') {
524
- ?>
525
- <!-- <input id="reset" name="reset" type="submit" value="<?php _e('Reset Settings', 'coming-soon'); ?>" class="button-secondary"/> -->
526
- <?php
527
- } ?>
528
-
529
- <?php
530
- $show_submit = false;
531
- foreach (seed_csp4_get_options() as $v) {
532
- if (isset($v[ 'menu_slug' ])) {
533
- $menu_slug = $v[ 'menu_slug' ];
534
- }
535
- if ($menu_slug == $page) {
536
- switch ($v[ 'type' ]) {
537
- case 'menu':
538
- break;
539
- case 'tab':
540
- $tab = $v;
541
- if (empty($default_tab)) {
542
- $default_tab = $v[ 'id' ];
543
- }
544
- break;
545
- case 'setting':
546
- $current_tab = isset($_GET[ 'tab' ]) ? $_GET[ 'tab' ] : $default_tab;
547
- if ($current_tab == $tab[ 'id' ]) {
548
- settings_fields($v[ 'id' ]);
549
- $show_submit = true;
550
- }
551
-
552
- break;
553
- case 'section':
554
- $current_tab = isset($_GET[ 'tab' ]) ? $_GET[ 'tab' ] : $default_tab;
555
- if ($current_tab == $tab[ 'id' ] or $current_tab === false) {
556
- if ($layout == '2-col') {
557
- echo '<div id="'.$v[ 'id' ].'" class="postbox seedprod-postbox">';
558
- $this->do_settings_sections($v[ 'id' ], $show_submit);
559
- echo '</div>';
560
- } else {
561
- do_settings_sections($v[ 'id' ]);
562
- }
563
- }
564
- break;
565
-
566
- }
567
- }
568
- } ?>
569
- <?php if ($show_submit): ?>
570
- <p>
571
- <!-- <input name="submit" type="submit" value="<?php _e('Save All Changes', 'coming-soon'); ?>" class="button-primary"/> -->
572
- <!-- <input id="reset" name="reset" type="submit" value="<?php _e('Reset Settings', 'coming-soon'); ?>" class="button-secondary"/> -->
573
- </p>
574
- <?php endif; ?>
575
- </form>
576
-
577
- <?php if ($layout == '2-col'): ?>
578
- </div> <!-- #post-body-content -->
579
-
580
- <div id="postbox-container-1" class="postbox-container">
581
- <div id="side-sortables" class="meta-box-sortables ui-sortable">
582
-
583
- <!-- <div class="postbox ">
584
- <div class="handlediv" title="Click to toggle"><br /></div>
585
- <h3 class="hndle"><span><i class="fas fa-rocket"></i>&nbsp;&nbsp;<?php _e('Getting Started Video - 60 sec', 'coming-soon') ?></span></h3>
586
- <div class="inside">
587
- <div class="">
588
- <iframe width="250" height="188" src="https://www.youtube.com/embed/hcY0M0IYcAE" frameborder="0" allowfullscreen></iframe>
589
- </div>
590
- </div>
591
- </div> -->
592
-
593
-
594
- <a style="border:1px solid #ddd;display:inline-block;"
595
- href="https://www.seedprod.com/landing/coming-soon-page-getting-started-video/?utm_source=coming-soon-plugin&utm_medium=banner&utm_campaign=coming-soon-banner-in-plugin"
596
- target="_blank"><img
597
- src="<?php echo SEED_CSP4_PLUGIN_URL; ?>framework/getting-started-banner.png" /></a>
598
- <br><br>
599
-
600
-
601
- <a style="border:1px solid #ddd;display:inline-block;"
602
- href="<?php echo seed_csp4_admin_upgrade_link('sidebar-banner')?>" target="_blank"
603
- rel="noopener noreferrer" class="seed-csp4-cta"><img
604
- src="<?php echo SEED_CSP4_PLUGIN_URL; ?>framework/coming-soon-pro-sidebar.png" /></a>
605
- <br><br>
606
-
607
-
608
- <!-- <div class="postbox " style="background-color:#FAE6A4;color:#333 !important; border-color:#333 !important">
609
- <div class="handlediv" title="Click to toggle"><br /></div>
610
- <h3 class="hndle" style="color:#fff !important;border-color:#333 !important; background-color:#333"><span><i class="fas fa-star"></i>&nbsp;&nbsp;<?php _e('Yo-Yo-Yo, Why Go Pro?', 'coming-soon') ?></span></h3>
611
- <div class="inside">
612
- <div class="support-widget">
613
-
614
- <ul>
615
-
616
- <li><i class="fas fa-check"></i> <strong>Realtime Page Customizer</strong></li>
617
- <li><i class="fas fa-check"></i> <strong>More Design Controls and Widgets</strong></li>
618
- <li><i class="fas fa-check"></i> <strong>Pre Made Themes</strong></li>
619
- <li><i class="fas fa-check"></i> <strong>1000's of Free Stock Images</strong></li>
620
- <li><i class="fas fa-check"></i> <strong>Collect Emails (MailChimp, Database and other integrations)
621
- </strong></li>
622
- <li><i class="fas fa-check"></i> <strong>Go Viral with Social Media Integrations
623
- </strong></li>
624
- <li><i class="fas fa-check"></i> <strong>Shortcode Support, Google Font Support, Background Slideshow and Videos
625
- </strong></li>
626
-
627
- <li><i class="fas fa-check"></i> <strong>Give clients Instant Access with a Bypass Link
628
- </strong></li>
629
- <li><hr style=" border-top: 1px solid #333; border-bottom: none"></li>
630
- <li><strong>Plus lots more!</strong></li>
631
- </ul>
632
- <p>
633
- <a class="button-primary" style="background-color:#05AE0E; border-color:#05AE0E; box-shadow:none; text-shadow: none; width:100%; text-align:center;" href="<?php echo seed_csp4_admin_upgrade_link('sidebar'); ?>" target="_blank" rel="noopener noreferrer">See What's In The Pro Version</a>
634
- </p>
635
-
636
- </div>
637
- </div>
638
- </div> -->
639
-
640
- <div class="postbox ">
641
- <div class="handlediv" title="Click to toggle"><br /></div>
642
-
643
- <div class="inside">
644
- <div class="support-widget">
645
-
646
- <p style="text-align: center;margin-bottom:0"><a
647
- href="https://wordpress.org/support/plugin/coming-soon"
648
- target="_blank"><?php _e('Got a Support Question', 'coming-soon') ?></a> <i
649
- class="fas fa-question-circle"></i>
650
- <!-- <li>&raquo; <a href="http://support.seedprod.com/article/83-how-to-clear-wp-super-caches-cache" target="_blank"><?php _e('Common Caching Issues Resolutions', 'coming-soon') ?></a></li> -->
651
- </p>
652
- <!-- <p style="text-align: center; margin-top:0">
653
-
654
- <a style="display:inline-block" href="https://wordpress.org/support/plugin/coming-soon/reviews/?filter=5#new-post">Please Rate this Plugin to show your Support!</a> <i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></p> -->
655
-
656
-
657
-
658
-
659
- </div>
660
- </div>
661
- </div>
662
-
663
- <form id="seed-bg-form" style="display:none"
664
- action="https://www.getdrip.com/forms/247721848/submissions" method="post" target="_blank">
665
- <div>
666
- <label for="drip-email">Email Address</label><br />
667
- <input type="email" id="drip-email" name="fields[email]" value="" />
668
- </div>
669
- <div>
670
- <input id="drip-submit" type="submit" name="submit" value="Sign Up" />
671
- </div>
672
- </form>
673
-
674
-
675
- <!-- <div class="postbox like-postbox">
676
- <div class="handlediv" title="Click to toggle"><br /></div>
677
- <h3 class="hndle"><span><i class="fas fa-heart"></i>&nbsp;&nbsp;<?php _e('Show Some Love', 'coming-soon') ?></span></h3>
678
- <div class="inside">
679
- <div class="like-widget">
680
- <p><?php _e('Like this plugin? Show your support by:', 'coming-soon')?></p>
681
- <ul>
682
- <li>&raquo; <a target="_blank" href="http://www.seedprod.com/features/?utm_source=coming-soon-plugin&utm_medium=banner&utm_campaign=coming-soon-link-in-plugin"><?php _e('Buy It', 'coming-soon') ?></a></li>
683
-
684
- <li>&raquo; <a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/coming-soon?rate=5#postform"><?php _e('Rate It on WordPress.org', 'coming-soon') ?></a></li>
685
- <li>&raquo; <a target="_blank" href="<?php echo "http://twitter.com/share?url=https%3A%2F%2Fwordpress.org%2Fplugins%2Fultimate-coming-soon-page%2F&text=Check out this awesome %23WordPress Plugin I'm using, Coming Soon Page and Maintenance Mode by SeedProd"; ?>"><?php _e('Tweet It', 'coming-soon') ?></a></li>
686
- </ul>
687
- </div>
688
- </div>
689
- </div> -->
690
-
691
-
692
-
693
- <!-- <div class="postbox rss-postbox">
694
- <div class="handlediv" title="Click to toggle"><br /></div>
695
- <h3 class="hndle"><span><i class="fab fa-wordpress"></i>&nbsp;&nbsp;<?php _e('SeedProd Blog', 'ultimate-coming-soon-page') ?></span></h3>
696
- <div class="inside">
697
-
698
- <div class="rss-widget">
699
- <?php
700
- wp_widget_rss_output(array(
701
- 'url' => 'http://feeds.feedburner.com/seedprod/',
702
- 'title' => 'SeedProd Blog',
703
- 'items' => 3,
704
- 'show_summary' => 0,
705
- 'show_author' => 0,
706
- 'show_date' => 1,
707
- )); ?>
708
- <ul>
709
-
710
- </ul>
711
- </div>
712
- </div>
713
- </div> -->
714
-
715
- </div>
716
- </div>
717
- </div> <!-- #post-body -->
718
-
719
-
720
- </div> <!-- #poststuff -->
721
- <?php endif; ?>
722
- </div> <!-- .wrap -->
723
- </div>
724
-
725
- <?php
726
- if (!empty($_GET['tab']) && $_GET['tab'] == 'seed_csp4_design') {
727
- ?>
728
-
729
-
730
- <?php
731
- } ?>
732
-
733
- <!-- JS login to confirm setting resets. -->
734
- <script>
735
- jQuery(document).ready(function($) {
736
- $('#reset').click(function(e) {
737
- if (!confirm(
738
- '<?php _e('This tabs settings be deleted and reset to the defaults. Are you sure you want to reset?', 'coming-soon'); ?>'
739
- )) {
740
- e.preventDefault();
741
- }
742
- });
743
- });
744
- </script>
745
-
746
-
747
- <?php include SEED_CSP4_PLUGIN_PATH.'resources/views/exit-pop.php'; ?>
748
-
749
- <script>
750
- jQuery(document).ready(function($) {
751
- $(".seed-csp4-cta").click(function(e) {
752
- jQuery('.exit-popup-link').magnificPopup('open');
753
- });
754
- });
755
- </script>
756
- <?php
757
- }
758
-
759
- /**
760
- * Create the settings options, sections and fields via the WordPress Settings API
761
- *
762
- * This function is attached to the admin_init action hook.
763
- *
764
- * @since 0.1.0
765
- */
766
- public function create_settings()
767
- {
768
- foreach (seed_csp4_get_options() as $k => $v) {
769
- switch ($v[ 'type' ]) {
770
- case 'menu':
771
- $menu_slug = $v[ 'menu_slug' ];
772
-
773
- break;
774
- case 'setting':
775
- if (empty($v[ 'validate_function' ])) {
776
- $v[ 'validate_function' ] = array(
777
- &$this,
778
- 'validate_machine'
779
- );
780
- }
781
- register_setting($v[ 'id' ], $v[ 'id' ], $v[ 'validate_function' ]);
782
- $setting_id = $v[ 'id' ];
783
- break;
784
- case 'section':
785
- if (empty($v[ 'desc_callback' ])) {
786
- $v[ 'desc_callback' ] = array(
787
- &$this,
788
- 'return_empty_string'
789
- );
790
- } else {
791
- $v[ 'desc_callback' ] = $v[ 'desc_callback' ];
792
- }
793
- add_settings_section($v[ 'id' ], $v[ 'label' ], $v[ 'desc_callback' ], $v[ 'id' ]);
794
- $section_id = $v[ 'id' ];
795
- break;
796
- case 'tab':
797
- break;
798
- default:
799
- if (empty($v[ 'callback' ])) {
800
- $v[ 'callback' ] = array(
801
- &$this,
802
- 'field_machine'
803
- );
804
- }
805
-
806
- add_settings_field($v[ 'id' ], $v[ 'label' ], $v[ 'callback' ], $section_id, $section_id, array(
807
- 'id' => $v[ 'id' ],
808
- 'desc' => (isset($v[ 'desc' ]) ? $v[ 'desc' ] : ''),
809
- 'setting_id' => $setting_id,
810
- 'class' => (isset($v[ 'class' ]) ? $v[ 'class' ] : ''),
811
- 'type' => $v[ 'type' ],
812
- 'default_value' => (isset($v[ 'default_value' ]) ? $v[ 'default_value' ] : ''),
813
- 'option_values' => (isset($v[ 'option_values' ]) ? $v[ 'option_values' ] : '')
814
- ));
815
-
816
- }
817
- }
818
- }
819
-
820
- /**
821
- * Create a field based on the field type passed in.
822
- *
823
- * @since 0.1.0
824
- */
825
- public function field_machine($args)
826
- {
827
- extract($args); //$id, $desc, $setting_id, $class, $type, $default_value, $option_values
828
-
829
- // Load defaults
830
- $defaults = array( );
831
- foreach (seed_csp4_get_options() as $k) {
832
- switch ($k[ 'type' ]) {
833
- case 'setting':
834
- case 'section':
835
- case 'tab':
836
- break;
837
- default:
838
- if (isset($k[ 'default_value' ])) {
839
- $defaults[ $k[ 'id' ] ] = $k[ 'default_value' ];
840
- }
841
- }
842
- }
843
- $options = get_option($setting_id);
844
-
845
- $options = wp_parse_args($options, $defaults);
846
-
847
- $path = SEED_CSP4_PLUGIN_PATH . 'framework/field-types/' . $type . '.php';
848
- if (file_exists($path)) {
849
- // Show Field
850
- include($path);
851
- // Show description
852
- if (!empty($desc)) {
853
- echo "<small class='description'>{$desc}</small>";
854
- }
855
- }
856
- }
857
-
858
- /**
859
- * Validates user input before we save it via the Options API. If error add_setting_error
860
- *
861
- * @since 0.1.0
862
- * @param array $input Contains all the values submitted to the POST.
863
- * @return array $input Contains sanitized values.
864
- * @todo Figure out best way to validate values.
865
- */
866
- public function validate_machine($input)
867
- {
868
- $option_page = $_POST['option_page'];
869
- foreach (seed_csp4_get_options() as $k) {
870
- switch ($k[ 'type' ]) {
871
- case 'menu':
872
- case 'setting':
873
- if (isset($k['id'])) {
874
- $setting_id = $k['id'];
875
- }
876
- // no break
877
- case 'section':
878
- case 'tab':
879
- break;
880
- default:
881
- if (!empty($k[ 'validate' ]) && $setting_id == $option_page) {
882
- $validation_rules = explode(',', $k[ 'validate' ]);
883
-
884
- foreach ($validation_rules as $v) {
885
- $path = SEED_CSP4_PLUGIN_PATH . 'framework/validations/' . $v . '.php';
886
- if (file_exists($path)) {
887
- // Defaults Values
888
- $is_valid = true;
889
- $error_msg = '';
890
-
891
- // Test Validation
892
- include($path);
893
-
894
- // Is it valid?
895
- if ($is_valid === false) {
896
- add_settings_error($k[ 'id' ], 'seedprod_error', $error_msg, 'error');
897
- // Unset invalids
898
- unset($input[ $k[ 'id' ] ]);
899
- }
900
- }
901
- } //end foreach
902
- }
903
- }
904
- }
905
-
906
- return $input;
907
- }
908
-
909
- /**
910
- * Dummy function to be called by all sections from the Settings API. Define a custom function in the config.
911
- *
912
- * @since 0.1.0
913
- * @return string Empty
914
- */
915
- public function return_empty_string()
916
- {
917
- echo '';
918
- }
919
-
920
-
921
- /**
922
- * SeedProd version of WP's do_settings_sections
923
- *
924
- * @since 0.1.0
925
- */
926
- public function do_settings_sections($page, $show_submit)
927
- {
928
- global $wp_settings_sections, $wp_settings_fields;
929
-
930
- if (!isset($wp_settings_sections) || !isset($wp_settings_sections[ $page ])) {
931
- return;
932
- }
933
-
934
- foreach ((array) $wp_settings_sections[ $page ] as $section) {
935
- echo "<h3 class='hndle'>{$section['title']}</h3>\n";
936
- echo '<div class="inside">';
937
- call_user_func($section[ 'callback' ], $section);
938
- if (!isset($wp_settings_fields) || !isset($wp_settings_fields[ $page ]) || !isset($wp_settings_fields[ $page ][ $section[ 'id' ] ])) {
939
- continue;
940
- }
941
- echo '<table class="form-table">';
942
- $this->do_settings_fields($page, $section[ 'id' ]);
943
- echo '</table>';
944
- if ($show_submit): ?>
945
- <p>
946
- <input name="submit" type="submit" value="<?php _e('Save All Changes', 'coming-soon'); ?>" class="button-primary" />
947
- </p>
948
- <?php endif;
949
- echo '</div>';
950
- }
951
- }
952
-
953
- public function do_settings_fields($page, $section)
954
- {
955
- global $wp_settings_fields;
956
-
957
- if (!isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section])) {
958
- return;
959
- }
960
-
961
- foreach ((array) $wp_settings_fields[$page][$section] as $field) {
962
- echo '<tr valign="top">';
963
- if (!empty($field['args']['label_for'])) {
964
- echo '<th scope="row"><label for="' . $field['args']['label_for'] . '">' . $field['title'] . '</label></th>';
965
- } else {
966
- echo '<th scope="row"><strong>' . $field['title'] . '</strong><!--<br>'.$field['args']['desc'].'--></th>';
967
- }
968
- echo '<td>';
969
- call_user_func($field['callback'], $field['args']);
970
- echo '</td>';
971
- echo '</tr>';
972
- }
973
- }
974
- }
975
-
976
- add_action('admin_head', 'seed_csp4_set_user_settings');
977
- function seed_csp4_set_user_settings()
978
- {
979
- if (isset($_GET['page']) && $_GET['page'] == 'seed_csp4') {
980
- $user_id = get_current_user_id();
981
- $options = get_user_option('user-settings', $user_id);
982
- parse_str($options, $user_settings);
983
- $user_settings['imgsize'] = 'full';
984
- update_user_option($user_id, 'user-settings', http_build_query($user_settings), false);
985
- update_user_option($user_id, 'user-settings-time', time(), false);
986
- }
987
- }
988
-
989
-
990
- function seed_csp4_plugins_active(){
991
- // check if plugin is installed
992
- $am_plugins = array(
993
- 'rafflepress/rafflepress.php' => 'rafflepress' ,
994
- 'rafflepress-pro/rafflepress-pro.php' => 'rafflepress-pro' ,
995
- );
996
- $all_plugins = get_plugins();
997
-
998
- $response = array();
999
-
1000
- foreach ($am_plugins as $slug => $label) {
1001
- if (array_key_exists($slug, $all_plugins)) {
1002
- if (is_plugin_active($slug)) {
1003
- $response[$label] = 'Active';
1004
- } else {
1005
- $response[$label] = 'Inactive';
1006
- }
1007
- } else {
1008
- $response[$label]= 'Not Installed';
1009
- }
1010
- }
1011
- return $response;
1012
- }
1013
-
1014
-
1015
- function seed_csp4_disable_admin_notices()
1016
- {
1017
- global $wp_filter;
1018
- if ( ! empty( $wp_filter['user_admin_notices']->callbacks ) && is_array( $wp_filter['user_admin_notices']->callbacks ) ) {
1019
- foreach ( $wp_filter['user_admin_notices']->callbacks as $priority => $hooks ) {
1020
- foreach ( $hooks as $name => $arr ) {
1021
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
1022
- unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
1023
- continue;
1024
- }
1025
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'TGM' ) !== false ) {
1026
- continue;
1027
- }
1028
- if ( ! empty( $name ) && strpos( $name, 'TGM' ) === false ) {
1029
- unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
1030
- }
1031
- }
1032
- }
1033
- }
1034
-
1035
- if ( ! empty( $wp_filter['admin_notices']->callbacks ) && is_array( $wp_filter['admin_notices']->callbacks ) ) {
1036
- foreach ( $wp_filter['admin_notices']->callbacks as $priority => $hooks ) {
1037
- foreach ( $hooks as $name => $arr ) {
1038
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
1039
- unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
1040
- continue;
1041
- }
1042
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'TGM' ) !== false ) {
1043
- continue;
1044
- }
1045
- if ( ! empty( $name ) && strpos( $name, 'TGM' ) === false ) {
1046
- unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
1047
- }
1048
- }
1049
- }
1050
- }
1051
-
1052
- if ( ! empty( $wp_filter['all_admin_notices']->callbacks ) && is_array( $wp_filter['all_admin_notices']->callbacks ) ) {
1053
- foreach ( $wp_filter['all_admin_notices']->callbacks as $priority => $hooks ) {
1054
- foreach ( $hooks as $name => $arr ) {
1055
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
1056
- unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
1057
- continue;
1058
- }
1059
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'TGM' ) !== false ) {
1060
- continue;
1061
- }
1062
- if ( ! empty( $name ) && strpos( $name, 'TGM' ) === false ) {
1063
- unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
1064
- }
1065
- }
1066
- }
1067
- }
1068
- }
1069
- if (!empty($_GET['page']) && strpos($_GET['page'], 'seed_csp4') !== false) {
1070
- //add_action('admin_print_scripts', 'seed_csp4_disable_admin_notices');
1071
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/get-settings.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- function seed_csp4_get_settings(){
3
- $s1 = get_option('seed_csp4_settings_content');
4
- $s2 = get_option('seed_csp4_settings_design');
5
- $s3 = get_option('seed_csp4_settings_advanced');
6
-
7
- if(empty($s1))
8
- $s1 = array();
9
-
10
- if(empty($s2))
11
- $s2 = array();
12
-
13
- if(empty($s3))
14
- $s3 = array();
15
-
16
- $settings = $s1 + $s2 + $s3;
17
-
18
-
19
- return apply_filters( 'seed_csp4_get_settings', $settings );;
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/getting-started-banner.png DELETED
Binary file
framework/review.php DELETED
@@ -1,113 +0,0 @@
1
- <?php
2
-
3
- // Review Request
4
- add_action( 'admin_footer_text', 'seed_csp4_admin_footer' );
5
-
6
- function seed_csp4_admin_footer( $text ) {
7
-
8
- global $current_screen;
9
- // $review = get_option( 'seed_csp4_review' );
10
- // if ( isset( $review['dismissed'] ) && $review['dismissed']){
11
- // return $text;
12
- // }
13
-
14
-
15
- if ( !empty( $current_screen->id ) && strpos( $current_screen->id, 'seed_csp4' ) !== false ) {
16
-
17
- $url = 'https://wordpress.org/support/plugin/coming-soon/reviews/?filter=5#new-post';
18
- $text = sprintf( __( 'Please rate <strong>SeedProd</strong> <a href="%s" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from the SeedProd team!', 'coming-soon' ), $url, $url );
19
- }
20
- return $text;
21
- }
22
-
23
- if(!empty($_GET['page']) && $_GET['page'] == 'seed_csp4'){
24
- //add_action( 'admin_notices', 'seed_csp4_review' );
25
- }
26
- function seed_csp4_review() {
27
-
28
- // Verify that we can do a check for reviews.
29
-
30
- $review = get_option( 'seed_csp4_review' );
31
- $time = time();
32
- $load = false;
33
- $settings = seed_csp4_get_settings();
34
-
35
-
36
- if ( ! $review ) {
37
- $review = array(
38
- 'time' => $time,
39
- 'dismissed' => false
40
- );
41
- $load = true;
42
- } else {
43
- // Check if it has been dismissed or not.
44
- //if ( (isset( $review['dismissed'] ) && ! $review['dismissed']) && (isset( $review['time'] ) && (($review['time'] + DAY_IN_SECONDS) <= $time) && $settings['status'] > 0) ) {
45
- if ( (isset( $review['dismissed'] ) && ! $review['dismissed']) ) {
46
- $load = true;
47
- }
48
- }
49
-
50
-
51
- // If we cannot load, return early.
52
- if ( ! $load ) {
53
- return;
54
- }
55
-
56
- // Update the review option now.
57
- update_option( 'seed_csp4_review', $review );
58
-
59
- $current_user = wp_get_current_user();
60
- $fname = '';
61
- if(!empty($current_user->user_firstname)){
62
- $fname = $current_user->user_firstname;
63
- }
64
-
65
- $page_type = 'Coming Soon Page';
66
- if(!empty($settings['status']) && $settings['status'] == 2){
67
- $page_type = 'Maintenance Mode Page';
68
- }
69
-
70
-
71
- // We have a candidate! Output a review message.
72
- ?>
73
- <div class="notice notice-info is-dismissible seed-csp4-review-notice">
74
- <p><?php printf(__( 'Hey %s, <br><br>I just want to say "Thank you" using this free plugin. If you have any questions post it to our <a href="https://wordpress.org/support/plugin/coming-soon">support forums</a>.<br><br>Also check out the &#8594; <a href="%s" target="blank" rel="noopener noreferrer">special upgrade offer</a> we have going on right now for the Pro Verison.<br><br>Hope you have a great %s! Cheers', 'coming-soon' ),ucfirst($fname),seed_csp4_admin_upgrade_link( 'special-offer' ), date('l') ); ?></p>
75
- <p><strong><?php _e( '--<br> John Turner<br><a href="'.seed_csp4_admin_upgrade_link( 'special-offer' ).'" target="blank" rel="noopener noreferrer">SeedProd.com</a>', 'coming-soon' ); ?></strong></p>
76
- <p>
77
- <!-- <a href="https://wordpress.org/support/plugin/coming-soon/reviews/?filter=5#new-post" class="seed-csp4-dismiss-review-notice seed-csp4-review-out" target="_blank" rel="noopener"><?php _e( 'Ok, you deserve it', 'coming-soon' ); ?></a><br> -->
78
- <a href="#" class="seed-csp4-dismiss-review-notice" target="_blank" rel="noopener"><?php _e( 'Dismiss Notice', 'coming-soon' ); ?></a><br>
79
- <!-- <a href="#" class="seed-csp4-dismiss-review-notice" target="_blank" rel="noopener"><?php _e( 'I already did', 'coming-soon' ); ?></a><br> -->
80
- </p>
81
- </div>
82
- <script type="text/javascript">
83
- jQuery(document).ready( function($) {
84
- $(document).on('click', '.seed-csp4-dismiss-review-notice, .seed-csp4-review-notice .notice-dismiss', function( event ) {
85
- if ( ! $(this).hasClass('seed-csp4-review-out') ) {
86
- event.preventDefault();
87
- }
88
-
89
- $.post( ajaxurl, {
90
- action: 'seed_csp4_dismiss_review'
91
- });
92
-
93
- $('.seed-csp4-review-notice').remove();
94
- });
95
- });
96
- </script>
97
- <?php
98
- }
99
-
100
- add_action( 'wp_ajax_seed_csp4_dismiss_review', 'seed_csp4_dismiss_review' );
101
- function seed_csp4_dismiss_review() {
102
-
103
- $review = get_option( 'seed_csp4_review' );
104
- if ( ! $review ) {
105
- $review = array();
106
- }
107
-
108
- $review['time'] = time();
109
- $review['dismissed'] = true;
110
-
111
- update_option( 'seed_csp4_review', $review );
112
- die;
113
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/settings-scripts.js DELETED
@@ -1,8 +0,0 @@
1
- // This is place for js you need to execute on the settings page. This file will only load on the menu pages you've define in the config file.
2
-
3
- jQuery(document).ready(function($){
4
-
5
- });
6
-
7
- /*! http://mths.be/placeholder v2.0.7 by @mathias */
8
- ;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder');l==h.activeElement&&l.select()}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
 
 
 
 
 
 
 
 
framework/settings-style.css DELETED
@@ -1,756 +0,0 @@
1
- /* This is place for css you need to execute on the settings page. This file will only load on the menu pages you've define in the config file. */
2
- .seed-csp4 .seed_csp4-version{
3
- font-size:10px;
4
- }
5
-
6
- .seed-csp4 .mceLayout{
7
- background-color:#fff;
8
- }
9
-
10
- #seed_csp4_quicklinks{
11
- line-height: 1;
12
- position: fixed;
13
- bottom: 25px;
14
- right: 25px;
15
- z-index:9999;
16
- }
17
-
18
- #seed_csp4_quicklinks i{
19
- font-size: 16px;
20
- }
21
-
22
- .seed_csp4_quicklinks_menu_item_wrapper:hover .seed_csp4_quicklinks_inner_item{
23
- background: #049C4A !important;
24
- }
25
-
26
- .seed_csp4_quicklinks_menu_item a{
27
- color:#fff !important;;
28
- text-decoration: none !important;
29
- outline: none !important;
30
- box-shadow:none !important;
31
- }
32
-
33
- .seed_csp4_quicklinks_inner_item {
34
- background: #04be5b !important;
35
- display: flex;
36
- min-height: 20px;
37
- align-items: center;
38
-
39
- }
40
-
41
- .seed_csp4_quicklinks_inner_item a{
42
- color:#fff !important;;
43
- text-decoration: none !important;
44
- outline: none !important;
45
- box-shadow:none !important;
46
- }
47
-
48
- .seed_csp4_quicklinks_inner,.seed_csp4_quicklinks_inner_item{
49
- background: #fff;
50
- border-radius:50%;
51
- padding:10px;
52
- box-shadow: 0px 0px 15px rgba(0,0,0,.25)!important;
53
- }
54
- #seed_csp4_quicklinks img{
55
- width:45px;
56
- transform: rotate(0deg);
57
- transition: all 0.2s ease-out;
58
- }
59
-
60
- #seed_csp4_quicklinks.active img{
61
- transform: rotate(30deg);
62
- transition: all 0.2s ease-out;
63
- }
64
-
65
- #seed_csp4_quicklinks.active .seed_csp4_quicklinks_menu{
66
- opacity: 0;
67
- transition: all 0.2s ease-out;
68
- }
69
-
70
-
71
- .seed_csp4_quicklinks_base,.seed_csp4_quicklinks_menu_item_wrapper{
72
- display:flex;
73
- align-items: center;
74
- cursor: pointer;
75
- }
76
-
77
- .seed_csp4_quicklinks_menu_item_wrapper{
78
- margin-bottom:7px;
79
- }
80
-
81
- .seed_csp4_quicklinks_menu,.seed_csp4_quicklinks_menu_item{
82
- background: #666;
83
- color: #fff;
84
- padding: 4px;
85
- border-radius: 5px;
86
- margin-right:10px;
87
- box-shadow: 0px 0px 3px rgba(255, 255, 255, 1);
88
- transition: all 0.2s ease-out;
89
- }
90
-
91
- .seed_csp4_quicklinks_menu_list{
92
- flex-direction: column;
93
- align-items: flex-end;
94
- position: relative;
95
- right: 14px;
96
- opacity: 0;
97
- display: none;
98
- transition: all 0.2s ease-out;
99
- }
100
-
101
- #seed_csp4_quicklinks.active .seed_csp4_quicklinks_menu_list{
102
- opacity: 1;
103
- display: flex;
104
- transition: all 0.2s ease-out;
105
- }
106
-
107
-
108
- #seed_csp4_header{
109
-
110
- /*
111
- background: #ca3058;
112
- background: -moz-linear-gradient(-45deg,#ca3058 0%,#ff9a4b 100%);
113
- background: -webkit-linear-gradient(-45deg,#ca3058 0%,#ff9a4b 100%);
114
- background: linear-gradient(135deg,#ca3058 0%,#ff9a4b 100%);
115
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ca3058',endColorstr='#ff9a4b',GradientType=1 ); */
116
-
117
-
118
- padding:20px 20px 0 20px;
119
- margin-left:-19px;
120
- position: relative;
121
- border-bottom: 1px solid rgba(211, 63, 98, 0);
122
- }
123
-
124
- #seed_csp4_header h1{
125
- padding:0;
126
- margin:0;
127
-
128
- }
129
-
130
- #seed_csp4_header_bg{
131
- position: absolute;
132
- right: 60px;
133
- bottom: 54px;
134
- color: #fff;
135
- font-size: 84px;
136
- opacity: 0.5;
137
- display:none;
138
-
139
- }
140
-
141
- .toplevel_page_seed_csp4 #wpcontent{
142
- padding-left: 19px;
143
- }
144
-
145
- .toplevel_page_seed_csp4 .wrap{
146
- margin:0px;
147
- }
148
-
149
- .seed-wrap {
150
- margin: 10px 20px 0 2px;
151
- }
152
-
153
- /* .nav-tab-wrapper, .wrap h2.nav-tab-wrapper, h1.nav-tab-wrapper{
154
- border-bottom:none;
155
- }
156
-
157
- .nav-tab {
158
- float: left;
159
- border: 1px solid rgba(255, 255, 255, 0.41);
160
- border-bottom: none;
161
- margin-left: .5em;
162
- padding: 5px 10px;
163
- font-size: 14px;
164
- line-height: 24px;
165
- background: #ffffff00;
166
- color: #fff;
167
- } */
168
-
169
- /* .nav-tab-active{
170
- border-bottom: 1px solid #f1f1f1;
171
- background: #f1f1f1;
172
- color: #000;
173
- }
174
-
175
- .nav-tab-wrapper, .wrap h2.nav-tab-wrapper, h1.nav-tab-wrapper{
176
- margin-bottom: -1px;
177
- } */
178
-
179
- .wp-core-ui .button-primary {
180
- background: #04be5b;
181
- border-color:rgba(0,0,0,.1);
182
- box-shadow: 0 1px 0 #ccc;
183
- color: #fff;
184
- text-decoration: none;
185
- text-shadow: 0 -1px 1px #04be5b, 1px 0 1px #04be5b, 0 1px 1px #04be5b, -1px 0 1px #04be5b;
186
- }
187
-
188
- .wp-core-ui .button-primary.focus, .wp-core-ui .button-primary.hover, .wp-core-ui .button-primary:focus, .wp-core-ui .button-primary:hover {
189
- background: #01c96d;
190
- border-color: rgba(255,255,255,.1);
191
- color: #fff;
192
- }
193
-
194
- .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover, .wp-core-ui .button-primary:active {
195
- background: #01c96d;
196
- border-color: rgba(255,255,255,.1);
197
- box-shadow: inset 0 2px 0 #04be5b;
198
- vertical-align: top;
199
- }
200
-
201
- #stockimages-popup {
202
- position: relative;
203
- background: #FFF;
204
- padding: 20px;
205
- width: auto;
206
- margin: 20px auto;
207
- text-align:center;
208
- }
209
-
210
- #stockimages-popup .grid {
211
- margin:auto;
212
- }
213
-
214
- #stockimages-popup h1 {
215
- font-size:32px;
216
- margin-bottom:20px
217
- }
218
-
219
-
220
- #themes-popup {
221
- position: relative;
222
- background: #FFF;
223
- padding: 20px;
224
- width: auto;
225
- margin-top:20px;
226
- }
227
-
228
- #themes-popup h1 {
229
- font-size:32px;
230
- margin-bottom:20px
231
- }
232
-
233
- #themes-popup .themes-grid {
234
- display: flex;
235
- align-items: center;
236
- justify-content: center;
237
- flex-wrap: wrap;
238
- text-align: center;
239
- }
240
-
241
- #themes-popup .theme-grid-item{
242
- padding-right:3px
243
- }
244
-
245
- #themes-popup .theme-grid-item img{
246
- width:250px;
247
- }
248
-
249
- #seed-csp4-themes-preview{
250
- position: relative;
251
- }
252
-
253
- #seed_csp4_section_themes th{
254
- display: none;
255
- }
256
-
257
- #seed-csp4-themes-preview-gradient{
258
- position: absolute;
259
- top:0;
260
- right:0;
261
- width:70px;
262
- height: 100%;
263
- z-index: 2;
264
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffffff+0,ffffff+78&0+0,1+78 */
265
- background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 78%); /* FF3.6-15 */
266
- background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 78%); /* Chrome10-25,Safari5.1-6 */
267
- background: linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 78%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
268
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 ); /* IE6-9 */
269
- }
270
-
271
- .seed-csp4-themes-preview-item img{
272
- width:200px;
273
- }
274
-
275
- .seed-csp4-themes-preview-grid{
276
- white-space: nowrap;
277
-
278
- }
279
-
280
- .seed-csp4-themes-preview-item {
281
- display: inline-block;
282
- position: relative;
283
- }
284
-
285
- #seed_csp4_section_themes .inside{
286
- overflow: hidden;
287
- }
288
-
289
- .mfp-wrap{
290
- z-index: 999999 !important;
291
- }
292
-
293
- .mfp-bg{
294
- z-index: 999999 !important;
295
- }
296
-
297
- #seed_csp4_section_themes input[type="submit"], #seed_csp4_section_license input[type="submit"] {
298
- display:none;
299
- }
300
-
301
- .seed-ribbon {
302
- position: absolute;
303
- left: 0px;
304
- top: 0px;
305
- z-index: 1;
306
- overflow: hidden;
307
- width: 75px;
308
- height: 75px;
309
- text-align: left;
310
- }
311
-
312
- .seed-ribbon span {
313
- font-size: 10px;
314
- font-weight: 700;
315
- color: #fff;
316
- text-transform: uppercase;
317
- text-align: center;
318
- line-height: 20px;
319
- transform: rotate(-45deg);
320
- width: 100px;
321
- display: block;
322
- background: #79a70a;
323
- background: linear-gradient(#ff9c41 0%,#ff9c41 100%);
324
- box-shadow: 0 3px 10px -5px #000;
325
- position: absolute;
326
- top: 19px;
327
- left: -21px;
328
- }
329
-
330
-
331
- #stockimages-popup .pagination {
332
- display: inline-block;
333
- padding-left: 0;
334
- margin: 20px 0;
335
- border-radius: 4px;
336
- }
337
-
338
- #stockimages-popup .pagination>li {
339
- display: inline;
340
- }
341
-
342
- #stockimages-popup .pagination>li:first-child>a, #stockimages-popup .pagination>li:first-child>span {
343
- margin-left: 0;
344
- }
345
-
346
- #stockimages-popup .pagination>li>a, #stockimages-popup .pagination>li>span {
347
- position: relative;
348
- float: left;
349
- padding: 6px 9px;
350
- margin-left: -1px;
351
- line-height: 1.42857143;
352
- color: #04be5b;
353
- text-decoration: none;
354
- background-color: #fff;
355
- border: 1px solid #ddd;
356
- }
357
-
358
- #stockimages-popup #cspv5_background_search input[type="text"] {
359
- height:28px
360
- }
361
-
362
- #cspv5_background_search{
363
- font-size:10px
364
- }
365
-
366
- #stockimages-popup .pagination>.active>a, #stockimages-popup .pagination>.active>a:focus, #stockimages-popup .pagination>.active>a:hover, #stockimages-popup .pagination>.active>span, #stockimages-popup .pagination>.active>span:focus, #stockimages-popup .pagination>.active>span:hover {
367
- z-index: 2;
368
- color: #fff;
369
- cursor: default;
370
- background-color: #04be5b;
371
- border-color: #04be5b;
372
- }
373
-
374
- #stockimages-popup .pagination>li>a:focus,#stockimages-popup .pagination>li>a:hover,#stockimages-popup .pagination>li>span:focus, #stockimages-popup .pagination>li>span:hover {
375
- z-index: 3;
376
- color: #04be5b;
377
- background-color: #eee;
378
- border-color: #ddd;
379
- }
380
-
381
- .seed-subscribers-wrapper{
382
- position: relative;
383
- }
384
-
385
- .seed-subscribers{
386
- -webkit-filter: blur(3px);
387
- -moz-filter: blur(3px);
388
- -ms-filter: blur(3px);
389
- -o-filter: blur(3px);
390
- filter: blur(3px);
391
- }
392
-
393
- .seedprod-modal {
394
- text-align: center;
395
- width: 730px;
396
- box-shadow: 0 0 60px 30px rgba(0, 0, 0, 0.15);
397
- border-radius: 3px;
398
- position: absolute;
399
- top: 75px;
400
- left: 50%;
401
- margin: 0 auto 0 -365px;
402
- z-index: 100;
403
- }
404
-
405
- .seedprod-modal-content {
406
- background-color: #fff;
407
- border-radius: 3px 3px 0 0;
408
- padding: 40px;
409
- }
410
-
411
- .seedprod-modal h2 {
412
- font-size: 20px;
413
- margin: 0 0 16px 0;
414
- padding: 0;
415
- }
416
-
417
- .seedprod-modal p {
418
- font-size: 16px;
419
- color: #666;
420
- margin: 0 0 30px 0;
421
- padding: 0;
422
- }
423
- .seedprod-modal-button {
424
- border-radius: 0 0 3px 3px;
425
- padding: 30px;
426
- background: #f5f5f5;
427
- text-align: center;
428
- }
429
-
430
-
431
- .seedprod-modal ul {
432
- float: left;
433
- width: 45%;
434
- margin: 0;
435
- padding: 0 0 0 30px;
436
- text-align: left;
437
- }
438
-
439
- .seedprod-modal .button-primary{
440
- padding:18px 28px;
441
- font-size: 18px;
442
- height: auto;
443
- }
444
-
445
- .seedprod-modal li {
446
- color: #666;
447
- font-size: 16px;
448
- padding: 6px 0;
449
- }
450
-
451
- .seedprod-modal li .fa {
452
- color: #2a9b39;
453
- margin: 0 8px 0 0;
454
- }
455
-
456
- .seedprod-modal h2 {
457
- font-size: 20px !important;
458
- margin: 0 0 16px 0 !important;
459
- padding: 0 !important;
460
- }
461
-
462
- .seed-csp4-clear:after {
463
- clear: both;
464
- content: " ";
465
- display: table;
466
- }
467
-
468
- .seed-csp4 .discount-note {
469
- font-style: italic;
470
- color: #666;
471
- }
472
-
473
- .seed-csp4 .discount-note strong {
474
- color: green;
475
- }
476
-
477
- /* AddOns Page */
478
- #seed-csp4-admin-addons *, #seed-csp4-admin-addons *::before, #seed-csp4-admin-addons *::after {
479
- -webkit-box-sizing: border-box;
480
- -moz-box-sizing: border-box;
481
- box-sizing: border-box;
482
- }
483
-
484
- #seed-csp4-admin-addons .addons-container {
485
- margin-left: -20px;
486
- margin-right: -20px;
487
- }
488
-
489
- #seed-csp4-admin-addons .addon-container {
490
- padding: 0 20px;
491
- float: left;
492
- width: 33.333333%;
493
- }
494
-
495
- #seed-csp4-admin-addons .addon-item {
496
- background-color: #fff;
497
- border: 1px solid #ddd;
498
- border-radius: 3px;
499
- margin: 0 0 40px 0;
500
- }
501
-
502
- #seed-csp4-admin-addons .addon-item .details {
503
- padding: 30px 20px;
504
- }
505
-
506
- #seed-csp4-admin-addons .addon-item img {
507
- border: 1px solid #eee;
508
- float: left;
509
- max-width: 75px;
510
- }
511
-
512
- #seed-csp4-admin-addons .addon-item h5 {
513
- margin: 0 0 10px 100px;
514
- font-size: 16px;
515
- }
516
-
517
- #seed-csp4-admin-addons .addon-item p {
518
- margin: 0 0 0 100px;
519
- }
520
-
521
- #seed-csp4-admin-addons .addon-item .actions {
522
- background-color: #f7f7f7;
523
- border-top: 1px solid #ddd;
524
- padding: 20px;
525
- position: relative;
526
- }
527
-
528
- #seed-csp4-admin-addons .addon-item .upgrade-button {
529
- text-align: center;
530
- }
531
-
532
- #seed-csp4-admin-addons .addon-item .upgrade-button a {
533
- font-weight: 600;
534
- width: 140px;
535
- text-align: center;
536
- padding: 8px 5px;
537
- }
538
-
539
- #seed-csp4-admin-addons .seed-csp4-btn-light-grey {
540
- background-color: #f5f5f5;
541
- border: 1px solid #ccc !important;
542
- color: #666;
543
- }
544
-
545
- #seed-csp4-admin-addons .seed-csp4-btn-light-grey:hover {
546
- background-color: #04be5b !important;
547
- color: #fff !important;
548
- }
549
-
550
-
551
-
552
- #seed-csp4-admin-addons .seed-csp4-btn {
553
- border: 0;
554
- border-radius: 3px;
555
- cursor: pointer;
556
- display: inline-block;
557
- margin: 0;
558
- text-decoration: none;
559
- text-align: center;
560
- vertical-align: middle;
561
- white-space: nowrap;
562
- box-shadow: none;
563
- }
564
-
565
-
566
-
567
- .theme-grid-item {
568
- position: relative;
569
- }
570
-
571
- .theme-grid-item img {
572
- opacity: 1;
573
- display: block;
574
- width: 100%;
575
- height: auto;
576
- transition: .5s ease;
577
- backface-visibility: hidden;
578
- }
579
-
580
- .theme-grid-item .seed-csp4-middle {
581
- transition: .5s ease;
582
- opacity: 0;
583
- position: absolute;
584
- top: 40%;
585
- left: 50%;
586
- transform: translate(-50%, -50%);
587
- -ms-transform: translate(-50%, -50%);
588
- text-align: center;
589
- }
590
-
591
- .theme-grid-item:hover img {
592
- opacity: 0.3;
593
- }
594
-
595
- .theme-grid-item:hover .seed-csp4-middle {
596
- opacity: 1;
597
- }
598
-
599
- .theme-grid-item .seed-csp4-text {
600
- background-color: #04be5b;
601
- color: white;
602
- font-size: 16px;
603
- padding: 16px 32px;
604
- border-radius:4px;
605
- cursor: pointer;
606
- }
607
-
608
-
609
-
610
-
611
- #stockimages-popup .grid-item {
612
- position: relative;
613
- }
614
-
615
- #stockimages-popup .grid-item img {
616
- opacity: 1;
617
- transition: .5s ease;
618
- backface-visibility: hidden;
619
- /* width: 100%;
620
- height: auto;
621
- */
622
- }
623
-
624
- #stockimages-popup .grid-item .seed-csp4-middle {
625
- transition: .5s ease;
626
- opacity: 0;
627
- position: absolute;
628
- top: 50%;
629
- left: 50%;
630
- transform: translate(-50%, -50%);
631
- -ms-transform: translate(-50%, -50%);
632
- text-align: center;
633
- }
634
-
635
- #stockimages-popup .grid-item:hover img {
636
- opacity: 0.3;
637
- }
638
-
639
- #stockimages-popup .grid-item:hover .seed-csp4-middle {
640
- opacity: 1;
641
- }
642
-
643
- #stockimages-popup .grid-item .seed-csp4-text {
644
- background-color: #04be5b;
645
- color: white;
646
- font-size: 16px;
647
- padding: 16px 32px;
648
- border-radius:4px;
649
- cursor: pointer;
650
- }
651
-
652
-
653
- .exit-popup {
654
- position: relative;
655
- background: #FFF;
656
- padding: 20px;
657
- width: auto;
658
- max-width: 500px;
659
- margin: 20px auto;
660
- }
661
-
662
- #cexit-popup{
663
- text-align:center;
664
- }
665
-
666
- #cexit-popup p{
667
- font-size:16px
668
- }
669
-
670
- .seed-csp4-addon-icon{
671
- float:left;
672
- background:#01c96d;
673
- padding:9px 3px;
674
- border-radius:4px;
675
- }
676
-
677
- .seed-csp4-addon-icon-1{
678
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#d43362+0,ffa448+100 */
679
- background: #d43362; /* Old browsers */
680
- background: -moz-linear-gradient(-45deg, #d43362 0%, #ffa448 100%); /* FF3.6-15 */
681
- background: -webkit-linear-gradient(-45deg, #d43362 0%,#ffa448 100%); /* Chrome10-25,Safari5.1-6 */
682
- background: linear-gradient(135deg, #d43362 0%,#ffa448 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
683
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d43362', endColorstr='#ffa448',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
684
- }
685
-
686
- .seed-csp4-addon-icon-2{
687
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffa448+0,ffdd00+100 */
688
- background: #ffa448; /* Old browsers */
689
- background: -moz-linear-gradient(-45deg, #ffa448 0%, #ffdd00 100%); /* FF3.6-15 */
690
- background: -webkit-linear-gradient(-45deg, #ffa448 0%,#ffdd00 100%); /* Chrome10-25,Safari5.1-6 */
691
- background: linear-gradient(135deg, #ffa448 0%,#ffdd00 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
692
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffa448', endColorstr='#ffdd00',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
693
- }
694
-
695
- .seed-csp4-addon-icon-3{
696
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffdd00+0,1bdf68+100 */
697
- background: #ffdd00; /* Old browsers */
698
- background: -moz-linear-gradient(-45deg, #ffdd00 0%, #1bdf68 100%); /* FF3.6-15 */
699
- background: -webkit-linear-gradient(-45deg, #ffdd00 0%,#1bdf68 100%); /* Chrome10-25,Safari5.1-6 */
700
- background: linear-gradient(135deg, #ffdd00 0%,#1bdf68 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
701
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdd00', endColorstr='#1bdf68',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
702
- }
703
-
704
- .seed-csp4-addon-icon-4{
705
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#1bdf68+0,0000e0+100 */
706
- background: #1bdf68; /* Old browsers */
707
- background: -moz-linear-gradient(-45deg, #1bdf68 0%, #0000e0 100%); /* FF3.6-15 */
708
- background: -webkit-linear-gradient(-45deg, #1bdf68 0%,#0000e0 100%); /* Chrome10-25,Safari5.1-6 */
709
- background: linear-gradient(135deg, #1bdf68 0%,#0000e0 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
710
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1bdf68', endColorstr='#0000e0',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
711
- }
712
-
713
- .seed-csp4-addon-icon-5{
714
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#0000e0+0,ab2fdd+100 */
715
- background: #0000e0; /* Old browsers */
716
- background: -moz-linear-gradient(-45deg, #0000e0 0%, #ab2fdd 100%); /* FF3.6-15 */
717
- background: -webkit-linear-gradient(-45deg, #0000e0 0%,#ab2fdd 100%); /* Chrome10-25,Safari5.1-6 */
718
- background: linear-gradient(135deg, #0000e0 0%,#ab2fdd 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
719
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0000e0', endColorstr='#ab2fdd',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
720
- }
721
-
722
- .seed-csp4-addon-icon-6{
723
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ab2fdd+0,de4866+100 */
724
- background: #ab2fdd; /* Old browsers */
725
- background: -moz-linear-gradient(-45deg, #ab2fdd 0%, #de4866 100%); /* FF3.6-15 */
726
- background: -webkit-linear-gradient(-45deg, #ab2fdd 0%,#de4866 100%); /* Chrome10-25,Safari5.1-6 */
727
- background: linear-gradient(135deg, #ab2fdd 0%,#de4866 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
728
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ab2fdd', endColorstr='#de4866',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
729
- }
730
-
731
- .seed-csp4-addon-icon-7{
732
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#de4866+0,038dd9+100 */
733
- background: #de4866; /* Old browsers */
734
- background: -moz-linear-gradient(-45deg, #de4866 0%, #038dd9 100%); /* FF3.6-15 */
735
- background: -webkit-linear-gradient(-45deg, #de4866 0%,#038dd9 100%); /* Chrome10-25,Safari5.1-6 */
736
- background: linear-gradient(135deg, #de4866 0%,#038dd9 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
737
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#de4866', endColorstr='#038dd9',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
738
- }
739
-
740
- .seed-csp4-addon-icon-8{
741
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#038dd9+0,ffdd00+100 */
742
- background: #038dd9; /* Old browsers */
743
- background: -moz-linear-gradient(-45deg, #038dd9 0%, #ffdd00 100%); /* FF3.6-15 */
744
- background: -webkit-linear-gradient(-45deg, #038dd9 0%,#ffdd00 100%); /* Chrome10-25,Safari5.1-6 */
745
- background: linear-gradient(135deg, #038dd9 0%,#ffdd00 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
746
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#038dd9', endColorstr='#ffdd00',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
747
- }
748
-
749
- .seed-csp4-addon-icon-9{
750
- /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffdd00+0,ffdd00+0,d43362+100 */
751
- background: #ffdd00; /* Old browsers */
752
- background: -moz-linear-gradient(-45deg, #ffdd00 0%, #ffdd00 0%, #d43362 100%); /* FF3.6-15 */
753
- background: -webkit-linear-gradient(-45deg, #ffdd00 0%,#ffdd00 0%,#d43362 100%); /* Chrome10-25,Safari5.1-6 */
754
- background: linear-gradient(135deg, #ffdd00 0%,#ffdd00 0%,#d43362 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
755
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdd00', endColorstr='#d43362',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
756
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/validations/color.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- /**
3
- * Check to see if a value is a valid hex color
4
- * Test $input[$k['id']]
5
- * Set $k['error_msg'] and $is_valid
6
- * Set $is_valid = true/false
7
- */
8
-
9
-
10
- if ( !empty( $input[ $k[ 'id' ] ] ) ) {
11
- if ( !preg_match( '/^#[a-f0-9]{6}$/i', $input[ $k[ 'id' ] ] ) ) {
12
- $is_valid = false;
13
- $error_msg = $k[ 'label' ] . ': ' . __( 'Please enter a valid color value.', 'coming-soon' );
14
- }
15
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/validations/email.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- /**
3
- * Check to see if an email is valid.
4
- * Test $input[$k['id']]
5
- * Set $k['error_msg'] and $is_valid
6
- */
7
-
8
- if ( !empty( $input[ $k[ 'id' ] ] ) ) {
9
- $is_valid = is_email( $input[ $k[ 'id' ] ] );
10
- $error_msg = $k[ 'label' ] . ': ' . __( 'Please enter a valid email.', 'coming-soon' );
11
- }
 
 
 
 
 
 
 
 
 
 
 
framework/validations/escurlraw.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- /**
3
- * Check to see if an email is valid.
4
- * Test $input[$k['id']]
5
- * Set $k['error_msg'] and $is_valid
6
- */
7
-
8
- if ( !empty( $input[ $k[ 'id' ] ] ) ) {
9
- $input[ $k[ 'id' ] ]= esc_url_raw($input[ $k[ 'id' ] ]);
10
- $is_valid = true;
11
- $error_msg = $k[ 'label' ] . ': ' . __( 'Please enter a valid email.', 'coming-soon' );
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
framework/validations/number.php DELETED
@@ -1,13 +0,0 @@
1
- <?php
2
- /**
3
- * Check to see if a value is a valid hex color
4
- * Test $input[$k['id']]
5
- * Set $k['error_msg'] and $is_valid
6
- */
7
-
8
- if ( !empty( $input[ $k[ 'id' ] ] ) ) {
9
- if ( !is_numeric( $input[ $k[ 'id' ] ] ) ) {
10
- $is_valid = false;
11
- $error_msg = $k[ 'label' ] . ': ' . __( 'Please enter a valid number.', 'coming-soon' );
12
- }
13
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
framework/validations/required.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- /**
3
- * Check to see if a value is required
4
- * Test $input[$k['id']]
5
- * Set $k['error_msg'] and $is_valid
6
- */
7
-
8
- if ( empty( $input[ $k[ 'id' ] ] ) ) {
9
- $is_valid = false;
10
- $error_msg = $k[ 'label' ] . ' ' . __( 'is required.', 'coming-soon' );
11
- }
 
 
 
 
 
 
 
 
 
 
 
inc/adminbar-style.css DELETED
@@ -1,10 +0,0 @@
1
- #wpadminbar .csp4-mode-active > .ab-item{
2
- color:#fff;
3
- background-color: #f44;
4
- font-size: 10px !important;
5
- }
6
-
7
- #wpadminbar .csp4-mode-active:hover > .ab-item{
8
- background-color: #a30 !important;
9
- color:#fff !important;;
10
- }
 
 
 
 
 
 
 
 
 
 
inc/class-seed-csp4.php DELETED
@@ -1,257 +0,0 @@
1
- <?php
2
- /**
3
- * Plugin class logic goes here
4
- */
5
- class SEED_CSP4{
6
-
7
- /**
8
- * Instance of this class.
9
- *
10
- * @since 1.0.0
11
- *
12
- * @var object
13
- */
14
- protected static $instance = null;
15
-
16
- private $comingsoon_rendered = false;
17
-
18
- function __construct(){
19
-
20
- extract(seed_csp4_get_settings());
21
-
22
- // Actions & Filters if the landing page is active or being previewed
23
- if(((!empty($status) && $status === '1') || (!empty($status) && $status === '2')) || (isset($_GET['cs_preview']) && $_GET['cs_preview'] == 'true')){
24
- if(function_exists('bp_is_active')){
25
- add_action( 'template_redirect', array(&$this,'render_comingsoon_page'),9);
26
- }else{
27
- add_action( 'template_redirect', array(&$this,'render_comingsoon_page'));
28
- }
29
- add_action( 'admin_bar_menu',array( &$this, 'admin_bar_menu' ), 1000 );
30
- // Disable the rest api in coming soon mode
31
- $current_WP_version = get_bloginfo('version');
32
- if ( version_compare( $current_WP_version, '4.7', '>=' ) ) {
33
- add_filter( 'rest_authentication_errors', array( &$this, 'only_allow_logged_in_rest_access') );
34
- }
35
- }
36
-
37
- // Add this script globally so we can view the notification across the admin area
38
- add_action( 'admin_enqueue_scripts', array(&$this,'add_scripts') );
39
- }
40
-
41
- /**
42
- * Return an instance of this class.
43
- *
44
- * @since 1.0.0
45
- *
46
- * @return object A single instance of this class.
47
- */
48
- public static function get_instance() {
49
-
50
- // If the single instance hasn't been set, set it now.
51
- if ( null == self::$instance ) {
52
- self::$instance = new self;
53
- }
54
-
55
- return self::$instance;
56
- }
57
-
58
- /**
59
- * Get pages and put in assoc array
60
- */
61
- function get_pages(){
62
- $pages = get_pages();
63
- $page_arr = array();
64
- if(is_array($pages)){
65
- foreach($pages as $k=>$v){
66
- $page_arr[$v->ID] = $v->post_title;
67
- }
68
- }
69
- return $page_arr;
70
- }
71
-
72
- /**
73
- * Display admin bar when active
74
- */
75
- function admin_bar_menu($str){
76
- global $seed_csp4_settings,$wp_admin_bar;
77
- extract($seed_csp4_settings);
78
-
79
- if(!isset($status)){
80
- return false;
81
- }
82
-
83
- $msg = '';
84
- if($status == '1'){
85
- $msg = __('Coming Soon Mode Active','coming-soon');
86
- }elseif($status == '2'){
87
- $msg = __('Maintenance Mode Active','coming-soon');
88
- }
89
- //Add the main siteadmin menu item
90
- $wp_admin_bar->add_menu( array(
91
- 'id' => 'seed-csp4-notice',
92
- 'href' => admin_url().'options-general.php?page=seed_csp4',
93
- 'parent' => 'top-secondary',
94
- 'title' => $msg,
95
- 'meta' => array( 'class' => 'csp4-mode-active' ),
96
- ) );
97
- }
98
-
99
- /**
100
- * Display the default template
101
- */
102
- function get_default_template(){
103
- $file = file_get_contents(SEED_CSP4_PLUGIN_PATH.'/themes/default/index.php');
104
- return $file;
105
- }
106
-
107
- /**
108
- * Load scripts
109
- */
110
- function add_scripts($hook) {
111
- wp_enqueue_style( 'seed-csp4-adminbar-notification', SEED_CSP4_PLUGIN_URL.'inc/adminbar-style.css', false, SEED_CSP4_VERSION, 'screen');
112
- }
113
-
114
- /**
115
- * Get Font Family
116
- */
117
- public static function get_font_family($font){
118
- $fonts = array();
119
- $fonts['_arial'] = 'Helvetica, Arial, sans-serif';
120
- $fonts['_arial_black'] = 'Arial Black, Arial Black, Gadget, sans-serif';
121
- $fonts['_georgia'] = 'Georgia,serif';
122
- $fonts['_helvetica_neue'] = '"Helvetica Neue", Helvetica, Arial, sans-serif';
123
- $fonts['_impact'] = 'Charcoal,Impact,sans-serif';
124
- $fonts['_lucida'] = 'Lucida Grande,Lucida Sans Unicode, sans-serif';
125
- $fonts['_palatino'] = 'Palatino,Palatino Linotype, Book Antiqua, serif';
126
- $fonts['_tahoma'] = 'Geneva,Tahoma,sans-serif';
127
- $fonts['_times'] = 'Times,Times New Roman, serif';
128
- $fonts['_trebuchet'] = 'Trebuchet MS, sans-serif';
129
- $fonts['_verdana'] = 'Verdana, Geneva, sans-serif';
130
-
131
- if(!empty($fonts[$font])){
132
- $font_family = $fonts[$font];
133
- }else{
134
- $font_family = 'Helvetica Neue, Arial, sans-serif';
135
- }
136
-
137
- echo $font_family;
138
- }
139
-
140
-
141
- /**
142
- * Display the coming soon page
143
- */
144
- function render_comingsoon_page() {
145
-
146
- extract(seed_csp4_get_settings());
147
-
148
- if(!isset($status)){
149
- $err = new WP_Error('error', __("Please enter your settings.", 'coming-soon'));
150
- echo $err->get_error_message();
151
- exit();
152
- }
153
-
154
-
155
- if(empty($_GET['cs_preview'])){
156
- $_GET['cs_preview'] = false;
157
- }
158
-
159
- // Check if Preview
160
- $is_preview = false;
161
- if ((isset($_GET['cs_preview']) && $_GET['cs_preview'] == 'true')) {
162
- $is_preview = true;
163
- }
164
-
165
- // Exit if a custom login page
166
- if(empty($disable_default_excluded_urls)){
167
- if(preg_match("/login|admin|dashboard|account/i",$_SERVER['REQUEST_URI']) > 0 && $is_preview == false){
168
- return false;
169
- }
170
- }
171
-
172
-
173
- // Check if user is logged in.
174
- if($is_preview === false){
175
- if(is_user_logged_in()){
176
- return false;
177
- }
178
- }
179
-
180
-
181
- // Finally check if we should show the coming soon page.
182
- $this->comingsoon_rendered = true;
183
-
184
-
185
- // set headers
186
- if($status == '2'){
187
- header('HTTP/1.1 503 Service Temporarily Unavailable');
188
- header('Status: 503 Service Temporarily Unavailable');
189
- header('Retry-After: 86400'); // retry in a day
190
- $csp4_maintenance_file = WP_CONTENT_DIR."/maintenance.php";
191
- if(!empty($enable_maintenance_php) and file_exists($csp4_maintenance_file)){
192
- include_once( $csp4_maintenance_file );
193
- exit();
194
- }
195
- }
196
-
197
- // Prevetn Plugins from caching
198
- // Disable caching plugins. This should take care of:
199
- // - W3 Total Cache
200
- // - WP Super Cache
201
- // - ZenCache (Previously QuickCache)
202
- if(!defined('DONOTCACHEPAGE')) {
203
- define('DONOTCACHEPAGE', true);
204
- }
205
- if(!defined('DONOTCDN')) {
206
- define('DONOTCDN', true);
207
- }
208
- if(!defined('DONOTCACHEDB')) {
209
- define('DONOTCACHEDB', true);
210
- }
211
- if(!defined('DONOTMINIFY')) {
212
- define('DONOTMINIFY', true);
213
- }
214
- if(!defined('DONOTCACHEOBJECT')) {
215
- define('DONOTCACHEOBJECT', true);
216
- }
217
- //ob_end_clean();
218
- nocache_headers();
219
-
220
-
221
- // render template tags
222
- if(empty($html)){
223
- $template = $this->get_default_template();
224
- require_once( SEED_CSP4_PLUGIN_PATH.'/themes/default/functions.php' );
225
- $template_tags = array(
226
- '{Title}' => seed_csp4_title(),
227
- '{MetaDescription}' => seed_csp4_metadescription(),
228
- '{Privacy}' => seed_csp4_privacy(),
229
- '{Favicon}' => seed_csp4_favicon(),
230
- '{CustomCSS}' => seed_csp4_customcss(),
231
- '{Head}' => seed_csp4_head(),
232
- '{Footer}' => seed_csp4_footer(),
233
- '{Logo}' => seed_csp4_logo(),
234
- '{Headline}' => seed_csp4_headline(),
235
- '{Description}' => seed_csp4_description(),
236
- '{Credit}' => seed_csp4_credit(),
237
- '{Append_HTML}' => seed_csp4_append_html(),
238
- );
239
- echo strtr($template, $template_tags);
240
- }else{
241
- echo $html;
242
- }
243
- exit();
244
-
245
- }
246
-
247
- function only_allow_logged_in_rest_access( $access ) {
248
-
249
- if( ! is_user_logged_in() ) {
250
- return new WP_Error( 'rest_cannot_access', __( 'Only authenticated users can access the REST API.', 'coming-soon' ), array( 'status' => rest_authorization_required_code() ) );
251
- }
252
-
253
- return $access;
254
-
255
- }
256
-
257
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/config-settings.php DELETED
@@ -1,488 +0,0 @@
1
- <?php
2
- /**
3
- * Config
4
- *
5
- * @package WordPress
6
- * @subpackage seed_csp4
7
- * @since 0.1.0
8
- */
9
-
10
- /**
11
- * Config Settings
12
- */
13
- function seed_csp4_get_options(){
14
-
15
-
16
- /**
17
- * Create new menus
18
- */
19
-
20
- $seed_csp4_options[ ] = array(
21
- "type" => "menu",
22
- "menu_type" => "add_menu_page",
23
- "page_name" => __( "SeedProd", 'coming-soon' ),
24
- "menu_slug" => "seed_csp4",
25
- "layout" => "2-col"
26
- );
27
-
28
- /**
29
- * Settings Tab
30
- */
31
- $seed_csp4_options[ ] = array(
32
- "type" => "tab",
33
- "id" => "seed_csp4_setting",
34
- "label" => __( "Content", 'coming-soon' ),
35
- );
36
-
37
-
38
- $seed_csp4_options[ ] = array(
39
- "type" => "setting",
40
- "id" => "seed_csp4_settings_content",
41
- );
42
-
43
- $seed_csp4_options[ ] = array(
44
- "type" => "section",
45
- "id" => "seed_csp4_section_license",
46
- "label" => __( "License", 'coming-soon' ),
47
- );
48
-
49
- $seed_csp4_options[ ] = array(
50
- "type" => "text",
51
- "id" => "license-key",
52
- "label" => __( "License Key", 'coming-soon' ),
53
- "desc" => __( '
54
- <p>You\'re using SeedProd Lite - no license needed. Enjoy! <img draggable="false" class="emoji" alt="🙂" src="https://s.w.org/images/core/emoji/11/svg/1f642.svg"></p><p>To unlock more features consider <a href="'.seed_csp4_admin_upgrade_link( 'settings-license' ).'" target="blank" rel="noopener noreferrer" class="seed-csp4-cta">upgrading to PRO</a></p><p class="discount-note">As a valued SeedProd Lite user you receive <strong>20% off</strong>, automatically applied at checkout!</p></p> ', 'coming-soon' )
55
- );
56
-
57
-
58
-
59
- $seed_csp4_options[ ] = array(
60
- "type" => "section",
61
- "id" => "seed_csp4_section_general",
62
- "label" => __( "General", 'coming-soon' ),
63
- );
64
-
65
- $seed_csp4_options[ ] = array(
66
- "type" => "radio",
67
- "id" => "status",
68
- "label" => __( "Status", 'coming-soon' ),
69
- "option_values" => array(
70
- '0' => __( 'Disabled', 'coming-soon' ),
71
- '1' => __( 'Enable Coming Soon Mode', 'coming-soon' ),
72
- '2' => __( 'Enable Maintenance Mode', 'coming-soon' )
73
- ),
74
- "desc" => __( "When you are logged in you'll see your normal website. Logged out visitors will see the Coming Soon or Maintenance page. Coming Soon Mode will be available to search engines if your site is not private. Maintenance Mode will notify search engines that the site is unavailable. <a href='https://www.seedprod.com/coming-soon-vs-maintenance-mode/?utm_source=coming-soon-plugin&utm_medium=link&utm_campaign=cc-vs-mm' target='_blank'>Learn the difference between Coming Soon and Maintenance Mode</a>", 'coming-soon' ),
75
- "default_value" => "0"
76
- );
77
-
78
-
79
- $csp4_maintenance_file = WP_CONTENT_DIR."/maintenance.php";
80
- if (file_exists($csp4_maintenance_file)) {
81
- $seed_csp4_options[ ] = array(
82
- "type" => "checkbox",
83
- "id" => "enable_maintenance_php",
84
- "label" => __( "Use maintenance.php", 'coming-soon' ),
85
- "desc" => __('maintenance.php detected, would you like to use this for your maintenance page?', 'coming-soon'),
86
- "option_values" => array(
87
- 'name' => __( 'Yes', 'coming-soon' ),
88
- //'required' => __( 'Make Name Required', 'coming-soon' ),
89
- )
90
- );
91
- }
92
-
93
- // Page Setttings
94
- $seed_csp4_options[ ] = array(
95
- "type" => "section",
96
- "id" => "seed_csp4_section_page_settings",
97
- "label" => __( "Page Settings", 'coming-soon' )
98
- );
99
-
100
- $seed_csp4_options[ ] = array(
101
- "type" => "upload",
102
- "id" => "logo",
103
- "label" => __( "Logo", 'coming-soon' ),
104
- "desc" => __('Upload a logo or teaser image (or) enter the url to your image.', 'coming-soon'),
105
- );
106
-
107
- $seed_csp4_options[ ] = array(
108
- "type" => "textbox",
109
- "id" => "headline",
110
- "class" => "large-text",
111
- "label" => __( "Headline", 'coming-soon' ),
112
- "desc" => __( "Enter a headline for your page.", 'coming-soon' ),
113
- );
114
-
115
- $seed_csp4_options[ ] = array(
116
- "type" => "wpeditor",
117
- "id" => "description",
118
- "label" => __( "Message", 'coming-soon' ),
119
- "desc" => __( "Need Shortcode Support? <a href='".seed_csp4_admin_upgrade_link( 'settings-content-shortcode' )."' target='blank' rel='noopener noreferrer' class='seed-csp4-cta'>Check out the Pro Version</a> which supports shortcodes, realtime page builder and adds many more features.", 'coming-soon' ),
120
- "class" => "large-text"
121
- );
122
-
123
- $seed_csp4_options[ ] = array( "type" => "radio",
124
- "id" => "footer_credit",
125
- "label" => __("Powered By SeedProd", 'ultimate-coming-soon-page'),
126
- "option_values" => array('0'=>__('Nope - Got No Love', 'coming-soon'),'1'=>__('Yep - I Love You Man', 'coming-soon')),
127
- "desc" => __("Can we show a <strong>cool stylish</strong> footer credit at the bottom the page.", 'coming-soon'),
128
- "default_value" => "0",
129
- );
130
-
131
-
132
- // Header
133
- $seed_csp4_options[ ] = array(
134
- "type" => "section",
135
- "id" => "seed_csp4_section_header",
136
- "label" => __( "Header", 'coming-soon' )
137
- );
138
-
139
- $seed_csp4_options[ ] = array(
140
- "type" => "upload",
141
- "id" => "favicon",
142
- "label" => __( "Favicon", 'coming-soon' ),
143
- "desc" => __('Favicons are displayed in a browser tab. Need Help <a href="http://tools.dynamicdrive.com/favicon/" target="_blank">creating a favicon</a>?', 'coming-soon'),
144
- );
145
-
146
- $seed_csp4_options[ ] = array(
147
- "type" => "textbox",
148
- "id" => "seo_title",
149
- "label" => __( "SEO Title", 'coming-soon' ),
150
- );
151
-
152
- $seed_csp4_options[ ] = array(
153
- "type" => "textarea",
154
- "id" => "seo_description",
155
- "label" => __( "SEO Meta Description", 'coming-soon' ),
156
- "class" => "large-text"
157
- );
158
-
159
-
160
- $seed_csp4_options[ ] = array(
161
- "type" => "textarea",
162
- "id" => "ga_analytics",
163
- "class" => "large-text",
164
- "label" => __( "Analytics Code", 'coming-soon' ),
165
- "desc" => __('Paste in your Universal or Classic <a href="http://www.google.com/analytics/" target="_blank">Google Analytics</a> code.', 'coming-soon'),
166
- );
167
-
168
-
169
- /**
170
- * Design Tab
171
- */
172
- $seed_csp4_options[ ] = array(
173
- "type" => "tab",
174
- "id" => "seed_csp4_design",
175
- "label" => __( "Design", 'coming-soon' )
176
- );
177
-
178
- $seed_csp4_options[ ] = array(
179
- "type" => "setting",
180
- "id" => "seed_csp4_settings_design"
181
- );
182
-
183
- // Themes
184
- $seed_csp4_options[ ] = array(
185
- "type" => "section",
186
- "id" => "seed_csp4_section_themes",
187
- "label" => __( "Pro Themes", 'coming-soon' )
188
- );
189
-
190
- $seed_csp4_options[ ] = array(
191
- "type" => "themes",
192
- "id" => "themes",
193
- "label" => __( "Available Pro Themes", 'coming-soon' )
194
- );
195
-
196
-
197
-
198
- // Background
199
- $seed_csp4_options[ ] = array(
200
- "type" => "section",
201
- "id" => "seed_csp4_section_background",
202
- "label" => __( "Background", 'coming-soon' )
203
- );
204
-
205
-
206
- $seed_csp4_options[ ] = array(
207
- "type" => "color",
208
- "id" => "bg_color",
209
- "label" => __( "Background Color", 'coming-soon' ),
210
- "default_value" => "#fafafa",
211
- "validate" => 'color',
212
- "desc" => __( "Choose between having a solid color background or uploading an image. By default images will cover the entire background.", 'coming-soon' )
213
- );
214
-
215
-
216
- $seed_csp4_options[ ] = array(
217
- "type" => "upload",
218
- "id" => "bg_image",
219
- "desc" => '
220
- <a href="admin.php?page=seed_csp4_stockimages">Looking for free background images?</a> Confirm that\'s your email and click the button below.<br>
221
- <div id="seed-bg-images-form"><input type="email" id="seed-bg-images-email" value="'.get_option('admin_email').'" /><button id="seed-bg-images-btn" class="button-primary">Send Me FREE Background Images</button></div>
222
- <script>
223
- jQuery( "#seed-bg-images-btn" ).click(function(e) {
224
- e.preventDefault();
225
- jQuery("#drip-email").val(jQuery("#seed-bg-images-email").val());
226
- jQuery("#drip-submit").click();
227
- });
228
- </script>
229
- ',
230
- "label" => __( "Background Image", 'coming-soon' ),
231
- );
232
-
233
- $seed_csp4_options[ ] = array(
234
- "type" => "checkbox",
235
- "id" => "bg_cover",
236
- "label" => __( "Responsive Background", 'coming-soon' ),
237
- "desc" => __("Scale the background image to be as large as possible so that the background area is completely covered by the background image. Some parts of the background image may not be in view within the background positioning area.", 'coming-soon'),
238
- "option_values" => array(
239
- '1' => __( 'Yes', 'coming-soon' ),
240
- ),
241
- "default" => "1",
242
- );
243
-
244
- $seed_csp4_options[ ] = array(
245
- "type" => "select",
246
- "id" => "bg_size",
247
- "desc" => __('Cover (most users will use this setting), this setting will crop parts of the background that do not fit, Contain, this will force the background image to stay contained within the browser and parts that don\'t fit will show the background color.', 'coming-soon' ),
248
- "label" => __( "Responsive Size", 'coming-soon' ),
249
- "option_values" => array(
250
- 'cover' => __( 'Cover', 'coming-soon' ),
251
- 'contain' => __( 'Contain', 'coming-soon' ),
252
- )
253
- );
254
-
255
- $seed_csp4_options[ ] = array(
256
- "type" => "checkbox",
257
- "id" => "bg_overlay",
258
- "label" => __( "Dim Background", 'coming-soon' ),
259
- "desc" => __("This will add an overlay over your image dimming it.", 'coming-soon'),
260
- "option_values" => array(
261
- '1' => __( 'Yes', 'coming-soon' ),
262
- ),
263
- "default" => "1",
264
- );
265
-
266
- $seed_csp4_options[ ] = array(
267
- "type" => "select",
268
- "id" => "bg_repeat",
269
- "desc" => __('This setting is not applied if Responsive Background is checked', 'coming-soon' ),
270
- "label" => __( "Background Repeat", 'coming-soon' ),
271
- "option_values" => array(
272
- 'no-repeat' => __( 'No-Repeat', 'coming-soon' ),
273
- 'repeat' => __( 'Tile', 'coming-soon' ),
274
- 'repeat-x' => __( 'Tile Horizontally', 'coming-soon' ),
275
- 'repeat-y' => __( 'Tile Vertically', 'coming-soon' ),
276
- )
277
- );
278
-
279
-
280
- $seed_csp4_options[ ] = array(
281
- "type" => "select",
282
- "id" => "bg_position",
283
- "desc" => __('This setting is not applied if Responsive Background is checked', 'coming-soon' ),
284
- "label" => __( "Background Position", 'coming-soon' ),
285
- "option_values" => array(
286
- 'left top' => __( 'Left Top', 'coming-soon' ),
287
- 'left center' => __( 'Left Center', 'coming-soon' ),
288
- 'left bottom' => __( 'Left Bottom', 'coming-soon' ),
289
- 'right top' => __( 'Right Top', 'coming-soon' ),
290
- 'right center' => __( 'Right Center', 'coming-soon' ),
291
- 'right bottom' => __( 'Right Bottom', 'coming-soon' ),
292
- 'center top' => __( 'Center Top', 'coming-soon' ),
293
- 'center center' => __( 'Center Center', 'coming-soon' ),
294
- 'center bottom' => __( 'Center Bottom', 'coming-soon' ),
295
- )
296
- );
297
-
298
- $seed_csp4_options[ ] = array(
299
- "type" => "select",
300
- "id" => "bg_attahcment",
301
- "desc" => __('This setting is not applied if Responsive Background is checked', 'coming-soon' ),
302
- "label" => __( "Background Attachment", 'coming-soon' ),
303
- "option_values" => array(
304
- 'fixed' => __( 'Fixed', 'coming-soon' ),
305
- 'scroll' => __( 'Scroll', 'coming-soon' ),
306
- )
307
- );
308
-
309
- // Background
310
- $seed_csp4_options[ ] = array(
311
- "type" => "section",
312
- "id" => "seed_csp4_section_well",
313
- "label" => __( "Content", 'coming-soon' )
314
- );
315
-
316
- $seed_csp4_options[ ] = array(
317
- "type" => "textbox",
318
- "id" => "max_width",
319
- "class" => "text-small",
320
- "label" => __( "Max Width", 'coming-soon' ),
321
- "desc" => __("By default the max width of the content is set to 600px. Enter a number value if you need it bigger. Example: 900", 'coming-soon'), );
322
-
323
- $seed_csp4_options[ ] = array(
324
- "type" => "checkbox",
325
- "id" => "enable_well",
326
- "label" => __( "Enable Well", 'coming-soon' ),
327
- "desc" => __("This will wrap your content in a box.", 'coming-soon'),
328
- "option_values" => array(
329
- '1' => __( 'Yes', 'coming-soon' ),
330
- ),
331
- );
332
-
333
-
334
-
335
- // Text
336
- $seed_csp4_options[ ] = array(
337
- "type" => "section",
338
- "id" => "seed_csp4_section_text",
339
- "label" => __( "Text", 'coming-soon' )
340
- );
341
-
342
- $seed_csp4_options[ ] = array(
343
- "type" => "color",
344
- "id" => "text_color",
345
- "label" => __( "Text Color", 'coming-soon' ),
346
- "default_value" => "#666666",
347
- "validate" => 'required,color',
348
- );
349
-
350
- $seed_csp4_options[ ] = array(
351
- "type" => "color",
352
- "id" => "link_color",
353
- "label" => __( "Link Color", 'coming-soon' ),
354
- "default_value" => "#27AE60",
355
- "validate" => 'required,color',
356
- );
357
-
358
- $seed_csp4_options[ ] = array(
359
- "type" => "color",
360
- "id" => "headline_color",
361
- "label" => __( "Headline Color", 'coming-soon' ),
362
- "validate" => 'color',
363
- "default_value" => "#444444",
364
- "desc" => __('If no Headline Color is chosen then the Link Color will be used. ','coming-soon'),
365
- );
366
-
367
-
368
-
369
- $seed_csp4_options[ ] = array(
370
- "type" => "select",
371
- "id" => "text_font",
372
- "label" => __( "Text Font", 'coming-soon' ),
373
- "option_values" => apply_filters('seed_csp4_fonts',array(
374
- '_arial' => 'Arial',
375
- '_arial_black' =>'Arial Black',
376
- '_georgia' => 'Georgia',
377
- '_helvetica_neue' => 'Helvetica Neue',
378
- '_impact' => 'Impact',
379
- '_lucida' => 'Lucida Grande',
380
- '_palatino' => 'Palatino',
381
- '_tahoma' => 'Tahoma',
382
- '_times' => 'Times New Roman',
383
- '_trebuchet' => 'Trebuchet',
384
- '_verdana' => 'Verdana',
385
- )),
386
- );
387
-
388
-
389
- // Template
390
- $seed_csp4_options[ ] = array(
391
- "type" => "section",
392
- "id" => "seed_csp4_section_template",
393
- "label" => __( "Template", 'coming-soon' )
394
- );
395
-
396
-
397
- $seed_csp4_options[ ] = array(
398
- "type" => "textarea",
399
- "id" => "custom_css",
400
- "class" => "large-text",
401
- "label" => __( "Custom CSS", 'coming-soon' ),
402
- "desc" => __('Need to tweaks the styles? Add your custom CSS here.','coming-soon'),
403
- );
404
-
405
- /**
406
- * Subscribers Tab
407
- */
408
- $seed_csp4_options[ ] = array(
409
- "type" => "tab",
410
- "id" => "seed_csp4_subscribers",
411
- "label" => __( "Subscribers", 'coming-soon' )
412
- );
413
-
414
- $seed_csp4_options[ ] = array(
415
- "type" => "setting",
416
- "id" => "seed_csp4_settings_subscribers"
417
- );
418
-
419
-
420
- /**
421
- * Advanced Tab
422
- */
423
- $seed_csp4_options[ ] = array(
424
- "type" => "tab",
425
- "id" => "seed_csp4_advanced",
426
- "label" => __( "Advanced", 'coming-soon' )
427
- );
428
-
429
- $seed_csp4_options[ ] = array(
430
- "type" => "setting",
431
- "id" => "seed_csp4_settings_advanced"
432
- );
433
-
434
-
435
- // Scripts
436
- $seed_csp4_options[ ] = array(
437
- "type" => "section",
438
- "id" => "seed_csp4_section_scripts",
439
- "label" => __( "Scripts", 'coming-soon' )
440
- );
441
-
442
- $seed_csp4_options[ ] = array(
443
- "type" => "checkbox",
444
- "id" => "disable_default_excluded_urls",
445
- "label" => __( "Disable Default Excluded URLs", 'coming-soon' ),
446
- "desc" => __("By default we exclude urls with the terms: login, admin, dashboard and account to prevent lockouts. Check to disable.", 'coming-soon'),
447
- "option_values" => array(
448
- '1' => __( 'Disable', 'coming-soon' ),
449
- ),
450
- "default" => "1",
451
- );
452
-
453
- $seed_csp4_options[ ] = array(
454
- "type" => "textarea",
455
- "id" => "header_scripts",
456
- "label" => __( "Header Scripts", 'coming-soon' ),
457
- "desc" => __('Enter any custom scripts. You can enter Javascript or CSS. This will be rendered before the closing head tag.', 'coming-soon'),
458
- "class" => "large-text"
459
- );
460
-
461
- $seed_csp4_options[ ] = array(
462
- "type" => "textarea",
463
- "id" => "footer_scripts",
464
- "label" => __( "Footer Scripts", 'coming-soon' ),
465
- "desc" => __('Enter any custom scripts. This will be rendered before the closing body tag.', 'coming-soon'),
466
- "class" => "large-text"
467
- );
468
-
469
- $seed_csp4_options[ ] = array(
470
- "type" => "textarea",
471
- "id" => "html",
472
- "label" => __( "Custom HTML", 'coming-soon' ),
473
- "desc" => __("This will replace the plugin's entire template with your custom html. Make sure to include the html, head and body tags when replacing the html.", 'coming-soon'),
474
- "class" => "large-text"
475
- );
476
-
477
- $seed_csp4_options[ ] = array(
478
- "type" => "textarea",
479
- "id" => "append_html",
480
- "label" => __( "Append HTML", 'coming-soon' ),
481
- "desc" => __("This will append html to the bottom of the template using the current styles.", 'coming-soon'),
482
- "class" => "large-text"
483
- );
484
-
485
-
486
- return $seed_csp4_options;
487
-
488
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/default-settings.php DELETED
@@ -1,6 +0,0 @@
1
- <?php
2
- $seed_csp4_settings_deafults = array (
3
- 'seed_csp4_settings_content' => 'a:9:{s:6:"status";s:1:"0";s:4:"logo";s:0:"";s:8:"headline";s:49:"Get Ready... Something Really Cool Is Coming Soon";s:11:"description";s:0:"";s:13:"footer_credit";s:1:"0";s:7:"favicon";s:0:"";s:9:"seo_title";s:0:"";s:15:"seo_description";s:0:"";s:12:"ga_analytics";s:0:"";}',
4
- 'seed_csp4_settings_design' => 'a:12:{s:8:"bg_color";s:7:"#fafafa";s:8:"bg_image";s:0:"";s:8:"bg_cover";a:1:{i:0;s:1:"1";}s:9:"bg_repeat";s:9:"no-repeat";s:11:"bg_position";s:8:"left top";s:13:"bg_attahcment";s:5:"fixed";s:9:"max_width";s:0:"";s:10:"text_color";s:7:"#666666";s:10:"link_color";s:7:"#27AE60";s:14:"headline_color";s:7:"#444444";s:9:"text_font";s:6:"_arial";s:10:"custom_css";s:0:"";}',
5
- 'seed_csp4_settings_advanced' => 'a:2:{s:14:"header_scripts";s:0:"";s:14:"footer_scripts";s:0:"";}',
6
- );
 
 
 
 
 
 
languages/coming-soon-da_DK.mo DELETED
Binary file
languages/coming-soon-da_DK.po DELETED
@@ -1,466 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Coming Soon Pro by SeedProd\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-06-22 00:09+0100\n"
6
- "PO-Revision-Date: 2015-06-22 00:33+0100\n"
7
- "Last-Translator: John Turner <john@seedprod.com>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Generator: Poedit 1.8.1\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
- "Language: da_DK\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: coming-soon.php:22 framework/framework.php:116 framework/framework.php:117
20
- #: inc/config-settings.php:22
21
- msgid "Coming Soon"
22
- msgstr "Kommer snart"
23
-
24
- #: framework/field-types/date.php:8 framework/field-types/daterange.php:8
25
- msgid "01-Jan"
26
- msgstr "01-Jan"
27
-
28
- #: framework/field-types/date.php:9 framework/field-types/daterange.php:9
29
- msgid "02-Feb"
30
- msgstr "02-Feb"
31
-
32
- #: framework/field-types/date.php:10 framework/field-types/daterange.php:10
33
- msgid "03-Mar"
34
- msgstr "03-Mar"
35
-
36
- #: framework/field-types/date.php:11 framework/field-types/daterange.php:11
37
- msgid "04-Apr"
38
- msgstr "04-Apr"
39
-
40
- #: framework/field-types/date.php:12 framework/field-types/daterange.php:12
41
- msgid "05-May"
42
- msgstr "05-Maj"
43
-
44
- #: framework/field-types/date.php:13 framework/field-types/daterange.php:13
45
- msgid "06-Jun"
46
- msgstr "06-Jun"
47
-
48
- #: framework/field-types/date.php:14 framework/field-types/daterange.php:14
49
- msgid "07-Jul"
50
- msgstr "07-Jul"
51
-
52
- #: framework/field-types/date.php:15 framework/field-types/daterange.php:15
53
- msgid "08-Aug"
54
- msgstr "08-Aug"
55
-
56
- #: framework/field-types/date.php:16 framework/field-types/daterange.php:16
57
- msgid "09-Sep"
58
- msgstr "09-Sep"
59
-
60
- #: framework/field-types/date.php:17 framework/field-types/daterange.php:17
61
- msgid "10-Oct"
62
- msgstr "10-Okt"
63
-
64
- #: framework/field-types/date.php:18 framework/field-types/daterange.php:18
65
- msgid "11-Nov"
66
- msgstr "11-Nov"
67
-
68
- #: framework/field-types/date.php:19 framework/field-types/daterange.php:19
69
- msgid "12-Dec"
70
- msgstr "12-Dec"
71
-
72
- #: framework/field-types/date.php:29 framework/field-types/daterange.php:29
73
- #: framework/field-types/daterange.php:42
74
- msgid "day"
75
- msgstr "dag"
76
-
77
- #: framework/field-types/date.php:32 framework/field-types/daterange.php:32
78
- #: framework/field-types/daterange.php:45
79
- msgid "year"
80
- msgstr "år"
81
-
82
- #: framework/field-types/upload.php:12
83
- msgid "Media Image Library"
84
- msgstr "Media Billedbibliotek"
85
-
86
- #: framework/framework.php:77
87
- msgid "Settings reset."
88
- msgstr "Indstillinger nulstilet."
89
-
90
- #: framework/framework.php:177
91
- msgid "&larr; Close Window"
92
- msgstr "&larr; Luk vindue"
93
-
94
- #: framework/framework.php:177
95
- msgid "Live Preview"
96
- msgstr "Vis eksempel"
97
-
98
- #: framework/framework.php:179
99
- msgid "Upgrade to the Pro Version"
100
- msgstr "Opgrader til Pro Versionen"
101
-
102
- #: framework/validations/color.php:13
103
- msgid "Please enter a valid color value."
104
- msgstr "Venligst indtast en gyldig farve."
105
-
106
- #: framework/validations/email.php:10 framework/validations/escurlraw.php:11
107
- msgid "Please enter a valid email."
108
- msgstr "Venligst indtast en gyldig email."
109
-
110
- #: framework/validations/number.php:11
111
- msgid "Please enter a valid number."
112
- msgstr "Venligst indtast et gyldigt telefonnummer"
113
-
114
- #: framework/validations/required.php:10
115
- msgid "is required."
116
- msgstr "er påkrævet."
117
-
118
- #: inc/class-seed-csp4.php:80
119
- msgid "Coming Soon Mode Active"
120
- msgstr "“Kommer snart” tilstand aktiveret"
121
-
122
- #: inc/class-seed-csp4.php:82
123
- msgid "Maintenance Mode Active"
124
- msgstr "Vedligeholdelsestilstand aktiveret."
125
-
126
- #: inc/class-seed-csp4.php:144
127
- msgid "Please enter your settings."
128
- msgstr "Venligst indtast dine indstillinger."
129
-
130
- #: inc/config-settings.php:33 inc/config-settings.php:249
131
- msgid "Content"
132
- msgstr "Indhold"
133
-
134
- #: inc/config-settings.php:44
135
- msgid "General"
136
- msgstr "Generelt"
137
-
138
- #: inc/config-settings.php:50
139
- msgid "Status"
140
- msgstr "Status"
141
-
142
- #: inc/config-settings.php:52
143
- msgid "Disabled"
144
- msgstr "Deaktiveret"
145
-
146
- #: inc/config-settings.php:53
147
- msgid "Enable Coming Soon Mode"
148
- msgstr "Aktiver “Kommer snart” tilstand"
149
-
150
- #: inc/config-settings.php:54
151
- msgid "Enable Maintenance Mode"
152
- msgstr "Aktiver Vedligeholdelsestilstand"
153
-
154
- #: inc/config-settings.php:56
155
- msgid ""
156
- "When you are logged in you'll see your normal website. Logged out visitors "
157
- "will see the Coming Soon or Maintenance page. Coming Soon Mode will be "
158
- "available to search engines if your site is not private. Maintenance Mode "
159
- "will notify search engines that the site is unavailable."
160
- msgstr ""
161
- "Når du er logget ind vil du se din normale hjemmeside. Logget ud besøgende "
162
- "vil se “Kommer snart” eller Vedligeholdelse siden. “Kommer snart” tilstanden "
163
- "vil blive set af søgemaskiner, hvis din hjemmeside ikke er sat til privat. "
164
- "Vedligeholdelsestilstanden vil underrette søgemaskiner, at hjemmesiden ikke "
165
- "er tilgængelig."
166
-
167
- #: inc/config-settings.php:66
168
- msgid "Use maintenance.php"
169
- msgstr "Brug maintenance.php"
170
-
171
- #: inc/config-settings.php:67
172
- msgid ""
173
- "maintenance.php detected, would you like to use this for your maintenance "
174
- "page?"
175
- msgstr ""
176
- "maintenance.php opdaget, vil du gerne bruge dette til din vedligeholdelse "
177
- "side?"
178
-
179
- #: inc/config-settings.php:69 inc/config-settings.php:197
180
- #: inc/config-settings.php:265
181
- msgid "Yes"
182
- msgstr "Ja"
183
-
184
- #: inc/config-settings.php:79
185
- msgid "Page Settings"
186
- msgstr "Side indstillinger"
187
-
188
- #: inc/config-settings.php:85
189
- msgid "Logo"
190
- msgstr "Logo"
191
-
192
- #: inc/config-settings.php:86
193
- msgid "Upload a logo or teaser image (or) enter the url to your image."
194
- msgstr "Upload et logo eller thumbnail (eller) indtast urlen til dit billede."
195
-
196
- #: inc/config-settings.php:93
197
- msgid "Headline"
198
- msgstr "Overskrift"
199
-
200
- #: inc/config-settings.php:94
201
- msgid "Enter a headline for your page."
202
- msgstr "Indtast en overskrift til din side."
203
-
204
- #: inc/config-settings.php:100
205
- msgid "Message"
206
- msgstr "Besked"
207
-
208
- #: inc/config-settings.php:101
209
- msgid "Tell the visitor what to expect from your site."
210
- msgstr "Fortæl den besøgende, hvad de kan forvente fra dit websted."
211
-
212
- #: inc/config-settings.php:107
213
- msgid "Powered By SeedProd"
214
- msgstr "Powered By SeedProd"
215
-
216
- #: inc/config-settings.php:108
217
- msgid "Nope - Got No Love"
218
- msgstr "Niks - Jeg elsker dig ikke"
219
-
220
- #: inc/config-settings.php:108
221
- msgid "Yep - I Love You Man"
222
- msgstr "Yep - Jeg elsker dig man"
223
-
224
- #: inc/config-settings.php:109
225
- msgid ""
226
- "Can we show a <strong>cool stylish</strong> footer credit at the bottom the "
227
- "page."
228
- msgstr ""
229
- "Kan vi vise et <strong> køligt stilfuldt </ strong> footer kredit nederst på "
230
- "siden."
231
-
232
- #: inc/config-settings.php:118
233
- msgid "Header"
234
- msgstr "Sidehoved"
235
-
236
- #: inc/config-settings.php:124
237
- msgid "Favicon"
238
- msgstr "Favicon"
239
-
240
- #: inc/config-settings.php:125
241
- msgid ""
242
- "Favicons are displayed in a browser tab. Need Help <a href=\"http://tools."
243
- "dynamicdrive.com/favicon/\" target=\"_blank\">creating a favicon</a>?"
244
- msgstr ""
245
- "Favicons vises i browserens fane. Brug for hjælp <a href=\"http://tools."
246
- "dynamicdrive.com/favicon/\" target=\"_blank\">skab et favicon </a>?"
247
-
248
- #: inc/config-settings.php:131
249
- msgid "SEO Title"
250
- msgstr "SEO Titel"
251
-
252
- #: inc/config-settings.php:137
253
- msgid "SEO Meta Description"
254
- msgstr "SEO Meta Beskrivelse"
255
-
256
- #: inc/config-settings.php:146
257
- msgid "Analytics Code"
258
- msgstr "Analytics Kode"
259
-
260
- #: inc/config-settings.php:147
261
- msgid ""
262
- "Paste in your Universal or Classic <a href=\"http://www.google.com/analytics/"
263
- "\" target=\"_blank\">Google Analytics</a> code."
264
- msgstr ""
265
- "Indsæt din Universalle eller Classic <a href=\"http://www.google.com/"
266
- "analytics/\" target=\"_blank\">Google Analytics</a> kode."
267
-
268
- #: inc/config-settings.php:157
269
- msgid "Design"
270
- msgstr "Design"
271
-
272
- #: inc/config-settings.php:170
273
- msgid "Background"
274
- msgstr "Baggrund"
275
-
276
- #: inc/config-settings.php:177
277
- msgid "Background Color"
278
- msgstr "Baggrundsfarve"
279
-
280
- #: inc/config-settings.php:180
281
- msgid ""
282
- "Choose between having a solid color background or uploading an image. By "
283
- "default images will cover the entire background."
284
- msgstr ""
285
- "Vælg mellem at have en solid baggrundsfarve eller uploade et billede. Som "
286
- "standard vil billederne dække hele baggrunden."
287
-
288
- #: inc/config-settings.php:188
289
- msgid "Background Image"
290
- msgstr "Baggrundsbillede"
291
-
292
- #: inc/config-settings.php:194
293
- msgid "Responsive Background"
294
- msgstr "Responsivt baggrund"
295
-
296
- #: inc/config-settings.php:195
297
- msgid ""
298
- "Scale the background image to be as large as possible so that the background "
299
- "area is completely covered by the background image. Some parts of the "
300
- "background image may not be in view within the background positioning area."
301
- msgstr ""
302
- "Skaler baggrundsbilledet til at være så stort som muligt, således at "
303
- "baggrunden er helt dækket af baggrundsbilledet. Nogle dele af "
304
- "baggrundsbilledet vil ikke være synligt i baggrundsområdet."
305
-
306
- #: inc/config-settings.php:205 inc/config-settings.php:219
307
- #: inc/config-settings.php:237
308
- msgid "This setting is not applied if Responsive Background is checked"
309
- msgstr ""
310
- "Denne indstilling anvendes ikke, hvis Responsivt Baggrund er aktiveret."
311
-
312
- #: inc/config-settings.php:206
313
- msgid "Background Repeat"
314
- msgstr "Gentag baggrund"
315
-
316
- #: inc/config-settings.php:208
317
- msgid "No-Repeat"
318
- msgstr "Skal ikke gentage"
319
-
320
- #: inc/config-settings.php:209
321
- msgid "Tile"
322
- msgstr "Hæld"
323
-
324
- #: inc/config-settings.php:210
325
- msgid "Tile Horizontally"
326
- msgstr "Hæld horisontalt"
327
-
328
- #: inc/config-settings.php:211
329
- msgid "Tile Vertically"
330
- msgstr "Hæld vertikalt"
331
-
332
- #: inc/config-settings.php:220
333
- msgid "Background Position"
334
- msgstr "Baggrundsposition"
335
-
336
- #: inc/config-settings.php:222
337
- msgid "Left Top"
338
- msgstr "Venstre Top"
339
-
340
- #: inc/config-settings.php:223
341
- msgid "Left Center"
342
- msgstr "Venstre midt"
343
-
344
- #: inc/config-settings.php:224
345
- msgid "Left Bottom"
346
- msgstr "Venstre Nederst"
347
-
348
- #: inc/config-settings.php:225
349
- msgid "Right Top"
350
- msgstr "Højre top"
351
-
352
- #: inc/config-settings.php:226
353
- msgid "Right Center"
354
- msgstr "Højre center"
355
-
356
- #: inc/config-settings.php:227
357
- msgid "Right Bottom"
358
- msgstr "Højre Nederst"
359
-
360
- #: inc/config-settings.php:228
361
- msgid "Center Top"
362
- msgstr "Midt Top"
363
-
364
- #: inc/config-settings.php:229
365
- msgid "Center Center"
366
- msgstr "Midt Midt"
367
-
368
- #: inc/config-settings.php:230
369
- msgid "Center Bottom"
370
- msgstr "Midt Nederst"
371
-
372
- #: inc/config-settings.php:238
373
- msgid "Background Attachment"
374
- msgstr "Baggrund er vedhæftet"
375
-
376
- #: inc/config-settings.php:240
377
- msgid "Fixed"
378
- msgstr "Fastlåst"
379
-
380
- #: inc/config-settings.php:241
381
- msgid "Scroll"
382
- msgstr "Scroll"
383
-
384
- #: inc/config-settings.php:256
385
- msgid "Max Width"
386
- msgstr "Max vidde"
387
-
388
- #: inc/config-settings.php:257
389
- msgid ""
390
- "By default the max width of the content is set to 600px. Enter a number "
391
- "value if you need it bigger. Example: 900"
392
- msgstr ""
393
- "Som standard er max bredden af indholdet sat til 600px. Indtast en talværdi, "
394
- "hvis du har brug for en større bredde. Eksempel: 900"
395
-
396
- #: inc/config-settings.php:262
397
- msgid "Enable Well"
398
- msgstr "Aktiver Well"
399
-
400
- #: inc/config-settings.php:263
401
- msgid "This will wrap your content in a box."
402
- msgstr "Dette vil ombryde dit indhold i en kasse."
403
-
404
- #: inc/config-settings.php:275
405
- msgid "Text"
406
- msgstr "Tekst"
407
-
408
- #: inc/config-settings.php:281
409
- msgid "Text Color"
410
- msgstr "Tekst farve"
411
-
412
- #: inc/config-settings.php:289
413
- msgid "Link Color"
414
- msgstr "Link farve"
415
-
416
- #: inc/config-settings.php:297
417
- msgid "Headline Color"
418
- msgstr "Overskrift farve"
419
-
420
- #: inc/config-settings.php:300
421
- msgid "If no Headline Color is chosen then the Link Color will be used. "
422
- msgstr "Hvis ikke Overskrift Farve er valgt så vil Link Farven blive brugt."
423
-
424
- #: inc/config-settings.php:308
425
- msgid "Text Font"
426
- msgstr "Skrifttype"
427
-
428
- #: inc/config-settings.php:329
429
- msgid "Template"
430
- msgstr "Skabelon"
431
-
432
- #: inc/config-settings.php:337
433
- msgid "Custom CSS"
434
- msgstr "Tilpasset CSS"
435
-
436
- #: inc/config-settings.php:338
437
- msgid "Need to tweaks the styles? Add your custom CSS here."
438
- msgstr "Behov for at ændre dine styles? Tilføj dit tilpasset CSS her."
439
-
440
- #: inc/config-settings.php:347
441
- msgid "Advanced"
442
- msgstr "Avanceret"
443
-
444
- #: inc/config-settings.php:360
445
- msgid "Scripts"
446
- msgstr "Scripts"
447
-
448
- #: inc/config-settings.php:366
449
- msgid "Header Scripts"
450
- msgstr "Overskrift scripts"
451
-
452
- #: inc/config-settings.php:367
453
- msgid ""
454
- "Enter any custom scripts. You can enter Javascript or CSS. This will be "
455
- "rendered before the closing head tag."
456
- msgstr ""
457
- "Indtast eventuelle tilpasset scripts. Du kan indtaste Javascript eller CSS."
458
-
459
- #: inc/config-settings.php:374
460
- msgid "Footer Scripts"
461
- msgstr "Footer Scripts"
462
-
463
- #: inc/config-settings.php:375
464
- msgid ""
465
- "Enter any custom scripts. This will be rendered before the closing body tag."
466
- msgstr "Indtast eventuelle tilpasset scripts."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/coming-soon-pt_BR.mo DELETED
Binary file
languages/coming-soon-pt_BR.po DELETED
@@ -1,476 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Coming Soon Pro by SeedProd\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-01-27 21:24-0500\n"
6
- "PO-Revision-Date: 2015-02-17 17:55-0300\n"
7
- "Last-Translator: Mauro Mascarenhas <mauro.mascarenhas@nintersoft.ml>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Generator: Poedit 1.7.1\n"
15
- "Plural-Forms: nplurals=2; plural=(n > 1);\n"
16
- "Language: pt_BR\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: coming-soon.php:22 framework/framework.php:116 framework/framework.php:117
20
- #: inc/config-settings.php:22
21
- msgid "Coming Soon"
22
- msgstr "Em breve"
23
-
24
- #: framework/field-types/date.php:8 framework/field-types/daterange.php:8
25
- msgid "01-Jan"
26
- msgstr "01-Jan"
27
-
28
- #: framework/field-types/date.php:9 framework/field-types/daterange.php:9
29
- msgid "02-Feb"
30
- msgstr "02-Fev"
31
-
32
- #: framework/field-types/date.php:10 framework/field-types/daterange.php:10
33
- msgid "03-Mar"
34
- msgstr "03-Mar"
35
-
36
- #: framework/field-types/date.php:11 framework/field-types/daterange.php:11
37
- msgid "04-Apr"
38
- msgstr "04-Abr"
39
-
40
- #: framework/field-types/date.php:12 framework/field-types/daterange.php:12
41
- msgid "05-May"
42
- msgstr "05-Mai"
43
-
44
- #: framework/field-types/date.php:13 framework/field-types/daterange.php:13
45
- msgid "06-Jun"
46
- msgstr "06-Jun"
47
-
48
- #: framework/field-types/date.php:14 framework/field-types/daterange.php:14
49
- msgid "07-Jul"
50
- msgstr "07-Jul"
51
-
52
- #: framework/field-types/date.php:15 framework/field-types/daterange.php:15
53
- msgid "08-Aug"
54
- msgstr "08-Ago"
55
-
56
- #: framework/field-types/date.php:16 framework/field-types/daterange.php:16
57
- msgid "09-Sep"
58
- msgstr "09-Set"
59
-
60
- #: framework/field-types/date.php:17 framework/field-types/daterange.php:17
61
- msgid "10-Oct"
62
- msgstr "10-Out"
63
-
64
- #: framework/field-types/date.php:18 framework/field-types/daterange.php:18
65
- msgid "11-Nov"
66
- msgstr "11-Nov"
67
-
68
- #: framework/field-types/date.php:19 framework/field-types/daterange.php:19
69
- msgid "12-Dec"
70
- msgstr "12-Dez"
71
-
72
- #: framework/field-types/date.php:29 framework/field-types/daterange.php:29
73
- #: framework/field-types/daterange.php:42
74
- msgid "day"
75
- msgstr "dia"
76
-
77
- #: framework/field-types/date.php:32 framework/field-types/daterange.php:32
78
- #: framework/field-types/daterange.php:45
79
- msgid "year"
80
- msgstr "ano"
81
-
82
- #: framework/field-types/upload.php:12
83
- msgid "Media Image Library"
84
- msgstr "Biblioteca de mídia de imagens"
85
-
86
- #: framework/framework.php:77
87
- msgid "Settings reset."
88
- msgstr "Redefini configurações."
89
-
90
- #: framework/framework.php:177
91
- msgid "&larr; Close Window"
92
- msgstr "&larr; Fechar janela"
93
-
94
- #: framework/framework.php:177
95
- msgid "Live Preview"
96
- msgstr "Visualização"
97
-
98
- #: framework/framework.php:179
99
- msgid "Upgrade to the Pro Version"
100
- msgstr "Atualizar para a versão Pro"
101
-
102
- #: framework/validations/color.php:13
103
- msgid "Please enter a valid color value."
104
- msgstr "Por favor digite um valor válido de cor."
105
-
106
- #: framework/validations/email.php:10 framework/validations/escurlraw.php:11
107
- msgid "Please enter a valid email."
108
- msgstr "Por favor digite um e-mail válido."
109
-
110
- #: framework/validations/number.php:11
111
- msgid "Please enter a valid number."
112
- msgstr "Por favor digite um número válido."
113
-
114
- #: framework/validations/required.php:10
115
- msgid "is required."
116
- msgstr "é necessário."
117
-
118
- #: inc/class-seed-csp4.php:80
119
- msgid "Coming Soon Mode Active"
120
- msgstr "Modo \"Em breve\" ativo"
121
-
122
- #: inc/class-seed-csp4.php:82
123
- msgid "Maintenance Mode Active"
124
- msgstr "Modo de manutenção ativo"
125
-
126
- #: inc/class-seed-csp4.php:144
127
- msgid "Please enter your settings."
128
- msgstr "Por favor digite suas configurações."
129
-
130
- #: inc/config-settings.php:33 inc/config-settings.php:249
131
- msgid "Content"
132
- msgstr "Conteúdo"
133
-
134
- #: inc/config-settings.php:44
135
- msgid "General"
136
- msgstr "Geral"
137
-
138
- #: inc/config-settings.php:50
139
- msgid "Status"
140
- msgstr "Estado"
141
-
142
- #: inc/config-settings.php:52
143
- msgid "Disabled"
144
- msgstr "Desativado"
145
-
146
- #: inc/config-settings.php:53
147
- msgid "Enable Coming Soon Mode"
148
- msgstr "Ativar modo \"Em breve\""
149
-
150
- #: inc/config-settings.php:54
151
- msgid "Enable Maintenance Mode"
152
- msgstr "Ativar modo de manutenção"
153
-
154
- #: inc/config-settings.php:56
155
- msgid ""
156
- "When you are logged in you'll see your normal website. Logged out visitors "
157
- "will see the Coming Soon or Maintenance page. Coming Soon Mode will be "
158
- "available to search engines if your site is not private. Maintenance Mode "
159
- "will notify search engines that the site is unavailable."
160
- msgstr ""
161
- "Quando você estiver conectado você verá o site normalmente. Visitantes "
162
- "desconectados verão a página de manutenção ao \"Em breve\". O modo \"Em breve"
163
- "\" estará disponível nos mecanismos de pesquisas se seu site não for "
164
- "privado. O modo de manutenção notificará os mecanismos de busca que seu site "
165
- "está indisponível."
166
-
167
- #: inc/config-settings.php:66
168
- msgid "Use maintenance.php"
169
- msgstr "Usar mainternance.php"
170
-
171
- #: inc/config-settings.php:67
172
- msgid ""
173
- "maintenance.php detected, would you like to use this for your maintenance "
174
- "page?"
175
- msgstr ""
176
- "mainternance.php detectado, você gostaria de usá-la para sua página de "
177
- "manutenção?"
178
-
179
- #: inc/config-settings.php:69 inc/config-settings.php:197
180
- #: inc/config-settings.php:265
181
- msgid "Yes"
182
- msgstr "Sim"
183
-
184
- #: inc/config-settings.php:79
185
- msgid "Page Settings"
186
- msgstr "Configurações de página"
187
-
188
- #: inc/config-settings.php:85
189
- msgid "Logo"
190
- msgstr "Logotipo"
191
-
192
- #: inc/config-settings.php:86
193
- msgid "Upload a logo or teaser image (or) enter the url to your image."
194
- msgstr ""
195
- "Carregue um logotipo ou uma imagem chamativa ou ainda a URL para a sua "
196
- "imagem."
197
-
198
- #: inc/config-settings.php:93
199
- msgid "Headline"
200
- msgstr "Linha de título"
201
-
202
- #: inc/config-settings.php:94
203
- msgid "Enter a headline for your page."
204
- msgstr "Digite uma linha de cabeçalho para sua página."
205
-
206
- #: inc/config-settings.php:100
207
- msgid "Message"
208
- msgstr "Mensagem"
209
-
210
- #: inc/config-settings.php:101
211
- msgid "Tell the visitor what to expect from your site."
212
- msgstr "Avise ao visitante o que esperar de seu site."
213
-
214
- #: inc/config-settings.php:107
215
- msgid "Powered By SeedProd"
216
- msgstr "Feito com SeedProd"
217
-
218
- #: inc/config-settings.php:108
219
- msgid "Nope - Got No Love"
220
- msgstr "Não - Eu não gostei"
221
-
222
- #: inc/config-settings.php:108
223
- msgid "Yep - I Love You Man"
224
- msgstr "Sim - Eu amo cara"
225
-
226
- #: inc/config-settings.php:109
227
- msgid ""
228
- "Can we show a <strong>cool stylish</strong> footer credit at the bottom the "
229
- "page."
230
- msgstr ""
231
- "Podemos mostrar um crédito de rodapé <strong>estiloso</strong> em sua página?"
232
-
233
- #: inc/config-settings.php:118
234
- msgid "Header"
235
- msgstr "Cabeçalho"
236
-
237
- #: inc/config-settings.php:124
238
- msgid "Favicon"
239
- msgstr "Favicon"
240
-
241
- #: inc/config-settings.php:125
242
- msgid ""
243
- "Favicons are displayed in a browser tab. Need Help <a href=\"http://tools."
244
- "dynamicdrive.com/favicon/\" target=\"_blank\">creating a favicon</a>?"
245
- msgstr ""
246
- "Os favicons são mostrados na aba do navegador. Necessita de ajuda ao <a href="
247
- "\"http://tools.dynamicdrive.com/favicon/\" target=\"_blank\">criar um "
248
- "favicon</a>?"
249
-
250
- #: inc/config-settings.php:131
251
- msgid "SEO Title"
252
- msgstr "Título do SEO"
253
-
254
- #: inc/config-settings.php:137
255
- msgid "SEO Meta Description"
256
- msgstr "Descrição Meta SEO"
257
-
258
- #: inc/config-settings.php:146
259
- msgid "Analytics Code"
260
- msgstr "Código do Analytics"
261
-
262
- #: inc/config-settings.php:147
263
- msgid ""
264
- "Paste in your Universal or Classic <a href=\"http://www.google.com/analytics/"
265
- "\" target=\"_blank\">Google Analytics</a> code."
266
- msgstr ""
267
- "Cole em seu Universal ou Clássico código <a href=\"http://www.google.com/"
268
- "analytics/\" target=\"_blank\">Google Analytics</a>."
269
-
270
- #: inc/config-settings.php:157
271
- msgid "Design"
272
- msgstr "Design"
273
-
274
- #: inc/config-settings.php:170
275
- msgid "Background"
276
- msgstr "Plano de fundo"
277
-
278
- #: inc/config-settings.php:177
279
- msgid "Background Color"
280
- msgstr "Cor do plano de fundo"
281
-
282
- #: inc/config-settings.php:180
283
- msgid ""
284
- "Choose between having a solid color background or uploading an image. By "
285
- "default images will cover the entire background."
286
- msgstr ""
287
- "Escolha entre ter uma cor de plano de fundo sólida ou carregar uma imagem. "
288
- "Por padrão as imagens cobrirão todo o plano de fundo."
289
-
290
- #: inc/config-settings.php:188
291
- msgid "Background Image"
292
- msgstr "Imagem de plano de fundo"
293
-
294
- #: inc/config-settings.php:194
295
- msgid "Responsive Background"
296
- msgstr "Plano de fundo responsivo"
297
-
298
- #: inc/config-settings.php:195
299
- msgid ""
300
- "Scale the background image to be as large as possible so that the background "
301
- "area is completely covered by the background image. Some parts of the "
302
- "background image may not be in view within the background positioning area."
303
- msgstr ""
304
- "Ajustar a imagem de plano de fundo para ser o mais largo possível, então a "
305
- "área de plano de fundo será coberta completamente pela imagem de plano de "
306
- "fundo. Algumas partes da imagem de plano de fundo pode não estar em visão "
307
- "com a área de posicionamento do plano de fundo."
308
-
309
- #: inc/config-settings.php:205 inc/config-settings.php:219
310
- #: inc/config-settings.php:237
311
- msgid "This setting is not applied if Responsive Background is checked"
312
- msgstr ""
313
- "Esta configuração não está aplicada se o plano de fundo responsivo estiver "
314
- "ativado"
315
-
316
- #: inc/config-settings.php:206
317
- msgid "Background Repeat"
318
- msgstr "Repetição de plano de fundo"
319
-
320
- #: inc/config-settings.php:208
321
- msgid "No-Repeat"
322
- msgstr "Não repetir"
323
-
324
- #: inc/config-settings.php:209
325
- msgid "Tile"
326
- msgstr "Título"
327
-
328
- #: inc/config-settings.php:210
329
- msgid "Tile Horizontally"
330
- msgstr "Título horizontalmente"
331
-
332
- #: inc/config-settings.php:211
333
- msgid "Tile Vertically"
334
- msgstr "Título Verticalmente"
335
-
336
- #: inc/config-settings.php:220
337
- msgid "Background Position"
338
- msgstr "Posição de plano de fundo"
339
-
340
- #: inc/config-settings.php:222
341
- msgid "Left Top"
342
- msgstr "Esquerda superior"
343
-
344
- #: inc/config-settings.php:223
345
- msgid "Left Center"
346
- msgstr "Esquerda central"
347
-
348
- #: inc/config-settings.php:224
349
- msgid "Left Bottom"
350
- msgstr "Esquerda inferior"
351
-
352
- #: inc/config-settings.php:225
353
- msgid "Right Top"
354
- msgstr "Direita superior"
355
-
356
- #: inc/config-settings.php:226
357
- msgid "Right Center"
358
- msgstr "Direita central"
359
-
360
- #: inc/config-settings.php:227
361
- msgid "Right Bottom"
362
- msgstr "Direita inferior"
363
-
364
- #: inc/config-settings.php:228
365
- msgid "Center Top"
366
- msgstr "Centro superior"
367
-
368
- #: inc/config-settings.php:229
369
- msgid "Center Center"
370
- msgstr "Centro central"
371
-
372
- #: inc/config-settings.php:230
373
- msgid "Center Bottom"
374
- msgstr "Centro inferior"
375
-
376
- #: inc/config-settings.php:238
377
- msgid "Background Attachment"
378
- msgstr "Anexo de plano de fundo"
379
-
380
- #: inc/config-settings.php:240
381
- msgid "Fixed"
382
- msgstr "Fixado"
383
-
384
- #: inc/config-settings.php:241
385
- msgid "Scroll"
386
- msgstr "Deslizar"
387
-
388
- #: inc/config-settings.php:256
389
- msgid "Max Width"
390
- msgstr "Largura máxima"
391
-
392
- #: inc/config-settings.php:257
393
- msgid ""
394
- "By default the max width of the content is set to 600px. Enter a number "
395
- "value if you need it bigger. Example: 900"
396
- msgstr ""
397
- "Por padrão a largura máxima do conteúdo é definido 600px. Digite um valor "
398
- "numérico se você necessita disto maior. Exemplo: 900"
399
-
400
- #: inc/config-settings.php:262
401
- msgid "Enable Well"
402
- msgstr "Ativar roda"
403
-
404
- #: inc/config-settings.php:263
405
- msgid "This will wrap your content in a box."
406
- msgstr "Isto irá ajustar seu conteúdo em uma caixa."
407
-
408
- #: inc/config-settings.php:275
409
- msgid "Text"
410
- msgstr "Texto"
411
-
412
- #: inc/config-settings.php:281
413
- msgid "Text Color"
414
- msgstr "Cor do texto"
415
-
416
- #: inc/config-settings.php:289
417
- msgid "Link Color"
418
- msgstr "Cor do enlace"
419
-
420
- #: inc/config-settings.php:297
421
- msgid "Headline Color"
422
- msgstr "Cor do título do cabeçalho"
423
-
424
- #: inc/config-settings.php:300
425
- msgid "If no Headline Color is chosen then the Link Color will be used. "
426
- msgstr ""
427
- "Se não houver cor escolhida para a linha de cabeçalho então a cor de enlaces "
428
- "será usada. "
429
-
430
- #: inc/config-settings.php:308
431
- msgid "Text Font"
432
- msgstr "Fonte do texto"
433
-
434
- #: inc/config-settings.php:329
435
- msgid "Template"
436
- msgstr "Modelo"
437
-
438
- #: inc/config-settings.php:337
439
- msgid "Custom CSS"
440
- msgstr "CSS personalizado"
441
-
442
- #: inc/config-settings.php:338
443
- msgid "Need to tweaks the styles? Add your custom CSS here."
444
- msgstr ""
445
- "Necessita de truques para os estilos? Adicione um CSS personalizado aqui."
446
-
447
- #: inc/config-settings.php:347
448
- msgid "Advanced"
449
- msgstr "Avançado"
450
-
451
- #: inc/config-settings.php:360
452
- msgid "Scripts"
453
- msgstr "Scripts"
454
-
455
- #: inc/config-settings.php:366
456
- msgid "Header Scripts"
457
- msgstr "Scripts do cabeçalho"
458
-
459
- #: inc/config-settings.php:367
460
- msgid ""
461
- "Enter any custom scripts. You can enter Javascript or CSS. This will be "
462
- "rendered before the closing head tag."
463
- msgstr ""
464
- "Digite qualquer script personalizado. Você pode digitar JavaScript ou CSS. "
465
- "Isto será renderizado antes de fechar a tag cabeçalho."
466
-
467
- #: inc/config-settings.php:374
468
- msgid "Footer Scripts"
469
- msgstr "Scripts do rodapé"
470
-
471
- #: inc/config-settings.php:375
472
- msgid ""
473
- "Enter any custom scripts. This will be rendered before the closing body tag."
474
- msgstr ""
475
- "Digite qualquer script personalizado. Você pode digitar JavaScript ou CSS. "
476
- "Isto será renderizado antes de fechar a tag corpo."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/coming-soon-sv_SE.mo DELETED
Binary file
languages/coming-soon-sv_SE.po DELETED
@@ -1,1678 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Coming Soon Pro by SeedProd\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-04-26 17:37+0100\n"
6
- "PO-Revision-Date: 2015-04-26 17:38+0100\n"
7
- "Last-Translator: P. E.\n"
8
- "Language-Team: P. E.\n"
9
- "Language: sv_SE\n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "X-Poedit-KeywordsList: __\n"
14
- "X-Poedit-Basepath: ../\n"
15
- "X-Generator: Poedit 1.7.6\n"
16
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: coming-soon.php:22
20
- msgid "Coming Soon Page & Maintenance Mode by SeedProd"
21
- msgstr "Coming Soon Page & Maintenance Mode av SeedProd"
22
-
23
- #: framework/field-types/date.php:8 framework/field-types/daterange.php:8
24
- msgid "01-Jan"
25
- msgstr "01-Jan"
26
-
27
- #: framework/field-types/date.php:9 framework/field-types/daterange.php:9
28
- msgid "02-Feb"
29
- msgstr "02-Feb"
30
-
31
- #: framework/field-types/date.php:10 framework/field-types/daterange.php:10
32
- msgid "03-Mar"
33
- msgstr "03-Mar"
34
-
35
- #: framework/field-types/date.php:11 framework/field-types/daterange.php:11
36
- msgid "04-Apr"
37
- msgstr "04-Apr"
38
-
39
- #: framework/field-types/date.php:12 framework/field-types/daterange.php:12
40
- msgid "05-May"
41
- msgstr "05-Maj"
42
-
43
- #: framework/field-types/date.php:13 framework/field-types/daterange.php:13
44
- msgid "06-Jun"
45
- msgstr "06-Jun"
46
-
47
- #: framework/field-types/date.php:14 framework/field-types/daterange.php:14
48
- msgid "07-Jul"
49
- msgstr "07-Jul"
50
-
51
- #: framework/field-types/date.php:15 framework/field-types/daterange.php:15
52
- msgid "08-Aug"
53
- msgstr "08-Aug"
54
-
55
- #: framework/field-types/date.php:16 framework/field-types/daterange.php:16
56
- msgid "09-Sep"
57
- msgstr "09-Sep"
58
-
59
- #: framework/field-types/date.php:17 framework/field-types/daterange.php:17
60
- msgid "10-Oct"
61
- msgstr "10-Okt"
62
-
63
- #: framework/field-types/date.php:18 framework/field-types/daterange.php:18
64
- msgid "11-Nov"
65
- msgstr "11-Nov"
66
-
67
- #: framework/field-types/date.php:19 framework/field-types/daterange.php:19
68
- msgid "12-Dec"
69
- msgstr "12-Dec"
70
-
71
- #: framework/field-types/date.php:29 framework/field-types/daterange.php:29
72
- #: framework/field-types/daterange.php:42
73
- msgid "day"
74
- msgstr "dag"
75
-
76
- #: framework/field-types/date.php:32 framework/field-types/daterange.php:32
77
- #: framework/field-types/daterange.php:45
78
- msgid "year"
79
- msgstr "år"
80
-
81
- #: framework/field-types/upload.php:12
82
- msgid "Media Image Library"
83
- msgstr "Mediabiblioteket"
84
-
85
- #: framework/framework.php:77
86
- msgid "Settings reset."
87
- msgstr "Inställningar återställda."
88
-
89
- #: framework/framework.php:116 framework/framework.php:117
90
- #: inc/config-settings.php:22
91
- msgid "Coming Soon"
92
- msgstr "Coming Soon"
93
-
94
- #: framework/framework.php:177
95
- msgid "&larr; Close Window"
96
- msgstr "&larr; Stäng Fönster"
97
-
98
- #: framework/framework.php:177
99
- msgid "Live Preview"
100
- msgstr "Förhandsgranskning Live"
101
-
102
- #: framework/framework.php:179
103
- msgid "Upgrade to Pro for more Professional Features"
104
- msgstr "Uppgradera till Pro för fler Profesionella Funktioner"
105
-
106
- #: framework/validations/color.php:13
107
- msgid "Please enter a valid color value."
108
- msgstr "Var god ange ett giltigt färgvärde."
109
-
110
- #: framework/validations/email.php:10 framework/validations/escurlraw.php:11
111
- msgid "Please enter a valid email."
112
- msgstr "Var god ange en giltig e-postadress."
113
-
114
- #: framework/validations/number.php:11
115
- msgid "Please enter a valid number."
116
- msgstr "Var god ange en giltig siffra."
117
-
118
- #: framework/validations/required.php:10
119
- msgid "is required."
120
- msgstr "krävs."
121
-
122
- #: inc/class-seed-csp4.php:80
123
- msgid "Coming Soon Mode Active"
124
- msgstr "Kommer Snart-läge Aktivt"
125
-
126
- #: inc/class-seed-csp4.php:82
127
- msgid "Maintenance Mode Active"
128
- msgstr "Underhållsläge Aktivt"
129
-
130
- #: inc/class-seed-csp4.php:144
131
- msgid "Please enter your settings."
132
- msgstr "Var god ange dina inställningar."
133
-
134
- #: inc/config-settings.php:33 inc/config-settings.php:249
135
- msgid "Content"
136
- msgstr "Innehåll"
137
-
138
- #: inc/config-settings.php:44
139
- msgid "General"
140
- msgstr "Generellt"
141
-
142
- #: inc/config-settings.php:50
143
- msgid "Status"
144
- msgstr "Status"
145
-
146
- #: inc/config-settings.php:52
147
- msgid "Disabled"
148
- msgstr "Deaktiverad"
149
-
150
- #: inc/config-settings.php:53
151
- msgid "Enable Coming Soon Mode"
152
- msgstr "Aktivera Kommer Snart-läge"
153
-
154
- #: inc/config-settings.php:54
155
- msgid "Enable Maintenance Mode"
156
- msgstr "Aktivera Underhållsläge"
157
-
158
- #: inc/config-settings.php:56
159
- msgid ""
160
- "When you are logged in you'll see your normal website. Logged out visitors "
161
- "will see the Coming Soon or Maintenance page. Coming Soon Mode will be "
162
- "available to search engines if your site is not private. Maintenance Mode "
163
- "will notify search engines that the site is unavailable."
164
- msgstr ""
165
- "När du är inloggad så kommer du att se din vanliga webbplats. Ej inloggade "
166
- "besökare kommer att se Kommer Snart- eller Underhållssidan. Kommer Snart-"
167
- "läge är tillgängligt för sökmotorer om inte din webbplats är privat. "
168
- "Underhållsläge notifierar sökmotorer att webbplatsen inte är tillgänglig."
169
-
170
- #: inc/config-settings.php:66
171
- msgid "Use maintenance.php"
172
- msgstr "Använd maintenance.php"
173
-
174
- #: inc/config-settings.php:67
175
- msgid ""
176
- "maintenance.php detected, would you like to use this for your maintenance "
177
- "page?"
178
- msgstr ""
179
- "maintenance.php hittades, vill du använda denna som din sida för "
180
- "underhållsläge?"
181
-
182
- #: inc/config-settings.php:69 inc/config-settings.php:197
183
- #: inc/config-settings.php:265
184
- msgid "Yes"
185
- msgstr "Ja"
186
-
187
- #: inc/config-settings.php:79
188
- msgid "Page Settings"
189
- msgstr "Sidinställningar"
190
-
191
- #: inc/config-settings.php:85
192
- msgid "Logo"
193
- msgstr "Logotyp"
194
-
195
- #: inc/config-settings.php:86
196
- msgid "Upload a logo or teaser image (or) enter the url to your image."
197
- msgstr ""
198
- "Ladda upp en logotyp eller en lockande bild (eller) ange URL:en till din "
199
- "bild."
200
-
201
- #: inc/config-settings.php:93
202
- msgid "Headline"
203
- msgstr "Rubrik"
204
-
205
- #: inc/config-settings.php:94
206
- msgid "Enter a headline for your page."
207
- msgstr "Ange en rubrik för din sida."
208
-
209
- #: inc/config-settings.php:100
210
- msgid "Message"
211
- msgstr "Meddelande"
212
-
213
- #: inc/config-settings.php:101
214
- msgid "Tell the visitor what to expect from your site."
215
- msgstr "Berätta för besökaren vad som kan förväntas av din webbplats."
216
-
217
- #: inc/config-settings.php:107
218
- msgid "Powered By SeedProd"
219
- msgstr "Drivs av SeedProd"
220
-
221
- #: inc/config-settings.php:108
222
- msgid "Nope - Got No Love"
223
- msgstr "Nix - Ingen Kärlek"
224
-
225
- #: inc/config-settings.php:108
226
- msgid "Yep - I Love You Man"
227
- msgstr "Jepp - Jag Älskar Dig Mannen"
228
-
229
- #: inc/config-settings.php:109
230
- msgid ""
231
- "Can we show a <strong>cool stylish</strong> footer credit at the bottom the "
232
- "page."
233
- msgstr ""
234
- "Får vi visa ett <strong>coolt och stilrent</strong> erkännande i sidfoten."
235
-
236
- #: inc/config-settings.php:118
237
- msgid "Header"
238
- msgstr "Sidhuvud"
239
-
240
- #: inc/config-settings.php:124
241
- msgid "Favicon"
242
- msgstr "Webbplatsikon (Favicon)"
243
-
244
- #: inc/config-settings.php:125
245
- msgid ""
246
- "Favicons are displayed in a browser tab. Need Help <a href=\"http://tools."
247
- "dynamicdrive.com/favicon/\" target=\"_blank\">creating a favicon</a>?"
248
- msgstr ""
249
- "Webbplatsikoner (favicons) visas i webbläsarens/tabbens titelrad. Behöver du "
250
- "hjälp med att <a href=\"http://tools.dynamicdrive.com/favicon/\" target="
251
- "\"_blank\">skapa en webbplatsikon</a>?"
252
-
253
- #: inc/config-settings.php:131
254
- msgid "SEO Title"
255
- msgstr "SEO-titel"
256
-
257
- #: inc/config-settings.php:137
258
- msgid "SEO Meta Description"
259
- msgstr "SEO-metabeskrivning"
260
-
261
- #: inc/config-settings.php:146
262
- msgid "Analytics Code"
263
- msgstr "Analytics-kod"
264
-
265
- #: inc/config-settings.php:147
266
- msgid ""
267
- "Paste in your Universal or Classic <a href=\"http://www.google.com/analytics/"
268
- "\" target=\"_blank\">Google Analytics</a> code."
269
- msgstr ""
270
- "Klistra in din Universella eller Klassiska <a href=\"http://www.google.com/"
271
- "analytics/\" target=\"_blank\">Google Analytics</a>-kod."
272
-
273
- #: inc/config-settings.php:157
274
- msgid "Design"
275
- msgstr "Design"
276
-
277
- #: inc/config-settings.php:170
278
- msgid "Background"
279
- msgstr "Bakgrund"
280
-
281
- #: inc/config-settings.php:177
282
- msgid "Background Color"
283
- msgstr "Bakgrundsfärg (background-color)"
284
-
285
- #: inc/config-settings.php:180
286
- msgid ""
287
- "Choose between having a solid color background or uploading an image. By "
288
- "default images will cover the entire background."
289
- msgstr ""
290
- "Välj mellan att ha en solid bakgrundsfärg elleratt ladda upp en bild. Bilder "
291
- "täcker som standard hela bakgrunden."
292
-
293
- #: inc/config-settings.php:188
294
- msgid "Background Image"
295
- msgstr "Bakgrundsbild"
296
-
297
- #: inc/config-settings.php:194
298
- msgid "Responsive Background"
299
- msgstr "Responsiv Bakgrund"
300
-
301
- #: inc/config-settings.php:195
302
- msgid ""
303
- "Scale the background image to be as large as possible so that the background "
304
- "area is completely covered by the background image. Some parts of the "
305
- "background image may not be in view within the background positioning area."
306
- msgstr ""
307
- "Skala bakgrundsbilden så att den blir så stor som möjligt och så att hela "
308
- "bakgrunden täcks av bilden. Vissa delar av bakgrundsbilden kanske kommer att "
309
- "befinna sig utanför bakgrundens positioneringsområde och inte synas. "
310
-
311
- #: inc/config-settings.php:205 inc/config-settings.php:219
312
- #: inc/config-settings.php:237
313
- msgid "This setting is not applied if Responsive Background is checked"
314
- msgstr "Denna inställning används ej om Responsiv Bakgrund är ikryssad"
315
-
316
- #: inc/config-settings.php:206
317
- msgid "Background Repeat"
318
- msgstr "Bakgrundsupprepning (background-repeat)"
319
-
320
- #: inc/config-settings.php:208
321
- msgid "No-Repeat"
322
- msgstr "Ingen Upprepning"
323
-
324
- #: inc/config-settings.php:209
325
- msgid "Tile"
326
- msgstr "Sida-vid-sida"
327
-
328
- #: inc/config-settings.php:210
329
- msgid "Tile Horizontally"
330
- msgstr "Sida-vid-sida Horisontellt"
331
-
332
- #: inc/config-settings.php:211
333
- msgid "Tile Vertically"
334
- msgstr "Kant-mot-kant Vertikalt"
335
-
336
- #: inc/config-settings.php:220
337
- msgid "Background Position"
338
- msgstr "Bakgrundsposition"
339
-
340
- #: inc/config-settings.php:222
341
- msgid "Left Top"
342
- msgstr "Toppvänsterställd"
343
-
344
- #: inc/config-settings.php:223
345
- msgid "Left Center"
346
- msgstr "Mittvänsterställd"
347
-
348
- #: inc/config-settings.php:224
349
- msgid "Left Bottom"
350
- msgstr "Bottenvänsterställd"
351
-
352
- #: inc/config-settings.php:225
353
- msgid "Right Top"
354
- msgstr "Topphögerställd"
355
-
356
- #: inc/config-settings.php:226
357
- msgid "Right Center"
358
- msgstr "Mitthögerställd"
359
-
360
- #: inc/config-settings.php:227
361
- msgid "Right Bottom"
362
- msgstr "Bottenhögerställd"
363
-
364
- #: inc/config-settings.php:228
365
- msgid "Center Top"
366
- msgstr "Toppcentrerad"
367
-
368
- #: inc/config-settings.php:229
369
- msgid "Center Center"
370
- msgstr "Mittcentrerad"
371
-
372
- #: inc/config-settings.php:230
373
- msgid "Center Bottom"
374
- msgstr "Bottencentrerad"
375
-
376
- #: inc/config-settings.php:238
377
- msgid "Background Attachment"
378
- msgstr "Bakgrundsfästning"
379
-
380
- #: inc/config-settings.php:240
381
- msgid "Fixed"
382
- msgstr "Fast"
383
-
384
- #: inc/config-settings.php:241
385
- msgid "Scroll"
386
- msgstr "Skrollande"
387
-
388
- #: inc/config-settings.php:256
389
- msgid "Max Width"
390
- msgstr "Max Bredd"
391
-
392
- #: inc/config-settings.php:257
393
- msgid ""
394
- "By default the max width of the content is set to 600px. Enter a number "
395
- "value if you need it bigger. Example: 900"
396
- msgstr ""
397
- "Som standard så är max bredd på innehållet satt till 600px. Ange ett "
398
- "numeriskt värde om du behöver en större maxbredd. Exempel: 900"
399
-
400
- #: inc/config-settings.php:262
401
- msgid "Enable Well"
402
- msgstr "Aktivera Behållare"
403
-
404
- #: inc/config-settings.php:263
405
- msgid "This will wrap your content in a box."
406
- msgstr "Detta kommer att innesluta ditt innehåll i en box."
407
-
408
- #: inc/config-settings.php:275
409
- msgid "Text"
410
- msgstr "Text"
411
-
412
- #: inc/config-settings.php:281
413
- msgid "Text Color"
414
- msgstr "Textfärg"
415
-
416
- #: inc/config-settings.php:289
417
- msgid "Link Color"
418
- msgstr "Länkfärg"
419
-
420
- #: inc/config-settings.php:297
421
- msgid "Headline Color"
422
- msgstr "Rubrikfärg"
423
-
424
- #: inc/config-settings.php:300
425
- msgid "If no Headline Color is chosen then the Link Color will be used. "
426
- msgstr "Om ingen Rubrikfärg väljs så kommer Länkfärgen att användas."
427
-
428
- #: inc/config-settings.php:308
429
- msgid "Text Font"
430
- msgstr "Texttypsnitt"
431
-
432
- #: inc/config-settings.php:329
433
- msgid "Template"
434
- msgstr "Mall"
435
-
436
- #: inc/config-settings.php:337
437
- msgid "Custom CSS"
438
- msgstr "Anpassad CSS"
439
-
440
- #: inc/config-settings.php:338
441
- msgid "Need to tweaks the styles? Add your custom CSS here."
442
- msgstr "Behöver du modifiera stilarna? Ange din anpassade CSS här."
443
-
444
- #: inc/config-settings.php:347
445
- msgid "Advanced"
446
- msgstr "Avancerat"
447
-
448
- #: inc/config-settings.php:360
449
- msgid "Scripts"
450
- msgstr "Skript"
451
-
452
- #: inc/config-settings.php:366
453
- msgid "Disable Default Excluded URLs"
454
- msgstr "Deaktivera Standardexluderade URL:er"
455
-
456
- #: inc/config-settings.php:367
457
- msgid ""
458
- "By default we exclude urls with the terms: login, admin, dashboard and "
459
- "account to prevent lockouts. Check to disable."
460
- msgstr ""
461
- "Som standard så utesluter vi url:er med termerna: login, admin, dashboard "
462
- "och account för att undvika utestängningar. Kryssa i för att avaktivera."
463
-
464
- #: inc/config-settings.php:369
465
- msgid "Disable"
466
- msgstr "Deaktivera"
467
-
468
- #: inc/config-settings.php:377
469
- msgid "Header Scripts"
470
- msgstr "Sidhuvudsskript"
471
-
472
- #: inc/config-settings.php:378
473
- msgid ""
474
- "Enter any custom scripts. You can enter Javascript or CSS. This will be "
475
- "rendered before the closing head tag."
476
- msgstr ""
477
- "Ange anpassade skript om sådana finns. Du kan ange JavaScript eller CSS. "
478
- "Detta renderas innan stängningstaggen för body."
479
-
480
- #: inc/config-settings.php:385
481
- msgid "Footer Scripts"
482
- msgstr "Sidfotsskript"
483
-
484
- #: inc/config-settings.php:386
485
- msgid ""
486
- "Enter any custom scripts. This will be rendered before the closing body tag."
487
- msgstr ""
488
- "Ange anpassade skript om sådana finns. Dessa kommer renderas före body-"
489
- "stängningstaggen."
490
-
491
- #~ msgid "Coming Soon Pro"
492
- #~ msgstr "Coming Soon Pro"
493
-
494
- #~ msgid ""
495
- #~ "WordPress %s and higher required. The plugin has now disabled itself. On "
496
- #~ "a side note why are you running an old version :( Upgrade!"
497
- #~ msgstr ""
498
- #~ "WordPress %s eller högre krävs. Tillägget har nu deaktiverat sig själv. "
499
- #~ "För övrigt, varför kör du en gammal version :( Uppgradera!"
500
-
501
- #~ msgid "Support"
502
- #~ msgstr "Support"
503
-
504
- #~ msgid "Save"
505
- #~ msgstr "Spara"
506
-
507
- #~ msgid "Refresh List"
508
- #~ msgstr "Ladda om Lista"
509
-
510
- #~ msgid "Width"
511
- #~ msgstr "Bredd"
512
-
513
- #~ msgid "Color"
514
- #~ msgstr "Färg"
515
-
516
- #~ msgid "Radius"
517
- #~ msgstr "Radie"
518
-
519
- #~ msgid "hh"
520
- #~ msgstr "tt"
521
-
522
- #~ msgid "mm"
523
- #~ msgstr "mm"
524
-
525
- #~ msgid "Check License"
526
- #~ msgstr "Kontrollera Licens"
527
-
528
- #~ msgid "Optional Tweet Text"
529
- #~ msgstr "Valfri Tweet-text"
530
-
531
- #~ msgid "Image for Facebook Like. Optimal Size: 200px x 200px"
532
- #~ msgstr "Bild för Facebook-gillaknapp. Optimal Storlek: 200px x 200px"
533
-
534
- #~ msgid "Image for Pinterest"
535
- #~ msgstr "Bild för Pinterest"
536
-
537
- #~ msgid "Super Admin"
538
- #~ msgstr "Superadmin"
539
-
540
- #~ msgid "Are you sure you want to DELETE all subscribers?"
541
- #~ msgstr "Är du säker på att du vill TA BORT alla prenumeranter?"
542
-
543
- #~ msgid ""
544
- #~ "Are you sure you want to IMPORT these settings? Current settings will be "
545
- #~ "erased!"
546
- #~ msgstr ""
547
- #~ "Är du säker på att du vill IMPORTERA dessa inställningar? Nuvarande "
548
- #~ "inställningar kommer att raderas!"
549
-
550
- #~ msgid "No lists Found"
551
- #~ msgstr "Inga listor Funna"
552
-
553
- #~ msgid "Unable to load MailChimp lists, check your API Key."
554
- #~ msgstr "Kunde inte ladda MailChimp-listor, kontrollera din API-nyckel."
555
-
556
- #~ msgid "Unable to authenticate"
557
- #~ msgstr "Kunde inte autentisera"
558
-
559
- #~ msgid "Unable to load Constant Contact lists"
560
- #~ msgstr "Kunde inte ladda Constant Contact-listor"
561
-
562
- #~ msgid "Unable to load Campaign Monitor lists"
563
- #~ msgstr "Kunde inte ladda Campaign Monitor-listor"
564
-
565
- #~ msgid "Unable to load Campaign Monitor clients"
566
- #~ msgstr "Kunde inte ladda Campaign Monitor-klienter"
567
-
568
- #~ msgid "Unable to load Aweber lists"
569
- #~ msgstr "Kunde inte ladda Aweber-listor"
570
-
571
- #~ msgid "New Email Subscriber"
572
- #~ msgstr "Ny E-postprenumerant"
573
-
574
- #~ msgid "Do not display an Email SignUp"
575
- #~ msgstr "Visa inte formulär för E-postprenumeration"
576
-
577
- #~ msgid "Database"
578
- #~ msgstr "Databas"
579
-
580
- #~ msgid "FeedBurner"
581
- #~ msgstr "FeedBurner"
582
-
583
- #~ msgid "All subscribers deleted."
584
- #~ msgstr "Alla prenumeranter borttagna."
585
-
586
- #~ msgid "Selected subscribers deleted."
587
- #~ msgstr "Valda prenumeranter borttagna."
588
-
589
- #~ msgid "Subscribed on: "
590
- #~ msgstr "Prenumeration startades:"
591
-
592
- #~ msgid "Subscribers"
593
- #~ msgstr "Prenumeranter"
594
-
595
- #~ msgid "Clicks"
596
- #~ msgstr "Klick"
597
-
598
- #~ msgid "# People Signed Up"
599
- #~ msgstr "# Prenumeranter"
600
-
601
- #~ msgid "Conversion Rate"
602
- #~ msgstr "Konverteringsgrad"
603
-
604
- #~ msgid "Created"
605
- #~ msgstr "Skapad"
606
-
607
- #~ msgid "Export All"
608
- #~ msgstr "Exportera Alla"
609
-
610
- #~ msgid "Delete All"
611
- #~ msgstr "Ta Bort Alla"
612
-
613
- #~ msgid "Delete Selected"
614
- #~ msgstr "Ta Bort Valda"
615
-
616
- #~ msgid "Settings"
617
- #~ msgstr "Inställningar"
618
-
619
- #~ msgid "License Key"
620
- #~ msgstr "Licensnyckel"
621
-
622
- #~ msgid ""
623
- #~ "Enter your <a href='http://www.seedprod.com/members' "
624
- #~ "target='_blank'>License Key</a> to receive automatic plugin updates."
625
- #~ msgstr ""
626
- #~ "Ange din <a href='http://www.seedprod.com/members' "
627
- #~ "target='_blank'>Licensnyckel</a> för att automatiskt få "
628
- #~ "tilläggsuppdateringar."
629
-
630
- #~ msgid ""
631
- #~ "Enter a headline for your page. Replace the default headline if it exists."
632
- #~ msgstr "Ange en rubrik på din sida. Ersätter standardrubrik om sådan finns."
633
-
634
- #~ msgid "Description"
635
- #~ msgstr "Beskrivning"
636
-
637
- #~ msgid ""
638
- #~ "Tell the visitor what to expect from your site. Also supports WordPress "
639
- #~ "shortcodes and <a href='http://codex.wordpress.org/Embeds' "
640
- #~ "target='_target'>video embeds</a>."
641
- #~ msgstr ""
642
- #~ "Tala om för besökaren vad som kan förväntas på din sida. Stöder även "
643
- #~ "WordPress kortkoder och <a href='http://codex.wordpress.org/Embeds' "
644
- #~ "target='_target'>inbäddad video</a>."
645
-
646
- #~ msgid "Form Settings"
647
- #~ msgstr "Formulärinställningar"
648
-
649
- #~ msgid "Save subscribers to:"
650
- #~ msgstr "Spara prenumeranter till:"
651
-
652
- #~ msgid "Name Field"
653
- #~ msgstr "Namnfält"
654
-
655
- #~ msgid "Ask for the visitors name."
656
- #~ msgstr "Fråga efter besökarens namn."
657
-
658
- #~ msgid "Display Name Field"
659
- #~ msgstr "Visa namnfält"
660
-
661
- #~ msgid "Database Settings"
662
- #~ msgstr "Databasinställningar"
663
-
664
- #~ msgid "Enable New Subscriber Notifications"
665
- #~ msgstr "Aktivera Notifiering för Nya Prenumeranter"
666
-
667
- #~ msgid "Get an email notification when some subscribes."
668
- #~ msgstr "Motta en e-postnotifiering när någon startar prenumeration."
669
-
670
- #~ msgid "Send Notifications to this Email"
671
- #~ msgstr "Skicka Notifieringar till denna E-post"
672
-
673
- #~ msgid ""
674
- #~ "Separate multiple emails with a comma. If no email is defined, "
675
- #~ "notifications while be sent to the admin email."
676
- #~ msgstr ""
677
- #~ "Separera flera e-postadresser med ett komma. Om inga e-postadresser "
678
- #~ "definierats, så skickas notifieringar till e-postadressen för admin."
679
-
680
- #~ msgid "FeedBurner Settings"
681
- #~ msgstr "FeedBurner-inställningar"
682
-
683
- #~ msgid "Address"
684
- #~ msgstr "Adress"
685
-
686
- #~ msgid "Enter your FeedBurner address."
687
- #~ msgstr "Ange din FeedBurner-adress."
688
-
689
- #~ msgid "Local"
690
- #~ msgstr "Lokal"
691
-
692
- #~ msgid ""
693
- #~ "The language the FeedBurner form is displayed in. The default is English. "
694
- #~ "<a href=\"http://support.google.com/feedburner/bin/answer.py?"
695
- #~ "hl=en&answer=81423\">Learn more</a>."
696
- #~ msgstr ""
697
- #~ "Det språk som FeedBurner-formuläret visas på. Engelska är standard. <a "
698
- #~ "href=\"http://support.google.com/feedburner/bin/answer.py?"
699
- #~ "hl=en&answer=81423\">Mer information</a>."
700
-
701
- #~ msgid "Aweber Settings"
702
- #~ msgstr "Aweber-inställningar"
703
-
704
- #~ msgid ""
705
- #~ "<a href=\"https://auth.aweber.com/1.0/oauth/authorize_app/a662998e\" "
706
- #~ "target=\"_blank\">Authorize App</a> &larr; Click the link to get you "
707
- #~ "Authorization Code."
708
- #~ msgstr ""
709
- #~ "<a href=\"https://auth.aweber.com/1.0/oauth/authorize_app/a662998e\" "
710
- #~ "target=\"_blank\">Auktorisera App</a> &larr; Klicka på länken för att få "
711
- #~ "din Auktoriseringskod."
712
-
713
- #~ msgid "Authorization Code"
714
- #~ msgstr "Auktoriseringskod"
715
-
716
- #~ msgid ""
717
- #~ "Paste in the Authorization Code you received when authorizing the app and "
718
- #~ "click <strong>Save</strong>."
719
- #~ msgstr ""
720
- #~ "Klistra in Auktoriseringskoden som du fick när du aktoriserade Appen och "
721
- #~ "klicka <strong>Spara</strong>."
722
-
723
- #~ msgid "List"
724
- #~ msgstr "Lista"
725
-
726
- #~ msgid "Campaign Monitor Settings"
727
- #~ msgstr "Campaign Monitor-inställningar"
728
-
729
- #~ msgid "API Key"
730
- #~ msgstr "API-nyckel"
731
-
732
- #~ msgid ""
733
- #~ "Get your <a target=\"_blank\" href=\"http://help.campaignmonitor.com/"
734
- #~ "topic.aspx?t=206\">API key</a>"
735
- #~ msgstr ""
736
- #~ "Skaffa din <a target=\"_blank\" href=\"http://help.campaignmonitor.com/"
737
- #~ "topic.aspx?t=206\">API-nyckel</a>"
738
-
739
- #~ msgid "Client"
740
- #~ msgstr "Klient"
741
-
742
- #~ msgid "Constant Contact Settings"
743
- #~ msgstr "Constant Contact-inställningar"
744
-
745
- #~ msgid "Username"
746
- #~ msgstr "Användarnamn"
747
-
748
- #~ msgid "Enter your Constant Contact username."
749
- #~ msgstr "Ange ditt Constant Contact-användarnamn."
750
-
751
- #~ msgid "Password"
752
- #~ msgstr "Lösenord"
753
-
754
- #~ msgid "Enter your Constant Contact password."
755
- #~ msgstr "Ange ditt Constant Contact-lösenord."
756
-
757
- #~ msgid "GetResponse Settings"
758
- #~ msgstr "GetResponse-inställningar"
759
-
760
- #~ msgid ""
761
- #~ "Enter your API Key. <a target=\"_blank\" href=\"https://app.getresponse."
762
- #~ "com/my_account.html\" target=\"_blank\">Get your API key</a>"
763
- #~ msgstr ""
764
- #~ "Ange din API-nyckel. <a target=\"_blank\" href=\"https://app.getresponse."
765
- #~ "com/my_account.html\" target=\"_blank\">Skaffa API-nyckel</a>"
766
-
767
- #~ msgid "Campaign"
768
- #~ msgstr "Campaign"
769
-
770
- #~ msgid "Mad Mimi Settings"
771
- #~ msgstr "Mad Mimi-inställningar"
772
-
773
- #~ msgid "Username or Email"
774
- #~ msgstr "Användarnamn eller E-post"
775
-
776
- #~ msgid "Enter your username or email."
777
- #~ msgstr "Ange ditt användarnamn eller e-post."
778
-
779
- #~ msgid ""
780
- #~ "Enter your API Key. <a target=\"_blank\" href=\"https://madmimi.com/user/"
781
- #~ "edit?set_api&account_info_tabs=account_info_personal\" target=\"_blank"
782
- #~ "\">Get your API key</a>"
783
- #~ msgstr ""
784
- #~ "Ange din API-nyckel. <a target=\"_blank\" href=\"https://madmimi.com/user/"
785
- #~ "edit?set_api&account_info_tabs=account_info_personal\" target=\"_blank"
786
- #~ "\">Skaffa din API-nyckel</a>"
787
-
788
- #~ msgid "Infusionsoft Settings"
789
- #~ msgstr "Infusionsoft-inställningar"
790
-
791
- #~ msgid "App Name"
792
- #~ msgstr "App-namn"
793
-
794
- #~ msgid "Enter your app name."
795
- #~ msgstr "Ange ditt App-namn"
796
-
797
- #~ msgid ""
798
- #~ "Enter your api key. Learn how to <a href=\"http://ug.infusionsoft.com/"
799
- #~ "article/AA-00442/0/How-do-I-enable-the-Infusionsoft-API-and-generate-an-"
800
- #~ "API-Key.html\" target=\"_blank\">generate your Infusionsoft api key</a>."
801
- #~ msgstr ""
802
- #~ "Ange din API-nyckel. Lär dig mer om hur du <a href=\"http://ug."
803
- #~ "infusionsoft.com/article/AA-00442/0/How-do-I-enable-the-Infusionsoft-API-"
804
- #~ "and-generate-an-API-Key.html\" target=\"_blank\">genererar din "
805
- #~ "Infusionsoft API-nyckel</a>."
806
-
807
- #~ msgid "HTML Web Form Settings"
808
- #~ msgstr "HTML Web Form-inställningar"
809
-
810
- #~ msgid "HTML"
811
- #~ msgstr "HTML"
812
-
813
- #~ msgid "Enter the html provided from the 3rd party service."
814
- #~ msgstr "Ange den HTML-kod du fått av din tredjepartstjänst."
815
-
816
- #~ msgid "iContact Settings"
817
- #~ msgstr "iContakt-inställningar"
818
-
819
- #~ msgid "Authorize App"
820
- #~ msgstr "Auktorisera App"
821
-
822
- #~ msgid ""
823
- #~ "<a href=\"https://app.icontact.com/icp/core/externallogin?"
824
- #~ "sAppId=puD4TZWs2kKlKZLZZgD7IAUiqPSYPIvd\" target=\"_blank\">Authorize the "
825
- #~ "App</a> and define the app password, then enter that information below."
826
- #~ msgstr ""
827
- #~ "<a href=\"https://app.icontact.com/icp/core/externallogin?"
828
- #~ "sAppId=puD4TZWs2kKlKZLZZgD7IAUiqPSYPIvd\" target=\"_blank\">Auktorisera "
829
- #~ "Appen</a> och definiera App-lösenordet, och ange sedan den informationen "
830
- #~ "nedan."
831
-
832
- #~ msgid "Enter your username."
833
- #~ msgstr "Ange ditt användarnamn."
834
-
835
- #~ msgid "App Password"
836
- #~ msgstr "App-lösenord"
837
-
838
- #~ msgid "Enter the password you defined for this app."
839
- #~ msgstr "Ange lösenordet som du definierat för denna App."
840
-
841
- #~ msgid "Gravity Forms Settings"
842
- #~ msgstr "Gravity Forms-inställningar"
843
-
844
- #~ msgid "Form"
845
- #~ msgstr "Formulär"
846
-
847
- #~ msgid "Select a form to display on your page."
848
- #~ msgstr "Välj ett formulär att visa på din sida."
849
-
850
- #~ msgid "Override Gravity Form's confirmation page"
851
- #~ msgstr "Åsidosätt Gravity Forms bekräftelsesida"
852
-
853
- #~ msgid ""
854
- #~ "Redirect to this plugin's Thank You page instead of the default Gravity "
855
- #~ "Forms Confirmation page."
856
- #~ msgstr ""
857
- #~ "Omdirigera till detta tilläggs Tacksida istället för Gravity Forms "
858
- #~ "standard bekräftelsesida."
859
-
860
- #~ msgid "WYSIJA Settings"
861
- #~ msgstr "WYSIJA/MailPoet-Inställningar"
862
-
863
- #~ msgid "Select a list to save your contacts to."
864
- #~ msgstr "Välj en lista att spara dina kontakter till."
865
-
866
- #~ msgid "Sendy Settings"
867
- #~ msgstr "Sendy-inställningar"
868
-
869
- #~ msgid "Sendy Url"
870
- #~ msgstr "Sendy-URL"
871
-
872
- #~ msgid ""
873
- #~ "The url to where your Sendy is installed. Example: http://"
874
- #~ "your_sendy_installation"
875
- #~ msgstr ""
876
- #~ "URL:en till din Sendy-installation. Exempel: http://"
877
- #~ "your_sendy_installation"
878
-
879
- #~ msgid "List ID"
880
- #~ msgstr "List-ID"
881
-
882
- #~ msgid ""
883
- #~ "The list id you want to subscribe a user to. This encrypted & hashed id "
884
- #~ "can be found under View all lists section named ID in Sendy"
885
- #~ msgstr ""
886
- #~ "ID för listan som du vill sätta en användare som prenumerant på. Detta "
887
- #~ "krypterade och hashade ID återfinns i sektionen Visa alla listor i Sendy"
888
-
889
- #~ msgid "MailChimp Settings"
890
- #~ msgstr "MailChimp-inställningar"
891
-
892
- #~ msgid ""
893
- #~ "Enter your API Key. <a target=\"_blank\" href=\"http://admin.mailchimp."
894
- #~ "com/account/api-key-popup\" target=\"_blank\">Get your API key</a>"
895
- #~ msgstr ""
896
- #~ "Ange din API-nyckel. <a target=\"_blank\" href=\"http://admin.mailchimp."
897
- #~ "com/account/api-key-popup\" target=\"_blank\">Skaffa din API-nyckel</a>"
898
-
899
- #~ msgid "Enable Double Opt-In"
900
- #~ msgstr "Aktivera dubbel Opt-In"
901
-
902
- #~ msgid ""
903
- #~ "Learn more about <a href=\"http://kb.mailchimp.com/article/how-does-"
904
- #~ "confirmed-optin-or-double-optin-work\">Double Opt-In</a>"
905
- #~ msgstr ""
906
- #~ "Mer information om <a href=\"http://kb.mailchimp.com/article/how-does-"
907
- #~ "confirmed-optin-or-double-optin-work\">Dubbel Opt-In</a>"
908
-
909
- #~ msgid "Send Welcome Email"
910
- #~ msgstr "Skicka Välkomste-post"
911
-
912
- #~ msgid ""
913
- #~ "If your Double Opt-in is false and this is true, MailChimp will send your "
914
- #~ "lists Welcome Email if this subscribe succeeds - this will not fire if "
915
- #~ "MailChimp ends up updating an existing subscriber. If Double Opt-in is "
916
- #~ "true, this has no effect. Learn more about <a href='http://blog.mailchimp."
917
- #~ "com/sending-welcome-emails-with-mailchimp/' target='_blank'>Welcome "
918
- #~ "Emails</a>."
919
- #~ msgstr ""
920
- #~ "Om Dubbel Opt-in är falsk, och detta är sant, så kommer MailChimp att "
921
- #~ "skicka Välkomstmeddelanden om prenumerationen går igenom - detta kommer "
922
- #~ "dock inte att ske om MailChimp istället börjar uppdatera en redan "
923
- #~ "existerande prenumerant. Om Dubbel Opt-in är sann, så har detta ingen "
924
- #~ "effekt. Läs mer om <a href='http://blog.mailchimp.com/sending-welcome-"
925
- #~ "emails-with-mailchimp/' target='_blank'>Välkomstmeddelanden</a>."
926
-
927
- #~ msgid "Group Name"
928
- #~ msgstr "Gruppnamn"
929
-
930
- #~ msgid ""
931
- #~ "Optional: Enter the name of the group. Learn more about <a href=\"http://"
932
- #~ "mailchimp.com/features/groups/\" target=\"_blank\">Groups</a>"
933
- #~ msgstr ""
934
- #~ "Valfritt: Ange gruppnamnet. Mer information om <a href=\"http://mailchimp."
935
- #~ "com/features/groups/\" target=\"_blank\">Grupper</a>"
936
-
937
- #~ msgid "Groups"
938
- #~ msgstr "Grupper"
939
-
940
- #~ msgid ""
941
- #~ "Optional: Comma delimited list of interest groups to add the email to."
942
- #~ msgstr ""
943
- #~ "Valfritt: Kommaseparerad lista över intressegrupper att tilldela e-posten "
944
- #~ "till."
945
-
946
- #~ msgid "Replace Interests"
947
- #~ msgstr "Ersätt Intressen"
948
-
949
- #~ msgid ""
950
- #~ "Whether MailChimp will replace the interest groups with the groups "
951
- #~ "provided or add the provided groups to the member's interest groups"
952
- #~ msgstr ""
953
- #~ "Om MailChimp skall ersätta intressegrupperna med de grupper som bifogas, "
954
- #~ "eller lägga de bifogade grupperna till medlemmens intressegrupper"
955
-
956
- #~ msgid "After Subscribe Settings"
957
- #~ msgstr "Efter Prenumerations-inställningar"
958
-
959
- #~ msgid "Thank You or Incentive Message"
960
- #~ msgstr "Tack- eller Motivationsmeddelande"
961
-
962
- #~ msgid ""
963
- #~ "Leave a thank you or incentive information after the user has subscribed. "
964
- #~ "This will override the default success message."
965
- #~ msgstr ""
966
- #~ "Visa ett tack- eller incitamentmeddelande efter att en användare har "
967
- #~ "påbörjat prenumeration. Detta åsidosätter standardmeddelandet."
968
-
969
- #~ msgid "Share Buttons"
970
- #~ msgstr "Dela-knappar"
971
-
972
- #~ msgid ""
973
- #~ "Select the checkboxes above to display Social Share Buttons after you "
974
- #~ "capture an email."
975
- #~ msgstr ""
976
- #~ "Kryssa i kryssrutorna ovan för att visa Sociala Dela-knappar efter att du "
977
- #~ "fångat in ett e-postmeddelande."
978
-
979
- #~ msgid "Twitter"
980
- #~ msgstr "Twitter"
981
-
982
- #~ msgid "Facebook"
983
- #~ msgstr "Facebook"
984
-
985
- #~ msgid "Google Plus"
986
- #~ msgstr "Google Plus"
987
-
988
- #~ msgid "LinkedIn"
989
- #~ msgstr "LinkedIn"
990
-
991
- #~ msgid "PinIt"
992
- #~ msgstr "PinIt"
993
-
994
- #~ msgid "Tumblr"
995
- #~ msgstr "Tumblr"
996
-
997
- #~ msgid "Display Referrer Link"
998
- #~ msgstr "Visa Hänvisningslänk"
999
-
1000
- #~ msgid ""
1001
- #~ "The referrer link is a special link that you can encourage your "
1002
- #~ "subscribers to share so you track who referred who."
1003
- #~ msgstr ""
1004
- #~ "Hänvisningslänken är en speciell länk som du kan uppmuntra dina "
1005
- #~ "prenumeranter att dela, så att du kan hålla koll på vem som hänvisade vem."
1006
-
1007
- #~ msgid "Progress Bar Settings"
1008
- #~ msgstr "Förloppsindikatorinställningar"
1009
-
1010
- #~ msgid "Enable Progress Bar"
1011
- #~ msgstr "Aktivera Förloppsindikator"
1012
-
1013
- #~ msgid "Displays a progress bar on your site."
1014
- #~ msgstr "Visa en förloppsindikator på din webbplats"
1015
-
1016
- #~ msgid "Start and End Date"
1017
- #~ msgstr "Start- och Slutdatum"
1018
-
1019
- #~ msgid ""
1020
- #~ "The percent complete will be automatically calculated if you enter a "
1021
- #~ "start and end date."
1022
- #~ msgstr ""
1023
- #~ "Antal procent gånget beräknas automatiskt om du anger start- och "
1024
- #~ "slutdatum. "
1025
-
1026
- #~ msgid "Percent Complete Override"
1027
- #~ msgstr "Åsidosätt Procent Gånget."
1028
-
1029
- #~ msgid ""
1030
- #~ "Enter the percentage complete without the percentage sign. This will "
1031
- #~ "override the date calculation above."
1032
- #~ msgstr ""
1033
- #~ "Ange procent gånget utan procenttecken. Detta åsidosätter "
1034
- #~ "datumberäkningen ovan."
1035
-
1036
- #~ msgid "Progress Bar Effect"
1037
- #~ msgstr "Förloppsindikatoreffekt"
1038
-
1039
- #~ msgid "Basic"
1040
- #~ msgstr "Standard"
1041
-
1042
- #~ msgid "Striped"
1043
- #~ msgstr "Randig"
1044
-
1045
- #~ msgid "Animated"
1046
- #~ msgstr "Animerad"
1047
-
1048
- #~ msgid "Striped and Animated are not supported in Internet Explorer"
1049
- #~ msgstr "Randig och Animerad stöds ej i Internet Explorer"
1050
-
1051
- #~ msgid "Countdown Settings"
1052
- #~ msgstr "Nedräkningsinställningar"
1053
-
1054
- #~ msgid "Enable Countdown"
1055
- #~ msgstr "Aktivera Nedräkning"
1056
-
1057
- #~ msgid "Displays a countdown on your site."
1058
- #~ msgstr "Visare en nedräkningsindikator på din webbplats."
1059
-
1060
- #~ msgid "End DateTime"
1061
- #~ msgstr "Slut-DatumTid"
1062
-
1063
- #~ msgid "Enter the datetime to countdown to."
1064
- #~ msgstr "Ange datumtid att räkna ned till."
1065
-
1066
- #~ msgid "Auto Launch"
1067
- #~ msgstr "Autopublicera"
1068
-
1069
- #~ msgid ""
1070
- #~ "This will automatically launch your site when countdown reaches the end."
1071
- #~ msgstr ""
1072
- #~ "Detta kommer automatiskt att publicera din webbplats när nedräkningen "
1073
- #~ "nått sitt slut."
1074
-
1075
- #~ msgid "Language Strings"
1076
- #~ msgstr "Språksträngar"
1077
-
1078
- #~ msgid "Translate the text strings below into your language if not English."
1079
- #~ msgstr "Översätt textsträngarna nedan till ditt språk, om ej Engelska."
1080
-
1081
- #~ msgid "Days"
1082
- #~ msgstr "Dagar"
1083
-
1084
- #~ msgid "Translate into your language."
1085
- #~ msgstr "Översätt till ditt språk."
1086
-
1087
- #~ msgid "Hours"
1088
- #~ msgstr "Timmar"
1089
-
1090
- #~ msgid "Minutes"
1091
- #~ msgstr "Minuter"
1092
-
1093
- #~ msgid "Seconds"
1094
- #~ msgstr "Sekunder"
1095
-
1096
- #~ msgid ""
1097
- #~ "If left empty the <a href=\"http://www.seomoz.org/learn-seo/title-tag\" "
1098
- #~ "target=\"_blank\">title tag</a> of your page will be: "
1099
- #~ msgstr ""
1100
- #~ "Om detta lämnas tomt så kommer <a href=\"http://www.seomoz.org/learn-seo/"
1101
- #~ "title-tag\" target=\"_blank\">titeltaggen</a> på din sida att bli: "
1102
-
1103
- #~ msgid ""
1104
- #~ "If left empty the <a href=\"http://www.seomoz.org/learn-seo/meta-"
1105
- #~ "description\" target=\"_blank\">meta description</a> of your page will "
1106
- #~ "be: "
1107
- #~ msgstr ""
1108
- #~ "Om detta lämnas tomt så kommer <a href=\"http://www.seomoz.org/learn-seo/"
1109
- #~ "meta-description\" target=\"_blank\">metabeskrivningen</a> av din sida "
1110
- #~ "att bli: "
1111
-
1112
- #~ msgid ""
1113
- #~ "Paste in your <a href=\"http://www.google.com/analytics/\" target=\"_blank"
1114
- #~ "\">Google Analytics</a> code. Example: UA-xxxxxxxxx"
1115
- #~ msgstr ""
1116
- #~ "Klistra in i din <a href=\"http://www.google.com/analytics/\" target="
1117
- #~ "\"_blank\">Google Analytics</a>-kod. Exempel: UA-xxxxxxxxx"
1118
-
1119
- #~ msgid "Footer Credit"
1120
- #~ msgstr "Sidfotserkännanden"
1121
-
1122
- #~ msgid "Credit Image"
1123
- #~ msgstr "Bild för Erkännanden"
1124
-
1125
- #~ msgid "Use an image to add a footer credit."
1126
- #~ msgstr "Använd en bild för att lägga till sidfotserkännanden."
1127
-
1128
- #~ msgid "Link to be used for your footer credit."
1129
- #~ msgstr "Länk att använda för dina sidfotserkännanden."
1130
-
1131
- #~ msgid "Credit Link"
1132
- #~ msgstr "Länk till Erkännanden"
1133
-
1134
- #~ msgid "Social Media Profiles"
1135
- #~ msgstr " Sociala Medie-profiler"
1136
-
1137
- #~ msgid "Social Media Icons Size"
1138
- #~ msgstr "Sociala Medie-ikoner"
1139
-
1140
- #~ msgid "Small 16px"
1141
- #~ msgstr "Liten 16px"
1142
-
1143
- #~ msgid "Medium 24px"
1144
- #~ msgstr "Mellan 24px"
1145
-
1146
- #~ msgid "Large 32px"
1147
- #~ msgstr "Stor 32px"
1148
-
1149
- #~ msgid "Social Profiles"
1150
- #~ msgstr "Sociala Profiler"
1151
-
1152
- #~ msgid "Subscribe Button"
1153
- #~ msgstr "Prenumerera-knapp"
1154
-
1155
- #~ msgid "Notify Me"
1156
- #~ msgstr "Notifiera Mig"
1157
-
1158
- #~ msgid "Subscribe Field"
1159
- #~ msgstr "Prenumerera-fält"
1160
-
1161
- #~ msgid "Enter Your Email"
1162
- #~ msgstr "Ange din e-post"
1163
-
1164
- #~ msgid "First Name Field"
1165
- #~ msgstr "Förnamnsfält"
1166
-
1167
- #~ msgid "First Name"
1168
- #~ msgstr "Förnamn"
1169
-
1170
- #~ msgid "Last Name Field"
1171
- #~ msgstr "Efternamnsfält"
1172
-
1173
- #~ msgid "Last Name"
1174
- #~ msgstr "Efternamn"
1175
-
1176
- #~ msgid "Success"
1177
- #~ msgstr "Lyckades"
1178
-
1179
- #~ msgid "You'll be notified soon!"
1180
- #~ msgstr "Du blir snart notifierad!"
1181
-
1182
- #~ msgid "Already Subscribed"
1183
- #~ msgstr "Redan Prenumerant"
1184
-
1185
- #~ msgid "You're already subscribed."
1186
- #~ msgstr "Du prenumererar redan."
1187
-
1188
- #~ msgid "Invalid Email"
1189
- #~ msgstr "Ogiltig E-post"
1190
-
1191
- #~ msgid "API Error"
1192
- #~ msgstr "API-fel"
1193
-
1194
- #~ msgid "Error, please try again."
1195
- #~ msgstr "Fel, var god försök igen."
1196
-
1197
- #~ msgid "Display WPML Language Switcher"
1198
- #~ msgstr "Visa WPML Språkväxlare"
1199
-
1200
- #~ msgid "No"
1201
- #~ msgstr "Nej"
1202
-
1203
- #~ msgid ""
1204
- #~ "This will display the WPML Language Switcher on the Coming Soon page."
1205
- #~ msgstr "Detta visar WPML-språkväxlaren på Kommer Snart-sidan."
1206
-
1207
- #~ msgid "Cover or Stretch"
1208
- #~ msgstr "Täckande eller Utsträckt"
1209
-
1210
- #~ msgid ""
1211
- #~ "Cover will scale the image to the smallest size such that both its width "
1212
- #~ "and its height can fit inside the content area. The image will be "
1213
- #~ "stretched for older browsers."
1214
- #~ msgstr ""
1215
- #~ "Alternativet Täckande kommer att skala blden till minsta möjliga storlek "
1216
- #~ "där både bredd och höjd ryms i innehållsområdet. I äldre webbläsare "
1217
- #~ "kommer bilden istället att sträckas ut."
1218
-
1219
- #~ msgid "Background Effects"
1220
- #~ msgstr "Bakgrundseffekter"
1221
-
1222
- #~ msgid "None"
1223
- #~ msgstr "Inget"
1224
-
1225
- #~ msgid "Noise"
1226
- #~ msgstr "Brus"
1227
-
1228
- #~ msgid ""
1229
- #~ "Background effects can be applied to Background Colors or Background "
1230
- #~ "Images."
1231
- #~ msgstr ""
1232
- #~ "Bakgrundseffekter är tillämpliga på Bakgrundsfärger samt Bakgrundsbilder."
1233
-
1234
- #~ msgid "Background Slideshow"
1235
- #~ msgstr "Bakgrundsbildspel"
1236
-
1237
- #~ msgid ""
1238
- #~ "This will override the setting above and create a background slideshow."
1239
- #~ msgstr ""
1240
- #~ "Detta åsidosätter inställningen ovan och skapar ett bakgrundsbildspel."
1241
-
1242
- #~ msgid "Slideshow Randomize"
1243
- #~ msgstr "Slumpa Bildspel"
1244
-
1245
- #~ msgid ""
1246
- #~ "This will display a random slideshow each time as opposed to the order "
1247
- #~ "listed below."
1248
- #~ msgstr ""
1249
- #~ "Detta visar ett slumpmässigt bildspel varje gång, i motsats till den "
1250
- #~ "ordning som listas nedan."
1251
-
1252
- #~ msgid "Slide Speed"
1253
- #~ msgstr "Glidningshastighet"
1254
-
1255
- #~ msgid "This will determine how fast slides change in milliseconds."
1256
- #~ msgstr ""
1257
- #~ "Detta bestämmer hur snabbt bilder skall bytas i bildspelet, i "
1258
- #~ "millisekunder."
1259
-
1260
- #~ msgid "Slide Transition"
1261
- #~ msgstr "Glidningsövergång"
1262
-
1263
- #~ msgid "This will determine the transition between slides."
1264
- #~ msgstr "Detta anger övergång mellan bilder i bildspelet."
1265
-
1266
- #~ msgid "Fade"
1267
- #~ msgstr "Tona"
1268
-
1269
- #~ msgid "Slide Top"
1270
- #~ msgstr "Glidning Upp"
1271
-
1272
- #~ msgid "Slide Right"
1273
- #~ msgstr "Glidning Höger"
1274
-
1275
- #~ msgid "Slide Bottom"
1276
- #~ msgstr "Glidning Ned"
1277
-
1278
- #~ msgid "Slide Left"
1279
- #~ msgstr "Glidning Vänster"
1280
-
1281
- #~ msgid "Carousel Right"
1282
- #~ msgstr "Karusell Höger"
1283
-
1284
- #~ msgid "Carousel Left"
1285
- #~ msgstr "Karusell Vänster"
1286
-
1287
- #~ msgid "Slideshow Images"
1288
- #~ msgstr "Bildspelsbilder"
1289
-
1290
- #~ msgid ""
1291
- #~ "Paste in the urls to the images you like to use for your slideshow one "
1292
- #~ "per line. <a href=\"https://seedprod.zendesk.com/entries/22545416-how-to-"
1293
- #~ "create-a-background-slideshow\" target=\"_blank\">Learn How</a>"
1294
- #~ msgstr ""
1295
- #~ "Klistra in URL:er till de bilder du vill använda i ditt bildspel, en per "
1296
- #~ "rad. <a href=\"https://seedprod.zendesk.com/entries/22545416-how-to-"
1297
- #~ "create-a-background-slideshow\" target=\"_blank\">Visa Hur</a>"
1298
-
1299
- #~ msgid "Background Video (Beta)"
1300
- #~ msgstr "Bakgrundsvideo (Beta)"
1301
-
1302
- #~ msgid "This will override the setting above and create a background video."
1303
- #~ msgstr ""
1304
- #~ "Detta kommer att åsidosätta inställningarna ovan och skapa en "
1305
- #~ "bakgrundsvideo."
1306
-
1307
- #~ msgid "Background Video URL"
1308
- #~ msgstr "Bakgrundsvideo-URL"
1309
-
1310
- #~ msgid "Enter the YouTube or Vimeo url."
1311
- #~ msgstr "Ange YouTube- eller Vimeo-URL:en."
1312
-
1313
- #~ msgid "Link &amp; Button Color"
1314
- #~ msgstr "Länk- &amp; knappfärg"
1315
-
1316
- #~ msgid ""
1317
- #~ "If no Headline Color is choosen then the Link &amp; Button Color will be "
1318
- #~ "used. "
1319
- #~ msgstr ""
1320
- #~ "Om ingen Rubrikfärg väljs så kommer Länk- &amp; Knappfärgen att användas."
1321
-
1322
- #~ msgid "Headline Font"
1323
- #~ msgstr "Rubriktypsnitt"
1324
-
1325
- #~ msgid ""
1326
- #~ "If you choose 'Inherit' as a headline font then the text font will be "
1327
- #~ "used."
1328
- #~ msgstr ""
1329
- #~ "Om du väljer 'Inherit' som rubriktypsnitt så kommer texttypsnittet att "
1330
- #~ "användas."
1331
-
1332
- #~ msgid "Button Font"
1333
- #~ msgstr "Knapptypsnitt"
1334
-
1335
- #~ msgid ""
1336
- #~ "If you choose 'Inherit' as a button font then the headline font will be "
1337
- #~ "used."
1338
- #~ msgstr ""
1339
- #~ "Om du väljer 'Inherit' som knapptypsnitt så kommer rubriktypsnittet att "
1340
- #~ "användas."
1341
-
1342
- #~ msgid "Typekit Kit ID"
1343
- #~ msgstr "Typekit Kit-ID"
1344
-
1345
- #~ msgid ""
1346
- #~ "Enter your <a href=\"https://typekit.com\" target=\"_blank\">Typekit</a> "
1347
- #~ "Kit ID. This will override the fonts above."
1348
- #~ msgstr ""
1349
- #~ "Ange ditt <a href=\"https://typekit.com\" target=\"_blank\">Typekit</a> "
1350
- #~ "Kit-ID. Detta kommer att åsidosätta typsnitten ovan."
1351
-
1352
- #~ msgid "Text Effects"
1353
- #~ msgstr "Texteffekter"
1354
-
1355
- #~ msgid ""
1356
- #~ "Inset <small class=\"description\">: Adds a subtle inset shadow</small>"
1357
- #~ msgstr ""
1358
- #~ "Infällning <small class=\"description\">: Lägger till en subtil skugga "
1359
- #~ "för infällning</small>"
1360
-
1361
- #~ msgid "Container"
1362
- #~ msgstr "Behållare"
1363
-
1364
- #~ msgid "Enable Container"
1365
- #~ msgstr "Aktivera Behållare"
1366
-
1367
- #~ msgid ""
1368
- #~ "A container is a wrapper that will encapsulate your coming soon content."
1369
- #~ msgstr ""
1370
- #~ "En behållare är ett omslutande element för ditt Kommer Snart-innehåll."
1371
-
1372
- #~ msgid "Container Color"
1373
- #~ msgstr "Behållarfärg"
1374
-
1375
- #~ msgid "Container Position"
1376
- #~ msgstr "Behållarposition"
1377
-
1378
- #~ msgid "Left"
1379
- #~ msgstr "Vänster"
1380
-
1381
- #~ msgid "Center"
1382
- #~ msgstr "Centrera"
1383
-
1384
- #~ msgid "Right"
1385
- #~ msgstr "Höger"
1386
-
1387
- #~ msgid "Container Effects"
1388
- #~ msgstr "Behållareffekter"
1389
-
1390
- #~ msgid "Fade In"
1391
- #~ msgstr "Tona In"
1392
-
1393
- #~ msgid "Drop Shadow"
1394
- #~ msgstr "Skugga"
1395
-
1396
- #~ msgid "Glow"
1397
- #~ msgstr "Glödande Kontur"
1398
-
1399
- #~ msgid "Border"
1400
- #~ msgstr "Kant"
1401
-
1402
- #~ msgid "Rounded Corners"
1403
- #~ msgstr "Rundade Hörn"
1404
-
1405
- #~ msgid "Opacity"
1406
- #~ msgstr "Opacitet"
1407
-
1408
- #~ msgid ""
1409
- #~ "These effects only work in modern browsers. Not sure what a <a target="
1410
- #~ "\"_blank\" href=\"http://browsehappy.com/\">modern browser</a> is?"
1411
- #~ msgstr ""
1412
- #~ "Dessa effekter fungerar bara i moderna webbläsare. Osäker på vad en <a "
1413
- #~ "target=\"_blank\" href=\"http://browsehappy.com/\">modern webbläsare</a> "
1414
- #~ "är?"
1415
-
1416
- #~ msgid "Code"
1417
- #~ msgstr "Kod"
1418
-
1419
- #~ msgid ""
1420
- #~ "If you need to make some advanced changes to the template you can edit "
1421
- #~ "the code above directly."
1422
- #~ msgstr ""
1423
- #~ "Om du behöver göra några avancerade ändringar i mallen så kan du redigera "
1424
- #~ "kodeon ovan direkt."
1425
-
1426
- #~ msgid "Template Tags"
1427
- #~ msgstr "Malltaggar"
1428
-
1429
- #~ msgid ""
1430
- #~ "\n"
1431
- #~ " <code>{Title}</code> - Display your title. Settings > Coming "
1432
- #~ "Soon Pro Settings > Header > SEO Title <br>\n"
1433
- #~ " <code>{MetaDescription}</code> - Displays your description "
1434
- #~ "along with the proper meta tags. Settings > Coming Soon Pro > Settings > "
1435
- #~ "Header > SEO Meta Description <br>\n"
1436
- #~ " <code>{Privacy}</code> - Displays noindex tag if set to "
1437
- #~ "private. Settings > Privacy <br>\n"
1438
- #~ " <code>{Favicon}</code> - Displays favicon tag. Settings > "
1439
- #~ "Coming Soon Pro > Settings > Header > Favicon <br>\n"
1440
- #~ " <code>{Head}</code> - Required in the <head> Displays custom "
1441
- #~ "scripts for the page. Settings > Coming Soon Pro > Advanced > "
1442
- #~ "Scripts<br>\n"
1443
- #~ " <code>{Custom CSS}</code> - Displays custom css page. "
1444
- #~ "Settings > Coming Soon Pro > Design > Template > Custom CSS<br>\n"
1445
- #~ " <code>{Logo}</code> - Displays your logo if set. Settings > "
1446
- #~ "Coming Soon Pro > Settings > Page Settings > Logo<br>\n"
1447
- #~ " <code>{Headline}</code> - Displays your headline if set. "
1448
- #~ "Settings > Coming Soon Pro > Settings > Page Settings > Headline<br>\n"
1449
- #~ " <code>{Description}</code> - Displays your description if "
1450
- #~ "set. Settings > Coming Soon Pro > Settings > Page Settings > "
1451
- #~ "Description<br>\n"
1452
- #~ " <code>{ProgressBar}</code> - Displays a progress bar if "
1453
- #~ "enabled. Settings > Coming Soon Pro > Settings > Progress Bar "
1454
- #~ "Settings<br>\n"
1455
- #~ " <code>{Countdown}</code> - Displays a countdown if enabled. "
1456
- #~ "Settings > Coming Soon Pro > Settings > Countdown Settings<br>\n"
1457
- #~ " <code>{Form}</code> - Displays signup form and thank you "
1458
- #~ "page. Settings > Coming Soon Pro > Settings<br>\n"
1459
- #~ " <code>{SocialProfiles}</code> - Displays your social profiles "
1460
- #~ "if set. Settings > Coming Soon Pro > Settings > Social Media "
1461
- #~ "Profiles<br>\n"
1462
- #~ " <code>{Credit}</code> - Displays your footer credit if set. "
1463
- #~ "Settings > Coming Soon Pro > Settings > Footer Credit<br>\n"
1464
- #~ " <code>{Footer}</code> - Displays required scripts for the "
1465
- #~ "page.<br>\n"
1466
- #~ " "
1467
- #~ msgstr ""
1468
- #~ "\n"
1469
- #~ " <code>{Title}</code> - Visa din titel. Inställningar > Coming "
1470
- #~ "Soon Pro-inställningar > Sidhuvud > SEO-titel <br>\n"
1471
- #~ " <code>{MetaDescription}</code> - Visar din beskrivning "
1472
- #~ "tillsammans med de giltiga metataggarna. Inställningar > Coming Soon Pro "
1473
- #~ "> Inställningar > Sidhuvud > SEO-metabeskrivning <br>\n"
1474
- #~ " <code>{Privacy}</code> - Visar noindex-taggen, om satt som "
1475
- #~ "privat. Inställningar > Personlig Integritet <br>\n"
1476
- #~ " <code>{Favicon}</code> - Displays taggen för webbplatsikon. "
1477
- #~ "Settings > Coming Soon Pro > Settings > Header > Webbplatsikon <br>\n"
1478
- #~ " <code>{Head}</code> - Krävs i <head>. Visar anpassade skript "
1479
- #~ "på sidan. Inställningar > Coming Soon Pro > Avancerat > Skript<br>\n"
1480
- #~ " <code>{Custom CSS}</code> - Visar sidan för anpassad CSS. "
1481
- #~ "Inställningar > Coming Soon Pro > Design > Mall > Anpassad CSS<br>\n"
1482
- #~ " <code>{Logo}</code> - Visar din logotyp, om angiven. "
1483
- #~ "Inställningar > Coming Soon Pro > Inställningar > Sidinställningar > "
1484
- #~ "Logotyp<br>\n"
1485
- #~ " <code>{Headline}</code> - Visar din rubrik, om angiven. "
1486
- #~ "Inställningar > Coming Soon Pro > Inställningar > Sidinställningar > "
1487
- #~ "Rubrik<br>\n"
1488
- #~ " <code>{Description}</code> - Visar din beskrivning, om "
1489
- #~ "angiven. Inställningar > Coming Soon Pro > Inställningar > "
1490
- #~ "Sidinställningar > Beskrivning<br>\n"
1491
- #~ " <code>{ProgressBar}</code> - Visar en förloppsindikator, om "
1492
- #~ "aktiverad. Inställningar > Coming Soon Pro > Inställningar > "
1493
- #~ "Förloppsindikatorinställningar<br>\n"
1494
- #~ " <code>{Countdown}</code> - Visar en nedräkningsindikator, om "
1495
- #~ "aktiverad. Inställningar > Coming Soon Pro > Inställningar > "
1496
- #~ "Nedräkningsinställningar<br>\n"
1497
- #~ " <code>{Form}</code> - Visar registreringsformulär och "
1498
- #~ "tacksida. Inställningar > Coming Soon Pro > Inställningar<br>\n"
1499
- #~ " <code>{SocialProfiles}</code> - Visar dina sociala profiler, "
1500
- #~ "om angivna. Inställningar > Coming Soon Pro > Inställningar > Sociala "
1501
- #~ "Media-profiler<br>\n"
1502
- #~ " <code>{Credit}</code> - Visar din sidfot, om angiven. "
1503
- #~ "Inställningar > Coming Soon Pro > Inställningar > Sidfotserkännanden<br>\n"
1504
- #~ " <code>{Footer}</code> - Visar skript som krävs på sidan.<br>\n"
1505
- #~ " "
1506
-
1507
- #~ msgid "Access"
1508
- #~ msgstr "Tillträde"
1509
-
1510
- #~ msgid "Client View URL"
1511
- #~ msgstr "Klientvisnings-URL"
1512
-
1513
- #~ msgid ""
1514
- #~ "Enter a phrase above and give your client a secret url that will allow "
1515
- #~ "them to bypass the Coming Soon page. The cookie life is 6 hours. After "
1516
- #~ "the cookie expires they will need to revisit the client view url to "
1517
- #~ "regain access."
1518
- #~ msgstr ""
1519
- #~ "Ange en fras ovan och ge din(a) klient(er) en hemlig URL som tillåter "
1520
- #~ "passage förbi Kommer Snart-sidan. Kakans livstid är 6 timmar. Efter att "
1521
- #~ "kakans livstid gått ut så måste Klientvy-URL:en åter besökas för förnyat "
1522
- #~ "tillträde."
1523
-
1524
- #~ msgid "Access by IP"
1525
- #~ msgstr "IP-tillträde"
1526
-
1527
- #~ msgid ""
1528
- #~ "All visitors from certain IP's to bypass the Coming Soon page. Put each "
1529
- #~ "IP on it's own line."
1530
- #~ msgstr ""
1531
- #~ "Alla besökare från dessa IP-adresser åsidosätter Kommer Snart-sidan. "
1532
- #~ "Placera varje IP-adress på en egen rad."
1533
-
1534
- #~ msgid "Access by Role"
1535
- #~ msgstr "Rolltillträde"
1536
-
1537
- #~ msgid ""
1538
- #~ "By default anyone logged in will see the regular site and not the coming "
1539
- #~ "soon page. To override this select Roles that will be given access to see "
1540
- #~ "the regular site."
1541
- #~ msgstr ""
1542
- #~ "Som standard kommer alla som är inloggade att se den vanliga webbplatsen "
1543
- #~ "och inte Kommer Snart-sidan. För att åsidosätta detta, välj Roller som "
1544
- #~ "skall ges tillträde till den vanliga webbplatsen."
1545
-
1546
- #~ msgid "Landing Page Mode"
1547
- #~ msgstr "Landningssidläge"
1548
-
1549
- #~ msgid ""
1550
- #~ "Only display the coming soon page on one page of your site and use it as "
1551
- #~ "a landing page. Leave unselected if you want the coming soon page to be "
1552
- #~ "display on your entire site."
1553
- #~ msgstr ""
1554
- #~ "Visa endast Kommer Snart-sidan på en sida på din webbplats och använd den "
1555
- #~ "som landningssida. Låt detta vara ej valt om du vill att Kommer Snart-"
1556
- #~ "sidan skall visas över hela webbplatsen."
1557
-
1558
- #~ msgid "Include URL Pattern"
1559
- #~ msgstr "Inkludera URL-mönster"
1560
-
1561
- #~ msgid ""
1562
- #~ "Include certain urls to only diplay the coming soon page on a section of "
1563
- #~ "your site using <a href=\"http://en.wikipedia.org/wiki/Regex\" target="
1564
- #~ "\"_blank\">regular expressions</a>. For example enter \"blog\" will "
1565
- #~ "include pages with the url: http://example.org/blog/*. <a href=\"https://"
1566
- #~ "seedprod.zendesk.com/entries/23050096-exclude-and-include-urls-pattern-"
1567
- #~ "examples\" target=\"_blank\">See more examples</a> and learn how to "
1568
- #~ "include multiple pages. This is useful if you are working on a new "
1569
- #~ "section of your site."
1570
- #~ msgstr ""
1571
- #~ "Inkludera angivna URL:er för att endast visa Kommer Snart-sidan på en del "
1572
- #~ "av din webbplats med hjälp av <a href=\"http://en.wikipedia.org/wiki/Regex"
1573
- #~ "\" target=\"_blank\">reguljära uttryck (RegEx)</a>. Att exempelvis ange "
1574
- #~ "\"blogg\" kommer att inkludera sidor med URL:en: http://example.org/blogg/"
1575
- #~ "*. <a href=\"https://seedprod.zendesk.com/entries/23050096-exclude-and-"
1576
- #~ "include-urls-pattern-examples\" target=\"_blank\">Studera fler exempel</"
1577
- #~ "a> och lär dig hur man inkluderar flera sidor samtidigt. Detta är "
1578
- #~ "användbart om du arbetar på en ny sektion av din webbplats."
1579
-
1580
- #~ msgid "Exclude URL Pattern"
1581
- #~ msgstr "Exkludera URL-mönster"
1582
-
1583
- #~ msgid ""
1584
- #~ "Exclude certain urls from displaying the Coming Soon page using <a href="
1585
- #~ "\"http://en.wikipedia.org/wiki/Regex\" target=\"_blank\">regular "
1586
- #~ "expressions</a>. For example enter \"blog\" will exclude the url: http://"
1587
- #~ "example.org/blog/. <a href=\"https://seedprod.zendesk.com/"
1588
- #~ "entries/23050096-exclude-and-include-urls-pattern-examples\" target="
1589
- #~ "\"_blank\">See more examples</a> and learn how to exclue multiple pages. "
1590
- #~ "This is useful if a section of you site is ready to be viewed or you have "
1591
- #~ "a login page on the frontend."
1592
- #~ msgstr ""
1593
- #~ "Exkludera angivna URL:er från att visa Kommer Snart-sidan med hjälp av <a "
1594
- #~ "href=\"http://en.wikipedia.org/wiki/Regex\" target=\"_blank\">reguljära "
1595
- #~ "uttryck (RegEx)</a>. Att exempelvis ange \"blogg\" kommer att exkludera "
1596
- #~ "URL:en: http://example.org/blogg/*. <a href=\"https://seedprod.zendesk."
1597
- #~ "com/entries/23050096-exclude-and-include-urls-pattern-examples\" target="
1598
- #~ "\"_blank\">Studera fler exempel</a> och lär dig hur man exkluderar flera "
1599
- #~ "sidor samtidigt. Detta är användbart om en viss del av din webbplats är "
1600
- #~ "redo för besökare, eller om du har en publik inloggningssida."
1601
-
1602
- #~ msgid "Enable Responsiveness"
1603
- #~ msgstr "Aktivera Responsivitet"
1604
-
1605
- #~ msgid "Makes the page responsive."
1606
- #~ msgstr "Gör sidan responsiv."
1607
-
1608
- #~ msgid "Enable FitVid"
1609
- #~ msgstr "Aktivera FitVid"
1610
-
1611
- #~ msgid "Makes your videos responsive."
1612
- #~ msgstr "Gör dina videor responsiva."
1613
-
1614
- #~ msgid "Enable wp_head &amp; wp_footer"
1615
- #~ msgstr "Aktivera wp_head &amp; wp_footer"
1616
-
1617
- #~ msgid ""
1618
- #~ "The <a href=\"http://codex.wordpress.org/Plugin_API/Action_Reference/"
1619
- #~ "wp_head\" target=\"_blank\">wp_head</a> and <a href=\"http://codex."
1620
- #~ "wordpress.org/Plugin_API/Action_Reference/wp_footer\" target=\"_blank"
1621
- #~ "\">wp_footer</a> functions are required by some plugins. If you are "
1622
- #~ "unsure do not enable it. These functions can cause styling issues with "
1623
- #~ "the page."
1624
- #~ msgstr ""
1625
- #~ "Funktionerna <a href=\"http://codex.wordpress.org/Plugin_API/"
1626
- #~ "Action_Reference/wp_head\" target=\"_blank\">wp_head</a> och <a href="
1627
- #~ "\"http://codex.wordpress.org/Plugin_API/Action_Reference/wp_footer\" "
1628
- #~ "target=\"_blank\">wp_footer</a> krävs av vissa tillägg. Om du är osäker "
1629
- #~ "så aktivera inte detta. Dessa funktioner kan orsaka problem med sidans "
1630
- #~ "stil."
1631
-
1632
- #~ msgid "Conversion Scripts"
1633
- #~ msgstr "Konverteringsskript"
1634
-
1635
- #~ msgid ""
1636
- #~ "This will render only after the form has been submitted. This will be "
1637
- #~ "rendered before the closing body tag."
1638
- #~ msgstr ""
1639
- #~ "Detta renderas endast efter att formuläret har skickats. Det renderas "
1640
- #~ "innan stängningstaggen för body."
1641
-
1642
- #~ msgid "Disable Custom Code Template"
1643
- #~ msgstr "Deaktivera Mall för Anpassad Kod"
1644
-
1645
- #~ msgid ""
1646
- #~ "Mod_security will cause false positive 400 error on some host. Disable "
1647
- #~ "the custom template to avoid this error and notify your host of the false "
1648
- #~ "positive."
1649
- #~ msgstr ""
1650
- #~ "Mod_security orsakar falskt positiva 400-fel på vissa webbhotell. "
1651
- #~ "Deaktivera den anpassade mallen för att undvika detta fel och meddela "
1652
- #~ "ditt webbhotell om de falskt positiva felen."
1653
-
1654
- #~ msgid "Import / Export"
1655
- #~ msgstr "Importera / Exportera"
1656
-
1657
- #~ msgid "Import"
1658
- #~ msgstr "Importera"
1659
-
1660
- #~ msgid "Paste settings from another Coming Soon Pro instance to import."
1661
- #~ msgstr ""
1662
- #~ "Klistra in inställningar från en annan installation av Coming Soon Pro."
1663
-
1664
- #~ msgid "Export"
1665
- #~ msgstr "Exportera"
1666
-
1667
- #~ msgid ""
1668
- #~ "Copy these settings and use the import them to another Coming Soon Pro "
1669
- #~ "instance."
1670
- #~ msgstr ""
1671
- #~ "Kopiera dessa inställningar för import i en annan Coming Soon Pro-"
1672
- #~ "installation."
1673
-
1674
- #~ msgid "Your Referral URL is:"
1675
- #~ msgstr "Din Hänvisnings-URL är:"
1676
-
1677
- #~ msgid "Your Referral Stats"
1678
- #~ msgstr "Din Hänvisningsstatistik"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/coming-soon.pot DELETED
@@ -1,442 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Coming Soon Pro by SeedProd\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-01-27 21:24-0500\n"
6
- "PO-Revision-Date: 2015-01-27 21:25-0500\n"
7
- "Last-Translator: John Turner <john@seedprod.com>\n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "X-Generator: Poedit 1.7.4\n"
15
- "X-Poedit-SearchPath-0: .\n"
16
-
17
- #: coming-soon.php:22 framework/framework.php:116 framework/framework.php:117
18
- #: inc/config-settings.php:22
19
- msgid "Coming Soon"
20
- msgstr ""
21
-
22
- #: framework/field-types/date.php:8 framework/field-types/daterange.php:8
23
- msgid "01-Jan"
24
- msgstr ""
25
-
26
- #: framework/field-types/date.php:9 framework/field-types/daterange.php:9
27
- msgid "02-Feb"
28
- msgstr ""
29
-
30
- #: framework/field-types/date.php:10 framework/field-types/daterange.php:10
31
- msgid "03-Mar"
32
- msgstr ""
33
-
34
- #: framework/field-types/date.php:11 framework/field-types/daterange.php:11
35
- msgid "04-Apr"
36
- msgstr ""
37
-
38
- #: framework/field-types/date.php:12 framework/field-types/daterange.php:12
39
- msgid "05-May"
40
- msgstr ""
41
-
42
- #: framework/field-types/date.php:13 framework/field-types/daterange.php:13
43
- msgid "06-Jun"
44
- msgstr ""
45
-
46
- #: framework/field-types/date.php:14 framework/field-types/daterange.php:14
47
- msgid "07-Jul"
48
- msgstr ""
49
-
50
- #: framework/field-types/date.php:15 framework/field-types/daterange.php:15
51
- msgid "08-Aug"
52
- msgstr ""
53
-
54
- #: framework/field-types/date.php:16 framework/field-types/daterange.php:16
55
- msgid "09-Sep"
56
- msgstr ""
57
-
58
- #: framework/field-types/date.php:17 framework/field-types/daterange.php:17
59
- msgid "10-Oct"
60
- msgstr ""
61
-
62
- #: framework/field-types/date.php:18 framework/field-types/daterange.php:18
63
- msgid "11-Nov"
64
- msgstr ""
65
-
66
- #: framework/field-types/date.php:19 framework/field-types/daterange.php:19
67
- msgid "12-Dec"
68
- msgstr ""
69
-
70
- #: framework/field-types/date.php:29 framework/field-types/daterange.php:29
71
- #: framework/field-types/daterange.php:42
72
- msgid "day"
73
- msgstr ""
74
-
75
- #: framework/field-types/date.php:32 framework/field-types/daterange.php:32
76
- #: framework/field-types/daterange.php:45
77
- msgid "year"
78
- msgstr ""
79
-
80
- #: framework/field-types/upload.php:12
81
- msgid "Media Image Library"
82
- msgstr ""
83
-
84
- #: framework/framework.php:77
85
- msgid "Settings reset."
86
- msgstr ""
87
-
88
- #: framework/framework.php:177
89
- msgid "&larr; Close Window"
90
- msgstr ""
91
-
92
- #: framework/framework.php:177
93
- msgid "Live Preview"
94
- msgstr ""
95
-
96
- #: framework/framework.php:179
97
- msgid "Upgrade to the Pro Version"
98
- msgstr ""
99
-
100
- #: framework/validations/color.php:13
101
- msgid "Please enter a valid color value."
102
- msgstr ""
103
-
104
- #: framework/validations/email.php:10 framework/validations/escurlraw.php:11
105
- msgid "Please enter a valid email."
106
- msgstr ""
107
-
108
- #: framework/validations/number.php:11
109
- msgid "Please enter a valid number."
110
- msgstr ""
111
-
112
- #: framework/validations/required.php:10
113
- msgid "is required."
114
- msgstr ""
115
-
116
- #: inc/class-seed-csp4.php:80
117
- msgid "Coming Soon Mode Active"
118
- msgstr ""
119
-
120
- #: inc/class-seed-csp4.php:82
121
- msgid "Maintenance Mode Active"
122
- msgstr ""
123
-
124
- #: inc/class-seed-csp4.php:144
125
- msgid "Please enter your settings."
126
- msgstr ""
127
-
128
- #: inc/config-settings.php:33 inc/config-settings.php:249
129
- msgid "Content"
130
- msgstr ""
131
-
132
- #: inc/config-settings.php:44
133
- msgid "General"
134
- msgstr ""
135
-
136
- #: inc/config-settings.php:50
137
- msgid "Status"
138
- msgstr ""
139
-
140
- #: inc/config-settings.php:52
141
- msgid "Disabled"
142
- msgstr ""
143
-
144
- #: inc/config-settings.php:53
145
- msgid "Enable Coming Soon Mode"
146
- msgstr ""
147
-
148
- #: inc/config-settings.php:54
149
- msgid "Enable Maintenance Mode"
150
- msgstr ""
151
-
152
- #: inc/config-settings.php:56
153
- msgid ""
154
- "When you are logged in you'll see your normal website. Logged out visitors "
155
- "will see the Coming Soon or Maintenance page. Coming Soon Mode will be "
156
- "available to search engines if your site is not private. Maintenance Mode "
157
- "will notify search engines that the site is unavailable."
158
- msgstr ""
159
-
160
- #: inc/config-settings.php:66
161
- msgid "Use maintenance.php"
162
- msgstr ""
163
-
164
- #: inc/config-settings.php:67
165
- msgid ""
166
- "maintenance.php detected, would you like to use this for your maintenance "
167
- "page?"
168
- msgstr ""
169
-
170
- #: inc/config-settings.php:69 inc/config-settings.php:197
171
- #: inc/config-settings.php:265
172
- msgid "Yes"
173
- msgstr ""
174
-
175
- #: inc/config-settings.php:79
176
- msgid "Page Settings"
177
- msgstr ""
178
-
179
- #: inc/config-settings.php:85
180
- msgid "Logo"
181
- msgstr ""
182
-
183
- #: inc/config-settings.php:86
184
- msgid "Upload a logo or teaser image (or) enter the url to your image."
185
- msgstr ""
186
-
187
- #: inc/config-settings.php:93
188
- msgid "Headline"
189
- msgstr ""
190
-
191
- #: inc/config-settings.php:94
192
- msgid "Enter a headline for your page."
193
- msgstr ""
194
-
195
- #: inc/config-settings.php:100
196
- msgid "Message"
197
- msgstr ""
198
-
199
- #: inc/config-settings.php:101
200
- msgid "Tell the visitor what to expect from your site."
201
- msgstr ""
202
-
203
- #: inc/config-settings.php:107
204
- msgid "Powered By SeedProd"
205
- msgstr ""
206
-
207
- #: inc/config-settings.php:108
208
- msgid "Nope - Got No Love"
209
- msgstr ""
210
-
211
- #: inc/config-settings.php:108
212
- msgid "Yep - I Love You Man"
213
- msgstr ""
214
-
215
- #: inc/config-settings.php:109
216
- msgid ""
217
- "Can we show a <strong>cool stylish</strong> footer credit at the bottom the "
218
- "page."
219
- msgstr ""
220
-
221
- #: inc/config-settings.php:118
222
- msgid "Header"
223
- msgstr ""
224
-
225
- #: inc/config-settings.php:124
226
- msgid "Favicon"
227
- msgstr ""
228
-
229
- #: inc/config-settings.php:125
230
- msgid ""
231
- "Favicons are displayed in a browser tab. Need Help <a href=\"http://tools."
232
- "dynamicdrive.com/favicon/\" target=\"_blank\">creating a favicon</a>?"
233
- msgstr ""
234
-
235
- #: inc/config-settings.php:131
236
- msgid "SEO Title"
237
- msgstr ""
238
-
239
- #: inc/config-settings.php:137
240
- msgid "SEO Meta Description"
241
- msgstr ""
242
-
243
- #: inc/config-settings.php:146
244
- msgid "Analytics Code"
245
- msgstr ""
246
-
247
- #: inc/config-settings.php:147
248
- msgid ""
249
- "Paste in your Universal or Classic <a href=\"http://www.google.com/analytics/"
250
- "\" target=\"_blank\">Google Analytics</a> code."
251
- msgstr ""
252
-
253
- #: inc/config-settings.php:157
254
- msgid "Design"
255
- msgstr ""
256
-
257
- #: inc/config-settings.php:170
258
- msgid "Background"
259
- msgstr ""
260
-
261
- #: inc/config-settings.php:177
262
- msgid "Background Color"
263
- msgstr ""
264
-
265
- #: inc/config-settings.php:180
266
- msgid ""
267
- "Choose between having a solid color background or uploading an image. By "
268
- "default images will cover the entire background."
269
- msgstr ""
270
-
271
- #: inc/config-settings.php:188
272
- msgid "Background Image"
273
- msgstr ""
274
-
275
- #: inc/config-settings.php:194
276
- msgid "Responsive Background"
277
- msgstr ""
278
-
279
- #: inc/config-settings.php:195
280
- msgid ""
281
- "Scale the background image to be as large as possible so that the background "
282
- "area is completely covered by the background image. Some parts of the "
283
- "background image may not be in view within the background positioning area."
284
- msgstr ""
285
-
286
- #: inc/config-settings.php:205 inc/config-settings.php:219
287
- #: inc/config-settings.php:237
288
- msgid "This setting is not applied if Responsive Background is checked"
289
- msgstr ""
290
-
291
- #: inc/config-settings.php:206
292
- msgid "Background Repeat"
293
- msgstr ""
294
-
295
- #: inc/config-settings.php:208
296
- msgid "No-Repeat"
297
- msgstr ""
298
-
299
- #: inc/config-settings.php:209
300
- msgid "Tile"
301
- msgstr ""
302
-
303
- #: inc/config-settings.php:210
304
- msgid "Tile Horizontally"
305
- msgstr ""
306
-
307
- #: inc/config-settings.php:211
308
- msgid "Tile Vertically"
309
- msgstr ""
310
-
311
- #: inc/config-settings.php:220
312
- msgid "Background Position"
313
- msgstr ""
314
-
315
- #: inc/config-settings.php:222
316
- msgid "Left Top"
317
- msgstr ""
318
-
319
- #: inc/config-settings.php:223
320
- msgid "Left Center"
321
- msgstr ""
322
-
323
- #: inc/config-settings.php:224
324
- msgid "Left Bottom"
325
- msgstr ""
326
-
327
- #: inc/config-settings.php:225
328
- msgid "Right Top"
329
- msgstr ""
330
-
331
- #: inc/config-settings.php:226
332
- msgid "Right Center"
333
- msgstr ""
334
-
335
- #: inc/config-settings.php:227
336
- msgid "Right Bottom"
337
- msgstr ""
338
-
339
- #: inc/config-settings.php:228
340
- msgid "Center Top"
341
- msgstr ""
342
-
343
- #: inc/config-settings.php:229
344
- msgid "Center Center"
345
- msgstr ""
346
-
347
- #: inc/config-settings.php:230
348
- msgid "Center Bottom"
349
- msgstr ""
350
-
351
- #: inc/config-settings.php:238
352
- msgid "Background Attachment"
353
- msgstr ""
354
-
355
- #: inc/config-settings.php:240
356
- msgid "Fixed"
357
- msgstr ""
358
-
359
- #: inc/config-settings.php:241
360
- msgid "Scroll"
361
- msgstr ""
362
-
363
- #: inc/config-settings.php:256
364
- msgid "Max Width"
365
- msgstr ""
366
-
367
- #: inc/config-settings.php:257
368
- msgid ""
369
- "By default the max width of the content is set to 600px. Enter a number "
370
- "value if you need it bigger. Example: 900"
371
- msgstr ""
372
-
373
- #: inc/config-settings.php:262
374
- msgid "Enable Well"
375
- msgstr ""
376
-
377
- #: inc/config-settings.php:263
378
- msgid "This will wrap your content in a box."
379
- msgstr ""
380
-
381
- #: inc/config-settings.php:275
382
- msgid "Text"
383
- msgstr ""
384
-
385
- #: inc/config-settings.php:281
386
- msgid "Text Color"
387
- msgstr ""
388
-
389
- #: inc/config-settings.php:289
390
- msgid "Link Color"
391
- msgstr ""
392
-
393
- #: inc/config-settings.php:297
394
- msgid "Headline Color"
395
- msgstr ""
396
-
397
- #: inc/config-settings.php:300
398
- msgid "If no Headline Color is chosen then the Link Color will be used. "
399
- msgstr ""
400
-
401
- #: inc/config-settings.php:308
402
- msgid "Text Font"
403
- msgstr ""
404
-
405
- #: inc/config-settings.php:329
406
- msgid "Template"
407
- msgstr ""
408
-
409
- #: inc/config-settings.php:337
410
- msgid "Custom CSS"
411
- msgstr ""
412
-
413
- #: inc/config-settings.php:338
414
- msgid "Need to tweaks the styles? Add your custom CSS here."
415
- msgstr ""
416
-
417
- #: inc/config-settings.php:347
418
- msgid "Advanced"
419
- msgstr ""
420
-
421
- #: inc/config-settings.php:360
422
- msgid "Scripts"
423
- msgstr ""
424
-
425
- #: inc/config-settings.php:366
426
- msgid "Header Scripts"
427
- msgstr ""
428
-
429
- #: inc/config-settings.php:367
430
- msgid ""
431
- "Enter any custom scripts. You can enter Javascript or CSS. This will be "
432
- "rendered before the closing head tag."
433
- msgstr ""
434
-
435
- #: inc/config-settings.php:374
436
- msgid "Footer Scripts"
437
- msgstr ""
438
-
439
- #: inc/config-settings.php:375
440
- msgid ""
441
- "Enter any custom scripts. This will be rendered before the closing body tag."
442
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Shh...
lib/TGMPA.php DELETED
@@ -1,3835 +0,0 @@
1
- <?php
2
-
3
- namespace ComingSoon;
4
-
5
- /**
6
- * Plugin installation and activation for WordPress themes.
7
- *
8
- * Please note that this is a drop-in library for a theme or plugin.
9
- * The authors of this library (Thomas, Gary and Juliette) are NOT responsible
10
- * for the support of your plugin or theme. Please contact the plugin
11
- * or theme author for support.
12
- *
13
- * @package TGM-Plugin-Activation
14
- * @version 2.6.1
15
- * @link http://tgmpluginactivation.com/
16
- * @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer
17
- * @copyright Copyright (c) 2011, Thomas Griffin
18
- * @license GPL-2.0+
19
- */
20
-
21
- /*
22
- Copyright 2011 Thomas Griffin (thomasgriffinmedia.com)
23
-
24
- This program is free software; you can redistribute it and/or modify
25
- it under the terms of the GNU General Public License, version 2, as
26
- published by the Free Software Foundation.
27
-
28
- This program is distributed in the hope that it will be useful,
29
- but WITHOUT ANY WARRANTY; without even the implied warranty of
30
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31
- GNU General Public License for more details.
32
-
33
- You should have received a copy of the GNU General Public License
34
- along with this program; if not, write to the Free Software
35
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
36
- */
37
-
38
- /**
39
- * Automatic plugin installation and activation library.
40
- *
41
- * Creates a way to automatically install and activate plugins from within themes.
42
- * The plugins can be either bundled, downloaded from the WordPress
43
- * Plugin Repository or downloaded from another external source.
44
- *
45
- * @since 1.0.0
46
- *
47
- * @package TGM-Plugin-Activation
48
- * @author Thomas Griffin
49
- * @author Gary Jones
50
- */
51
- class TGM_Plugin_Activation {
52
- /**
53
- * TGMPA version number.
54
- *
55
- * @since 2.5.0
56
- *
57
- * @const string Version number.
58
- */
59
- const TGMPA_VERSION = '2.6.1';
60
-
61
- /**
62
- * Regular expression to test if a URL is a WP plugin repo URL.
63
- *
64
- * @const string Regex.
65
- *
66
- * @since 2.5.0
67
- */
68
- const WP_REPO_REGEX = '|^http[s]?://wordpress\.org/(?:extend/)?plugins/|';
69
-
70
- /**
71
- * Arbitrary regular expression to test if a string starts with a URL.
72
- *
73
- * @const string Regex.
74
- *
75
- * @since 2.5.0
76
- */
77
- const IS_URL_REGEX = '|^http[s]?://|';
78
-
79
- /**
80
- * Holds a copy of itself, so it can be referenced by the class name.
81
- *
82
- * @since 1.0.0
83
- *
84
- * @var TGM_Plugin_Activation
85
- */
86
- public static $instance;
87
-
88
- /**
89
- * Holds arrays of plugin details.
90
- *
91
- * @since 1.0.0
92
- * @since 2.5.0 the array has the plugin slug as an associative key.
93
- *
94
- * @var array
95
- */
96
- public $plugins = array();
97
-
98
- /**
99
- * Holds arrays of plugin names to use to sort the plugins array.
100
- *
101
- * @since 2.5.0
102
- *
103
- * @var array
104
- */
105
- protected $sort_order = array();
106
-
107
- /**
108
- * Whether any plugins have the 'force_activation' setting set to true.
109
- *
110
- * @since 2.5.0
111
- *
112
- * @var bool
113
- */
114
- protected $has_forced_activation = false;
115
-
116
- /**
117
- * Whether any plugins have the 'force_deactivation' setting set to true.
118
- *
119
- * @since 2.5.0
120
- *
121
- * @var bool
122
- */
123
- protected $has_forced_deactivation = false;
124
-
125
- /**
126
- * Name of the unique ID to hash notices.
127
- *
128
- * @since 2.4.0
129
- *
130
- * @var string
131
- */
132
- public $id = 'tgmpa';
133
-
134
- /**
135
- * Name of the query-string argument for the admin page.
136
- *
137
- * @since 1.0.0
138
- *
139
- * @var string
140
- */
141
- protected $menu = 'tgmpa-install-plugins';
142
-
143
- /**
144
- * Parent menu file slug.
145
- *
146
- * @since 2.5.0
147
- *
148
- * @var string
149
- */
150
- public $parent_slug = 'themes.php';
151
-
152
- /**
153
- * Capability needed to view the plugin installation menu item.
154
- *
155
- * @since 2.5.0
156
- *
157
- * @var string
158
- */
159
- public $capability = 'edit_theme_options';
160
-
161
- /**
162
- * Default absolute path to folder containing bundled plugin zip files.
163
- *
164
- * @since 2.0.0
165
- *
166
- * @var string Absolute path prefix to zip file location for bundled plugins. Default is empty string.
167
- */
168
- public $default_path = '';
169
-
170
- /**
171
- * Flag to show admin notices or not.
172
- *
173
- * @since 2.1.0
174
- *
175
- * @var boolean
176
- */
177
- public $has_notices = true;
178
-
179
- /**
180
- * Flag to determine if the user can dismiss the notice nag.
181
- *
182
- * @since 2.4.0
183
- *
184
- * @var boolean
185
- */
186
- public $dismissable = true;
187
-
188
- /**
189
- * Message to be output above nag notice if dismissable is false.
190
- *
191
- * @since 2.4.0
192
- *
193
- * @var string
194
- */
195
- public $dismiss_msg = '';
196
-
197
- /**
198
- * Flag to set automatic activation of plugins. Off by default.
199
- *
200
- * @since 2.2.0
201
- *
202
- * @var boolean
203
- */
204
- public $is_automatic = false;
205
-
206
- /**
207
- * Optional message to display before the plugins table.
208
- *
209
- * @since 2.2.0
210
- *
211
- * @var string Message filtered by wp_kses_post(). Default is empty string.
212
- */
213
- public $message = '';
214
-
215
- /**
216
- * Holds configurable array of strings.
217
- *
218
- * Default values are added in the constructor.
219
- *
220
- * @since 2.0.0
221
- *
222
- * @var array
223
- */
224
- public $strings = array();
225
-
226
- /**
227
- * Holds the version of WordPress.
228
- *
229
- * @since 2.4.0
230
- *
231
- * @var int
232
- */
233
- public $wp_version;
234
-
235
- /**
236
- * Holds the hook name for the admin page.
237
- *
238
- * @since 2.5.0
239
- *
240
- * @var string
241
- */
242
- public $page_hook;
243
-
244
- /**
245
- * Adds a reference of this object to $instance, populates default strings,
246
- * does the tgmpa_init action hook, and hooks in the interactions to init.
247
- *
248
- * {@internal This method should be `protected`, but as too many TGMPA implementations
249
- * haven't upgraded beyond v2.3.6 yet, this gives backward compatibility issues.
250
- * Reverted back to public for the time being.}}
251
- *
252
- * @since 1.0.0
253
- *
254
- * @see TGM_Plugin_Activation::init()
255
- */
256
- public function __construct() {
257
- // Set the current WordPress version.
258
- $this->wp_version = $GLOBALS['wp_version'];
259
-
260
- // Announce that the class is ready, and pass the object (for advanced use).
261
- do_action_ref_array( 'wpms_tgmpa_init', array( $this ) );
262
-
263
- /*
264
- * Load our text domain and allow for overloading the fall-back file.
265
- *
266
- * {@internal IMPORTANT! If this code changes, review the regex in the custom TGMPA
267
- * generator on the website.}}
268
- */
269
- add_action( 'init', array( $this, 'load_textdomain' ), 5 );
270
- add_filter( 'load_textdomain_mofile', array( $this, 'overload_textdomain_mofile' ), 10, 2 );
271
-
272
- // When the rest of WP has loaded, kick-start the rest of the class.
273
- add_action( 'init', array( $this, 'init' ) );
274
- }
275
-
276
- /**
277
- * Magic method to (not) set protected properties from outside of this class.
278
- *
279
- * {@internal hackedihack... There is a serious bug in v2.3.2 - 2.3.6 where the `menu` property
280
- * is being assigned rather than tested in a conditional, effectively rendering it useless.
281
- * This 'hack' prevents this from happening.}}
282
- *
283
- * @see https://github.com/TGMPA/TGM-Plugin-Activation/blob/2.3.6/tgm-plugin-activation/class-tgm-plugin-activation.php#L1593
284
- *
285
- * @since 2.5.2
286
- *
287
- * @param string $name Name of an inaccessible property.
288
- * @param mixed $value Value to assign to the property.
289
- * @return void Silently fail to set the property when this is tried from outside of this class context.
290
- * (Inside this class context, the __set() method if not used as there is direct access.)
291
- */
292
- public function __set( $name, $value ) {
293
- return;
294
- }
295
-
296
- /**
297
- * Magic method to get the value of a protected property outside of this class context.
298
- *
299
- * @since 2.5.2
300
- *
301
- * @param string $name Name of an inaccessible property.
302
- * @return mixed The property value.
303
- */
304
- public function __get( $name ) {
305
- return $this->{$name};
306
- }
307
-
308
- /**
309
- * Initialise the interactions between this class and WordPress.
310
- *
311
- * Hooks in three new methods for the class: admin_menu, notices and styles.
312
- *
313
- * @since 2.0.0
314
- *
315
- * @see TGM_Plugin_Activation::admin_menu()
316
- * @see TGM_Plugin_Activation::notices()
317
- * @see TGM_Plugin_Activation::styles()
318
- */
319
- public function init() {
320
- /**
321
- * By default TGMPA only loads on the WP back-end and not in an Ajax call. Using this filter
322
- * you can overrule that behaviour.
323
- *
324
- * @since 2.5.0
325
- *
326
- * @param bool $load Whether or not TGMPA should load.
327
- * Defaults to the return of `is_admin() && ! defined( 'DOING_AJAX' )`.
328
- */
329
- if ( true !== apply_filters( 'wpms_tgmpa_load', ( is_admin() && ! defined( 'DOING_AJAX' ) ) ) ) {
330
- return;
331
- }
332
-
333
- // Load class strings.
334
- $this->strings = array(
335
- 'page_title' => __( 'Install Required Plugins', 'tgmpa' ),
336
- 'menu_title' => __( 'Install Plugins', 'tgmpa' ),
337
- /* translators: %s: plugin name. */
338
- 'installing' => __( 'Installing Plugin: %s', 'tgmpa' ),
339
- /* translators: %s: plugin name. */
340
- 'updating' => __( 'Updating Plugin: %s', 'tgmpa' ),
341
- 'oops' => __( 'Something went wrong with the plugin API.', 'tgmpa' ),
342
- 'notice_can_install_required' => _n_noop(
343
- /* translators: 1: plugin name(s). */
344
- 'This theme requires the following plugin: %1$s.',
345
- 'This theme requires the following plugins: %1$s.',
346
- 'tgmpa'
347
- ),
348
- 'notice_can_install_recommended' => _n_noop(
349
- /* translators: 1: plugin name(s). */
350
- 'This theme recommends the following plugin: %1$s.',
351
- 'This theme recommends the following plugins: %1$s.',
352
- 'tgmpa'
353
- ),
354
- 'notice_ask_to_update' => _n_noop(
355
- /* translators: 1: plugin name(s). */
356
- 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.',
357
- 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.',
358
- 'tgmpa'
359
- ),
360
- 'notice_ask_to_update_maybe' => _n_noop(
361
- /* translators: 1: plugin name(s). */
362
- 'There is an update available for: %1$s.',
363
- 'There are updates available for the following plugins: %1$s.',
364
- 'tgmpa'
365
- ),
366
- 'notice_can_activate_required' => _n_noop(
367
- /* translators: 1: plugin name(s). */
368
- 'The following required plugin is currently inactive: %1$s.',
369
- 'The following required plugins are currently inactive: %1$s.',
370
- 'tgmpa'
371
- ),
372
- 'notice_can_activate_recommended' => _n_noop(
373
- /* translators: 1: plugin name(s). */
374
- 'The following recommended plugin is currently inactive: %1$s.',
375
- 'The following recommended plugins are currently inactive: %1$s.',
376
- 'tgmpa'
377
- ),
378
- 'install_link' => _n_noop(
379
- 'Begin installing plugin',
380
- 'Begin installing plugins',
381
- 'tgmpa'
382
- ),
383
- 'update_link' => _n_noop(
384
- 'Begin updating plugin',
385
- 'Begin updating plugins',
386
- 'tgmpa'
387
- ),
388
- 'activate_link' => _n_noop(
389
- 'Begin activating plugin',
390
- 'Begin activating plugins',
391
- 'tgmpa'
392
- ),
393
- 'return' => __( 'Return to Required Plugins Installer', 'tgmpa' ),
394
- 'dashboard' => __( 'Return to the Dashboard', 'tgmpa' ),
395
- 'plugin_activated' => __( 'Plugin activated successfully.', 'tgmpa' ),
396
- 'activated_successfully' => __( 'The following plugin was activated successfully:', 'tgmpa' ),
397
- /* translators: 1: plugin name. */
398
- 'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'tgmpa' ),
399
- /* translators: 1: plugin name. */
400
- 'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'tgmpa' ),
401
- /* translators: 1: dashboard link. */
402
- 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'tgmpa' ),
403
- 'dismiss' => __( 'Dismiss this notice', 'tgmpa' ),
404
- 'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'tgmpa' ),
405
- 'contact_admin' => __( 'Please contact the administrator of this site for help.', 'tgmpa' ),
406
- );
407
-
408
- do_action( 'wpms_tgmpa_register' );
409
-
410
- /* After this point, the plugins should be registered and the configuration set. */
411
-
412
- // Proceed only if we have plugins to handle.
413
- if ( empty( $this->plugins ) || ! is_array( $this->plugins ) ) {
414
- return;
415
- }
416
-
417
- // Set up the menu and notices if we still have outstanding actions.
418
- if ( true !== $this->is_tgmpa_complete() ) {
419
- // Sort the plugins.
420
- array_multisort( $this->sort_order, SORT_ASC, $this->plugins );
421
-
422
- add_action( 'admin_menu', array( $this, 'admin_menu' ) );
423
- add_action( 'admin_head', array( $this, 'dismiss' ) );
424
-
425
- // Prevent the normal links from showing underneath a single install/update page.
426
- add_filter( 'install_plugin_complete_actions', array( $this, 'actions' ) );
427
- add_filter( 'update_plugin_complete_actions', array( $this, 'actions' ) );
428
-
429
- if ( $this->has_notices ) {
430
- add_action( 'admin_notices', array( $this, 'notices' ) );
431
- add_action( 'admin_init', array( $this, 'admin_init' ), 1 );
432
- add_action( 'admin_enqueue_scripts', array( $this, 'thickbox' ) );
433
- }
434
- }
435
-
436
- // If needed, filter plugin action links.
437
- add_action( 'load-plugins.php', array( $this, 'add_plugin_action_link_filters' ), 1 );
438
-
439
- // Make sure things get reset on switch theme.
440
- add_action( 'switch_theme', array( $this, 'flush_plugins_cache' ) );
441
-
442
- if ( $this->has_notices ) {
443
- add_action( 'switch_theme', array( $this, 'update_dismiss' ) );
444
- }
445
-
446
- // Setup the force activation hook.
447
- if ( true === $this->has_forced_activation ) {
448
- add_action( 'admin_init', array( $this, 'force_activation' ) );
449
- }
450
-
451
- // Setup the force deactivation hook.
452
- if ( true === $this->has_forced_deactivation ) {
453
- add_action( 'switch_theme', array( $this, 'force_deactivation' ) );
454
- }
455
- }
456
-
457
- /**
458
- * Load translations.
459
- *
460
- * @since 2.6.0
461
- *
462
- * (@internal Uses `load_theme_textdomain()` rather than `load_plugin_textdomain()` to
463
- * get round the different ways of handling the path and deprecated notices being thrown
464
- * and such. For plugins, the actual file name will be corrected by a filter.}}
465
- *
466
- * {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
467
- * generator on the website.}}
468
- */
469
- public function load_textdomain() {
470
- if ( is_textdomain_loaded( 'tgmpa' ) ) {
471
- return;
472
- }
473
-
474
- if ( false !== strpos( __FILE__, WP_PLUGIN_DIR ) || false !== strpos( __FILE__, WPMU_PLUGIN_DIR ) ) {
475
- // Plugin, we'll need to adjust the file name.
476
- add_action( 'load_textdomain_mofile', array( $this, 'correct_plugin_mofile' ), 10, 2 );
477
- load_theme_textdomain( 'tgmpa', dirname( __FILE__ ) . '/languages' );
478
- remove_action( 'load_textdomain_mofile', array( $this, 'correct_plugin_mofile' ), 10 );
479
- } else {
480
- load_theme_textdomain( 'tgmpa', dirname( __FILE__ ) . '/languages' );
481
- }
482
- }
483
-
484
- /**
485
- * Correct the .mo file name for (must-use) plugins.
486
- *
487
- * Themese use `/path/{locale}.mo` while plugins use `/path/{text-domain}-{locale}.mo`.
488
- *
489
- * {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
490
- * generator on the website.}}
491
- *
492
- * @since 2.6.0
493
- *
494
- * @param string $mofile Full path to the target mofile.
495
- * @param string $domain The domain for which a language file is being loaded.
496
- * @return string $mofile
497
- */
498
- public function correct_plugin_mofile( $mofile, $domain ) {
499
- // Exit early if not our domain (just in case).
500
- if ( 'tgmpa' !== $domain ) {
501
- return $mofile;
502
- }
503
- return preg_replace( '`/([a-z]{2}_[A-Z]{2}.mo)$`', '/tgmpa-$1', $mofile );
504
- }
505
-
506
- /**
507
- * Potentially overload the fall-back translation file for the current language.
508
- *
509
- * WP, by default since WP 3.7, will load a local translation first and if none
510
- * can be found, will try and find a translation in the /wp-content/languages/ directory.
511
- * As this library is theme/plugin agnostic, translation files for TGMPA can exist both
512
- * in the WP_LANG_DIR /plugins/ subdirectory as well as in the /themes/ subdirectory.
513
- *
514
- * This method makes sure both directories are checked.
515
- *
516
- * {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
517
- * generator on the website.}}
518
- *
519
- * @since 2.6.0
520
- *
521
- * @param string $mofile Full path to the target mofile.
522
- * @param string $domain The domain for which a language file is being loaded.
523
- * @return string $mofile
524
- */
525
- public function overload_textdomain_mofile( $mofile, $domain ) {
526
- // Exit early if not our domain, not a WP_LANG_DIR load or if the file exists and is readable.
527
- if ( 'tgmpa' !== $domain || false === strpos( $mofile, WP_LANG_DIR ) || @is_readable( $mofile ) ) {
528
- return $mofile;
529
- }
530
-
531
- // Current fallback file is not valid, let's try the alternative option.
532
- if ( false !== strpos( $mofile, '/themes/' ) ) {
533
- return str_replace( '/themes/', '/plugins/', $mofile );
534
- } elseif ( false !== strpos( $mofile, '/plugins/' ) ) {
535
- return str_replace( '/plugins/', '/themes/', $mofile );
536
- } else {
537
- return $mofile;
538
- }
539
- }
540
-
541
- /**
542
- * Hook in plugin action link filters for the WP native plugins page.
543
- *
544
- * - Prevent activation of plugins which don't meet the minimum version requirements.
545
- * - Prevent deactivation of force-activated plugins.
546
- * - Add update notice if update available.
547
- *
548
- * @since 2.5.0
549
- */
550
- public function add_plugin_action_link_filters() {
551
- foreach ( $this->plugins as $slug => $plugin ) {
552
- if ( false === $this->can_plugin_activate( $slug ) ) {
553
- add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_activate' ), 20 );
554
- }
555
-
556
- if ( true === $plugin['force_activation'] ) {
557
- add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_deactivate' ), 20 );
558
- }
559
-
560
- if ( false !== $this->does_plugin_require_update( $slug ) ) {
561
- add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_update' ), 20 );
562
- }
563
- }
564
- }
565
-
566
- /**
567
- * Remove the 'Activate' link on the WP native plugins page if the plugin does not meet the
568
- * minimum version requirements.
569
- *
570
- * @since 2.5.0
571
- *
572
- * @param array $actions Action links.
573
- * @return array
574
- */
575
- public function filter_plugin_action_links_activate( $actions ) {
576
- unset( $actions['activate'] );
577
-
578
- return $actions;
579
- }
580
-
581
- /**
582
- * Remove the 'Deactivate' link on the WP native plugins page if the plugin has been set to force activate.
583
- *
584
- * @since 2.5.0
585
- *
586
- * @param array $actions Action links.
587
- * @return array
588
- */
589
- public function filter_plugin_action_links_deactivate( $actions ) {
590
- unset( $actions['deactivate'] );
591
-
592
- return $actions;
593
- }
594
-
595
- /**
596
- * Add a 'Requires update' link on the WP native plugins page if the plugin does not meet the
597
- * minimum version requirements.
598
- *
599
- * @since 2.5.0
600
- *
601
- * @param array $actions Action links.
602
- * @return array
603
- */
604
- public function filter_plugin_action_links_update( $actions ) {
605
- $actions['update'] = sprintf(
606
- '<a href="%1$s" title="%2$s" class="edit">%3$s</a>',
607
- esc_url( $this->get_tgmpa_status_url( 'update' ) ),
608
- esc_attr__( 'This plugin needs to be updated to be compatible with your theme.', 'tgmpa' ),
609
- esc_html__( 'Update Required', 'tgmpa' )
610
- );
611
-
612
- return $actions;
613
- }
614
-
615
- /**
616
- * Handles calls to show plugin information via links in the notices.
617
- *
618
- * We get the links in the admin notices to point to the TGMPA page, rather
619
- * than the typical plugin-install.php file, so we can prepare everything
620
- * beforehand.
621
- *
622
- * WP does not make it easy to show the plugin information in the thickbox -
623
- * here we have to require a file that includes a function that does the
624
- * main work of displaying it, enqueue some styles, set up some globals and
625
- * finally call that function before exiting.
626
- *
627
- * Down right easy once you know how...
628
- *
629
- * Returns early if not the TGMPA page.
630
- *
631
- * @since 2.1.0
632
- *
633
- * @global string $tab Used as iframe div class names, helps with styling
634
- * @global string $body_id Used as the iframe body ID, helps with styling
635
- *
636
- * @return void Returns early if not the TGMPA page.
637
- */
638
- public function admin_init() {
639
- if ( ! $this->is_tgmpa_page() ) {
640
- return;
641
- }
642
-
643
- if ( isset( $_REQUEST['tab'] ) && 'plugin-information' === $_REQUEST['tab'] ) {
644
- // Needed for install_plugin_information().
645
- require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
646
-
647
- wp_enqueue_style( 'plugin-install' );
648
-
649
- global $tab, $body_id;
650
- $body_id = 'plugin-information';
651
- // @codingStandardsIgnoreStart
652
- $tab = 'plugin-information';
653
- // @codingStandardsIgnoreEnd
654
-
655
- install_plugin_information();
656
-
657
- exit;
658
- }
659
- }
660
-
661
- /**
662
- * Enqueue thickbox scripts/styles for plugin info.
663
- *
664
- * Thickbox is not automatically included on all admin pages, so we must
665
- * manually enqueue it for those pages.
666
- *
667
- * Thickbox is only loaded if the user has not dismissed the admin
668
- * notice or if there are any plugins left to install and activate.
669
- *
670
- * @since 2.1.0
671
- */
672
- public function thickbox() {
673
- if ( ! get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) ) {
674
- add_thickbox();
675
- }
676
- }
677
-
678
- /**
679
- * Adds submenu page if there are plugin actions to take.
680
- *
681
- * This method adds the submenu page letting users know that a required
682
- * plugin needs to be installed.
683
- *
684
- * This page disappears once the plugin has been installed and activated.
685
- *
686
- * @since 1.0.0
687
- *
688
- * @see TGM_Plugin_Activation::init()
689
- * @see TGM_Plugin_Activation::install_plugins_page()
690
- *
691
- * @return void Return early if user lacks capability to install a plugin.
692
- */
693
- public function admin_menu() {
694
- // Make sure privileges are correct to see the page.
695
- if ( ! current_user_can( 'install_plugins' ) ) {
696
- return;
697
- }
698
-
699
- $args = apply_filters(
700
- 'wpms_tgmpa_admin_menu_args',
701
- array(
702
- 'parent_slug' => $this->parent_slug, // Parent Menu slug.
703
- 'page_title' => $this->strings['page_title'], // Page title.
704
- 'menu_title' => $this->strings['menu_title'], // Menu title.
705
- 'capability' => $this->capability, // Capability.
706
- 'menu_slug' => $this->menu, // Menu slug.
707
- 'function' => array( $this, 'install_plugins_page' ), // Callback.
708
- )
709
- );
710
-
711
- $this->add_admin_menu( $args );
712
- }
713
-
714
- /**
715
- * Add the menu item.
716
- *
717
- * {@internal IMPORTANT! If this function changes, review the regex in the custom TGMPA
718
- * generator on the website.}}
719
- *
720
- * @since 2.5.0
721
- *
722
- * @param array $args Menu item configuration.
723
- */
724
- protected function add_admin_menu( array $args ) {
725
- if ( has_filter( 'wpms_tgmpa_admin_menu_use_add_theme_page' ) ) {
726
- _deprecated_function( 'The "tgmpa_admin_menu_use_add_theme_page" filter', '2.5.0', esc_html__( 'Set the parent_slug config variable instead.', 'tgmpa' ) );
727
- }
728
-
729
- if ( 'themes.php' === $this->parent_slug ) {
730
- $this->page_hook = call_user_func( 'add_theme_page', $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] );
731
- } else {
732
- $this->page_hook = call_user_func( 'add_submenu_page', $args['parent_slug'], $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] );
733
- remove_submenu_page($args['parent_slug'], $args['menu_slug']);
734
- }
735
- }
736
-
737
- /**
738
- * Echoes plugin installation form.
739
- *
740
- * This method is the callback for the admin_menu method function.
741
- * This displays the admin page and form area where the user can select to install and activate the plugin.
742
- * Aborts early if we're processing a plugin installation action.
743
- *
744
- * @since 1.0.0
745
- *
746
- * @return null Aborts early if we're processing a plugin installation action.
747
- */
748
- public function install_plugins_page() {
749
- // Store new instance of plugin table in object.
750
- $plugin_table = new TGMPA_List_Table();
751
-
752
- // Return early if processing a plugin installation action.
753
- if ( ( ( 'tgmpa-bulk-install' === $plugin_table->current_action() || 'tgmpa-bulk-update' === $plugin_table->current_action() ) && $plugin_table->process_bulk_actions() ) || $this->do_plugin_install() ) {
754
- return;
755
- }
756
-
757
- // Force refresh of available plugin information so we'll know about manual updates/deletes.
758
- wp_clean_plugins_cache( false );
759
-
760
- ?>
761
- <div class="tgmpa wrap">
762
- <h1>Install Recommended Plugins</h1>
763
-
764
- <?php $plugin_table->prepare_items(); ?>
765
-
766
- <?php
767
- if ( ! empty( $this->message ) && is_string( $this->message ) ) {
768
- echo wp_kses_post( $this->message );
769
- }
770
- ?>
771
- <?php $plugin_table->views(); ?>
772
-
773
- <form id="tgmpa-plugins" action="" method="post">
774
- <input type="hidden" name="tgmpa-page" value="<?php echo esc_attr( $this->menu ); ?>" />
775
- <input type="hidden" name="plugin_status" value="<?php echo esc_attr( $plugin_table->view_context ); ?>" />
776
- <?php $plugin_table->display(); ?>
777
- </form>
778
- </div>
779
- <?php
780
- }
781
-
782
- /**
783
- * Installs, updates or activates a plugin depending on the action link clicked by the user.
784
- *
785
- * Checks the $_GET variable to see which actions have been
786
- * passed and responds with the appropriate method.
787
- *
788
- * Uses WP_Filesystem to process and handle the plugin installation
789
- * method.
790
- *
791
- * @since 1.0.0
792
- *
793
- * @uses WP_Filesystem
794
- * @uses WP_Error
795
- * @uses WP_Upgrader
796
- * @uses Plugin_Upgrader
797
- * @uses Plugin_Installer_Skin
798
- * @uses Plugin_Upgrader_Skin
799
- *
800
- * @return boolean True on success, false on failure.
801
- */
802
- protected function do_plugin_install() {
803
- if ( empty( $_GET['plugin'] ) ) {
804
- return false;
805
- }
806
-
807
- // All plugin information will be stored in an array for processing.
808
- $slug = $this->sanitize_key( urldecode( $_GET['plugin'] ) );
809
-
810
- if ( ! isset( $this->plugins[ $slug ] ) ) {
811
- return false;
812
- }
813
-
814
- // Was an install or upgrade action link clicked?
815
- if ( ( isset( $_GET['tgmpa-install'] ) && 'install-plugin' === $_GET['tgmpa-install'] ) || ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) ) {
816
-
817
- $install_type = 'install';
818
- if ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) {
819
- $install_type = 'update';
820
- }
821
-
822
- // Note that SeedProd referred the install
823
- if($install_type == 'install'){
824
- add_option('seed_csp4_wpforms', true,'', false);
825
- }
826
-
827
- check_admin_referer( 'tgmpa-' . $install_type, 'tgmpa-nonce' );
828
-
829
- // Pass necessary information via URL if WP_Filesystem is needed.
830
- $url = wp_nonce_url(
831
- add_query_arg(
832
- array(
833
- 'plugin' => urlencode( $slug ),
834
- 'tgmpa-' . $install_type => $install_type . '-plugin',
835
- ),
836
- $this->get_tgmpa_url()
837
- ),
838
- 'tgmpa-' . $install_type,
839
- 'tgmpa-nonce'
840
- );
841
-
842
- $method = ''; // Leave blank so WP_Filesystem can populate it as necessary.
843
-
844
- if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, array() ) ) ) {
845
- return true;
846
- }
847
-
848
- if ( ! WP_Filesystem( $creds ) ) {
849
- request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, array() ); // Setup WP_Filesystem.
850
- return true;
851
- }
852
-
853
- /* If we arrive here, we have the filesystem. */
854
-
855
- // Prep variables for Plugin_Installer_Skin class.
856
- $extra = array();
857
- $extra['slug'] = $slug; // Needed for potentially renaming of directory name.
858
- $source = $this->get_download_url( $slug );
859
- $api = ( 'repo' === $this->plugins[ $slug ]['source_type'] ) ? $this->get_plugins_api( $slug ) : null;
860
- $api = ( false !== $api ) ? $api : null;
861
-
862
- $url = add_query_arg(
863
- array(
864
- 'action' => $install_type . '-plugin',
865
- 'plugin' => urlencode( $slug ),
866
- ),
867
- 'update.php'
868
- );
869
-
870
- if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
871
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
872
- }
873
-
874
- $title = ( 'update' === $install_type ) ? $this->strings['updating'] : $this->strings['installing'];
875
- $skin_args = array(
876
- 'type' => ( 'bundled' !== $this->plugins[ $slug ]['source_type'] ) ? 'web' : 'upload',
877
- 'title' => sprintf( $title, $this->plugins[ $slug ]['name'] ),
878
- 'url' => esc_url_raw( $url ),
879
- 'nonce' => $install_type . '-plugin_' . $slug,
880
- 'plugin' => '',
881
- 'api' => $api,
882
- 'extra' => $extra,
883
- );
884
- unset( $title );
885
-
886
- if ( 'update' === $install_type ) {
887
- $skin_args['plugin'] = $this->plugins[ $slug ]['file_path'];
888
- $skin = new \Plugin_Upgrader_Skin( $skin_args );
889
- } else {
890
- $skin = new \Plugin_Installer_Skin( $skin_args );
891
- }
892
-
893
- // Create a new instance of Plugin_Upgrader.
894
- $upgrader = new \Plugin_Upgrader( $skin );
895
-
896
- // Perform the action and install the plugin from the $source urldecode().
897
- add_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1, 3 );
898
-
899
- if ( 'update' === $install_type ) {
900
- // Inject our info into the update transient.
901
- $to_inject = array( $slug => $this->plugins[ $slug ] );
902
- $to_inject[ $slug ]['source'] = $source;
903
- $this->inject_update_info( $to_inject );
904
-
905
- $upgrader->upgrade( $this->plugins[ $slug ]['file_path'] );
906
- } else {
907
- $upgrader->install( $source );
908
- }
909
-
910
- remove_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1 );
911
-
912
- // Make sure we have the correct file path now the plugin is installed/updated.
913
- $this->populate_file_path( $slug );
914
-
915
- // Only activate plugins if the config option is set to true and the plugin isn't
916
- // already active (upgrade).
917
- if ( $this->is_automatic && ! $this->is_plugin_active( $slug ) ) {
918
- $plugin_activate = $upgrader->plugin_info(); // Grab the plugin info from the Plugin_Upgrader method.
919
- if ( false === $this->activate_single_plugin( $plugin_activate, $slug, true ) ) {
920
- return true; // Finish execution of the function early as we encountered an error.
921
- }
922
- }
923
-
924
- $this->show_tgmpa_version();
925
-
926
- // Display message based on if all plugins are now active or not.
927
- if ( $this->is_tgmpa_complete() ) {
928
- echo '<p>', sprintf( esc_html( $this->strings['complete'] ), '<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>' ), '</p>';
929
- echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
930
- } else {
931
- echo '<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>';
932
- }
933
-
934
- return true;
935
- } elseif ( isset( $this->plugins[ $slug ]['file_path'], $_GET['tgmpa-activate'] ) && 'activate-plugin' === $_GET['tgmpa-activate'] ) {
936
- // Activate action link was clicked.
937
- check_admin_referer( 'tgmpa-activate', 'tgmpa-nonce' );
938
-
939
- if ( false === $this->activate_single_plugin( $this->plugins[ $slug ]['file_path'], $slug ) ) {
940
- return true; // Finish execution of the function early as we encountered an error.
941
- }
942
- }
943
-
944
- return false;
945
- }
946
-
947
- /**
948
- * Inject information into the 'update_plugins' site transient as WP checks that before running an update.
949
- *
950
- * @since 2.5.0
951
- *
952
- * @param array $plugins The plugin information for the plugins which are to be updated.
953
- */
954
- public function inject_update_info( $plugins ) {
955
- $repo_updates = get_site_transient( 'update_plugins' );
956
-
957
- if ( ! is_object( $repo_updates ) ) {
958
- $repo_updates = new \stdClass();
959
- }
960
-
961
- foreach ( $plugins as $slug => $plugin ) {
962
- $file_path = $plugin['file_path'];
963
-
964
- if ( empty( $repo_updates->response[ $file_path ] ) ) {
965
- $repo_updates->response[ $file_path ] = new \stdClass();
966
- }
967
-
968
- // We only really need to set package, but let's do all we can in case WP changes something.
969
- $repo_updates->response[ $file_path ]->slug = $slug;
970
- $repo_updates->response[ $file_path ]->plugin = $file_path;
971
- $repo_updates->response[ $file_path ]->new_version = $plugin['version'];
972
- $repo_updates->response[ $file_path ]->package = $plugin['source'];
973
- if ( empty( $repo_updates->response[ $file_path ]->url ) && ! empty( $plugin['external_url'] ) ) {
974
- $repo_updates->response[ $file_path ]->url = $plugin['external_url'];
975
- }
976
- }
977
-
978
- set_site_transient( 'update_plugins', $repo_updates );
979
- }
980
-
981
- /**
982
- * Adjust the plugin directory name if necessary.
983
- *
984
- * The final destination directory of a plugin is based on the subdirectory name found in the
985
- * (un)zipped source. In some cases - most notably GitHub repository plugin downloads -, this
986
- * subdirectory name is not the same as the expected slug and the plugin will not be recognized
987
- * as installed. This is fixed by adjusting the temporary unzipped source subdirectory name to
988
- * the expected plugin slug.
989
- *
990
- * @since 2.5.0
991
- *
992
- * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
993
- * @param string $remote_source Path to upgrade/zip-file-name.tmp.
994
- * @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin.
995
- * @return string $source
996
- */
997
- public function maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
998
- if ( ! $this->is_tgmpa_page() || ! is_object( $GLOBALS['wp_filesystem'] ) ) {
999
- return $source;
1000
- }
1001
-
1002
- // Check for single file plugins.
1003
- $source_files = array_keys( $GLOBALS['wp_filesystem']->dirlist( $remote_source ) );
1004
- if ( 1 === count( $source_files ) && false === $GLOBALS['wp_filesystem']->is_dir( $source ) ) {
1005
- return $source;
1006
- }
1007
-
1008
- // Multi-file plugin, let's see if the directory is correctly named.
1009
- $desired_slug = '';
1010
-
1011
- // Figure out what the slug is supposed to be.
1012
- if ( false === $upgrader->bulk && ! empty( $upgrader->skin->options['extra']['slug'] ) ) {
1013
- $desired_slug = $upgrader->skin->options['extra']['slug'];
1014
- } else {
1015
- // Bulk installer contains less info, so fall back on the info registered here.
1016
- foreach ( $this->plugins as $slug => $plugin ) {
1017
- if ( ! empty( $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) && $plugin['name'] === $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) {
1018
- $desired_slug = $slug;
1019
- break;
1020
- }
1021
- }
1022
- unset( $slug, $plugin );
1023
- }
1024
-
1025
- if ( ! empty( $desired_slug ) ) {
1026
- $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
1027
-
1028
- if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) {
1029
- $from_path = untrailingslashit( $source );
1030
- $to_path = trailingslashit( $remote_source ) . $desired_slug;
1031
-
1032
- if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
1033
- return trailingslashit( $to_path );
1034
- } else {
1035
- return new \WP_Error( 'rename_failed', esc_html__( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'tgmpa' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'tgmpa' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) );
1036
- }
1037
- } elseif ( empty( $subdir_name ) ) {
1038
- return new \WP_Error( 'packaged_wrong', esc_html__( 'The remote plugin package consists of more than one file, but the files are not packaged in a folder.', 'tgmpa' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'tgmpa' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) );
1039
- }
1040
- }
1041
-
1042
- return $source;
1043
- }
1044
-
1045
- /**
1046
- * Activate a single plugin and send feedback about the result to the screen.
1047
- *
1048
- * @since 2.5.0
1049
- *
1050
- * @param string $file_path Path within wp-plugins/ to main plugin file.
1051
- * @param string $slug Plugin slug.
1052
- * @param bool $automatic Whether this is an automatic activation after an install. Defaults to false.
1053
- * This determines the styling of the output messages.
1054
- * @return bool False if an error was encountered, true otherwise.
1055
- */
1056
- protected function activate_single_plugin( $file_path, $slug, $automatic = false ) {
1057
- if ( $this->can_plugin_activate( $slug ) ) {
1058
- $activate = activate_plugin( $file_path );
1059
-
1060
- if ( is_wp_error( $activate ) ) {
1061
- echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>',
1062
- '<p><a href="', esc_url( $this->get_tgmpa_url() ), '" target="_parent">', esc_html( $this->strings['return'] ), '</a></p>';
1063
-
1064
- return false; // End it here if there is an error with activation.
1065
- } else {
1066
- if ( ! $automatic ) {
1067
- // Make sure message doesn't display again if bulk activation is performed
1068
- // immediately after a single activation.
1069
- if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK.
1070
- echo '<div id="message" class="updated"><p>', esc_html( $this->strings['activated_successfully'] ), ' <strong>', esc_html( $this->plugins[ $slug ]['name'] ), '.</strong></p></div>';
1071
- }
1072
- } else {
1073
- // Simpler message layout for use on the plugin install page.
1074
- echo '<p>', esc_html( $this->strings['plugin_activated'] ), '</p>';
1075
- }
1076
- }
1077
- } elseif ( $this->is_plugin_active( $slug ) ) {
1078
- // No simpler message format provided as this message should never be encountered
1079
- // on the plugin install page.
1080
- echo '<div id="message" class="error"><p>',
1081
- sprintf(
1082
- esc_html( $this->strings['plugin_already_active'] ),
1083
- '<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>'
1084
- ),
1085
- '</p></div>';
1086
- } elseif ( $this->does_plugin_require_update( $slug ) ) {
1087
- if ( ! $automatic ) {
1088
- // Make sure message doesn't display again if bulk activation is performed
1089
- // immediately after a single activation.
1090
- if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK.
1091
- echo '<div id="message" class="error"><p>',
1092
- sprintf(
1093
- esc_html( $this->strings['plugin_needs_higher_version'] ),
1094
- '<strong>' . esc_html( $this->plugins[ $slug ]['name'] ) . '</strong>'
1095
- ),
1096
- '</p></div>';
1097
- }
1098
- } else {
1099
- // Simpler message layout for use on the plugin install page.
1100
- echo '<p>', sprintf( esc_html( $this->strings['plugin_needs_higher_version'] ), esc_html( $this->plugins[ $slug ]['name'] ) ), '</p>';
1101
- }
1102
- }
1103
-
1104
- return true;
1105
- }
1106
-
1107
- /**
1108
- * Echoes required plugin notice.
1109
- *
1110
- * Outputs a message telling users that a specific plugin is required for
1111
- * their theme. If appropriate, it includes a link to the form page where
1112
- * users can install and activate the plugin.
1113
- *
1114
- * Returns early if we're on the Install page.
1115
- *
1116
- * @since 1.0.0
1117
- *
1118
- * @global object $current_screen
1119
- *
1120
- * @return void Returns early if we're on the Install page.
1121
- */
1122
- public function notices() {
1123
- // Remove nag on the install page / Return early if the nag message has been dismissed or user < author.
1124
- if ( ( $this->is_tgmpa_page() || $this->is_core_update_page() ) || get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) || ! current_user_can( apply_filters( 'wpms_tgmpa_show_admin_notice_capability', 'publish_posts' ) ) ) {
1125
- return;
1126
- }
1127
-
1128
- // Store for the plugin slugs by message type.
1129
- $message = array();
1130
-
1131
- // Initialize counters used to determine plurality of action link texts.
1132
- $install_link_count = 0;
1133
- $update_link_count = 0;
1134
- $activate_link_count = 0;
1135
- $total_required_action_count = 0;
1136
-
1137
- foreach ( $this->plugins as $slug => $plugin ) {
1138
- if ( $this->is_plugin_active( $slug ) && false === $this->does_plugin_have_update( $slug ) ) {
1139
- continue;
1140
- }
1141
-
1142
- if ( ! $this->is_plugin_installed( $slug ) ) {
1143
- if ( current_user_can( 'install_plugins' ) ) {
1144
- $install_link_count++;
1145
-
1146
- if ( true === $plugin['required'] ) {
1147
- $message['notice_can_install_required'][] = $slug;
1148
- } else {
1149
- $message['notice_can_install_recommended'][] = $slug;
1150
- }
1151
- }
1152
- if ( true === $plugin['required'] ) {
1153
- $total_required_action_count++;
1154
- }
1155
- } else {
1156
- if ( ! $this->is_plugin_active( $slug ) && $this->can_plugin_activate( $slug ) ) {
1157
- if ( current_user_can( 'activate_plugins' ) ) {
1158
- $activate_link_count++;
1159
-
1160
- if ( true === $plugin['required'] ) {
1161
- $message['notice_can_activate_required'][] = $slug;
1162
- } else {
1163
- $message['notice_can_activate_recommended'][] = $slug;
1164
- }
1165
- }
1166
- if ( true === $plugin['required'] ) {
1167
- $total_required_action_count++;
1168
- }
1169
- }
1170
-
1171
- if ( $this->does_plugin_require_update( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) {
1172
-
1173
- if ( current_user_can( 'update_plugins' ) ) {
1174
- $update_link_count++;
1175
-
1176
- if ( $this->does_plugin_require_update( $slug ) ) {
1177
- $message['notice_ask_to_update'][] = $slug;
1178
- } elseif ( false !== $this->does_plugin_have_update( $slug ) ) {
1179
- $message['notice_ask_to_update_maybe'][] = $slug;
1180
- }
1181
- }
1182
- if ( true === $plugin['required'] ) {
1183
- $total_required_action_count++;
1184
- }
1185
- }
1186
- }
1187
- }
1188
- unset( $slug, $plugin );
1189
-
1190
- // If we have notices to display, we move forward.
1191
- if ( ! empty( $message ) || $total_required_action_count > 0 ) {
1192
- krsort( $message ); // Sort messages.
1193
- $rendered = '';
1194
-
1195
- // As add_settings_error() wraps the final message in a <p> and as the final message can't be
1196
- // filtered, using <p>'s in our html would render invalid html output.
1197
- $line_template = '<span style="display: block; margin: 0.5em 0.5em 0 0; clear: both;">%s</span>' . "\n";
1198
-
1199
- if ( ! current_user_can( 'activate_plugins' ) && ! current_user_can( 'install_plugins' ) && ! current_user_can( 'update_plugins' ) ) {
1200
- $rendered = esc_html( $this->strings['notice_cannot_install_activate'] ) . ' ' . esc_html( $this->strings['contact_admin'] );
1201
- $rendered .= $this->create_user_action_links_for_notice( 0, 0, 0, $line_template );
1202
- } else {
1203
-
1204
- // If dismissable is false and a message is set, output it now.
1205
- if ( ! $this->dismissable && ! empty( $this->dismiss_msg ) ) {
1206
- $rendered .= sprintf( $line_template, wp_kses_post( $this->dismiss_msg ) );
1207
- }
1208
-
1209
- // Render the individual message lines for the notice.
1210
- foreach ( $message as $type => $plugin_group ) {
1211
- $linked_plugins = array();
1212
-
1213
- // Get the external info link for a plugin if one is available.
1214
- foreach ( $plugin_group as $plugin_slug ) {
1215
- $linked_plugins[] = $this->get_info_link( $plugin_slug );
1216
- }
1217
- unset( $plugin_slug );
1218
-
1219
- $count = count( $plugin_group );
1220
- $linked_plugins = array_map( array( '\ComingSoon\TGMPA_Utils', 'wrap_in_em' ), $linked_plugins );
1221
- $last_plugin = array_pop( $linked_plugins ); // Pop off last name to prep for readability.
1222
- $imploded = empty( $linked_plugins ) ? $last_plugin : ( implode( ', ', $linked_plugins ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'tgmpa' ) . ' ' . $last_plugin );
1223
-
1224
- $rendered .= sprintf(
1225
- $line_template,
1226
- sprintf(
1227
- translate_nooped_plural( $this->strings[ $type ], $count, 'tgmpa' ),
1228
- $imploded,
1229
- $count
1230
- )
1231
- );
1232
-
1233
- }
1234
- unset( $type, $plugin_group, $linked_plugins, $count, $last_plugin, $imploded );
1235
-
1236
- $rendered .= $this->create_user_action_links_for_notice( $install_link_count, $update_link_count, $activate_link_count, $line_template );
1237
- }
1238
-
1239
- // Register the nag messages and prepare them to be processed.
1240
- add_settings_error( 'tgmpa', 'tgmpa', $rendered, $this->get_admin_notice_class() );
1241
- }
1242
-
1243
- // Admin options pages already output settings_errors, so this is to avoid duplication.
1244
- if ( 'options-general' !== $GLOBALS['current_screen']->parent_base ) {
1245
- $this->display_settings_errors();
1246
- }
1247
- }
1248
-
1249
- /**
1250
- * Generate the user action links for the admin notice.
1251
- *
1252
- * @since 2.6.0
1253
- *
1254
- * @param int $install_count Number of plugins to install.
1255
- * @param int $update_count Number of plugins to update.
1256
- * @param int $activate_count Number of plugins to activate.
1257
- * @param int $line_template Template for the HTML tag to output a line.
1258
- * @return string Action links.
1259
- */
1260
- protected function create_user_action_links_for_notice( $install_count, $update_count, $activate_count, $line_template ) {
1261
- // Setup action links.
1262
- $action_links = array(
1263
- 'install' => '',
1264
- 'update' => '',
1265
- 'activate' => '',
1266
- 'dismiss' => $this->dismissable ? '<a href="' . esc_url( wp_nonce_url( add_query_arg( 'tgmpa-dismiss', 'dismiss_admin_notices' ), 'tgmpa-dismiss-' . get_current_user_id() ) ) . '" class="dismiss-notice" target="_parent">' . esc_html( $this->strings['dismiss'] ) . '</a>' : '',
1267
- );
1268
-
1269
- $link_template = '<a href="%2$s">%1$s</a>';
1270
-
1271
- if ( current_user_can( 'install_plugins' ) ) {
1272
- if ( $install_count > 0 ) {
1273
- $action_links['install'] = sprintf(
1274
- $link_template,
1275
- translate_nooped_plural( $this->strings['install_link'], $install_count, 'tgmpa' ),
1276
- esc_url( $this->get_tgmpa_status_url( 'install' ) )
1277
- );
1278
- }
1279
- if ( $update_count > 0 ) {
1280
- $action_links['update'] = sprintf(
1281
- $link_template,
1282
- translate_nooped_plural( $this->strings['update_link'], $update_count, 'tgmpa' ),
1283
- esc_url( $this->get_tgmpa_status_url( 'update' ) )
1284
- );
1285
- }
1286
- }
1287
-
1288
- if ( current_user_can( 'activate_plugins' ) && $activate_count > 0 ) {
1289
- $action_links['activate'] = sprintf(
1290
- $link_template,
1291
- translate_nooped_plural( $this->strings['activate_link'], $activate_count, 'tgmpa' ),
1292
- esc_url( $this->get_tgmpa_status_url( 'activate' ) )
1293
- );
1294
- }
1295
-
1296
- $action_links = apply_filters( 'wpms_tgmpa_notice_action_links', $action_links );
1297
-
1298
- $action_links = array_filter( (array) $action_links ); // Remove any empty array items.
1299
-
1300
- if ( ! empty( $action_links ) ) {
1301
- $action_links = sprintf( $line_template, implode( ' | ', $action_links ) );
1302
- return apply_filters( 'wpms_tgmpa_notice_rendered_action_links', $action_links );
1303
- } else {
1304
- return '';
1305
- }
1306
- }
1307
-
1308
- /**
1309
- * Get admin notice class.
1310
- *
1311
- * Work around all the changes to the various admin notice classes between WP 4.4 and 3.7
1312
- * (lowest supported version by TGMPA).
1313
- *
1314
- * @since 2.6.0
1315
- *
1316
- * @return string
1317
- */
1318
- protected function get_admin_notice_class() {
1319
- if ( ! empty( $this->strings['nag_type'] ) ) {
1320
- return sanitize_html_class( strtolower( $this->strings['nag_type'] ) );
1321
- } else {
1322
- if ( version_compare( $this->wp_version, '4.2', '>=' ) ) {
1323
- return 'notice-warning';
1324
- } elseif ( version_compare( $this->wp_version, '4.1', '>=' ) ) {
1325
- return 'notice';
1326
- } else {
1327
- return 'updated';
1328
- }
1329
- }
1330
- }
1331
-
1332
- /**
1333
- * Display settings errors and remove those which have been displayed to avoid duplicate messages showing
1334
- *
1335
- * @since 2.5.0
1336
- */
1337
- protected function display_settings_errors() {
1338
- global $wp_settings_errors;
1339
-
1340
- settings_errors( 'tgmpa' );
1341
-
1342
- foreach ( (array) $wp_settings_errors as $key => $details ) {
1343
- if ( 'tgmpa' === $details['setting'] ) {
1344
- unset( $wp_settings_errors[ $key ] );
1345
- break;
1346
- }
1347
- }
1348
- }
1349
-
1350
- /**
1351
- * Register dismissal of admin notices.
1352
- *
1353
- * Acts on the dismiss link in the admin nag messages.
1354
- * If clicked, the admin notice disappears and will no longer be visible to this user.
1355
- *
1356
- * @since 2.1.0
1357
- */
1358
- public function dismiss() {
1359
- if ( isset( $_GET['tgmpa-dismiss'] ) && check_admin_referer( 'tgmpa-dismiss-' . get_current_user_id() ) ) {
1360
- update_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, 1 );
1361
- }
1362
- }
1363
-
1364
- /**
1365
- * Add individual plugin to our collection of plugins.
1366
- *
1367
- * If the required keys are not set or the plugin has already
1368
- * been registered, the plugin is not added.
1369
- *
1370
- * @since 2.0.0
1371
- *
1372
- * @param array|null $plugin Array of plugin arguments or null if invalid argument.
1373
- * @return void Return early if incorrect argument.
1374
- */
1375
- public function register( $plugin ) {
1376
- if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) {
1377
- return;
1378
- }
1379
-
1380
- if ( empty( $plugin['slug'] ) || ! is_string( $plugin['slug'] ) || isset( $this->plugins[ $plugin['slug'] ] ) ) {
1381
- return;
1382
- }
1383
-
1384
- $defaults = array(
1385
- 'name' => '', // String.
1386
- 'slug' => '', // String.
1387
- 'source' => 'repo', // String.
1388
- 'required' => false, // Boolean.
1389
- 'version' => '', // String.
1390
- 'force_activation' => false, // Boolean.
1391
- 'force_deactivation' => false, // Boolean.
1392
- 'external_url' => '', // String.
1393
- 'is_callable' => '', // String|Array.
1394
- );
1395
-
1396
- // Prepare the received data.
1397
- $plugin = wp_parse_args( $plugin, $defaults );
1398
-
1399
- // Standardize the received slug.
1400
- $plugin['slug'] = $this->sanitize_key( $plugin['slug'] );
1401
-
1402
- // Forgive users for using string versions of booleans or floats for version number.
1403
- $plugin['version'] = (string) $plugin['version'];
1404
- $plugin['source'] = empty( $plugin['source'] ) ? 'repo' : $plugin['source'];
1405
- $plugin['required'] = TGMPA_Utils::validate_bool( $plugin['required'] );
1406
- $plugin['force_activation'] = TGMPA_Utils::validate_bool( $plugin['force_activation'] );
1407
- $plugin['force_deactivation'] = TGMPA_Utils::validate_bool( $plugin['force_deactivation'] );
1408
-
1409
- // Enrich the received data.
1410
- $plugin['file_path'] = $this->_get_plugin_basename_from_slug( $plugin['slug'] );
1411
- $plugin['source_type'] = $this->get_plugin_source_type( $plugin['source'] );
1412
-
1413
- // Set the class properties.
1414
- $this->plugins[ $plugin['slug'] ] = $plugin;
1415
- $this->sort_order[ $plugin['slug'] ] = $plugin['name'];
1416
-
1417
- // Should we add the force activation hook ?
1418
- if ( true === $plugin['force_activation'] ) {
1419
- $this->has_forced_activation = true;
1420
- }
1421
-
1422
- // Should we add the force deactivation hook ?
1423
- if ( true === $plugin['force_deactivation'] ) {
1424
- $this->has_forced_deactivation = true;
1425
- }
1426
- }
1427
-
1428
- /**
1429
- * Determine what type of source the plugin comes from.
1430
- *
1431
- * @since 2.5.0
1432
- *
1433
- * @param string $source The source of the plugin as provided, either empty (= WP repo), a file path
1434
- * (= bundled) or an external URL.
1435
- * @return string 'repo', 'external', or 'bundled'
1436
- */
1437
- protected function get_plugin_source_type( $source ) {
1438
- if ( 'repo' === $source || preg_match( self::WP_REPO_REGEX, $source ) ) {
1439
- return 'repo';
1440
- } elseif ( preg_match( self::IS_URL_REGEX, $source ) ) {
1441
- return 'external';
1442
- } else {
1443
- return 'bundled';
1444
- }
1445
- }
1446
-
1447
- /**
1448
- * Sanitizes a string key.
1449
- *
1450
- * Near duplicate of WP Core `sanitize_key()`. The difference is that uppercase characters *are*
1451
- * allowed, so as not to break upgrade paths from non-standard bundled plugins using uppercase
1452
- * characters in the plugin directory path/slug. Silly them.
1453
- *
1454
- * @see https://developer.wordpress.org/reference/hooks/sanitize_key/
1455
- *
1456
- * @since 2.5.0
1457
- *
1458
- * @param string $key String key.
1459
- * @return string Sanitized key
1460
- */
1461
- public function sanitize_key( $key ) {
1462
- $raw_key = $key;
1463
- $key = preg_replace( '`[^A-Za-z0-9_-]`', '', $key );
1464
-
1465
- /**
1466
- * Filter a sanitized key string.
1467
- *
1468
- * @since 2.5.0
1469
- *
1470
- * @param string $key Sanitized key.
1471
- * @param string $raw_key The key prior to sanitization.
1472
- */
1473
- return apply_filters( 'wpms_tgmpa_sanitize_key', $key, $raw_key );
1474
- }
1475
-
1476
- /**
1477
- * Amend default configuration settings.
1478
- *
1479
- * @since 2.0.0
1480
- *
1481
- * @param array $config Array of config options to pass as class properties.
1482
- */
1483
- public function config( $config ) {
1484
- $keys = array(
1485
- 'id',
1486
- 'default_path',
1487
- 'has_notices',
1488
- 'dismissable',
1489
- 'dismiss_msg',
1490
- 'menu',
1491
- 'parent_slug',
1492
- 'capability',
1493
- 'is_automatic',
1494
- 'message',
1495
- 'strings',
1496
- );
1497
-
1498
- foreach ( $keys as $key ) {
1499
- if ( isset( $config[ $key ] ) ) {
1500
- if ( is_array( $config[ $key ] ) ) {
1501
- $this->$key = array_merge( $this->$key, $config[ $key ] );
1502
- } else {
1503
- $this->$key = $config[ $key ];
1504
- }
1505
- }
1506
- }
1507
- }
1508
-
1509
- /**
1510
- * Amend action link after plugin installation.
1511
- *
1512
- * @since 2.0.0
1513
- *
1514
- * @param array $install_actions Existing array of actions.
1515
- * @return false|array Amended array of actions.
1516
- */
1517
- public function actions( $install_actions ) {
1518
- // Remove action links on the TGMPA install page.
1519
- if ( $this->is_tgmpa_page() ) {
1520
- return false;
1521
- }
1522
-
1523
- return $install_actions;
1524
- }
1525
-
1526
- /**
1527
- * Flushes the plugins cache on theme switch to prevent stale entries
1528
- * from remaining in the plugin table.
1529
- *
1530
- * @since 2.4.0
1531
- *
1532
- * @param bool $clear_update_cache Optional. Whether to clear the Plugin updates cache.
1533
- * Parameter added in v2.5.0.
1534
- */
1535
- public function flush_plugins_cache( $clear_update_cache = true ) {
1536
- wp_clean_plugins_cache( $clear_update_cache );
1537
- }
1538
-
1539
- /**
1540
- * Set file_path key for each installed plugin.
1541
- *
1542
- * @since 2.1.0
1543
- *
1544
- * @param string $plugin_slug Optional. If set, only (re-)populates the file path for that specific plugin.
1545
- * Parameter added in v2.5.0.
1546
- */
1547
- public function populate_file_path( $plugin_slug = '' ) {
1548
- if ( ! empty( $plugin_slug ) && is_string( $plugin_slug ) && isset( $this->plugins[ $plugin_slug ] ) ) {
1549
- $this->plugins[ $plugin_slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $plugin_slug );
1550
- } else {
1551
- // Add file_path key for all plugins.
1552
- foreach ( $this->plugins as $slug => $values ) {
1553
- $this->plugins[ $slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $slug );
1554
- }
1555
- }
1556
- }
1557
-
1558
- /**
1559
- * Helper function to extract the file path of the plugin file from the
1560
- * plugin slug, if the plugin is installed.
1561
- *
1562
- * @since 2.0.0
1563
- *
1564
- * @param string $slug Plugin slug (typically folder name) as provided by the developer.
1565
- * @return string Either file path for plugin if installed, or just the plugin slug.
1566
- */
1567
- protected function _get_plugin_basename_from_slug( $slug ) {
1568
- $keys = array_keys( $this->get_plugins() );
1569
-
1570
- foreach ( $keys as $key ) {
1571
- if ( preg_match( '|^' . $slug . '/|', $key ) ) {
1572
- return $key;
1573
- }
1574
- }
1575
-
1576
- return $slug;
1577
- }
1578
-
1579
- /**
1580
- * Retrieve plugin data, given the plugin name.
1581
- *
1582
- * Loops through the registered plugins looking for $name. If it finds it,
1583
- * it returns the $data from that plugin. Otherwise, returns false.
1584
- *
1585
- * @since 2.1.0
1586
- *
1587
- * @param string $name Name of the plugin, as it was registered.
1588
- * @param string $data Optional. Array key of plugin data to return. Default is slug.
1589
- * @return string|boolean Plugin slug if found, false otherwise.
1590
- */
1591
- public function _get_plugin_data_from_name( $name, $data = 'slug' ) {
1592
- foreach ( $this->plugins as $values ) {
1593
- if ( $name === $values['name'] && isset( $values[ $data ] ) ) {
1594
- return $values[ $data ];
1595
- }
1596
- }
1597
-
1598
- return false;
1599
- }
1600
-
1601
- /**
1602
- * Retrieve the download URL for a package.
1603
- *
1604
- * @since 2.5.0
1605
- *
1606
- * @param string $slug Plugin slug.
1607
- * @return string Plugin download URL or path to local file or empty string if undetermined.
1608
- */
1609
- public function get_download_url( $slug ) {
1610
- $dl_source = '';
1611
-
1612
- switch ( $this->plugins[ $slug ]['source_type'] ) {
1613
- case 'repo':
1614
- return $this->get_wp_repo_download_url( $slug );
1615
- case 'external':
1616
- return $this->plugins[ $slug ]['source'];
1617
- case 'bundled':
1618
- return $this->default_path . $this->plugins[ $slug ]['source'];
1619
- }
1620
-
1621
- return $dl_source; // Should never happen.
1622
- }
1623
-
1624
- /**
1625
- * Retrieve the download URL for a WP repo package.
1626
- *
1627
- * @since 2.5.0
1628
- *
1629
- * @param string $slug Plugin slug.
1630
- * @return string Plugin download URL.
1631
- */
1632
- protected function get_wp_repo_download_url( $slug ) {
1633
- $source = '';
1634
- $api = $this->get_plugins_api( $slug );
1635
-
1636
- if ( false !== $api && isset( $api->download_link ) ) {
1637
- $source = $api->download_link;
1638
- }
1639
-
1640
- return $source;
1641
- }
1642
-
1643
- /**
1644
- * Try to grab information from WordPress API.
1645
- *
1646
- * @since 2.5.0
1647
- *
1648
- * @param string $slug Plugin slug.
1649
- * @return object Plugins_api response object on success, WP_Error on failure.
1650
- */
1651
- protected function get_plugins_api( $slug ) {
1652
- static $api = array(); // Cache received responses.
1653
-
1654
- if ( ! isset( $api[ $slug ] ) ) {
1655
- if ( ! function_exists( 'plugins_api' ) ) {
1656
- require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
1657
- }
1658
-
1659
- $response = plugins_api(
1660
- 'plugin_information',
1661
- array(
1662
- 'slug' => $slug,
1663
- 'fields' => array(
1664
- 'sections' => false,
1665
- ),
1666
- )
1667
- );
1668
-
1669
- $api[ $slug ] = false;
1670
-
1671
- if ( is_wp_error( $response ) ) {
1672
- wp_die( esc_html( $this->strings['oops'] ) );
1673
- } else {
1674
- $api[ $slug ] = $response;
1675
- }
1676
- }
1677
-
1678
- return $api[ $slug ];
1679
- }
1680
-
1681
- /**
1682
- * Retrieve a link to a plugin information page.
1683
- *
1684
- * @since 2.5.0
1685
- *
1686
- * @param string $slug Plugin slug.
1687
- * @return string Fully formed html link to a plugin information page if available
1688
- * or the plugin name if not.
1689
- */
1690
- public function get_info_link( $slug ) {
1691
- if ( ! empty( $this->plugins[ $slug ]['external_url'] ) && preg_match( self::IS_URL_REGEX, $this->plugins[ $slug ]['external_url'] ) ) {
1692
- $link = sprintf(
1693
- '<a href="%1$s" target="_blank">%2$s</a>',
1694
- esc_url( $this->plugins[ $slug ]['external_url'] ),
1695
- esc_html( $this->plugins[ $slug ]['name'] )
1696
- );
1697
- } elseif ( 'repo' === $this->plugins[ $slug ]['source_type'] ) {
1698
- $url = add_query_arg(
1699
- array(
1700
- 'tab' => 'plugin-information',
1701
- 'plugin' => rawurlencode( $slug ),
1702
- 'TB_iframe' => 'true',
1703
- 'width' => '640',
1704
- 'height' => '500',
1705
- ),
1706
- self_admin_url( 'plugin-install.php' )
1707
- );
1708
-
1709
- $link = sprintf(
1710
- '<a href="%1$s" class="thickbox">%2$s</a>',
1711
- esc_url( $url ),
1712
- esc_html( $this->plugins[ $slug ]['name'] )
1713
- );
1714
- } else {
1715
- $link = esc_html( $this->plugins[ $slug ]['name'] ); // No hyperlink.
1716
- }
1717
-
1718
- return $link;
1719
- }
1720
-
1721
- /**
1722
- * Determine if we're on the TGMPA Install page.
1723
- *
1724
- * @since 2.1.0
1725
- *
1726
- * @return boolean True when on the TGMPA page, false otherwise.
1727
- */
1728
- protected function is_tgmpa_page() {
1729
- return isset( $_GET['page'] ) && $this->menu === $_GET['page'];
1730
- }
1731
-
1732
- /**
1733
- * Determine if we're on a WP Core installation/upgrade page.
1734
- *
1735
- * @since 2.6.0
1736
- *
1737
- * @return boolean True when on a WP Core installation/upgrade page, false otherwise.
1738
- */
1739
- protected function is_core_update_page() {
1740
- // Current screen is not always available, most notably on the customizer screen.
1741
- if ( ! function_exists( 'get_current_screen' ) ) {
1742
- return false;
1743
- }
1744
-
1745
- $screen = get_current_screen();
1746
-
1747
- if ( 'update-core' === $screen->base ) {
1748
- // Core update screen.
1749
- return true;
1750
- } elseif ( 'plugins' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok.
1751
- // Plugins bulk update screen.
1752
- return true;
1753
- } elseif ( 'update' === $screen->base && ! empty( $_POST['action'] ) ) { // WPCS: CSRF ok.
1754
- // Individual updates (ajax call).
1755
- return true;
1756
- }
1757
-
1758
- return false;
1759
- }
1760
-
1761
- /**
1762
- * Retrieve the URL to the TGMPA Install page.
1763
- *
1764
- * I.e. depending on the config settings passed something along the lines of:
1765
- * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins
1766
- *
1767
- * @since 2.5.0
1768
- *
1769
- * @return string Properly encoded URL (not escaped).
1770
- */
1771
- public function get_tgmpa_url() {
1772
- static $url;
1773
-
1774
- if ( ! isset( $url ) ) {
1775
- $parent = $this->parent_slug;
1776
- if ( false === strpos( $parent, '.php' ) ) {
1777
- $parent = 'admin.php';
1778
- }
1779
- $url = add_query_arg(
1780
- array(
1781
- 'page' => rawurlencode( $this->menu ),
1782
- ),
1783
- self_admin_url( $parent )
1784
- );
1785
- }
1786
-
1787
- return $url;
1788
- }
1789
-
1790
- /**
1791
- * Retrieve the URL to the TGMPA Install page for a specific plugin status (view).
1792
- *
1793
- * I.e. depending on the config settings passed something along the lines of:
1794
- * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins&plugin_status=install
1795
- *
1796
- * @since 2.5.0
1797
- *
1798
- * @param string $status Plugin status - either 'install', 'update' or 'activate'.
1799
- * @return string Properly encoded URL (not escaped).
1800
- */
1801
- public function get_tgmpa_status_url( $status ) {
1802
- return add_query_arg(
1803
- array(
1804
- 'plugin_status' => rawurlencode( $status ),
1805
- ),
1806
- $this->get_tgmpa_url()
1807
- );
1808
- }
1809
-
1810
- /**
1811
- * Determine whether there are open actions for plugins registered with TGMPA.
1812
- *
1813
- * @since 2.5.0
1814
- *
1815
- * @return bool True if complete, i.e. no outstanding actions. False otherwise.
1816
- */
1817
- public function is_tgmpa_complete() {
1818
- $complete = true;
1819
- foreach ( $this->plugins as $slug => $plugin ) {
1820
- if ( ! $this->is_plugin_active( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) {
1821
- $complete = false;
1822
- break;
1823
- }
1824
- }
1825
-
1826
- return $complete;
1827
- }
1828
-
1829
- /**
1830
- * Check if a plugin is installed. Does not take must-use plugins into account.
1831
- *
1832
- * @since 2.5.0
1833
- *
1834
- * @param string $slug Plugin slug.
1835
- * @return bool True if installed, false otherwise.
1836
- */
1837
- public function is_plugin_installed( $slug ) {
1838
- $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached).
1839
-
1840
- return ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ] ) );
1841
- }
1842
-
1843
- /**
1844
- * Check if a plugin is active.
1845
- *
1846
- * @since 2.5.0
1847
- *
1848
- * @param string $slug Plugin slug.
1849
- * @return bool True if active, false otherwise.
1850
- */
1851
- public function is_plugin_active( $slug ) {
1852
- return ( ( ! empty( $this->plugins[ $slug ]['is_callable'] ) && is_callable( $this->plugins[ $slug ]['is_callable'] ) ) || is_plugin_active( $this->plugins[ $slug ]['file_path'] ) );
1853
- }
1854
-
1855
- /**
1856
- * Check if a plugin can be updated, i.e. if we have information on the minimum WP version required
1857
- * available, check whether the current install meets them.
1858
- *
1859
- * @since 2.5.0
1860
- *
1861
- * @param string $slug Plugin slug.
1862
- * @return bool True if OK to update, false otherwise.
1863
- */
1864
- public function can_plugin_update( $slug ) {
1865
- // We currently can't get reliable info on non-WP-repo plugins - issue #380.
1866
- if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
1867
- return true;
1868
- }
1869
-
1870
- $api = $this->get_plugins_api( $slug );
1871
-
1872
- if ( false !== $api && isset( $api->requires ) ) {
1873
- return version_compare( $this->wp_version, $api->requires, '>=' );
1874
- }
1875
-
1876
- // No usable info received from the plugins API, presume we can update.
1877
- return true;
1878
- }
1879
-
1880
- /**
1881
- * Check to see if the plugin is 'updatetable', i.e. installed, with an update available
1882
- * and no WP version requirements blocking it.
1883
- *
1884
- * @since 2.6.0
1885
- *
1886
- * @param string $slug Plugin slug.
1887
- * @return bool True if OK to proceed with update, false otherwise.
1888
- */
1889
- public function is_plugin_updatetable( $slug ) {
1890
- if ( ! $this->is_plugin_installed( $slug ) ) {
1891
- return false;
1892
- } else {
1893
- return ( false !== $this->does_plugin_have_update( $slug ) && $this->can_plugin_update( $slug ) );
1894
- }
1895
- }
1896
-
1897
- /**
1898
- * Check if a plugin can be activated, i.e. is not currently active and meets the minimum
1899
- * plugin version requirements set in TGMPA (if any).
1900
- *
1901
- * @since 2.5.0
1902
- *
1903
- * @param string $slug Plugin slug.
1904
- * @return bool True if OK to activate, false otherwise.
1905
- */
1906
- public function can_plugin_activate( $slug ) {
1907
- return ( ! $this->is_plugin_active( $slug ) && ! $this->does_plugin_require_update( $slug ) );
1908
- }
1909
-
1910
- /**
1911
- * Retrieve the version number of an installed plugin.
1912
- *
1913
- * @since 2.5.0
1914
- *
1915
- * @param string $slug Plugin slug.
1916
- * @return string Version number as string or an empty string if the plugin is not installed
1917
- * or version unknown (plugins which don't comply with the plugin header standard).
1918
- */
1919
- public function get_installed_version( $slug ) {
1920
- $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached).
1921
-
1922
- if ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'] ) ) {
1923
- return $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'];
1924
- }
1925
-
1926
- return '';
1927
- }
1928
-
1929
- /**
1930
- * Check whether a plugin complies with the minimum version requirements.
1931
- *
1932
- * @since 2.5.0
1933
- *
1934
- * @param string $slug Plugin slug.
1935
- * @return bool True when a plugin needs to be updated, otherwise false.
1936
- */
1937
- public function does_plugin_require_update( $slug ) {
1938
- $installed_version = $this->get_installed_version( $slug );
1939
- $minimum_version = $this->plugins[ $slug ]['version'];
1940
-
1941
- return version_compare( $minimum_version, $installed_version, '>' );
1942
- }
1943
-
1944
- /**
1945
- * Check whether there is an update available for a plugin.
1946
- *
1947
- * @since 2.5.0
1948
- *
1949
- * @param string $slug Plugin slug.
1950
- * @return false|string Version number string of the available update or false if no update available.
1951
- */
1952
- public function does_plugin_have_update( $slug ) {
1953
- // Presume bundled and external plugins will point to a package which meets the minimum required version.
1954
- if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
1955
- if ( $this->does_plugin_require_update( $slug ) ) {
1956
- return $this->plugins[ $slug ]['version'];
1957
- }
1958
-
1959
- return false;
1960
- }
1961
-
1962
- $repo_updates = get_site_transient( 'update_plugins' );
1963
-
1964
- if ( isset( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version ) ) {
1965
- return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version;
1966
- }
1967
-
1968
- return false;
1969
- }
1970
-
1971
- /**
1972
- * Retrieve potential upgrade notice for a plugin.
1973
- *
1974
- * @since 2.5.0
1975
- *
1976
- * @param string $slug Plugin slug.
1977
- * @return string The upgrade notice or an empty string if no message was available or provided.
1978
- */
1979
- public function get_upgrade_notice( $slug ) {
1980
- // We currently can't get reliable info on non-WP-repo plugins - issue #380.
1981
- if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) {
1982
- return '';
1983
- }
1984
-
1985
- $repo_updates = get_site_transient( 'update_plugins' );
1986
-
1987
- if ( ! empty( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice ) ) {
1988
- return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice;
1989
- }
1990
-
1991
- return '';
1992
- }
1993
-
1994
- /**
1995
- * Wrapper around the core WP get_plugins function, making sure it's actually available.
1996
- *
1997
- * @since 2.5.0
1998
- *
1999
- * @param string $plugin_folder Optional. Relative path to single plugin folder.
2000
- * @return array Array of installed plugins with plugin information.
2001
- */
2002
- public function get_plugins( $plugin_folder = '' ) {
2003
- if ( ! function_exists( 'get_plugins' ) ) {
2004
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
2005
- }
2006
-
2007
- return get_plugins( $plugin_folder );
2008
- }
2009
-
2010
- /**
2011
- * Delete dismissable nag option when theme is switched.
2012
- *
2013
- * This ensures that the user(s) is/are again reminded via nag of required
2014
- * and/or recommended plugins if they re-activate the theme.
2015
- *
2016
- * @since 2.1.1
2017
- */
2018
- public function update_dismiss() {
2019
- delete_metadata( 'user', null, 'tgmpa_dismissed_notice_' . $this->id, null, true );
2020
- }
2021
-
2022
- /**
2023
- * Forces plugin activation if the parameter 'force_activation' is
2024
- * set to true.
2025
- *
2026
- * This allows theme authors to specify certain plugins that must be
2027
- * active at all times while using the current theme.
2028
- *
2029
- * Please take special care when using this parameter as it has the
2030
- * potential to be harmful if not used correctly. Setting this parameter
2031
- * to true will not allow the specified plugin to be deactivated unless
2032
- * the user switches themes.
2033
- *
2034
- * @since 2.2.0
2035
- */
2036
- public function force_activation() {
2037
- foreach ( $this->plugins as $slug => $plugin ) {
2038
- if ( true === $plugin['force_activation'] ) {
2039
- if ( ! $this->is_plugin_installed( $slug ) ) {
2040
- // Oops, plugin isn't there so iterate to next condition.
2041
- continue;
2042
- } elseif ( $this->can_plugin_activate( $slug ) ) {
2043
- // There we go, activate the plugin.
2044
- activate_plugin( $plugin['file_path'] );
2045
- }
2046
- }
2047
- }
2048
- }
2049
-
2050
- /**
2051
- * Forces plugin deactivation if the parameter 'force_deactivation'
2052
- * is set to true and adds the plugin to the 'recently active' plugins list.
2053
- *
2054
- * This allows theme authors to specify certain plugins that must be
2055
- * deactivated upon switching from the current theme to another.
2056
- *
2057
- * Please take special care when using this parameter as it has the
2058
- * potential to be harmful if not used correctly.
2059
- *
2060
- * @since 2.2.0
2061
- */
2062
- public function force_deactivation() {
2063
- $deactivated = array();
2064
-
2065
- foreach ( $this->plugins as $slug => $plugin ) {
2066
- /*
2067
- * Only proceed forward if the parameter is set to true and plugin is active
2068
- * as a 'normal' (not must-use) plugin.
2069
- */
2070
- if ( true === $plugin['force_deactivation'] && is_plugin_active( $plugin['file_path'] ) ) {
2071
- deactivate_plugins( $plugin['file_path'] );
2072
- $deactivated[ $plugin['file_path'] ] = time();
2073
- }
2074
- }
2075
-
2076
- if ( ! empty( $deactivated ) ) {
2077
- update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
2078
- }
2079
- }
2080
-
2081
- /**
2082
- * Echo the current TGMPA version number to the page.
2083
- *
2084
- * @since 2.5.0
2085
- */
2086
- public function show_tgmpa_version() {
2087
- echo '<p style="float: right; padding: 0em 1.5em 0.5em 0;"><strong><small>',
2088
- esc_html(
2089
- sprintf(
2090
- /* translators: %s: version number */
2091
- __( 'TGMPA v%s', 'tgmpa' ),
2092
- self::TGMPA_VERSION
2093
- )
2094
- ),
2095
- '</small></strong></p>';
2096
- }
2097
-
2098
- /**
2099
- * Returns the singleton instance of the class.
2100
- *
2101
- * @since 2.4.0
2102
- *
2103
- * @return TGM_Plugin_Activation The TGM_Plugin_Activation object.
2104
- */
2105
- public static function get_instance() {
2106
- if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) {
2107
- self::$instance = new self();
2108
- }
2109
-
2110
- return self::$instance;
2111
- }
2112
- }
2113
-
2114
- /**
2115
- * Ensure only one instance of the class is ever invoked.
2116
- *
2117
- * @since 2.5.0
2118
- */
2119
- function load_tgm_plugin_activation() {
2120
- $GLOBALS['wp_mail_smtp_tgmpa'] = TGM_Plugin_Activation::get_instance();
2121
- }
2122
-
2123
- if ( did_action( 'plugins_loaded' ) ) {
2124
- load_tgm_plugin_activation();
2125
- } else {
2126
- add_action( 'plugins_loaded', '\ComingSoon\load_tgm_plugin_activation' );
2127
- }
2128
-
2129
- /**
2130
- * Helper function to register a collection of required plugins.
2131
- *
2132
- * @since 2.0.0
2133
- * @api
2134
- *
2135
- * @param array $plugins An array of plugin arrays.
2136
- * @param array $config Optional. An array of configuration values.
2137
- */
2138
- function tgmpa( $plugins, $config = array() ) {
2139
- $instance = call_user_func( array( get_class( $GLOBALS['wp_mail_smtp_tgmpa'] ), 'get_instance' ) );
2140
-
2141
- foreach ( $plugins as $plugin ) {
2142
- call_user_func( array( $instance, 'register' ), $plugin );
2143
- }
2144
-
2145
- if ( ! empty( $config ) && is_array( $config ) ) {
2146
- // Send out notices for deprecated arguments passed.
2147
- if ( isset( $config['notices'] ) ) {
2148
- _deprecated_argument( __FUNCTION__, '2.2.0', 'The `notices` config parameter was renamed to `has_notices` in TGMPA 2.2.0. Please adjust your configuration.' );
2149
- if ( ! isset( $config['has_notices'] ) ) {
2150
- $config['has_notices'] = $config['notices'];
2151
- }
2152
- }
2153
-
2154
- if ( isset( $config['parent_menu_slug'] ) ) {
2155
- _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_menu_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' );
2156
- }
2157
- if ( isset( $config['parent_url_slug'] ) ) {
2158
- _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_url_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' );
2159
- }
2160
-
2161
- call_user_func( array( $instance, 'config' ), $config );
2162
- }
2163
- }
2164
-
2165
- /**
2166
- * WP_List_Table isn't always available. If it isn't available,
2167
- * we load it here.
2168
- *
2169
- * @since 2.2.0
2170
- */
2171
- if ( ! class_exists( 'WP_List_Table', false ) ) {
2172
- require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
2173
- }
2174
-
2175
- /**
2176
- * List table class for handling plugins.
2177
- *
2178
- * Extends the WP_List_Table class to provide a future-compatible
2179
- * way of listing out all required/recommended plugins.
2180
- *
2181
- * Gives users an interface similar to the Plugin Administration
2182
- * area with similar (albeit stripped down) capabilities.
2183
- *
2184
- * This class also allows for the bulk install of plugins.
2185
- *
2186
- * @since 2.2.0
2187
- *
2188
- * @package TGM-Plugin-Activation
2189
- * @author Thomas Griffin
2190
- * @author Gary Jones
2191
- */
2192
- class TGMPA_List_Table extends \WP_List_Table {
2193
- /**
2194
- * TGMPA instance.
2195
- *
2196
- * @since 2.5.0
2197
- *
2198
- * @var object
2199
- */
2200
- protected $tgmpa;
2201
-
2202
- /**
2203
- * The currently chosen view.
2204
- *
2205
- * @since 2.5.0
2206
- *
2207
- * @var string One of: 'all', 'install', 'update', 'activate'
2208
- */
2209
- public $view_context = 'all';
2210
-
2211
- /**
2212
- * The plugin counts for the various views.
2213
- *
2214
- * @since 2.5.0
2215
- *
2216
- * @var array
2217
- */
2218
- protected $view_totals = array(
2219
- 'all' => 0,
2220
- 'install' => 0,
2221
- 'update' => 0,
2222
- 'activate' => 0,
2223
- );
2224
-
2225
- /**
2226
- * References parent constructor and sets defaults for class.
2227
- *
2228
- * @since 2.2.0
2229
- */
2230
- public function __construct() {
2231
- $this->tgmpa = call_user_func( array( get_class( $GLOBALS['wp_mail_smtp_tgmpa'] ), 'get_instance' ) );
2232
-
2233
- parent::__construct(
2234
- array(
2235
- 'singular' => 'plugin',
2236
- 'plural' => 'plugins',
2237
- 'ajax' => false,
2238
- )
2239
- );
2240
-
2241
- if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'install', 'update', 'activate' ), true ) ) {
2242
- $this->view_context = sanitize_key( $_REQUEST['plugin_status'] );
2243
- }
2244
-
2245
- add_filter( 'wpms_tgmpa_table_data_items', array( $this, 'sort_table_items' ) );
2246
- }
2247
-
2248
- /**
2249
- * Get a list of CSS classes for the <table> tag.
2250
- *
2251
- * Overruled to prevent the 'plural' argument from being added.
2252
- *
2253
- * @since 2.5.0
2254
- *
2255
- * @return array CSS classnames.
2256
- */
2257
- public function get_table_classes() {
2258
- return array( 'widefat', 'fixed' );
2259
- }
2260
-
2261
- /**
2262
- * Gathers and renames all of our plugin information to be used by WP_List_Table to create our table.
2263
- *
2264
- * @since 2.2.0
2265
- *
2266
- * @return array $table_data Information for use in table.
2267
- */
2268
- protected function _gather_plugin_data() {
2269
- // Load thickbox for plugin links.
2270
- $this->tgmpa->admin_init();
2271
- $this->tgmpa->thickbox();
2272
-
2273
- // Categorize the plugins which have open actions.
2274
- $plugins = $this->categorize_plugins_to_views();
2275
-
2276
- // Set the counts for the view links.
2277
- $this->set_view_totals( $plugins );
2278
-
2279
- // Prep variables for use and grab list of all installed plugins.
2280
- $table_data = array();
2281
- $i = 0;
2282
-
2283
- // Redirect to the 'all' view if no plugins were found for the selected view context.
2284
- if ( empty( $plugins[ $this->view_context ] ) ) {
2285
- $this->view_context = 'all';
2286
- }
2287
-
2288
- foreach ( $plugins[ $this->view_context ] as $slug => $plugin ) {
2289
- $table_data[ $i ]['sanitized_plugin'] = $plugin['name'];
2290
- $table_data[ $i ]['slug'] = $slug;
2291
- $table_data[ $i ]['plugin'] = '<strong>' . $this->tgmpa->get_info_link( $slug ) . '</strong>';
2292
- $table_data[ $i ]['source'] = $this->get_plugin_source_type_text( $plugin['source_type'] );
2293
- $table_data[ $i ]['type'] = $this->get_plugin_advise_type_text( $plugin['required'] );
2294
- $table_data[ $i ]['status'] = $this->get_plugin_status_text( $slug );
2295
- $table_data[ $i ]['installed_version'] = $this->tgmpa->get_installed_version( $slug );
2296
- $table_data[ $i ]['minimum_version'] = $plugin['version'];
2297
- $table_data[ $i ]['available_version'] = $this->tgmpa->does_plugin_have_update( $slug );
2298
-
2299
- // Prep the upgrade notice info.
2300
- $upgrade_notice = $this->tgmpa->get_upgrade_notice( $slug );
2301
- if ( ! empty( $upgrade_notice ) ) {
2302
- $table_data[ $i ]['upgrade_notice'] = $upgrade_notice;
2303
-
2304
- add_action( "tgmpa_after_plugin_row_{$slug}", array( $this, 'wp_plugin_update_row' ), 10, 2 );
2305
- }
2306
-
2307
- $table_data[ $i ] = apply_filters( 'wpms_tgmpa_table_data_item', $table_data[ $i ], $plugin );
2308
-
2309
- $i++;
2310
- }
2311
-
2312
- return $table_data;
2313
- }
2314
-
2315
- /**
2316
- * Categorize the plugins which have open actions into views for the TGMPA page.
2317
- *
2318
- * @since 2.5.0
2319
- */
2320
- protected function categorize_plugins_to_views() {
2321
- $plugins = array(
2322
- 'all' => array(), // Meaning: all plugins which still have open actions.
2323
- 'install' => array(),
2324
- 'update' => array(),
2325
- 'activate' => array(),
2326
- );
2327
-
2328
- foreach ( $this->tgmpa->plugins as $slug => $plugin ) {
2329
- if ( $this->tgmpa->is_plugin_active( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) {
2330
- // No need to display plugins if they are installed, up-to-date and active.
2331
- continue;
2332
- } else {
2333
- $plugins['all'][ $slug ] = $plugin;
2334
-
2335
- if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
2336
- $plugins['install'][ $slug ] = $plugin;
2337
- } else {
2338
- if ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
2339
- $plugins['update'][ $slug ] = $plugin;
2340
- }
2341
-
2342
- if ( $this->tgmpa->can_plugin_activate( $slug ) ) {
2343
- $plugins['activate'][ $slug ] = $plugin;
2344
- }
2345
- }
2346
- }
2347
- }
2348
-
2349
- return $plugins;
2350
- }
2351
-
2352
- /**
2353
- * Set the counts for the view links.
2354
- *
2355
- * @since 2.5.0
2356
- *
2357
- * @param array $plugins Plugins order by view.
2358
- */
2359
- protected function set_view_totals( $plugins ) {
2360
- foreach ( $plugins as $type => $list ) {
2361
- $this->view_totals[ $type ] = count( $list );
2362
- }
2363
- }
2364
-
2365
- /**
2366
- * Get the plugin required/recommended text string.
2367
- *
2368
- * @since 2.5.0
2369
- *
2370
- * @param string $required Plugin required setting.
2371
- * @return string
2372
- */
2373
- protected function get_plugin_advise_type_text( $required ) {
2374
- if ( true === $required ) {
2375
- return __( 'Required', 'tgmpa' );
2376
- }
2377
-
2378
- return __( 'Recommended', 'tgmpa' );
2379
- }
2380
-
2381
- /**
2382
- * Get the plugin source type text string.
2383
- *
2384
- * @since 2.5.0
2385
- *
2386
- * @param string $type Plugin type.
2387
- * @return string
2388
- */
2389
- protected function get_plugin_source_type_text( $type ) {
2390
- $string = '';
2391
-
2392
- switch ( $type ) {
2393
- case 'repo':
2394
- $string = __( 'WordPress Repository', 'tgmpa' );
2395
- break;
2396
- case 'external':
2397
- $string = __( 'External Source', 'tgmpa' );
2398
- break;
2399
- case 'bundled':
2400
- $string = __( 'Pre-Packaged', 'tgmpa' );
2401
- break;
2402
- }
2403
-
2404
- return $string;
2405
- }
2406
-
2407
- /**
2408
- * Determine the plugin status message.
2409
- *
2410
- * @since 2.5.0
2411
- *
2412
- * @param string $slug Plugin slug.
2413
- * @return string
2414
- */
2415
- protected function get_plugin_status_text( $slug ) {
2416
- if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) {
2417
- return __( 'Not Installed', 'tgmpa' );
2418
- }
2419
-
2420
- if ( ! $this->tgmpa->is_plugin_active( $slug ) ) {
2421
- $install_status = __( 'Installed But Not Activated', 'tgmpa' );
2422
- } else {
2423
- $install_status = __( 'Active', 'tgmpa' );
2424
- }
2425
-
2426
- $update_status = '';
2427
-
2428
- if ( $this->tgmpa->does_plugin_require_update( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) {
2429
- $update_status = __( 'Required Update not Available', 'tgmpa' );
2430
-
2431
- } elseif ( $this->tgmpa->does_plugin_require_update( $slug ) ) {
2432
- $update_status = __( 'Requires Update', 'tgmpa' );
2433
-
2434
- } elseif ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) {
2435
- $update_status = __( 'Update recommended', 'tgmpa' );
2436
- }
2437
-
2438
- if ( '' === $update_status ) {
2439
- return $install_status;
2440
- }
2441
-
2442
- return sprintf(
2443
- /* translators: 1: install status, 2: update status */
2444
- _x( '%1$s, %2$s', 'Install/Update Status', 'tgmpa' ),
2445
- $install_status,
2446
- $update_status
2447
- );
2448
- }
2449
-
2450
- /**
2451
- * Sort plugins by Required/Recommended type and by alphabetical plugin name within each type.
2452
- *
2453
- * @since 2.5.0
2454
- *
2455
- * @param array $items Prepared table items.
2456
- * @return array Sorted table items.
2457
- */
2458
- public function sort_table_items( $items ) {
2459
- $type = array();
2460
- $name = array();
2461
-
2462
- foreach ( $items as $i => $plugin ) {
2463
- $type[ $i ] = $plugin['type']; // Required / recommended.
2464
- $name[ $i ] = $plugin['sanitized_plugin'];
2465
- }
2466
-
2467
- array_multisort( $type, SORT_DESC, $name, SORT_ASC, $items );
2468
-
2469
- return $items;
2470
- }
2471
-
2472
- /**
2473
- * Get an associative array ( id => link ) of the views available on this table.
2474
- *
2475
- * @since 2.5.0
2476
- *
2477
- * @return array
2478
- */
2479
- public function get_views() {
2480
- $status_links = array();
2481
-
2482
- foreach ( $this->view_totals as $type => $count ) {
2483
- if ( $count < 1 ) {
2484
- continue;
2485
- }
2486
-
2487
- switch ( $type ) {
2488
- case 'all':
2489
- /* translators: 1: number of plugins. */
2490
- $text = _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $count, 'plugins', 'tgmpa' );
2491
- break;
2492
- case 'install':
2493
- /* translators: 1: number of plugins. */
2494
- $text = _n( 'To Install <span class="count">(%s)</span>', 'To Install <span class="count">(%s)</span>', $count, 'tgmpa' );
2495
- break;
2496
- case 'update':
2497
- /* translators: 1: number of plugins. */
2498
- $text = _n( 'Update Available <span class="count">(%s)</span>', 'Update Available <span class="count">(%s)</span>', $count, 'tgmpa' );
2499
- break;
2500
- case 'activate':
2501
- /* translators: 1: number of plugins. */
2502
- $text = _n( 'To Activate <span class="count">(%s)</span>', 'To Activate <span class="count">(%s)</span>', $count, 'tgmpa' );
2503
- break;
2504
- default:
2505
- $text = '';
2506
- break;
2507
- }
2508
-
2509
- if ( ! empty( $text ) ) {
2510
-
2511
- $status_links[ $type ] = sprintf(
2512
- '<a href="%s"%s>%s</a>',
2513
- esc_url( $this->tgmpa->get_tgmpa_status_url( $type ) ),
2514
- ( $type === $this->view_context ) ? ' class="current"' : '',
2515
- sprintf( $text, number_format_i18n( $count ) )
2516
- );
2517
- }
2518
- }
2519
-
2520
- return $status_links;
2521
- }
2522
-
2523
- /**
2524
- * Create default columns to display important plugin information
2525
- * like type, action and status.
2526
- *
2527
- * @since 2.2.0
2528
- *
2529
- * @param array $item Array of item data.
2530
- * @param string $column_name The name of the column.
2531
- * @return string
2532
- */
2533
- public function column_default( $item, $column_name ) {
2534
- return $item[ $column_name ];
2535
- }
2536
-
2537
- /**
2538
- * Required for bulk installing.
2539
- *
2540
- * Adds a checkbox for each plugin.
2541
- *
2542
- * @since 2.2.0
2543
- *
2544
- * @param array $item Array of item data.
2545
- * @return string The input checkbox with all necessary info.
2546
- */
2547
- public function column_cb( $item ) {
2548
- return sprintf(
2549
- '<input type="checkbox" name="%1$s[]" value="%2$s" id="%3$s" />',
2550
- esc_attr( $this->_args['singular'] ),
2551
- esc_attr( $item['slug'] ),
2552
- esc_attr( $item['sanitized_plugin'] )
2553
- );
2554
- }
2555
-
2556
- /**
2557
- * Create default title column along with the action links.
2558
- *
2559
- * @since 2.2.0
2560
- *
2561
- * @param array $item Array of item data.
2562
- * @return string The plugin name and action links.
2563
- */
2564
- public function column_plugin( $item ) {
2565
- return sprintf(
2566
- '%1$s %2$s',
2567
- $item['plugin'],
2568
- $this->row_actions( $this->get_row_actions( $item ), true )
2569
- );
2570
- }
2571
-
2572
- /**
2573
- * Create version information column.
2574
- *
2575
- * @since 2.5.0
2576
- *
2577
- * @param array $item Array of item data.
2578
- * @return string HTML-formatted version information.
2579
- */
2580
- public function column_version( $item ) {
2581
- $output = array();
2582
-
2583
- if ( $this->tgmpa->is_plugin_installed( $item['slug'] ) ) {
2584
- $installed = ! empty( $item['installed_version'] ) ? $item['installed_version'] : _x( 'unknown', 'as in: "version nr unknown"', 'tgmpa' );
2585
-
2586
- $color = '';
2587
- if ( ! empty( $item['minimum_version'] ) && $this->tgmpa->does_plugin_require_update( $item['slug'] ) ) {
2588
- $color = ' color: #ff0000; font-weight: bold;';
2589
- }
2590
-
2591
- $output[] = sprintf(
2592
- '<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Installed version:', 'tgmpa' ) . '</p>',
2593
- $color,
2594
- $installed
2595
- );
2596
- }
2597
-
2598
- if ( ! empty( $item['minimum_version'] ) ) {
2599
- $output[] = sprintf(
2600
- '<p><span style="min-width: 32px; text-align: right; float: right;">%1$s</span>' . __( 'Minimum required version:', 'tgmpa' ) . '</p>',
2601
- $item['minimum_version']
2602
- );
2603
- }
2604
-
2605
- if ( ! empty( $item['available_version'] ) ) {
2606
- $color = '';
2607
- if ( ! empty( $item['minimum_version'] ) && version_compare( $item['available_version'], $item['minimum_version'], '>=' ) ) {
2608
- $color = ' color: #71C671; font-weight: bold;';
2609
- }
2610
-
2611
- $output[] = sprintf(
2612
- '<p><span style="min-width: 32px; text-align: right; float: right;%1$s">%2$s</span>' . __( 'Available version:', 'tgmpa' ) . '</p>',
2613
- $color,
2614
- $item['available_version']
2615
- );
2616
- }
2617
-
2618
- if ( empty( $output ) ) {
2619
- return '&nbsp;'; // Let's not break the table layout.
2620
- } else {
2621
- return implode( "\n", $output );
2622
- }
2623
- }
2624
-
2625
- /**
2626
- * Sets default message within the plugins table if no plugins
2627
- * are left for interaction.
2628
- *
2629
- * Hides the menu item to prevent the user from clicking and
2630
- * getting a permissions error.
2631
- *
2632
- * @since 2.2.0
2633
- */
2634
- public function no_items() {
2635
- echo esc_html__( 'No plugins to install, update or activate.', 'tgmpa' ) . ' <a href="' . esc_url( self_admin_url() ) . '"> ' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>';
2636
- echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
2637
- }
2638
-
2639
- /**
2640
- * Output all the column information within the table.
2641
- *
2642
- * @since 2.2.0
2643
- *
2644
- * @return array $columns The column names.
2645
- */
2646
- public function get_columns() {
2647
- $columns = array(
2648
- 'cb' => '<input type="checkbox" />',
2649
- 'plugin' => __( 'Plugin', 'tgmpa' ),
2650
- 'source' => __( 'Source', 'tgmpa' ),
2651
- 'type' => __( 'Type', 'tgmpa' ),
2652
- );
2653
-
2654
- if ( 'all' === $this->view_context || 'update' === $this->view_context ) {
2655
- $columns['version'] = __( 'Version', 'tgmpa' );
2656
- $columns['status'] = __( 'Status', 'tgmpa' );
2657
- }
2658
-
2659
- return apply_filters( 'wpms_tgmpa_table_columns', $columns );
2660
- }
2661
-
2662
- /**
2663
- * Get name of default primary column
2664
- *
2665
- * @since 2.5.0 / WP 4.3+ compatibility
2666
- * @access protected
2667
- *
2668
- * @return string
2669
- */
2670
- protected function get_default_primary_column_name() {
2671
- return 'plugin';
2672
- }
2673
-
2674
- /**
2675
- * Get the name of the primary column.
2676
- *
2677
- * @since 2.5.0 / WP 4.3+ compatibility
2678
- * @access protected
2679
- *
2680
- * @return string The name of the primary column.
2681
- */
2682
- protected function get_primary_column_name() {
2683
- if ( method_exists( 'WP_List_Table', 'get_primary_column_name' ) ) {
2684
- return parent::get_primary_column_name();
2685
- } else {
2686
- return $this->get_default_primary_column_name();
2687
- }
2688
- }
2689
-
2690
- /**
2691
- * Get the actions which are relevant for a specific plugin row.
2692
- *
2693
- * @since 2.5.0
2694
- *
2695
- * @param array $item Array of item data.
2696
- * @return array Array with relevant action links.
2697
- */
2698
- protected function get_row_actions( $item ) {
2699
- $actions = array();
2700
- $action_links = array();
2701
-
2702
- // Display the 'Install' action link if the plugin is not yet available.
2703
- if ( ! $this->tgmpa->is_plugin_installed( $item['slug'] ) ) {
2704
- /* translators: %2$s: plugin name in screen reader markup */
2705
- $actions['install'] = __( 'Install %2$s', 'tgmpa' );
2706
- } else {
2707
- // Display the 'Update' action link if an update is available and WP complies with plugin minimum.
2708
- if ( false !== $this->tgmpa->does_plugin_have_update( $item['slug'] ) && $this->tgmpa->can_plugin_update( $item['slug'] ) ) {
2709
- /* translators: %2$s: plugin name in screen reader markup */
2710
- $actions['update'] = __( 'Update %2$s', 'tgmpa' );
2711
- }
2712
-
2713
- // Display the 'Activate' action link, but only if the plugin meets the minimum version.
2714
- if ( $this->tgmpa->can_plugin_activate( $item['slug'] ) ) {
2715
- /* translators: %2$s: plugin name in screen reader markup */
2716
- $actions['activate'] = __( 'Activate %2$s', 'tgmpa' );
2717
- }
2718
- }
2719
-
2720
- // Create the actual links.
2721
- foreach ( $actions as $action => $text ) {
2722
- $nonce_url = wp_nonce_url(
2723
- add_query_arg(
2724
- array(
2725
- 'plugin' => rawurlencode( $item['slug'] ),
2726
- 'tgmpa-' . $action => $action . '-plugin',
2727
- ),
2728
- $this->tgmpa->get_tgmpa_url()
2729
- ),
2730
- 'tgmpa-' . $action,
2731
- 'tgmpa-nonce'
2732
- );
2733
-
2734
- $action_links[ $action ] = sprintf(
2735
- '<a href="%1$s">' . esc_html( $text ) . '</a>', // $text contains the second placeholder.
2736
- esc_url( $nonce_url ),
2737
- '<span class="screen-reader-text">' . esc_html( $item['sanitized_plugin'] ) . '</span>'
2738
- );
2739
- }
2740
-
2741
- $prefix = ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN ) ? 'network_admin_' : '';
2742
- return apply_filters( "wpms_tgmpa_{$prefix}plugin_action_links", array_filter( $action_links ), $item['slug'], $item, $this->view_context );
2743
- }
2744
-
2745
- /**
2746
- * Generates content for a single row of the table.
2747
- *
2748
- * @since 2.5.0
2749
- *
2750
- * @param object $item The current item.
2751
- */
2752
- public function single_row( $item ) {
2753
- parent::single_row( $item );
2754
-
2755
- /**
2756
- * Fires after each specific row in the TGMPA Plugins list table.
2757
- *
2758
- * The dynamic portion of the hook name, `$item['slug']`, refers to the slug
2759
- * for the plugin.
2760
- *
2761
- * @since 2.5.0
2762
- */
2763
- do_action( "wpms_tgmpa_after_plugin_row_{$item['slug']}", $item['slug'], $item, $this->view_context );
2764
- }
2765
-
2766
- /**
2767
- * Show the upgrade notice below a plugin row if there is one.
2768
- *
2769
- * @since 2.5.0
2770
- *
2771
- * @see /wp-admin/includes/update.php
2772
- *
2773
- * @param string $slug Plugin slug.
2774
- * @param array $item The information available in this table row.
2775
- * @return null Return early if upgrade notice is empty.
2776
- */
2777
- public function wp_plugin_update_row( $slug, $item ) {
2778
- if ( empty( $item['upgrade_notice'] ) ) {
2779
- return;
2780
- }
2781
-
2782
- echo '
2783
- <tr class="plugin-update-tr">
2784
- <td colspan="', absint( $this->get_column_count() ), '" class="plugin-update colspanchange">
2785
- <div class="update-message">',
2786
- esc_html__( 'Upgrade message from the plugin author:', 'tgmpa' ),
2787
- ' <strong>', wp_kses_data( $item['upgrade_notice'] ), '</strong>
2788
- </div>
2789
- </td>
2790
- </tr>';
2791
- }
2792
-
2793
- /**
2794
- * Extra controls to be displayed between bulk actions and pagination.
2795
- *
2796
- * @since 2.5.0
2797
- *
2798
- * @param string $which 'top' or 'bottom' table navigation.
2799
- */
2800
- public function extra_tablenav( $which ) {
2801
- if ( 'bottom' === $which ) {
2802
- $this->tgmpa->show_tgmpa_version();
2803
- }
2804
- }
2805
-
2806
- /**
2807
- * Defines the bulk actions for handling registered plugins.
2808
- *
2809
- * @since 2.2.0
2810
- *
2811
- * @return array $actions The bulk actions for the plugin install table.
2812
- */
2813
- public function get_bulk_actions() {
2814
-
2815
- $actions = array();
2816
-
2817
- if ( 'update' !== $this->view_context && 'activate' !== $this->view_context ) {
2818
- if ( current_user_can( 'install_plugins' ) ) {
2819
- $actions['tgmpa-bulk-install'] = __( 'Install', 'tgmpa' );
2820
- }
2821
- }
2822
-
2823
- if ( 'install' !== $this->view_context ) {
2824
- if ( current_user_can( 'update_plugins' ) ) {
2825
- $actions['tgmpa-bulk-update'] = __( 'Update', 'tgmpa' );
2826
- }
2827
- if ( current_user_can( 'activate_plugins' ) ) {
2828
- $actions['tgmpa-bulk-activate'] = __( 'Activate', 'tgmpa' );
2829
- }
2830
- }
2831
-
2832
- return $actions;
2833
- }
2834
-
2835
- /**
2836
- * Processes bulk installation and activation actions.
2837
- *
2838
- * The bulk installation process looks for the $_POST information and passes that
2839
- * through if a user has to use WP_Filesystem to enter their credentials.
2840
- *
2841
- * @since 2.2.0
2842
- */
2843
- public function process_bulk_actions() {
2844
- // Bulk installation process.
2845
- if ( 'tgmpa-bulk-install' === $this->current_action() || 'tgmpa-bulk-update' === $this->current_action() ) {
2846
-
2847
- check_admin_referer( 'bulk-' . $this->_args['plural'] );
2848
-
2849
- $install_type = 'install';
2850
- if ( 'tgmpa-bulk-update' === $this->current_action() ) {
2851
- $install_type = 'update';
2852
- }
2853
-
2854
- $plugins_to_install = array();
2855
-
2856
- // Did user actually select any plugins to install/update ?
2857
- if ( empty( $_POST['plugin'] ) ) {
2858
- if ( 'install' === $install_type ) {
2859
- $message = __( 'No plugins were selected to be installed. No action taken.', 'tgmpa' );
2860
- } else {
2861
- $message = __( 'No plugins were selected to be updated. No action taken.', 'tgmpa' );
2862
- }
2863
-
2864
- echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>';
2865
-
2866
- return false;
2867
- }
2868
-
2869
- if ( is_array( $_POST['plugin'] ) ) {
2870
- $plugins_to_install = (array) $_POST['plugin'];
2871
- } elseif ( is_string( $_POST['plugin'] ) ) {
2872
- // Received via Filesystem page - un-flatten array (WP bug #19643).
2873
- $plugins_to_install = explode( ',', $_POST['plugin'] );
2874
- }
2875
-
2876
- // Sanitize the received input.
2877
- $plugins_to_install = array_map( 'urldecode', $plugins_to_install );
2878
- $plugins_to_install = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins_to_install );
2879
-
2880
- // Validate the received input.
2881
- foreach ( $plugins_to_install as $key => $slug ) {
2882
- // Check if the plugin was registered with TGMPA and remove if not.
2883
- if ( ! isset( $this->tgmpa->plugins[ $slug ] ) ) {
2884
- unset( $plugins_to_install[ $key ] );
2885
- continue;
2886
- }
2887
-
2888
- // For install: make sure this is a plugin we *can* install and not one already installed.
2889
- if ( 'install' === $install_type && true === $this->tgmpa->is_plugin_installed( $slug ) ) {
2890
- unset( $plugins_to_install[ $key ] );
2891
- }
2892
-
2893
- // For updates: make sure this is a plugin we *can* update (update available and WP version ok).
2894
- if ( 'update' === $install_type && false === $this->tgmpa->is_plugin_updatetable( $slug ) ) {
2895
- unset( $plugins_to_install[ $key ] );
2896
- }
2897
- }
2898
-
2899
- // No need to proceed further if we have no plugins to handle.
2900
- if ( empty( $plugins_to_install ) ) {
2901
- if ( 'install' === $install_type ) {
2902
- $message = __( 'No plugins are available to be installed at this time.', 'tgmpa' );
2903
- } else {
2904
- $message = __( 'No plugins are available to be updated at this time.', 'tgmpa' );
2905
- }
2906
-
2907
- echo '<div id="message" class="error"><p>', esc_html( $message ), '</p></div>';
2908
-
2909
- return false;
2910
- }
2911
-
2912
- // Pass all necessary information if WP_Filesystem is needed.
2913
- $url = wp_nonce_url(
2914
- $this->tgmpa->get_tgmpa_url(),
2915
- 'bulk-' . $this->_args['plural']
2916
- );
2917
-
2918
- // Give validated data back to $_POST which is the only place the filesystem looks for extra fields.
2919
- $_POST['plugin'] = implode( ',', $plugins_to_install ); // Work around for WP bug #19643.
2920
-
2921
- $method = ''; // Leave blank so WP_Filesystem can populate it as necessary.
2922
- $fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem.
2923
-
2924
- if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) {
2925
- return true; // Stop the normal page form from displaying, credential request form will be shown.
2926
- }
2927
-
2928
- // Now we have some credentials, setup WP_Filesystem.
2929
- if ( ! WP_Filesystem( $creds ) ) {
2930
- // Our credentials were no good, ask the user for them again.
2931
- request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields );
2932
-
2933
- return true;
2934
- }
2935
-
2936
- /* If we arrive here, we have the filesystem */
2937
-
2938
- // Store all information in arrays since we are processing a bulk installation.
2939
- $names = array();
2940
- $sources = array(); // Needed for installs.
2941
- $file_paths = array(); // Needed for upgrades.
2942
- $to_inject = array(); // Information to inject into the update_plugins transient.
2943
-
2944
- // Prepare the data for validated plugins for the install/upgrade.
2945
- foreach ( $plugins_to_install as $slug ) {
2946
- $name = $this->tgmpa->plugins[ $slug ]['name'];
2947
- $source = $this->tgmpa->get_download_url( $slug );
2948
-
2949
- if ( ! empty( $name ) && ! empty( $source ) ) {
2950
- $names[] = $name;
2951
-
2952
- switch ( $install_type ) {
2953
-
2954
- case 'install':
2955
- $sources[] = $source;
2956
- break;
2957
-
2958
- case 'update':
2959
- $file_paths[] = $this->tgmpa->plugins[ $slug ]['file_path'];
2960
- $to_inject[ $slug ] = $this->tgmpa->plugins[ $slug ];
2961
- $to_inject[ $slug ]['source'] = $source;
2962
- break;
2963
- }
2964
- }
2965
- }
2966
- unset( $slug, $name, $source );
2967
-
2968
- // Create a new instance of TGMPA_Bulk_Installer.
2969
- $installer = new TGMPA_Bulk_Installer(
2970
- new TGMPA_Bulk_Installer_Skin(
2971
- array(
2972
- 'url' => esc_url_raw( $this->tgmpa->get_tgmpa_url() ),
2973
- 'nonce' => 'bulk-' . $this->_args['plural'],
2974
- 'names' => $names,
2975
- 'install_type' => $install_type,
2976
- )
2977
- )
2978
- );
2979
-
2980
- // Wrap the install process with the appropriate HTML.
2981
- echo '<div class="tgmpa">',
2982
- '<h2 style="font-size: 23px; font-weight: 400; line-height: 29px; margin: 0; padding: 9px 15px 4px 0;">', esc_html( get_admin_page_title() ), '</h2>
2983
- <div class="update-php" style="width: 100%; height: 98%; min-height: 850px; padding-top: 1px;">';
2984
-
2985
- // Process the bulk installation submissions.
2986
- add_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1, 3 );
2987
-
2988
- if ( 'tgmpa-bulk-update' === $this->current_action() ) {
2989
- // Inject our info into the update transient.
2990
- $this->tgmpa->inject_update_info( $to_inject );
2991
-
2992
- $installer->bulk_upgrade( $file_paths );
2993
- } else {
2994
- $installer->bulk_install( $sources );
2995
- }
2996
-
2997
- remove_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1 );
2998
-
2999
- echo '</div></div>';
3000
-
3001
- return true;
3002
- }
3003
-
3004
- // Bulk activation process.
3005
- if ( 'tgmpa-bulk-activate' === $this->current_action() ) {
3006
- check_admin_referer( 'bulk-' . $this->_args['plural'] );
3007
-
3008
- // Did user actually select any plugins to activate ?
3009
- if ( empty( $_POST['plugin'] ) ) {
3010
- echo '<div id="message" class="error"><p>', esc_html__( 'No plugins were selected to be activated. No action taken.', 'tgmpa' ), '</p></div>';
3011
-
3012
- return false;
3013
- }
3014
-
3015
- // Grab plugin data from $_POST.
3016
- $plugins = array();
3017
- if ( isset( $_POST['plugin'] ) ) {
3018
- $plugins = array_map( 'urldecode', (array) $_POST['plugin'] );
3019
- $plugins = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins );
3020
- }
3021
-
3022
- $plugins_to_activate = array();
3023
- $plugin_names = array();
3024
-
3025
- // Grab the file paths for the selected & inactive plugins from the registration array.
3026
- foreach ( $plugins as $slug ) {
3027
- if ( $this->tgmpa->can_plugin_activate( $slug ) ) {
3028
- $plugins_to_activate[] = $this->tgmpa->plugins[ $slug ]['file_path'];
3029
- $plugin_names[] = $this->tgmpa->plugins[ $slug ]['name'];
3030
- }
3031
- }
3032
- unset( $slug );
3033
-
3034
- // Return early if there are no plugins to activate.
3035
- if ( empty( $plugins_to_activate ) ) {
3036
- echo '<div id="message" class="error"><p>', esc_html__( 'No plugins are available to be activated at this time.', 'tgmpa' ), '</p></div>';
3037
-
3038
- return false;
3039
- }
3040
-
3041
- // Now we are good to go - let's start activating plugins.
3042
- $activate = activate_plugins( $plugins_to_activate );
3043
-
3044
- if ( is_wp_error( $activate ) ) {
3045
- echo '<div id="message" class="error"><p>', wp_kses_post( $activate->get_error_message() ), '</p></div>';
3046
- } else {
3047
- $count = count( $plugin_names ); // Count so we can use _n function.
3048
- $plugin_names = array_map( array( 'TGMPA_Utils', 'wrap_in_strong' ), $plugin_names );
3049
- $last_plugin = array_pop( $plugin_names ); // Pop off last name to prep for readability.
3050
- $imploded = empty( $plugin_names ) ? $last_plugin : ( implode( ', ', $plugin_names ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'tgmpa' ) . ' ' . $last_plugin );
3051
-
3052
- printf( // WPCS: xss ok.
3053
- '<div id="message" class="updated"><p>%1$s %2$s.</p></div>',
3054
- esc_html( _n( 'The following plugin was activated successfully:', 'The following plugins were activated successfully:', $count, 'tgmpa' ) ),
3055
- $imploded
3056
- );
3057
-
3058
- // Update recently activated plugins option.
3059
- $recent = (array) get_option( 'recently_activated' );
3060
- foreach ( $plugins_to_activate as $plugin => $time ) {
3061
- if ( isset( $recent[ $plugin ] ) ) {
3062
- unset( $recent[ $plugin ] );
3063
- }
3064
- }
3065
- update_option( 'recently_activated', $recent );
3066
- }
3067
-
3068
- unset( $_POST ); // Reset the $_POST variable in case user wants to perform one action after another.
3069
-
3070
- return true;
3071
- }
3072
-
3073
- return false;
3074
- }
3075
-
3076
- /**
3077
- * Prepares all of our information to be outputted into a usable table.
3078
- *
3079
- * @since 2.2.0
3080
- */
3081
- public function prepare_items() {
3082
- $columns = $this->get_columns(); // Get all necessary column information.
3083
- $hidden = array(); // No columns to hide, but we must set as an array.
3084
- $sortable = array(); // No reason to make sortable columns.
3085
- $primary = $this->get_primary_column_name(); // Column which has the row actions.
3086
- $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); // Get all necessary column headers.
3087
-
3088
- // Process our bulk activations here.
3089
- if ( 'tgmpa-bulk-activate' === $this->current_action() ) {
3090
- $this->process_bulk_actions();
3091
- }
3092
-
3093
- // Store all of our plugin data into $items array so WP_List_Table can use it.
3094
- $this->items = apply_filters( 'wpms_tgmpa_table_data_items', $this->_gather_plugin_data() );
3095
- }
3096
-
3097
- /* *********** DEPRECATED METHODS *********** */
3098
-
3099
- /**
3100
- * Retrieve plugin data, given the plugin name.
3101
- *
3102
- * @since 2.2.0
3103
- * @deprecated 2.5.0 use {@see TGM_Plugin_Activation::_get_plugin_data_from_name()} instead.
3104
- * @see TGM_Plugin_Activation::_get_plugin_data_from_name()
3105
- *
3106
- * @param string $name Name of the plugin, as it was registered.
3107
- * @param string $data Optional. Array key of plugin data to return. Default is slug.
3108
- * @return string|boolean Plugin slug if found, false otherwise.
3109
- */
3110
- protected function _get_plugin_data_from_name( $name, $data = 'slug' ) {
3111
- _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'TGM_Plugin_Activation::_get_plugin_data_from_name()' );
3112
-
3113
- return $this->tgmpa->_get_plugin_data_from_name( $name, $data );
3114
- }
3115
- }
3116
-
3117
- /**
3118
- * Hack: Prevent TGMPA v2.4.1- bulk installer class from being loaded if 2.4.1- is loaded after 2.5+.
3119
- *
3120
- * @since 2.5.2
3121
- *
3122
- * {@internal The TGMPA_Bulk_Installer class was originally called TGM_Bulk_Installer.
3123
- * For more information, see that class.}}
3124
- */
3125
- class TGM_Bulk_Installer {
3126
- }
3127
-
3128
- /**
3129
- * Hack: Prevent TGMPA v2.4.1- bulk installer skin class from being loaded if 2.4.1- is loaded after 2.5+.
3130
- *
3131
- * @since 2.5.2
3132
- *
3133
- * {@internal The TGMPA_Bulk_Installer_Skin class was originally called TGM_Bulk_Installer_Skin.
3134
- * For more information, see that class.}}
3135
- */
3136
- class TGM_Bulk_Installer_Skin {
3137
- }
3138
-
3139
- /**
3140
- * The WP_Upgrader file isn't always available. If it isn't available,
3141
- * we load it here.
3142
- *
3143
- * We check to make sure no action or activation keys are set so that WordPress
3144
- * does not try to re-include the class when processing upgrades or installs outside
3145
- * of the class.
3146
- *
3147
- * @since 2.2.0
3148
- */
3149
- add_action( 'admin_init', '\ComingSoon\tgmpa_load_bulk_installer' );
3150
-
3151
- /**
3152
- * Load bulk installer
3153
- */
3154
- function tgmpa_load_bulk_installer() {
3155
- // Silently fail if 2.5+ is loaded *after* an older version.
3156
- if ( ! isset( $GLOBALS['wp_mail_smtp_tgmpa'] ) ) {
3157
- return;
3158
- }
3159
-
3160
- // Get TGMPA class instance.
3161
- $tgmpa_instance = call_user_func( array( get_class( $GLOBALS['wp_mail_smtp_tgmpa'] ), 'get_instance' ) );
3162
-
3163
- if ( isset( $_GET['page'] ) && $tgmpa_instance->menu === $_GET['page'] ) {
3164
- if ( ! class_exists( '\Plugin_Upgrader', false ) ) {
3165
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
3166
- }
3167
-
3168
- if ( ! class_exists( '\ComingSoon\TGMPA_Bulk_Installer', false ) ) {
3169
-
3170
- /**
3171
- * Installer class to handle bulk plugin installations.
3172
- *
3173
- * Extends WP_Upgrader and customizes to suit the installation of multiple
3174
- * plugins.
3175
- *
3176
- * @since 2.2.0
3177
- *
3178
- * {@internal Since 2.5.0 the class is an extension of Plugin_Upgrader rather than WP_Upgrader.}}
3179
- * {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer to TGMPA_Bulk_Installer.
3180
- * This was done to prevent backward compatibility issues with v2.3.6.}}
3181
- *
3182
- * @package TGM-Plugin-Activation
3183
- * @author Thomas Griffin
3184
- * @author Gary Jones
3185
- */
3186
- class TGMPA_Bulk_Installer extends \Plugin_Upgrader {
3187
- /**
3188
- * Holds result of bulk plugin installation.
3189
- *
3190
- * @since 2.2.0
3191
- *
3192
- * @var string
3193
- */
3194
- public $result;
3195
-
3196
- /**
3197
- * Flag to check if bulk installation is occurring or not.
3198
- *
3199
- * @since 2.2.0
3200
- *
3201
- * @var boolean
3202
- */
3203
- public $bulk = false;
3204
-
3205
- /**
3206
- * TGMPA instance
3207
- *
3208
- * @since 2.5.0
3209
- *
3210
- * @var object
3211
- */
3212
- protected $tgmpa;
3213
-
3214
- /**
3215
- * Whether or not the destination directory needs to be cleared ( = on update).
3216
- *
3217
- * @since 2.5.0
3218
- *
3219
- * @var bool
3220
- */
3221
- protected $clear_destination = false;
3222
-
3223
- /**
3224
- * References parent constructor and sets defaults for class.
3225
- *
3226
- * @since 2.2.0
3227
- *
3228
- * @param \Bulk_Upgrader_Skin|null $skin Installer skin.
3229
- */
3230
- public function __construct( $skin = null ) {
3231
- // Get TGMPA class instance.
3232
- $this->tgmpa = call_user_func( array( get_class( $GLOBALS['wp_mail_smtp_tgmpa'] ), 'get_instance' ) );
3233
-
3234
- parent::__construct( $skin );
3235
-
3236
- if ( isset( $this->skin->options['install_type'] ) && 'update' === $this->skin->options['install_type'] ) {
3237
- $this->clear_destination = true;
3238
- }
3239
-
3240
- if ( $this->tgmpa->is_automatic ) {
3241
- $this->activate_strings();
3242
- }
3243
-
3244
- add_action( 'upgrader_process_complete', array( $this->tgmpa, 'populate_file_path' ) );
3245
- }
3246
-
3247
- /**
3248
- * Sets the correct activation strings for the installer skin to use.
3249
- *
3250
- * @since 2.2.0
3251
- */
3252
- public function activate_strings() {
3253
- $this->strings['activation_failed'] = __( 'Plugin activation failed.', 'tgmpa' );
3254
- $this->strings['activation_success'] = __( 'Plugin activated successfully.', 'tgmpa' );
3255
- }
3256
-
3257
- /**
3258
- * Performs the actual installation of each plugin.
3259
- *
3260
- * @since 2.2.0
3261
- *
3262
- * @see WP_Upgrader::run()
3263
- *
3264
- * @param array $options The installation config options.
3265
- * @return null|array Return early if error, array of installation data on success.
3266
- */
3267
- public function run( $options ) {
3268
- $result = parent::run( $options );
3269
-
3270
- // Reset the strings in case we changed one during automatic activation.
3271
- if ( $this->tgmpa->is_automatic ) {
3272
- if ( 'update' === $this->skin->options['install_type'] ) {
3273
- $this->upgrade_strings();
3274
- } else {
3275
- $this->install_strings();
3276
- }
3277
- }
3278
-
3279
- return $result;
3280
- }
3281
-
3282
- /**
3283
- * Processes the bulk installation of plugins.
3284
- *
3285
- * @since 2.2.0
3286
- *
3287
- * {@internal This is basically a near identical copy of the WP Core
3288
- * Plugin_Upgrader::bulk_upgrade() method, with minor adjustments to deal with
3289
- * new installs instead of upgrades.
3290
- * For ease of future synchronizations, the adjustments are clearly commented, but no other
3291
- * comments are added. Code style has been made to comply.}}
3292
- *
3293
- * @see Plugin_Upgrader::bulk_upgrade()
3294
- * @see https://core.trac.wordpress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L838
3295
- * (@internal Last synced: Dec 31st 2015 against https://core.trac.wordpress.org/browser/trunk?rev=36134}}
3296
- *
3297
- * @param array $plugins The plugin sources needed for installation.
3298
- * @param array $args Arbitrary passed extra arguments.
3299
- * @return array|false Install confirmation messages on success, false on failure.
3300
- */
3301
- public function bulk_install( $plugins, $args = array() ) {
3302
- // [TGMPA + ] Hook auto-activation in.
3303
- add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
3304
-
3305
- $defaults = array(
3306
- 'clear_update_cache' => true,
3307
- );
3308
- $parsed_args = wp_parse_args( $args, $defaults );
3309
-
3310
- $this->init();
3311
- $this->bulk = true;
3312
-
3313
- $this->install_strings(); // [TGMPA + ] adjusted.
3314
-
3315
- /* [TGMPA - ] $current = get_site_transient( 'update_plugins' ); */
3316
-
3317
- /* [TGMPA - ] add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); */
3318
-
3319
- $this->skin->header();
3320
-
3321
- // Connect to the Filesystem first.
3322
- $res = $this->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) );
3323
- if ( ! $res ) {
3324
- $this->skin->footer();
3325
- return false;
3326
- }
3327
-
3328
- $this->skin->bulk_header();
3329
-
3330
- /*
3331
- * Only start maintenance mode if:
3332
- * - running Multisite and there are one or more plugins specified, OR
3333
- * - a plugin with an update available is currently active.
3334
- * @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible.
3335
- */
3336
- $maintenance = ( is_multisite() && ! empty( $plugins ) );
3337
-
3338
- /*
3339
- [TGMPA - ]
3340
- foreach ( $plugins as $plugin )
3341
- $maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) );
3342
- */
3343
- if ( $maintenance ) {
3344
- $this->maintenance_mode( true );
3345
- }
3346
-
3347
- $results = array();
3348
-
3349
- $this->update_count = count( $plugins );
3350
- $this->update_current = 0;
3351
- foreach ( $plugins as $plugin ) {
3352
- $this->update_current++;
3353
-
3354
- $result = $this->run(
3355
- array(
3356
- 'package' => $plugin, // [TGMPA + ] adjusted.
3357
- 'destination' => \WP_PLUGIN_DIR,
3358
- 'clear_destination' => false, // [TGMPA + ] adjusted.
3359
- 'clear_working' => true,
3360
- 'is_multi' => true,
3361
- 'hook_extra' => array(
3362
- 'plugin' => $plugin,
3363
- ),
3364
- )
3365
- );
3366
-
3367
- $results[ $plugin ] = $this->result;
3368
-
3369
- // Prevent credentials auth screen from displaying multiple times.
3370
- if ( false === $result ) {
3371
- break;
3372
- }
3373
- } //end foreach $plugins
3374
-
3375
- $this->maintenance_mode( false );
3376
-
3377
- /**
3378
- * Fires when the bulk upgrader process is complete.
3379
- *
3380
- * @since WP 3.6.0 / TGMPA 2.5.0
3381
- *
3382
- * @param \Plugin_Upgrader $this Plugin_Upgrader instance. In other contexts, $this, might
3383
- * be a Theme_Upgrader or Core_Upgrade instance.
3384
- * @param array $data {
3385
- * Array of bulk item update data.
3386
- *
3387
- * @type string $action Type of action. Default 'update'.
3388
- * @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'.
3389
- * @type bool $bulk Whether the update process is a bulk update. Default true.
3390
- * @type array $packages Array of plugin, theme, or core packages to update.
3391
- * }
3392
- */
3393
- do_action( 'upgrader_process_complete', $this, array(
3394
- 'action' => 'install', // [TGMPA + ] adjusted.
3395
- 'type' => 'plugin',
3396
- 'bulk' => true,
3397
- 'plugins' => $plugins,
3398
- ) );
3399
-
3400
- $this->skin->bulk_footer();
3401
-
3402
- $this->skin->footer();
3403
-
3404
- // Cleanup our hooks, in case something else does a upgrade on this connection.
3405
- /* [TGMPA - ] remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); */
3406
-
3407
- // [TGMPA + ] Remove our auto-activation hook.
3408
- remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
3409
-
3410
- // Force refresh of plugin update information.
3411
- wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
3412
-
3413
- return $results;
3414
- }
3415
-
3416
- /**
3417
- * Handle a bulk upgrade request.
3418
- *
3419
- * @since 2.5.0
3420
- *
3421
- * @see Plugin_Upgrader::bulk_upgrade()
3422
- *
3423
- * @param array $plugins The local WP file_path's of the plugins which should be upgraded.
3424
- * @param array $args Arbitrary passed extra arguments.
3425
- * @return string|bool Install confirmation messages on success, false on failure.
3426
- */
3427
- public function bulk_upgrade( $plugins, $args = array() ) {
3428
-
3429
- add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
3430
-
3431
- $result = parent::bulk_upgrade( $plugins, $args );
3432
-
3433
- remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 );
3434
-
3435
- return $result;
3436
- }
3437
-
3438
- /**
3439
- * Abuse a filter to auto-activate plugins after installation.
3440
- *
3441
- * Hooked into the 'upgrader_post_install' filter hook.
3442
- *
3443
- * @since 2.5.0
3444
- *
3445
- * @param bool $bool The value we need to give back (true).
3446
- * @return bool
3447
- */
3448
- public function auto_activate( $bool ) {
3449
- // Only process the activation of installed plugins if the automatic flag is set to true.
3450
- if ( $this->tgmpa->is_automatic ) {
3451
- // Flush plugins cache so the headers of the newly installed plugins will be read correctly.
3452
- wp_clean_plugins_cache();
3453
-
3454
- // Get the installed plugin file.
3455
- $plugin_info = $this->plugin_info();
3456
-
3457
- // Don't try to activate on upgrade of active plugin as WP will do this already.
3458
- if ( ! is_plugin_active( $plugin_info ) ) {
3459
- $activate = activate_plugin( $plugin_info );
3460
-
3461
- // Adjust the success string based on the activation result.
3462
- $this->strings['process_success'] = $this->strings['process_success'] . "<br />\n";
3463
-
3464
- if ( is_wp_error( $activate ) ) {
3465
- $this->skin->error( $activate );
3466
- $this->strings['process_success'] .= $this->strings['activation_failed'];
3467
- } else {
3468
- $this->strings['process_success'] .= $this->strings['activation_success'];
3469
- }
3470
- }
3471
- }
3472
-
3473
- return $bool;
3474
- }
3475
- }
3476
- }
3477
-
3478
- if ( ! class_exists( '\ComingSoon\TGMPA_Bulk_Installer_Skin', false ) ) {
3479
-
3480
- /**
3481
- * Installer skin to set strings for the bulk plugin installations..
3482
- *
3483
- * Extends Bulk_Upgrader_Skin and customizes to suit the installation of multiple
3484
- * plugins.
3485
- *
3486
- * @since 2.2.0
3487
- *
3488
- * {@internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer_Skin to
3489
- * TGMPA_Bulk_Installer_Skin.
3490
- * This was done to prevent backward compatibility issues with v2.3.6.}}
3491
- *
3492
- * @see https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php
3493
- *
3494
- * @package TGM-Plugin-Activation
3495
- * @author Thomas Griffin
3496
- * @author Gary Jones
3497
- */
3498
- class TGMPA_Bulk_Installer_Skin extends \Bulk_Upgrader_Skin {
3499
- /**
3500
- * Holds plugin info for each individual plugin installation.
3501
- *
3502
- * @since 2.2.0
3503
- *
3504
- * @var array
3505
- */
3506
- public $plugin_info = array();
3507
-
3508
- /**
3509
- * Holds names of plugins that are undergoing bulk installations.
3510
- *
3511
- * @since 2.2.0
3512
- *
3513
- * @var array
3514
- */
3515
- public $plugin_names = array();
3516
-
3517
- /**
3518
- * Integer to use for iteration through each plugin installation.
3519
- *
3520
- * @since 2.2.0
3521
- *
3522
- * @var integer
3523
- */
3524
- public $i = 0;
3525
-
3526
- /**
3527
- * TGMPA instance
3528
- *
3529
- * @since 2.5.0
3530
- *
3531
- * @var object
3532
- */
3533
- protected $tgmpa;
3534
-
3535
- /**
3536
- * Constructor. Parses default args with new ones and extracts them for use.
3537
- *
3538
- * @since 2.2.0
3539
- *
3540
- * @param array $args Arguments to pass for use within the class.
3541
- */
3542
- public function __construct( $args = array() ) {
3543
- // Get TGMPA class instance.
3544
- $this->tgmpa = call_user_func( array( get_class( $GLOBALS['wp_mail_smtp_tgmpa'] ), 'get_instance' ) );
3545
-
3546
- // Parse default and new args.
3547
- $defaults = array(
3548
- 'url' => '',
3549
- 'nonce' => '',
3550
- 'names' => array(),
3551
- 'install_type' => 'install',
3552
- );
3553
- $args = wp_parse_args( $args, $defaults );
3554
-
3555
- // Set plugin names to $this->plugin_names property.
3556
- $this->plugin_names = $args['names'];
3557
-
3558
- // Extract the new args.
3559
- parent::__construct( $args );
3560
- }
3561
-
3562
- /**
3563
- * Sets install skin strings for each individual plugin.
3564
- *
3565
- * Checks to see if the automatic activation flag is set and uses the
3566
- * the proper strings accordingly.
3567
- *
3568
- * @since 2.2.0
3569
- */
3570
- public function add_strings() {
3571
- if ( 'update' === $this->options['install_type'] ) {
3572
- parent::add_strings();
3573
- /* translators: 1: plugin name, 2: action number 3: total number of actions. */
3574
- $this->upgrader->strings['skin_before_update_header'] = __( 'Updating Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
3575
- } else {
3576
- /* translators: 1: plugin name, 2: error message. */
3577
- $this->upgrader->strings['skin_update_failed_error'] = __( 'An error occurred while installing %1$s: <strong>%2$s</strong>.', 'tgmpa' );
3578
- /* translators: 1: plugin name. */
3579
- $this->upgrader->strings['skin_update_failed'] = __( 'The installation of %1$s failed.', 'tgmpa' );
3580
-
3581
- if ( $this->tgmpa->is_automatic ) {
3582
- // Automatic activation strings.
3583
- $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation and activation process is starting. This process may take a while on some hosts, so please be patient.', 'tgmpa' );
3584
- /* translators: 1: plugin name. */
3585
- $this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'tgmpa' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'tgmpa' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'tgmpa' ) . '</span>.</a>';
3586
- $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations and activations have been completed.', 'tgmpa' );
3587
- /* translators: 1: plugin name, 2: action number 3: total number of actions. */
3588
- $this->upgrader->strings['skin_before_update_header'] = __( 'Installing and Activating Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
3589
- } else {
3590
- // Default installation strings.
3591
- $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation process is starting. This process may take a while on some hosts, so please be patient.', 'tgmpa' );
3592
- /* translators: 1: plugin name. */
3593
- $this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'tgmpa' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'tgmpa' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'tgmpa' ) . '</span>.</a>';
3594
- $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations have been completed.', 'tgmpa' );
3595
- /* translators: 1: plugin name, 2: action number 3: total number of actions. */
3596
- $this->upgrader->strings['skin_before_update_header'] = __( 'Installing Plugin %1$s (%2$d/%3$d)', 'tgmpa' );
3597
- }
3598
- }
3599
- }
3600
-
3601
- /**
3602
- * Outputs the header strings and necessary JS before each plugin installation.
3603
- *
3604
- * @since 2.2.0
3605
- *
3606
- * @param string $title Unused in this implementation.
3607
- */
3608
- public function before( $title = '' ) {
3609
- if ( empty( $title ) ) {
3610
- $title = esc_html( $this->plugin_names[ $this->i ] );
3611
- }
3612
- parent::before( $title );
3613
- }
3614
-
3615
- /**
3616
- * Outputs the footer strings and necessary JS after each plugin installation.
3617
- *
3618
- * Checks for any errors and outputs them if they exist, else output
3619
- * success strings.
3620
- *
3621
- * @since 2.2.0
3622
- *
3623
- * @param string $title Unused in this implementation.
3624
- */
3625
- public function after( $title = '' ) {
3626
- if ( empty( $title ) ) {
3627
- $title = esc_html( $this->plugin_names[ $this->i ] );
3628
- }
3629
- parent::after( $title );
3630
-
3631
- $this->i++;
3632
- }
3633
-
3634
- /**
3635
- * Outputs links after bulk plugin installation is complete.
3636
- *
3637
- * @since 2.2.0
3638
- */
3639
- public function bulk_footer() {
3640
- // Serve up the string to say installations (and possibly activations) are complete.
3641
- parent::bulk_footer();
3642
-
3643
- // Flush plugins cache so we can make sure that the installed plugins list is always up to date.
3644
- wp_clean_plugins_cache();
3645
-
3646
- $this->tgmpa->show_tgmpa_version();
3647
-
3648
- // Display message based on if all plugins are now active or not.
3649
- $update_actions = array();
3650
-
3651
- if ( $this->tgmpa->is_tgmpa_complete() ) {
3652
- // All plugins are active, so we display the complete string and hide the menu to protect users.
3653
- echo '<style type="text/css">#adminmenu .wp-submenu li.current { display: none !important; }</style>';
3654
- $update_actions['dashboard'] = sprintf(
3655
- esc_html( $this->tgmpa->strings['complete'] ),
3656
- '<a href="' . esc_url( self_admin_url() ) . '">' . esc_html__( 'Return to the Dashboard', 'tgmpa' ) . '</a>'
3657
- );
3658
- } else {
3659
- $update_actions['tgmpa_page'] = '<a href="' . esc_url( $this->tgmpa->get_tgmpa_url() ) . '" target="_parent">' . esc_html( $this->tgmpa->strings['return'] ) . '</a>';
3660
- }
3661
-
3662
- /**
3663
- * Filter the list of action links available following bulk plugin installs/updates.
3664
- *
3665
- * @since 2.5.0
3666
- *
3667
- * @param array $update_actions Array of plugin action links.
3668
- * @param array $plugin_info Array of information for the last-handled plugin.
3669
- */
3670
- $update_actions = apply_filters( 'wpms_tgmpa_update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info );
3671
-
3672
- if ( ! empty( $update_actions ) ) {
3673
- $this->feedback( implode( ' | ', (array) $update_actions ) );
3674
- }
3675
- }
3676
-
3677
- /* *********** DEPRECATED METHODS *********** */
3678
-
3679
- /**
3680
- * Flush header output buffer.
3681
- *
3682
- * @since 2.2.0
3683
- * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead
3684
- * @see Bulk_Upgrader_Skin::flush_output()
3685
- */
3686
- public function before_flush_output() {
3687
- _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' );
3688
- $this->flush_output();
3689
- }
3690
-
3691
- /**
3692
- * Flush footer output buffer and iterate $this->i to make sure the
3693
- * installation strings reference the correct plugin.
3694
- *
3695
- * @since 2.2.0
3696
- * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead
3697
- * @see Bulk_Upgrader_Skin::flush_output()
3698
- */
3699
- public function after_flush_output() {
3700
- _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' );
3701
- $this->flush_output();
3702
- $this->i++;
3703
- }
3704
- }
3705
- }
3706
- }
3707
- }
3708
-
3709
-
3710
- /**
3711
- * Generic utilities for TGMPA.
3712
- *
3713
- * All methods are static, poor-dev name-spacing class wrapper.
3714
- *
3715
- * Class was called TGM_Utils in 2.5.0 but renamed TGMPA_Utils in 2.5.1 as this was conflicting with Soliloquy.
3716
- *
3717
- * @since 2.5.0
3718
- *
3719
- * @package TGM-Plugin-Activation
3720
- * @author Juliette Reinders Folmer
3721
- */
3722
- class TGMPA_Utils {
3723
- /**
3724
- * Whether the PHP filter extension is enabled.
3725
- *
3726
- * @see http://php.net/book.filter
3727
- *
3728
- * @since 2.5.0
3729
- *
3730
- * @static
3731
- *
3732
- * @var bool $has_filters True is the extension is enabled.
3733
- */
3734
- public static $has_filters;
3735
-
3736
- /**
3737
- * Wrap an arbitrary string in <em> tags. Meant to be used in combination with array_map().
3738
- *
3739
- * @since 2.5.0
3740
- *
3741
- * @static
3742
- *
3743
- * @param string $string Text to be wrapped.
3744
- * @return string
3745
- */
3746
- public static function wrap_in_em( $string ) {
3747
- return '<em>' . wp_kses_post( $string ) . '</em>';
3748
- }
3749
-
3750
- /**
3751
- * Wrap an arbitrary string in <strong> tags. Meant to be used in combination with array_map().
3752
- *
3753
- * @since 2.5.0
3754
- *
3755
- * @static
3756
- *
3757
- * @param string $string Text to be wrapped.
3758
- * @return string
3759
- */
3760
- public static function wrap_in_strong( $string ) {
3761
- return '<strong>' . wp_kses_post( $string ) . '</strong>';
3762
- }
3763
-
3764
- /**
3765
- * Helper function: Validate a value as boolean
3766
- *
3767
- * @since 2.5.0
3768
- *
3769
- * @static
3770
- *
3771
- * @param mixed $value Arbitrary value.
3772
- * @return bool
3773
- */
3774
- public static function validate_bool( $value ) {
3775
- if ( ! isset( self::$has_filters ) ) {
3776
- self::$has_filters = extension_loaded( 'filter' );
3777
- }
3778
-
3779
- if ( self::$has_filters ) {
3780
- return filter_var( $value, FILTER_VALIDATE_BOOLEAN );
3781
- } else {
3782
- return self::emulate_filter_bool( $value );
3783
- }
3784
- }
3785
-
3786
- /**
3787
- * Helper function: Cast a value to bool
3788
- *
3789
- * @since 2.5.0
3790
- *
3791
- * @static
3792
- *
3793
- * @param mixed $value Value to cast.
3794
- * @return bool
3795
- */
3796
- protected static function emulate_filter_bool( $value ) {
3797
- // @codingStandardsIgnoreStart
3798
- static $true = array(
3799
- '1',
3800
- 'true', 'True', 'TRUE',
3801
- 'y', 'Y',
3802
- 'yes', 'Yes', 'YES',
3803
- 'on', 'On', 'ON',
3804
- );
3805
- static $false = array(
3806
- '0',
3807
- 'false', 'False', 'FALSE',
3808
- 'n', 'N',
3809
- 'no', 'No', 'NO',
3810
- 'off', 'Off', 'OFF',
3811
- );
3812
- // @codingStandardsIgnoreEnd
3813
-
3814
- if ( is_bool( $value ) ) {
3815
- return $value;
3816
- } elseif ( is_int( $value ) && ( 0 === $value || 1 === $value ) ) {
3817
- return (bool) $value;
3818
- } elseif ( ( is_float( $value ) && ! is_nan( $value ) ) && ( (float) 0 === $value || (float) 1 === $value ) ) {
3819
- return (bool) $value;
3820
- } elseif ( is_string( $value ) ) {
3821
- $value = trim( $value );
3822
- if ( in_array( $value, $true, true ) ) {
3823
- return true;
3824
- } elseif ( in_array( $value, $false, true ) ) {
3825
- return false;
3826
- } else {
3827
- return false;
3828
- }
3829
- }
3830
-
3831
- return false;
3832
- }
3833
- }
3834
-
3835
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/setup_tgmpa.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
- /**
3
- * Recommend WPForms Lite using TGM Activation.
4
- *
5
- * @since 5.0.20
6
- */
7
- function coming_soon_init_recommendations() {
8
- // Recommend only for new installs.
9
- if ( ! coming_soon_is_new_install() ) {
10
- return;
11
- }
12
- // Specify a plugin that we want to recommend.
13
- $plugins = apply_filters( 'coming_soon_recommendations_plugins', array(
14
- array(
15
- 'name' => 'RafflePress',
16
- 'slug' => 'rafflepress',
17
- 'required' => false,
18
- 'is_callable' => 'rafflepress', // This will target the Pro version as well, not only the one from WP.org repository.
19
- ),
20
- ) );
21
- /*
22
- * Array of configuration settings.
23
- */
24
- $config = apply_filters( 'coming_soon_recommendations_config', array(
25
- 'id' => 'coming-soon', // Unique ID for hashing notices for multiple instances of TGMPA.
26
- 'menu' => 'coming-soon-install-plugins', // Menu slug.
27
- 'parent_slug' => 'plugins.php', // Parent menu slug.
28
- 'capability' => 'manage_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used.
29
- 'has_notices' => true, // Show admin notices or not.
30
- 'dismissable' => true, // If false, a user cannot dismiss the nag message.
31
- 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag.
32
- 'is_automatic' => true, // Automatically activate plugins after installation or not.
33
- 'message' => '', // Message to output right before the plugins table.
34
- 'strings' => array(
35
- /* translators: 1: plugin name(s). */
36
- 'notice_can_install_recommended' => _n_noop(
37
- 'Thanks for using Coming Soon Page & Maintenance Mode by SeedProd. We also recommend using %1$s. It\'s the best Giveaway and Contest plugin to help you grow your email list and social media followings.',
38
- 'Thanks for using Coming Soon Page & Maintenance Mode by SeedProd. We also recommend using %1$s. It\'s the best Giveaway and Contest plugin to help you grow your email list and social media followings.',
39
- 'coming-soon'
40
- ),
41
- /* translators: 1: plugin name(s). */
42
- 'notice_can_activate_recommended' => _n_noop(
43
- 'Thanks for using Coming Soon Page & Maintenance Mode by SeedProd. We also recommend using %1$s. It\'s the best Giveaway and Contest plugin to help you grow your email list and social media followings.',
44
- 'Thanks for using Coming Soon Page & Maintenance Mode by SeedProd. We also recommend using %1$s. It\'s the best Giveaway and Contest plugin to help you grow your email list and social media followings.',
45
- 'coming-soon'
46
- ),
47
- 'install_link' => _n_noop(
48
- 'Install RafflePress Now',
49
- 'Begin installing plugins',
50
- 'coming-soon'
51
- ),
52
- 'activate_link' => _n_noop(
53
- 'Activate RafflePress',
54
- 'Begin activating plugins',
55
- 'coming-soon'
56
- ),
57
- 'nag_type' => 'notice-info',
58
- ),
59
- ) );
60
- \ComingSoon\tgmpa( (array) $plugins, (array) $config );
61
- }
62
-
63
- function coming_soon_is_new_install() {
64
- /*
65
- * No previously installed 0.*.
66
- * 'wp_mail_smtp_initial_version' option appeared in 1.3.0. So we make sure it exists.
67
- * No previous plugin upgrades.
68
- */
69
- if (
70
- get_option( 'seed_csp4_initial_version', false ) &&
71
- version_compare( SEED_CSP4_VERSION, get_option( 'seed_csp4_initial_version' ), '=' )
72
- ) {
73
- return true;
74
- }
75
-
76
- return false;
77
- }
78
-
79
- function coming_soon_wpforms_upgrade_link( $medium ) {
80
- // track cross referrals to Awesome Motive products
81
- $medium = 'seedprod';
82
- return $medium;
83
- }
84
-
85
- $seed_csp4_wpforms = get_option('seed_csp4_wpforms');
86
- if(!empty($seed_csp4_wpforms)){
87
- add_filter( 'wpforms_upgrade_link_medium', 'coming_soon_wpforms_upgrade_link' );
88
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/css/admin-style.css ADDED
@@ -0,0 +1,3879 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Global */
2
+ img {
3
+ border: inherit;
4
+ }
5
+ [v-cloak] {
6
+ display: none !important;
7
+ }
8
+ body,
9
+ .subsubsub,
10
+ .tablenav .tablenav-pages {
11
+ color: #222;
12
+ }
13
+ .subsubsub .current {
14
+ color: #222 !important;
15
+ }
16
+ .search-box,
17
+ .subsubsub {
18
+ margin-bottom: 0px !important;
19
+ }
20
+ body.seedprod-body {
21
+ background: #fff;
22
+ }
23
+ body.seedprod_page_seedprod_pro_template #wpwrap,
24
+ body.seedprod_page_seedprod_lite_template #wpwrap {
25
+ background: #f7f6f7;
26
+ }
27
+ .seedprod_page_seedprod_pro_template button,
28
+ .seedprod_page_seedprod_pro_template input,
29
+ .seedprod_page_seedprod_pro_template optgroup,
30
+ .seedprod_page_seedprod_pro_template select,
31
+ .seedprod_page_seedprod_pro_template textarea {
32
+ outline: none !important;
33
+ -webkit-box-shadow: none !important;
34
+ box-shadow: none !important;
35
+ }
36
+ .seedprod_page_seedprod_lite_template button,
37
+ .seedprod_page_seedprod_lite_template input,
38
+ .seedprod_page_seedprod_lite_template optgroup,
39
+ .seedprod_page_seedprod_lite_template select,
40
+ .seedprod_page_seedprod_lite_template textarea {
41
+ outline: none !important;
42
+ -webkit-box-shadow: none !important;
43
+ box-shadow: none !important;
44
+ }
45
+ .seedprod_page_seedprod_pro_template input[type=color],
46
+ .seedprod_page_seedprod_pro_template input[type=date],
47
+ .seedprod_page_seedprod_pro_template input[type=datetime-local],
48
+ .seedprod_page_seedprod_pro_template input[type=datetime],
49
+ .seedprod_page_seedprod_pro_template input[type=email],
50
+ .seedprod_page_seedprod_pro_template input[type=month],
51
+ .seedprod_page_seedprod_pro_template input[type=number],
52
+ .seedprod_page_seedprod_pro_template input[type=password],
53
+ .seedprod_page_seedprod_pro_template input[type=search],
54
+ .seedprod_page_seedprod_pro_template input[type=tel],
55
+ .seedprod_page_seedprod_pro_template input[type=text],
56
+ .seedprod_page_seedprod_pro_template input[type=time],
57
+ .seedprod_page_seedprod_pro_template input[type=url],
58
+ .seedprod_page_seedprod_pro_template input[type=week],
59
+ .seedprod_page_seedprod_pro_template select,
60
+ .seedprod_page_seedprod_pro_template textarea {
61
+ -webkit-box-shadow: 0 0 0 transparent;
62
+ box-shadow: 0 0 0 transparent;
63
+ border-radius: 4px;
64
+ border: 1px solid #d3ced2;
65
+ background-color: #fff;
66
+ color: #32373c;
67
+ }
68
+ .seedprod_page_seedprod_lite_template input[type=color],
69
+ .seedprod_page_seedprod_lite_template input[type=date],
70
+ .seedprod_page_seedprod_lite_template input[type=datetime-local],
71
+ .seedprod_page_seedprod_lite_template input[type=datetime],
72
+ .seedprod_page_seedprod_lite_template input[type=email],
73
+ .seedprod_page_seedprod_lite_template input[type=month],
74
+ .seedprod_page_seedprod_lite_template input[type=number],
75
+ .seedprod_page_seedprod_lite_template input[type=password],
76
+ .seedprod_page_seedprod_lite_template input[type=search],
77
+ .seedprod_page_seedprod_lite_template input[type=tel],
78
+ .seedprod_page_seedprod_lite_template input[type=text],
79
+ .seedprod_page_seedprod_lite_template input[type=time],
80
+ .seedprod_page_seedprod_lite_template input[type=url],
81
+ .seedprod_page_seedprod_lite_template input[type=week],
82
+ .seedprod_page_seedprod_lite_template select,
83
+ .seedprod_page_seedprod_lite_template textarea {
84
+ -webkit-box-shadow: 0 0 0 transparent;
85
+ box-shadow: 0 0 0 transparent;
86
+ border-radius: 4px;
87
+ border: 1px solid #d3ced2;
88
+ background-color: #fff;
89
+ color: #32373c;
90
+ }
91
+ .seedprod-builder {
92
+ display: none ;
93
+ }
94
+ .seedprod-action-txt {
95
+ white-space: nowrap;
96
+ text-overflow: ellipsis;
97
+ overflow: hidden;
98
+ width: 340px;
99
+ display: inline-block;
100
+ }
101
+ #seedprod-page-name {
102
+ width: 100%;
103
+ background: #fbfcfb;
104
+ height: 75px;
105
+ border-bottom: 1px solid #f0f0f0;
106
+ margin-top: 67px;
107
+ display: table;
108
+ padding: 0 23px;
109
+ }
110
+ #seedprod-page-name input {
111
+ height: 40px;
112
+ border-radius: 2px;
113
+ width: 315px;
114
+ }
115
+ #seedprod-page-name label {
116
+ margin-bottom: 0px;
117
+ font-size: 16px;
118
+ margin-right: 15px;
119
+ }
120
+ #seedprod-page-name .form-group {
121
+ display: table-cell;
122
+ vertical-align: middle;
123
+ }
124
+ .template-chooser h2 {
125
+ margin-top: 0;
126
+ margin-bottom: 15px;
127
+ font-size: 24px;
128
+ color: #2d2d2d;
129
+ font-weight: 400;
130
+ }
131
+ .template-chooser p {
132
+ color: #666;
133
+ font-size: 14px;
134
+ margin-bottom: 30px;
135
+ }
136
+ .template-chooser .highlight-template {
137
+ color: #f1470d !important;
138
+ text-decoration: underline;
139
+ }
140
+ .template-chooser .highlight-template :hover {
141
+ text-decoration: none;
142
+ }
143
+ .seedprod-builder #adminmenu,
144
+ .seedprod-builder #wpadminbar {
145
+ display: none !important;
146
+ }
147
+ #seedprod-steps-nav {
148
+ border-left: 1px solid #f9f9f9;
149
+ }
150
+ #seedprod-steps-nav a {
151
+ font-size: 14px;
152
+ padding-left: 15px;
153
+ padding-right: 15px;
154
+ }
155
+ .seedprod-builder-step .container-fluid {
156
+ padding-left: 23px !important;
157
+ padding-right: 23px !important;
158
+ }
159
+ .seedprod-builder-step h1 {
160
+ margin: 20px 0 10px 0 !important;
161
+ }
162
+ .seedprod table {
163
+ background-color: #f8f8f8;
164
+ }
165
+ .seedprod .navbar-default {
166
+ background-color: #fafbfc;
167
+ border-color: #e8e8e8;
168
+ overflow: hidden;
169
+ }
170
+ .seedprod-builder .navbar-default {
171
+ background-color: #fff;
172
+ }
173
+ .seedprod .panel-default > .panel-heading {
174
+ color: #222;
175
+ background-color: #f8f8f8;
176
+ border-color: #ddd;
177
+ font-weight: bold;
178
+ position: relative;
179
+ }
180
+ .widefat thead th,
181
+ .widefat thead td {
182
+ border-bottom: 1px solid #ddd;
183
+ }
184
+ .widget-top,
185
+ .menu-item-handle,
186
+ .widget-inside,
187
+ #menu-settings-column .accordion-container,
188
+ #menu-management .menu-edit,
189
+ .manage-menus,
190
+ table.widefat,
191
+ .stuffbox,
192
+ p.popular-tags,
193
+ .widgets-holder-wrap,
194
+ .wp-editor-container,
195
+ .popular-tags,
196
+ .feature-filter,
197
+ .imgedit-group,
198
+ .comment-ays {
199
+ border: 1px solid transparent;
200
+ -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
201
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
202
+ margin-top: 20px;
203
+ }
204
+ .seedprod .form-control[disabled],
205
+ .seedprod .form-control[readonly],
206
+ fieldset[disabled] .seedprod .form-control {
207
+ background-color: #fbfcfb;
208
+ opacity: 1;
209
+ }
210
+ .seedprod-builder .input-group-addon {
211
+ background-color: #fff;
212
+ border-color: #DEDADE;
213
+ }
214
+ .column.entries,
215
+ .column.subscribers,
216
+ .column.active {
217
+ width: 120px;
218
+ }
219
+ .column.type {
220
+ width: 160px;
221
+ }
222
+ .column.status {
223
+ width: 210px;
224
+ white-space: nowrap;
225
+ }
226
+ .column.starts {
227
+ width: 130px;
228
+ white-space: nowrap;
229
+ }
230
+ .column.ends {
231
+ width: 130px;
232
+ white-space: nowrap;
233
+ }
234
+ .vue-js-switch .v-switch-core {
235
+ background: #d6d6d6 !important;
236
+ }
237
+ .vue-js-switch.toggled .v-switch-core {
238
+ background: #4CAF50 !important;
239
+ }
240
+ .seedprod .navbar-default .navbar-nav > li > a,
241
+ .seedprod .input-group-addon {
242
+ color: #b3b3b3;
243
+ }
244
+ .seedprod-builder #seedprod-sidebar-wrapper .input-group-addon {
245
+ color: #c7c7c7;
246
+ font-size: 13px;
247
+ }
248
+ .seedprod .navbar-nav > li > a {
249
+ padding-top: 19px !important;
250
+ padding-bottom: 23px !important;
251
+ }
252
+ .seedprod-builder .navbar-nav > li > a {
253
+ padding-top: 23px !important;
254
+ padding-bottom: 23px !important;
255
+ }
256
+ #seedprod-steps-nav a span {
257
+ padding: 0 10px 24px;
258
+ }
259
+ .seedprod .navbar-default .navbar-nav > .active > a,
260
+ .seedprod .navbar-default .navbar-nav > .active > a:focus {
261
+ color: #222;
262
+ background-color: #fff !important;
263
+ }
264
+ .seedprod .navbar-default .navbar-nav > .active > a span,
265
+ .seedprod .navbar-default .navbar-nav > .active > a:focus span {
266
+ -webkit-box-shadow: inset 0 -3px 0px 0px #f1470d !important;
267
+ box-shadow: inset 0 -3px 0px 0px #f1470d !important;
268
+ padding: 0 10px 24px;
269
+ }
270
+ .seedprod .navbar-default .navbar-nav > li > a:hover {
271
+ color: #222;
272
+ background-color: #fff !important;
273
+ }
274
+ .striped > tbody > :nth-child(even),
275
+ ul.striped > :nth-child(even),
276
+ .alternate {
277
+ background-color: #fff;
278
+ }
279
+ .seedprod-icon::before {
280
+ display: inline-block;
281
+ font-style: normal;
282
+ font-variant: normal;
283
+ text-rendering: auto;
284
+ -webkit-font-smoothing: antialiased;
285
+ }
286
+ .icon-refer-a-friend::before {
287
+ font-family: "Font Awesome 5 Free";
288
+ font-weight: 900;
289
+ content: "\f004";
290
+ }
291
+ .icon-refer-a-friend {
292
+ background-color: #e42e2f;
293
+ border-color: #e42e2f !important;
294
+ color: #fff;
295
+ }
296
+ .icon-automatic-entry::before {
297
+ font-family: "Font Awesome 5 Free";
298
+ font-weight: 900;
299
+ content: "\f3ff";
300
+ }
301
+ .icon-automatic-entry {
302
+ background-color: #FF9800;
303
+ border-color: #FF9800 !important;
304
+ color: #fff;
305
+ }
306
+ .icon-submit-image::before {
307
+ font-family: "Font Awesome 5 Free";
308
+ font-weight: 900;
309
+ content: "\f03e";
310
+ }
311
+ .icon-submit-image {
312
+ background-color: #009688;
313
+ border-color: #009688 !important;
314
+ color: #fff;
315
+ }
316
+ .icon-polls-surveys::before {
317
+ font-family: "Font Awesome 5 Free";
318
+ font-weight: 900;
319
+ content: "\f681";
320
+ }
321
+ .icon-polls-surveys {
322
+ background-color: #E91E63;
323
+ border-color: #E91E63 !important;
324
+ color: #fff;
325
+ }
326
+ .icon-join-newsletter {
327
+ background-color: #4CAF50;
328
+ border-color: #4CAF50 !important;
329
+ color: #fff;
330
+ }
331
+ .icon-join-newsletter::before {
332
+ font-family: "Font Awesome 5 Free";
333
+ font-weight: 900;
334
+ content: "\f0e0";
335
+ }
336
+ .icon-visit-a-page::before {
337
+ font-family: "Font Awesome 5 Free";
338
+ font-weight: 900;
339
+ content: "\f35d";
340
+ }
341
+ .icon-visit-a-page {
342
+ background-color: #0000ba;
343
+ border-color: #0000ba !important;
344
+ color: #fff;
345
+ }
346
+ .icon-visit-fb::before,
347
+ .icon-fb-page-post::before {
348
+ font-family: "Font Awesome 5 Brands";
349
+ font-weight: 400;
350
+ content: "\f09a";
351
+ }
352
+ .icon-visit-fb,
353
+ .icon-fb-page-post {
354
+ background-color: #4267b2;
355
+ border-color: #4267b2 !important;
356
+ color: #fff;
357
+ }
358
+ .icon-tweet::before {
359
+ font-family: "Font Awesome 5 Brands";
360
+ font-weight: 400;
361
+ content: "\f099";
362
+ }
363
+ .icon-tweet {
364
+ background-color: #38A1F3;
365
+ border-color: #38A1F3 !important;
366
+ color: #fff;
367
+ }
368
+ .icon-twitter-follow::before {
369
+ font-family: "Font Awesome 5 Brands";
370
+ font-weight: 400;
371
+ content: "\f099";
372
+ }
373
+ .icon-twitter-follow {
374
+ background-color: #38A1F3;
375
+ border-color: #38A1F3 !important;
376
+ color: #fff;
377
+ }
378
+ .icon-instagram-follow::before,
379
+ .icon-instagram-page-post::before {
380
+ font-family: "Font Awesome 5 Brands";
381
+ font-weight: 400;
382
+ content: "\f16d";
383
+ }
384
+ .icon-instagram-follow,
385
+ .icon-instagram-page-post {
386
+ background-color: #f55f3f;
387
+ border-color: #f55f3f !important;
388
+ color: #fff;
389
+ }
390
+ .icon-pinterest-follow::before {
391
+ font-family: "Font Awesome 5 Brands";
392
+ font-weight: 400;
393
+ content: "\f0d2";
394
+ }
395
+ .icon-pinterest-follow {
396
+ background-color: #e60023;
397
+ border-color: #e60023 !important;
398
+ color: #fff;
399
+ }
400
+ .icon-youtube-follow::before {
401
+ font-family: "Font Awesome 5 Brands";
402
+ font-weight: 400;
403
+ content: "\f167";
404
+ }
405
+ .icon-youtube-follow {
406
+ background-color: #ff0000;
407
+ border-color: #ff0000 !important;
408
+ color: #fff;
409
+ }
410
+ .icon-watch-a-video::before {
411
+ font-family: "Font Awesome 5 Brands";
412
+ font-weight: 400;
413
+ content: "\f167";
414
+ }
415
+ .icon-watch-a-video {
416
+ background-color: #ff0000;
417
+ border-color: #ff0000 !important;
418
+ color: #fff;
419
+ }
420
+ .icon-question::before {
421
+ font-family: "Font Awesome 5 Free";
422
+ font-weight: 900;
423
+ content: "\f059";
424
+ }
425
+ .icon-question {
426
+ background-color: #9900bb;
427
+ border-color: #9900bb !important;
428
+ color: #fff;
429
+ }
430
+ .icon-invent-your-own::before {
431
+ font-family: "Font Awesome 5 Free";
432
+ font-weight: 900;
433
+ content: "\f0eb";
434
+ }
435
+ .icon-invent-your-own {
436
+ background-color: #0f0f0f;
437
+ border-color: #0f0f0f !important;
438
+ color: #fff;
439
+ }
440
+ .seedprod-page-types {
441
+ display: -webkit-box;
442
+ display: -ms-flexbox;
443
+ display: flex;
444
+ margin-left: -20px;
445
+ margin-right: -20px;
446
+ }
447
+ .seedprod-page-type {
448
+ border: 1px solid #ccc;
449
+ padding: 20px;
450
+ margin-left: 20px;
451
+ margin-right: 20px;
452
+ }
453
+ #seedprod-dashboard {
454
+ padding-right: 20px;
455
+ }
456
+ .seedprod-app #poststuff {
457
+ padding-top: 30px;
458
+ }
459
+ .seedprod-app .widefat {
460
+ margin-top: 10px !important;
461
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04) !important;
462
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04) !important;
463
+ }
464
+ #seedprod-dashboard .column-active {
465
+ width: 90px;
466
+ }
467
+ #seedprod-dashboard .column-subscribers {
468
+ width: 120px;
469
+ }
470
+ #seedprod-dashboard .column-entries {
471
+ width: 120px;
472
+ }
473
+ #seedprod-entries .column-entries {
474
+ width: 120px;
475
+ }
476
+ #seedprod-entries .fa-trophy {
477
+ padding-right: 5px;
478
+ }
479
+ #seedprod-entries #poststuff {
480
+ padding-top: 10px;
481
+ }
482
+ #lpage-details-sub {
483
+ color: #999;
484
+ display: block;
485
+ font-size: 10px;
486
+ text-transform: uppercase;
487
+ margin: 0 0 8px 0;
488
+ }
489
+ #lpage-details-title {
490
+ float: left;
491
+ font-size: 18px;
492
+ font-weight: 400;
493
+ margin: 0;
494
+ padding-right: 8px;
495
+ }
496
+ #lpage-selector {
497
+ display: inline-block;
498
+ position: relative;
499
+ }
500
+ #seedprod-entries {
501
+ margin-top: 20px;
502
+ }
503
+ #seedprod-entries .toggle.active {
504
+ background-color: #e3e3e3;
505
+ outline: none;
506
+ }
507
+ #seedprod-entries .toggle {
508
+ border-radius: 50%;
509
+ color: #444;
510
+ font-size: 16px;
511
+ -webkit-box-shadow: none;
512
+ box-shadow: none;
513
+ }
514
+ #seedprod-entries .toggle:before {
515
+ vertical-align: middle;
516
+ }
517
+ #lpage-details-actions {
518
+ margin-top: 26px;
519
+ text-align: right;
520
+ }
521
+ .lpage-details-actions {
522
+ margin-right: 12px;
523
+ text-decoration: none;
524
+ }
525
+ .lpage-details-actions:last-child {
526
+ margin-right: 0px;
527
+ }
528
+ .lpage-selector {
529
+ display: inline-block;
530
+ position: relative;
531
+ }
532
+ .lpage-selector ul {
533
+ max-height: 196px;
534
+ overflow-x: hidden;
535
+ padding: 0;
536
+ margin: 0;
537
+ }
538
+ #raffleprsss-lpage-list-loading {
539
+ text-align: center;
540
+ display: block;
541
+ }
542
+ .lpage-selector ul li {
543
+ list-style: none;
544
+ margin: 0;
545
+ font-size: 13px;
546
+ }
547
+ .lpage-selector ul li a {
548
+ display: block;
549
+ text-decoration: none;
550
+ padding: 5px 15px;
551
+ color: #444;
552
+ }
553
+ .lpage-selector ul li a:hover {
554
+ background-color: #f7f7f7;
555
+ color: #444;
556
+ }
557
+ #winner-selector {
558
+ display: inline-block;
559
+ position: relative;
560
+ }
561
+ #seedprod-winner-options {
562
+ background: #fff;
563
+ border-radius: 3px;
564
+ -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1);
565
+ box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1);
566
+ position: absolute;
567
+ top: 69px;
568
+ left: -15px;
569
+ width: 300px;
570
+ z-index: 9992;
571
+ font-size: 13px;
572
+ font-weight: normal;
573
+ padding: 20px;
574
+ }
575
+ #seedprod-winner-options input[type="radio"] {
576
+ margin-top: 3px;
577
+ }
578
+ #seedprod-winner-options:before {
579
+ content: " ";
580
+ position: absolute;
581
+ top: -10px;
582
+ left: 145px;
583
+ width: 0;
584
+ height: 0;
585
+ border-style: solid;
586
+ border-width: 0 8px 10px 8px;
587
+ border-color: transparent transparent #fff transparent;
588
+ }
589
+ #lpage-list {
590
+ background: #fff;
591
+ border-radius: 3px;
592
+ -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1);
593
+ box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.1);
594
+ position: absolute;
595
+ top: 27px;
596
+ left: -108px;
597
+ width: 230px;
598
+ padding: 10px 0;
599
+ z-index: 9991;
600
+ }
601
+ #lpage-list:before {
602
+ content: " ";
603
+ position: absolute;
604
+ top: -10px;
605
+ left: 110px;
606
+ width: 0;
607
+ height: 0;
608
+ border-style: solid;
609
+ border-width: 0 8px 10px 8px;
610
+ border-color: transparent transparent #fff transparent;
611
+ }
612
+ #seedprod-header {
613
+ position: relative;
614
+ background: #fff;
615
+ margin-left: -20px;
616
+ border-bottom: 1px solid #ccc;
617
+ }
618
+ .seedprod-header-margin {
619
+ margin-top: 20px !important;
620
+ }
621
+ .seedprod .navbar-right {
622
+ margin-right: 0;
623
+ border-color: transparent;
624
+ border-bottom-color: #e7e7e7;
625
+ }
626
+ .seedprod-breadcrumbs {
627
+ display: inline-block;
628
+ margin-top: 10px;
629
+ margin-bottom: 20px;
630
+ }
631
+ #seedprod-page-title {
632
+ background-color: #fff;
633
+ margin: 0 0 0px -20px;
634
+ padding: 15px 20px;
635
+ font-size: 23px;
636
+ font-weight: 400;
637
+ line-height: 29px;
638
+ border-bottom: 1px solid #e7e8e7;
639
+ }
640
+ #seedprod-page-title .add-new-h2 {
641
+ margin-left: 28px;
642
+ }
643
+ .seedprod-btn-orange {
644
+ background-color: #f1460d !important;
645
+ border-color: #f0460d !important;
646
+ color: #fff !important;
647
+ }
648
+ .seedprod-btn-orange:hover {
649
+ background-color: #c1390a !important;
650
+ border-color: #c1390a !important;
651
+ color: #fff !important;
652
+ }
653
+ .seedprod-breadcrumbs small {
654
+ font-size: 14px;
655
+ }
656
+ .seedprod .container-fluid {
657
+ padding: 0;
658
+ }
659
+ .d-ib {
660
+ display: inline-block;
661
+ }
662
+ .seedprod .tablenav {
663
+ margin: 0px 0 4px;
664
+ }
665
+ .seedprod-default-cusor {
666
+ cursor: default;
667
+ }
668
+ .seedprod td,
669
+ .seedprod th {
670
+ padding: 10px;
671
+ }
672
+ .seedprod :focus {
673
+ outline: none !important;
674
+ -webkit-box-shadow: none !important;
675
+ box-shadow: none !important;
676
+ }
677
+ /* Builder */
678
+ #seedprod-search-close {
679
+ margin-left: -24px;
680
+ margin-right: 11px;
681
+ color: #aaa;
682
+ z-index: 999;
683
+ position: relative;
684
+ cursor: pointer;
685
+ }
686
+ #seedprod-customizer-wrapper {
687
+ height: 100%;
688
+ }
689
+ .seedprod-builder .mx-input,
690
+ #seedprod-sidebar-wrapper .form-control {
691
+ font-size: 16px;
692
+ height: 40px;
693
+ }
694
+ .seedprod-builder .btn i {
695
+ color: rgba(0, 0, 0, 0.34);
696
+ }
697
+ .rules-modal .seedprod-modal-container {
698
+ border-radius: 6px;
699
+ max-width: 620px;
700
+ position: relative;
701
+ }
702
+ .rules-modal hr {
703
+ margin-top: 15px;
704
+ margin-bottom: 25px;
705
+ }
706
+ .rules-modal .seedprod-modal-body {
707
+ margin-top: 0;
708
+ }
709
+ .rules-modal i {
710
+ color: #ccc;
711
+ cursor: pointer;
712
+ position: absolute;
713
+ top: 20px;
714
+ font-size: 16px;
715
+ right: 20px;
716
+ }
717
+ #seedprod-sidebar-nav-wrapper {
718
+ background-color: #2d2d2d;
719
+ color: #a3a3a3;
720
+ z-index: 200;
721
+ left: 0px;
722
+ position: absolute;
723
+ bottom: 0;
724
+ top: 67px;
725
+ right: auto;
726
+ width: 95px;
727
+ overflow-y: auto;
728
+ overflow-x: hidden;
729
+ }
730
+ #seedprod-sidebar-nav-wrapper .active {
731
+ background-color: #000;
732
+ color: #fff;
733
+ }
734
+ .sp-section-toolbar {
735
+ background: url(../svg/section-toolbar.svg);
736
+ background-position: top center;
737
+ background-repeat: no-repeat;
738
+ width: 218px;
739
+ height: 28px;
740
+ margin-top: -4px;
741
+ -webkit-box-align: center;
742
+ -ms-flex-align: center;
743
+ align-items: center;
744
+ -webkit-box-pack: center;
745
+ -ms-flex-pack: center;
746
+ justify-content: center;
747
+ }
748
+ .sp-section-toolbar span {
749
+ margin: 2px 2px 0 2px;
750
+ }
751
+ .sp-section-toolbar span:first-child {
752
+ margin-left: 6px;
753
+ }
754
+ #sp-sidebar-drawer {
755
+ cursor: pointer;
756
+ height: 76px;
757
+ width: 13px;
758
+ background-image: url(../svg/sidebar-drawer.svg);
759
+ background-repeat: no-repeat;
760
+ background-size: auto;
761
+ background-position: -7px 0;
762
+ top: 50%;
763
+ }
764
+ #sp-sidebar-drawer svg {
765
+ min-width: 23px;
766
+ margin-left: -6px;
767
+ }
768
+ .sp-sidebar-drawer-closed {
769
+ margin-left: -320px !important;
770
+ }
771
+ #seedprod-sidebar-wrapper {
772
+ background-color: #F7F6F7;
773
+ color: #4F394D;
774
+ width: 320px;
775
+ min-width: 320px;
776
+ z-index: 10;
777
+ margin-top: 0px;
778
+ margin-bottom: 125px;
779
+ -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
780
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
781
+ }
782
+ #seedprod-preview-wrapper.sp-setup_settings_connect {
783
+ background-color: #EDEBED !important;
784
+ }
785
+ #seedprod-preview-wrapper {
786
+ margin-bottom: 72px;
787
+ background-color: #7B6B7A;
788
+ overflow-y: scroll;
789
+ }
790
+ #seedprod-preview-wrapper #seedprod-builder-view {
791
+ margin-left: auto;
792
+ margin-right: auto;
793
+ background-color: #fff;
794
+ }
795
+ .sp-mobile-view {
796
+ border-radius: 10px;
797
+ border: 5px solid #4F394D;
798
+ -webkit-box-shadow: 0px 15px 50px rgba(35, 8, 32, 0.25);
799
+ box-shadow: 0px 15px 50px rgba(35, 8, 32, 0.25);
800
+ margin-top: 15px;
801
+ }
802
+ .seedprod-sidebar-form-body {
803
+ padding: 0px;
804
+ padding-top: 0px;
805
+ padding-bottom: 30px;
806
+ margin: 0 20px;
807
+ text-align: left;
808
+ -webkit-box-shadow: inset 0 -1px 0 rgba(167, 156, 166, 0.25);
809
+ box-shadow: inset 0 -1px 0 rgba(167, 156, 166, 0.25);
810
+ }
811
+ .seedprod-sidebar-form-body .col-md-6:first-child {
812
+ padding-right: 7px;
813
+ }
814
+ .seedprod-sidebar-form-body .col-md-6:last-child {
815
+ padding-left: 7px;
816
+ }
817
+ .seedprod-sidebar-form-body .help_tip i {
818
+ vertical-align: text-top;
819
+ color: #c7c7c7;
820
+ }
821
+ #seedprod-dragbar {
822
+ background-color: #ccc;
823
+ height: 100%;
824
+ width: 3px;
825
+ cursor: col-resize;
826
+ position: absolute;
827
+ right: 0;
828
+ top: 0;
829
+ }
830
+ #seedprod-ajax-status {
831
+ background: #230820;
832
+ position: fixed;
833
+ right: 29px;
834
+ top: 26px;
835
+ font-size: 16px;
836
+ z-index: 999999;
837
+ color: #fff;
838
+ }
839
+ #seedprod-builder-view {
840
+ padding: 0;
841
+ height: 100%;
842
+ overflow-y: auto;
843
+ }
844
+ #seedprod-preview,
845
+ .seedprod-settings-page {
846
+ overflow-y: scroll;
847
+ float: right;
848
+ height: 100%;
849
+ width: 100%;
850
+ padding: 40px 35px;
851
+ background: #F7F6F7;
852
+ }
853
+ .sp-sectiontemplates .seedprod-settings-page {
854
+ background: #EDEBED;
855
+ }
856
+ #seedprod-sidebar-wrapper .sp-setting-control {
857
+ display: -webkit-box;
858
+ display: -ms-flexbox;
859
+ display: flex;
860
+ -webkit-box-align: center;
861
+ -ms-flex-align: center;
862
+ align-items: center;
863
+ -webkit-box-pack: center;
864
+ -ms-flex-pack: center;
865
+ justify-content: center;
866
+ margin-bottom: 10px;
867
+ }
868
+ #seedprod-sidebar-wrapper .sp-setting-control label {
869
+ font-size: 13px;
870
+ }
871
+ .seedprod-settings-page-wrapper {
872
+ color: #4F394D;
873
+ }
874
+ .seedprod-settings-page-wrapper p,
875
+ .seedprod-settings-page-wrapper label {
876
+ font-size: 16px !important;
877
+ font-weight: 600;
878
+ }
879
+ .seedprod-settings-page-wrapper .form-group {
880
+ margin-bottom: 25px;
881
+ }
882
+ .seedprod-settings-page-wrapper h1 {
883
+ font-weight: bold;
884
+ font-size: 20px;
885
+ margin-bottom: 40px;
886
+ }
887
+ .seedprod-settings-page-wrapper hr {
888
+ margin-top: 15px;
889
+ margin-bottom: 25px;
890
+ }
891
+ .seedprod-settings-page-wrapper .checkbox label {
892
+ color: #4F394D;
893
+ }
894
+ .seedprod-settings-page-wrapper .form-control,
895
+ .seedprod-settings-page-wrapper .btn {
896
+ height: 40px;
897
+ }
898
+ .seedprod-settings-page-wrapper .help_tip {
899
+ vertical-align: top;
900
+ display: inline-block;
901
+ }
902
+ .seedprod-settings-page-wrapper .help_tip i {
903
+ color: #c7c7c7;
904
+ }
905
+ .seedprod-settings-page-wrapper .seedprod-affiliate-details {
906
+ color: #999 !important;
907
+ font-size: 13px !important;
908
+ margin-top: 8px;
909
+ }
910
+ .seedprod-settings-page-wrapper .seedprod-affiliate-details a {
911
+ color: #f1470d !important;
912
+ text-decoration: underline;
913
+ }
914
+ #seedprod-settings {
915
+ border-right: 0px;
916
+ border-left: 0px;
917
+ }
918
+ #seedprod-settings .list-group-item {
919
+ display: -webkit-box;
920
+ display: -ms-flexbox;
921
+ display: flex;
922
+ -webkit-box-pack: justify;
923
+ -ms-flex-pack: justify;
924
+ justify-content: space-between;
925
+ -webkit-box-align: center;
926
+ -ms-flex-align: center;
927
+ align-items: center;
928
+ padding: 19px 24px;
929
+ color: #7B6B7A;
930
+ width: 100%;
931
+ text-align: left;
932
+ font-weight: 600;
933
+ font-size: 16px;
934
+ border-bottom: 1px solid #EDEBED;
935
+ }
936
+ #seedprod-settings .list-group-item:first-child {
937
+ border-top: 0 !important;
938
+ }
939
+ #seedprod-settings .active {
940
+ color: #f1470d;
941
+ }
942
+ #seedprod-preview {
943
+ padding: 0;
944
+ }
945
+ #seedprod-customizer-header-wrapper {
946
+ top: 0;
947
+ left: 0;
948
+ height: 67px;
949
+ width: 100%;
950
+ background: #fafafa;
951
+ z-index: 99;
952
+ }
953
+ .seedprod .navbar-brand {
954
+ padding: 6px 15px;
955
+ height: 67px;
956
+ }
957
+ .seedprod-builder .navbar-brand {
958
+ padding: 11px 15px;
959
+ height: 67px;
960
+ }
961
+ #seedprod-builder-help {
962
+ color: #A79CA6;
963
+ margin-right: 18px;
964
+ font-size: 14px;
965
+ padding: 8px 12px;
966
+ }
967
+ #seedprod-builder-help i {
968
+ margin-right: 4px;
969
+ color: #A79CA6;
970
+ }
971
+ #seedprod-builder-help:hover {
972
+ color: #fff;
973
+ }
974
+ .seedprod-overflow-hidden {
975
+ overflow: hidden;
976
+ }
977
+ #seedprod_preview {
978
+ width: 100%;
979
+ height: 700px;
980
+ }
981
+ .seedprod .navbar {
982
+ border-radius: 0 !important;
983
+ margin-bottom: 0;
984
+ height: 90px;
985
+ }
986
+ .seedprod-builder .navbar {
987
+ border-radius: 0;
988
+ margin-bottom: 0;
989
+ height: 67px;
990
+ }
991
+ #seedprod-builder-close {
992
+ margin-right: 16px;
993
+ margin-left: 14px;
994
+ font-size: 15px;
995
+ width: 40px;
996
+ height: 40px;
997
+ color: #a79ca6;
998
+ border-radius: 100px;
999
+ display: -webkit-box;
1000
+ display: -ms-flexbox;
1001
+ display: flex;
1002
+ -webkit-box-pack: center;
1003
+ -ms-flex-pack: center;
1004
+ justify-content: center;
1005
+ -webkit-box-align: center;
1006
+ -ms-flex-align: center;
1007
+ align-items: center;
1008
+ }
1009
+ #seedprod-builder-close:hover {
1010
+ color: #fff;
1011
+ }
1012
+ .seedprod-install-option {
1013
+ float: left;
1014
+ width: 250px;
1015
+ min-height: 195px;
1016
+ margin-right: 20px;
1017
+ }
1018
+ #seedprod-publish-title {
1019
+ font-size: 24px;
1020
+ font-weight: 400;
1021
+ margin-top: 50px;
1022
+ margin-bottom: 15px;
1023
+ color: #2d2d2d;
1024
+ }
1025
+ #seedprod-publish-desc {
1026
+ color: #676767;
1027
+ font-size: 14px;
1028
+ margin-bottom: 30px;
1029
+ }
1030
+ .seedprod-publish-option {
1031
+ padding: 20px;
1032
+ background: #fff;
1033
+ border: 1px solid #f1f1f1;
1034
+ border-radius: 8px;
1035
+ cursor: pointer;
1036
+ margin-bottom: 20px;
1037
+ }
1038
+ .seedprod-publish-option h3 {
1039
+ margin-top: 0;
1040
+ margin-bottom: 17px;
1041
+ font-size: 16px;
1042
+ }
1043
+ .seedprod-publish-option p {
1044
+ margin: 0;
1045
+ font-size: 14px;
1046
+ color: #a7a7a7;
1047
+ }
1048
+ .seedprod-publish-options .col-sm-4:first-child {
1049
+ padding-right: 7px;
1050
+ }
1051
+ .seedprod-publish-options .col-sm-4:nth-child(2) {
1052
+ padding-right: 7px;
1053
+ padding-left: 7px;
1054
+ }
1055
+ .seedprod-publish-options .col-sm-4:last-child {
1056
+ padding-left: 7px;
1057
+ }
1058
+ #seedprod-publish-options-details {
1059
+ padding: 30px 20px;
1060
+ background: #fff;
1061
+ border: 1px solid #f1f1f1;
1062
+ border-radius: 8px;
1063
+ margin: 0 0px;
1064
+ }
1065
+ #seedprod-publish-options-details h4 {
1066
+ font-size: 18px;
1067
+ color: #2d2d2d;
1068
+ margin: 0 0 40px 0;
1069
+ font-weight: 400;
1070
+ }
1071
+ #seedprod-publish-options-details ol {
1072
+ margin: 0;
1073
+ margin-left: 15px;
1074
+ }
1075
+ #seedprod-publish-options-details li {
1076
+ color: #666;
1077
+ font-size: 14px;
1078
+ margin-bottom: 10px;
1079
+ }
1080
+ #seedprod-publish-options-details p {
1081
+ margin: 40px 0 15px 0;
1082
+ color: #666;
1083
+ font-size: 14px;
1084
+ }
1085
+ #seedprod-publish-options-details .fa-copy {
1086
+ color: #999;
1087
+ }
1088
+ #seedprod-publish-options-details .input-group-addon {
1089
+ padding: 2px 10px 0;
1090
+ cursor: pointer;
1091
+ }
1092
+ #seedprod-publish-options-details .input-group-addon,
1093
+ #seedprod-publish-options-details .form-control {
1094
+ height: 40px;
1095
+ }
1096
+ #seedprod-publish-options-details .form-control {
1097
+ width: 215px;
1098
+ }
1099
+ #seedprod-publish-options-details .btn {
1100
+ height: 40px;
1101
+ margin-left: 7px;
1102
+ }
1103
+ .seedprod-sidebar-nav {
1104
+ padding: 17px 0;
1105
+ text-align: center;
1106
+ border-bottom: 1px solid #3d3d3d;
1107
+ }
1108
+ .seedprod-sidebar-nav:hover {
1109
+ color: #fff;
1110
+ }
1111
+ .seedprod-sidebar-nav span {
1112
+ display: block;
1113
+ padding-top: 5px;
1114
+ font-size: 14px;
1115
+ }
1116
+ .seedprod-sidebar-nav i {
1117
+ font-size: 25px;
1118
+ }
1119
+ .seedprod-enter-active {
1120
+ -webkit-transition: opacity 0.3s;
1121
+ transition: opacity 0.3s;
1122
+ }
1123
+ .seedprod-leave-active {
1124
+ opacity: 0;
1125
+ }
1126
+ .seedprod-enter,
1127
+ .seedprod-leave-to {
1128
+ opacity: 0;
1129
+ }
1130
+ .fade-enter-active {
1131
+ -webkit-transition: opacity 1s;
1132
+ transition: opacity 1s;
1133
+ }
1134
+ .fade-leave-active {
1135
+ opacity: 0;
1136
+ }
1137
+ #seedprod-sidebar-nav-wrapper > div {
1138
+ cursor: pointer;
1139
+ }
1140
+ .seedprod-prize {
1141
+ margin-bottom: 13px;
1142
+ }
1143
+ .seedprod-prize .btn {
1144
+ white-space: nowrap;
1145
+ overflow: hidden;
1146
+ text-overflow: ellipsis;
1147
+ }
1148
+ .toast {
1149
+ opacity: 1 !important;
1150
+ }
1151
+ .seedprod-install-option {
1152
+ cursor: pointer;
1153
+ }
1154
+ .seedprod .vue-swatches__row {
1155
+ height: 24px;
1156
+ }
1157
+ .seedprod .vue-swatches__container {
1158
+ white-space: normal;
1159
+ }
1160
+ .seedprod .vue-swatches__wrapper {
1161
+ width: 230px !important;
1162
+ }
1163
+ .seedprod .input-group-addon {
1164
+ padding: 2px 6px 0;
1165
+ }
1166
+ .seedprod .vue-swatches .vue-swatches__trigger {
1167
+ width: 20px !important;
1168
+ height: 20px !important;
1169
+ }
1170
+ .seedprod .mx-input,
1171
+ .seedprod .mx-input-append,
1172
+ .seedprod .mx-calendar {
1173
+ color: #555 !important;
1174
+ }
1175
+ .seedprod .mx-input-append {
1176
+ padding: 7px;
1177
+ }
1178
+ .seedprod .mx-calendar .actived {
1179
+ color: #fff !important;
1180
+ }
1181
+ .seedprod .mx-datepicker-popup {
1182
+ margin-top: -10px;
1183
+ }
1184
+ .seedprod .time-picker input.display-time {
1185
+ border: 1px solid #ddd;
1186
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
1187
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07);
1188
+ height: 34px;
1189
+ border-radius: 4px;
1190
+ padding: 6px 10px;
1191
+ font-size: 14px;
1192
+ width: 100%;
1193
+ color: #6a6a6a;
1194
+ }
1195
+ .time-picker .dropdown ul li.active,
1196
+ .time-picker .dropdown ul li.active:hover {
1197
+ background: #f3510a;
1198
+ color: #fff;
1199
+ }
1200
+ .seedprod-builder .time-select:after {
1201
+ font-family: "Font Awesome 5 Free";
1202
+ font-weight: 900;
1203
+ content: "\f017";
1204
+ color: #a6a6a6;
1205
+ position: absolute;
1206
+ right: 23px;
1207
+ top: 11px;
1208
+ font-size: 13px;
1209
+ }
1210
+ .time-select select.form-control {
1211
+ -webkit-appearance: none;
1212
+ -moz-appearance: none;
1213
+ appearance: none;
1214
+ }
1215
+ .mx-panel-date td.today {
1216
+ color: #f3510a !important;
1217
+ }
1218
+ .mx-calendar-content .cell.actived {
1219
+ color: #fff;
1220
+ background-color: #f3510a !important;
1221
+ }
1222
+ .seedprod-img-preview {
1223
+ position: relative;
1224
+ display: inline-block;
1225
+ }
1226
+ .seedprod-img-preview i {
1227
+ position: absolute;
1228
+ top: 4px;
1229
+ right: -6px;
1230
+ }
1231
+ .seedprod-img-preview img {
1232
+ max-width: 100%;
1233
+ max-height: 280px;
1234
+ }
1235
+ /* Slideshow BG Settings */
1236
+ .sp-slideshow-bg-settings .seedprod-img-preview {
1237
+ cursor: move;
1238
+ }
1239
+ .sp-slideshow-bg-settings .seedprod-img-preview img {
1240
+ max-width: 150px;
1241
+ max-height: 150px;
1242
+ }
1243
+ .sp-slideshow-bg-settings .seedprod-img-preview button:nth-of-type(2) {
1244
+ display: none;
1245
+ }
1246
+ .sp-slideshow-bg-settings .sp-slide .sp-remove-slide-btn {
1247
+ visibility: hidden;
1248
+ }
1249
+ .sp-slideshow-bg-settings .sp-slide:hover .sp-remove-slide-btn {
1250
+ visibility: visible;
1251
+ }
1252
+ .seedprod textarea.form-control {
1253
+ height: auto;
1254
+ }
1255
+ .seedprod :focus {
1256
+ outline: none;
1257
+ }
1258
+ .seedprod-modal-mask {
1259
+ position: fixed;
1260
+ z-index: 9998;
1261
+ top: 0;
1262
+ left: 0;
1263
+ width: 100%;
1264
+ height: 100%;
1265
+ background-color: rgba(0, 0, 0, 0.5);
1266
+ display: table;
1267
+ -webkit-transition: opacity 0.3s ease;
1268
+ transition: opacity 0.3s ease;
1269
+ }
1270
+ .seedprod-modal-wrapper {
1271
+ display: table-cell;
1272
+ vertical-align: middle;
1273
+ }
1274
+ .seedprod-modal-header h3 {
1275
+ margin-top: 0;
1276
+ }
1277
+ .seedprod-modal-header h3 {
1278
+ font-size: 20px;
1279
+ margin-top: 0;
1280
+ margin: 0;
1281
+ padding: 0;
1282
+ background: #fff;
1283
+ display: block;
1284
+ }
1285
+ .seedprod-modal-body {
1286
+ margin: 20px 0;
1287
+ }
1288
+ .seedprod-modal-enter {
1289
+ opacity: 0;
1290
+ }
1291
+ .seedprod-modal-leave-active {
1292
+ opacity: 0;
1293
+ }
1294
+ .seedprod-modal-enter .seedprod-modal-container,
1295
+ .seedprod-modal-leave-active .seedprod-modal-container {
1296
+ -webkit-transform: scale(1.1);
1297
+ transform: scale(1.1);
1298
+ }
1299
+ .seedprod .btn-prize {
1300
+ text-align: left;
1301
+ border-left: none;
1302
+ border-right: none;
1303
+ border-radius: 0;
1304
+ width: 213px;
1305
+ font-size: 13px;
1306
+ color: #666;
1307
+ }
1308
+ .seedprod .btn-prize-sngle {
1309
+ text-align: left;
1310
+ width: 213px;
1311
+ font-size: 13px;
1312
+ color: #666;
1313
+ }
1314
+ .seedprod .btn-prize,
1315
+ .seedprod .btn-prize-single {
1316
+ background: #fff !important;
1317
+ color: #333 !important;
1318
+ border-color: #efefef !important;
1319
+ padding-left: 2px;
1320
+ padding-right: 2px;
1321
+ }
1322
+ .seedprod .btn-add-prize,
1323
+ .seedprod .btn-prize-single {
1324
+ font-size: 14px;
1325
+ }
1326
+ .seedprod .btn-prize-single {
1327
+ padding-left: 10px;
1328
+ padding-right: 10px;
1329
+ }
1330
+ .seedprod .btn-prize::before {
1331
+ font-family: "Font Awesome 5 Free";
1332
+ font-weight: 900;
1333
+ content: "\f303";
1334
+ float: right;
1335
+ color: #c7c7c7;
1336
+ }
1337
+ .seedprod .btn-prize-single::before {
1338
+ font-family: "Font Awesome 5 Free";
1339
+ font-weight: 900;
1340
+ content: "\f303";
1341
+ float: right;
1342
+ color: #c7c7c7;
1343
+ }
1344
+ .seedprod .btn-prize:active::before,
1345
+ .seedprod .btn-prize:hover::before,
1346
+ .seedprod .btn-prize-single:hover::before {
1347
+ color: #333 !important;
1348
+ }
1349
+ .seedprod .btn-my-entry-option {
1350
+ white-space: nowrap;
1351
+ overflow: hidden;
1352
+ text-overflow: ellipsis;
1353
+ text-align: left;
1354
+ }
1355
+ .seedprod-prize .input-group-addon:hover {
1356
+ color: #333;
1357
+ }
1358
+ .seedprod-prize-close,
1359
+ .seedprod-block-option-remove {
1360
+ cursor: pointer;
1361
+ }
1362
+ .seedprod-prize-move,
1363
+ .seedprod-block-option-move {
1364
+ cursor: -webkit-grab;
1365
+ cursor: grab;
1366
+ }
1367
+ .seedprod-prize-move:active,
1368
+ .seedprod-block-option-move:active {
1369
+ cursor: -webkit-grabbing;
1370
+ cursor: grabbing;
1371
+ }
1372
+ .seedprod .btn-entry-option {
1373
+ margin-bottom: 8px;
1374
+ position: relative;
1375
+ padding-left: 45px;
1376
+ height: 40px;
1377
+ }
1378
+ .seedprod .btn-entry-option:active,
1379
+ .seedprod .btn-entry-option:focus {
1380
+ background-color: #fff !important;
1381
+ }
1382
+ .btn-entry-option .seedprod-block-option-icon {
1383
+ position: absolute;
1384
+ left: 0;
1385
+ height: 40px;
1386
+ padding-top: 9px;
1387
+ padding-left: 10px;
1388
+ padding-right: 10px;
1389
+ width: 35px;
1390
+ border-top-left-radius: 3px;
1391
+ border-bottom-left-radius: 3px;
1392
+ }
1393
+ .btn-entry-option .fa-plus,
1394
+ .btn-entry-option .fa-sync-alt {
1395
+ position: absolute;
1396
+ right: 10px;
1397
+ color: #c7c7c7;
1398
+ top: 12px;
1399
+ }
1400
+ #seedprod-add-actions h3 {
1401
+ color: #4F394D;
1402
+ font-weight: 600;
1403
+ font-size: 16px;
1404
+ margin: 0px 20px;
1405
+ padding: 15px 0;
1406
+ }
1407
+ /* scroll modal */
1408
+ .seedprod-modal-mask {
1409
+ position: fixed !important;
1410
+ z-index: 99999 !important;
1411
+ top: 0px !important;
1412
+ right: 0px !important;
1413
+ bottom: 0px !important;
1414
+ left: 0px !important;
1415
+ overflow-y: auto !important;
1416
+ -webkit-transform: translate3d(0, 0, 0) !important;
1417
+ transform: translate3d(0, 0, 0) !important;
1418
+ display: -webkit-box !important;
1419
+ display: -ms-flexbox !important;
1420
+ display: flex !important;
1421
+ -webkit-transition: opacity 0.3s ease;
1422
+ transition: opacity 0.3s ease;
1423
+ }
1424
+ .seedprod-modal-wrapper {
1425
+ display: -webkit-box !important;
1426
+ display: -ms-flexbox !important;
1427
+ display: flex !important;
1428
+ margin: auto !important;
1429
+ width: 100% !important;
1430
+ padding-left: 80px;
1431
+ padding-right: 80px;
1432
+ }
1433
+ .seedprod-modal-container {
1434
+ width: 600px;
1435
+ background-color: #ffffff;
1436
+ -webkit-box-flex: 1 !important;
1437
+ -ms-flex: 1 !important;
1438
+ flex: 1 !important;
1439
+ width: 100% !important;
1440
+ margin: 100px auto;
1441
+ padding: 0 ;
1442
+ background-color: #fff;
1443
+ border-radius: 10px;
1444
+ -webkit-box-shadow: 0 2px 8px rgba(35, 8, 32, 0.6);
1445
+ box-shadow: 0 2px 8px rgba(35, 8, 32, 0.6);
1446
+ -webkit-transition: all 0.3s ease;
1447
+ transition: all 0.3s ease;
1448
+ }
1449
+ .seedprod-modal-container .seedprod-modal-body {
1450
+ margin: 0;
1451
+ }
1452
+ .seedprod-modal-container .sp-modal-left {
1453
+ border-top-left-radius: 10px;
1454
+ border-bottom-left-radius: 10px;
1455
+ }
1456
+ .seedprod-modal-container .sp-modal-right {
1457
+ border-top-right-radius: 10px;
1458
+ border-bottom-right-radius: 10px;
1459
+ }
1460
+ .seedprod-modal-header h3 {
1461
+ margin-top: 0;
1462
+ }
1463
+ .seedprod-modal-body {
1464
+ margin: 20px 0;
1465
+ }
1466
+ .seedprod-modal-enter,
1467
+ .seedprod-modal-leave {
1468
+ opacity: 0;
1469
+ }
1470
+ .seedprod-modal-enter .seedprod-modal-container,
1471
+ .seedprod-modal-leave .seedprod-modal-container {
1472
+ -webkit-transform: scale(1.1);
1473
+ transform: scale(1.1);
1474
+ }
1475
+ .seedprod input[type=checkbox],
1476
+ .seedprod input[type=radio] {
1477
+ margin: 0px 0 0;
1478
+ }
1479
+ .seedprod-sidebar-nav.active:before {
1480
+ position: absolute;
1481
+ right: -10px;
1482
+ margin-top: 28px;
1483
+ display: block;
1484
+ width: 20px;
1485
+ height: 20px;
1486
+ content: '';
1487
+ background-color: #ffffff;
1488
+ -webkit-transform: rotate(45deg);
1489
+ transform: rotate(45deg);
1490
+ border-bottom: 1px solid transparent;
1491
+ border-right: 1px solid rgba(0, 0, 0, 0.05);
1492
+ }
1493
+ .seedprod .modal {
1494
+ z-index: 99999;
1495
+ background-color: rgba(0, 0, 0, 0.5);
1496
+ }
1497
+ .seedprod .modal-dialog {
1498
+ margin: 80px auto;
1499
+ }
1500
+ #seedprod-upgrade-ribbon-wrapper {
1501
+ position: fixed;
1502
+ z-index: 1;
1503
+ right: 0;
1504
+ bottom: 0;
1505
+ overflow: hidden;
1506
+ height: 110px;
1507
+ width: 150px;
1508
+ }
1509
+ #seedprod-upgrade-ribbon {
1510
+ position: absolute;
1511
+ z-index: 1;
1512
+ right: -48px;
1513
+ bottom: -15px;
1514
+ height: 75px;
1515
+ width: 150px;
1516
+ font-size: 14px;
1517
+ font-weight: 700;
1518
+ color: #fff;
1519
+ text-transform: uppercase;
1520
+ text-align: right;
1521
+ line-height: 20px;
1522
+ -webkit-transform: rotate(-45deg);
1523
+ transform: rotate(-45deg);
1524
+ cursor: pointer;
1525
+ display: block;
1526
+ background: #4CAF50;
1527
+ -webkit-box-shadow: inset 0 3px 15px -5px #000;
1528
+ box-shadow: inset 0 3px 15px -5px #000;
1529
+ }
1530
+ #seedprod-upgrade-ribbon span {
1531
+ -webkit-transform: rotate(45deg);
1532
+ transform: rotate(45deg);
1533
+ position: absolute;
1534
+ bottom: 25px;
1535
+ right: 43px;
1536
+ }
1537
+ .seedprod-pro #seedprod-upgrade-ribbon-wrapper {
1538
+ display: none;
1539
+ }
1540
+ .seedprod .ribbon {
1541
+ position: absolute;
1542
+ right: 0px;
1543
+ top: 0px;
1544
+ z-index: 1;
1545
+ overflow: hidden;
1546
+ width: 75px;
1547
+ height: 75px;
1548
+ text-align: left;
1549
+ }
1550
+ .ribbon span {
1551
+ font-size: 8px;
1552
+ font-weight: 700;
1553
+ color: #fff;
1554
+ text-transform: uppercase;
1555
+ text-align: center;
1556
+ line-height: 20px;
1557
+ -webkit-transform: rotate(45deg);
1558
+ transform: rotate(45deg);
1559
+ width: 100px;
1560
+ display: block;
1561
+ background: #79a70a;
1562
+ background: -webkit-gradient(linear, left top, left bottom, from(#ff9c41), to(#ff9c41));
1563
+ background: linear-gradient(#ff9c41 0%, #ff9c41 100%);
1564
+ -webkit-box-shadow: 0 3px 20px -5px #000;
1565
+ box-shadow: 0 3px 20px -5px #000;
1566
+ position: absolute;
1567
+ top: 18px;
1568
+ right: -21px;
1569
+ }
1570
+ .seedprod-img-preview i {
1571
+ cursor: pointer;
1572
+ }
1573
+ .seedprod .help-block {
1574
+ font-size: 12px;
1575
+ }
1576
+ .seedprod .has-error .form-control {
1577
+ border-color: #ff0000 !important;
1578
+ }
1579
+ .seedprod-builder .input-group-poll-choices {
1580
+ margin-bottom: 10px;
1581
+ position: relative;
1582
+ }
1583
+ .seedprod-builder .input-group-poll-choices i {
1584
+ position: absolute ;
1585
+ top: 13px;
1586
+ right: 7px;
1587
+ color: #c7c7c7;
1588
+ cursor: pointer;
1589
+ }
1590
+ .seedprod-winner {
1591
+ background-color: rgba(241, 71, 13, 0.08) !important;
1592
+ background-image: url(../img/confetti-light.png);
1593
+ background-repeat: no-repeat;
1594
+ background-size: 200px;
1595
+ background-position: 23px -48px;
1596
+ font-weight: bold;
1597
+ }
1598
+ .seedprod-invalid-entry {
1599
+ opacity: 0.4;
1600
+ }
1601
+ .error {
1602
+ color: red !important;
1603
+ }
1604
+ .seedprod-pro #wpfooter {
1605
+ display: none;
1606
+ }
1607
+ #footer-upgrade {
1608
+ display: none;
1609
+ }
1610
+ #email_integrations {
1611
+ width: 100%;
1612
+ }
1613
+ html {
1614
+ background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;
1615
+ background-repeat: no-repeat !important;
1616
+ background-position: center center !important;
1617
+ height: 100%;
1618
+ }
1619
+ #email_integrations_wrapper {
1620
+ background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==');
1621
+ background-repeat: no-repeat;
1622
+ background-position: center center;
1623
+ }
1624
+ .iframe_loading {
1625
+ background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;
1626
+ background-repeat: no-repeat !important;
1627
+ background-position: center 100px !important;
1628
+ height: 100%;
1629
+ }
1630
+ .results_loading {
1631
+ background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;
1632
+ background-repeat: no-repeat !important;
1633
+ background-position: center 50px !important;
1634
+ height: 100%;
1635
+ }
1636
+ .seedprod .navbar-right {
1637
+ margin-right: 0px !important;
1638
+ }
1639
+ .seedprod_page_seedprod_account .seedprod .radio label,
1640
+ .seedprod-pro_page_seedprod_account .seedprod .radio label {
1641
+ padding-left: 0;
1642
+ }
1643
+ .seedprod .navbar-header {
1644
+ float: left !important;
1645
+ }
1646
+ .seedprod .navbar-collapse.collapse {
1647
+ display: block!important;
1648
+ }
1649
+ .seedprod .navbar-nav > li,
1650
+ .seedprod .navbar-nav {
1651
+ float: left !important;
1652
+ }
1653
+ .seedprod .navbar-right {
1654
+ float: right!important;
1655
+ }
1656
+ .seedprod-pro-feature {
1657
+ opacity: 0.65;
1658
+ }
1659
+ .seedprod-pro-upgrade {
1660
+ background: rgba(4, 4, 4, 0.6);
1661
+ position: fixed;
1662
+ top: 0;
1663
+ left: 0;
1664
+ z-index: 99999;
1665
+ display: table;
1666
+ width: 100%;
1667
+ height: 100%;
1668
+ }
1669
+ .seedprod-pro-upgrade-row {
1670
+ display: table-row;
1671
+ width: 100%;
1672
+ }
1673
+ .seedprod-pro-upgrade-cell {
1674
+ display: table-cell;
1675
+ vertical-align: middle;
1676
+ }
1677
+ .seedprod-pro-upgrade-content {
1678
+ background-color: #fff;
1679
+ border-radius: 4px;
1680
+ max-width: 500px;
1681
+ margin: auto;
1682
+ padding: 20px;
1683
+ text-align: center;
1684
+ }
1685
+ .seedprod-pro-upgrade-content .btn {
1686
+ text-transform: uppercase;
1687
+ }
1688
+ .handdrawn-underline {
1689
+ border-bottom: 2px solid #ff9948;
1690
+ line-height: 0.9;
1691
+ display: inline-block;
1692
+ }
1693
+ /* Builder Preview */
1694
+ #seedprod-wrapper {
1695
+ max-width: 480px;
1696
+ margin: auto;
1697
+ text-align: center;
1698
+ border-radius: 6px;
1699
+ color: #696969;
1700
+ background-color: #fbfbfb;
1701
+ -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
1702
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
1703
+ }
1704
+ #seedprod-wrapper .seedprod-td {
1705
+ display: table-cell;
1706
+ vertical-align: middle;
1707
+ padding: 0 3px;
1708
+ height: 68px;
1709
+ }
1710
+ #seedprod-page-footer {
1711
+ padding: 15px 20px;
1712
+ font-size: 11px;
1713
+ }
1714
+ #seedprod-page-footer a {
1715
+ color: #9c9c9c !important;
1716
+ }
1717
+ #seedprod-page-entries {
1718
+ padding: 11px 0px 0 0;
1719
+ color: #2d2d2d;
1720
+ }
1721
+ #seedprod-page-entries p > strong {
1722
+ font-size: 16px;
1723
+ }
1724
+ #seedprod-page-entries p {
1725
+ margin-bottom: 11px;
1726
+ }
1727
+ #seedprod-page-login {
1728
+ padding: 15px 0px;
1729
+ font-size: 14px;
1730
+ color: #666;
1731
+ }
1732
+ #seedprod-page-login .btn-primary {
1733
+ color: #fff;
1734
+ background-color: #36ad39;
1735
+ border-color: #36ad39;
1736
+ }
1737
+ #seedprod-page-login .form-control {
1738
+ height: 40px;
1739
+ margin-right: 8px;
1740
+ width: 165px;
1741
+ }
1742
+ #seedprod-page-login .btn {
1743
+ padding: 9px 20px;
1744
+ }
1745
+ #seedprod-page-login i {
1746
+ color: #fff;
1747
+ }
1748
+ #seedprod-page-login #login-ft-txt {
1749
+ margin-top: 15px;
1750
+ font-size: 12px;
1751
+ }
1752
+ #seedprod-page-form {
1753
+ background: #fff;
1754
+ border-bottom: 1px solid #f2f2f2;
1755
+ padding: 5px;
1756
+ }
1757
+ #seedprod-wrapper .seedprod-top-sep {
1758
+ border-right: 1px solid #f2f2f2;
1759
+ }
1760
+ #seedprod-wrapper .seedprod-over-txt {
1761
+ font-size: 20px;
1762
+ line-height: 0.9;
1763
+ font-weight: bold;
1764
+ margin-bottom: 5px;
1765
+ display: inline-block;
1766
+ }
1767
+ #seedprod-wrapper .seedprod-under-txt {
1768
+ font-size: 12px;
1769
+ line-height: 1;
1770
+ display: block;
1771
+ }
1772
+ .seedprod-drag-source {
1773
+ margin-bottom: -8px;
1774
+ margin-right: -8px;
1775
+ }
1776
+ #sp-blocks-editing {
1777
+ background: #DD4A1F;
1778
+ color: #fff;
1779
+ height: 56px;
1780
+ line-height: 1;
1781
+ font-weight: 600;
1782
+ font-size: 16px;
1783
+ text-transform: capitalize;
1784
+ }
1785
+ #sp-blocks-editing span {
1786
+ display: block;
1787
+ opacity: 0.5;
1788
+ text-transform: uppercase;
1789
+ font-weight: 600;
1790
+ font-size: 10px;
1791
+ }
1792
+ .sp-block-type-global {
1793
+ background: #E4E1E4 !important;
1794
+ color: #4F394D !important;
1795
+ }
1796
+ .sp-block-type-row {
1797
+ background: #3F5FD1 !important;
1798
+ }
1799
+ .sp-block-type-section {
1800
+ background: #7036BB !important;
1801
+ }
1802
+ .sp-sidebar-headers .sp-w-5 {
1803
+ width: 1.5rem !important;
1804
+ }
1805
+ #sp-blocks-edit-sections {
1806
+ margin-bottom: 16px;
1807
+ margin-left: -20px;
1808
+ margin-right: -20px;
1809
+ }
1810
+ #sp-blocks-edit-sections div {
1811
+ display: -webkit-box;
1812
+ display: -ms-flexbox;
1813
+ display: flex;
1814
+ padding-top: 18px;
1815
+ padding-bottom: 18px;
1816
+ -webkit-box-pack: center;
1817
+ -ms-flex-pack: center;
1818
+ justify-content: center;
1819
+ -webkit-box-align: center;
1820
+ -ms-flex-align: center;
1821
+ align-items: center;
1822
+ font-weight: 600;
1823
+ font-size: 13px;
1824
+ }
1825
+ #sp-blocks-edit-sections i {
1826
+ margin-right: 6px;
1827
+ }
1828
+ #sp-blocks-edit-sections div.sp-secondary {
1829
+ background: #DEDADE;
1830
+ color: #7B6B7A;
1831
+ }
1832
+ #sp-blocks-sections div {
1833
+ display: -webkit-box;
1834
+ display: -ms-flexbox;
1835
+ display: flex;
1836
+ padding-top: 18px;
1837
+ padding-bottom: 18px;
1838
+ -webkit-box-pack: center;
1839
+ -ms-flex-pack: center;
1840
+ justify-content: center;
1841
+ -webkit-box-align: center;
1842
+ -ms-flex-align: center;
1843
+ align-items: center;
1844
+ font-weight: 600;
1845
+ font-size: 14px;
1846
+ }
1847
+ #sp-blocks-sections i {
1848
+ margin-right: 6px;
1849
+ }
1850
+ #sp-blocks-sections div.sp-secondary {
1851
+ background: #DEDADE;
1852
+ color: #7B6B7A;
1853
+ }
1854
+ .seedprod-block-option:hover {
1855
+ background: #DD4A1F;
1856
+ border-radius: 5px;
1857
+ color: #fff;
1858
+ }
1859
+ .seedprod-block-option {
1860
+ background: #EDEBED;
1861
+ width: 88px;
1862
+ height: 85px;
1863
+ margin-bottom: 8px;
1864
+ margin-right: 8px;
1865
+ display: -webkit-box;
1866
+ display: -ms-flexbox;
1867
+ display: flex;
1868
+ -webkit-box-pack: center;
1869
+ -ms-flex-pack: center;
1870
+ justify-content: center;
1871
+ border-radius: 5px;
1872
+ }
1873
+ .seedprod-block-option i {
1874
+ margin-top: 24px;
1875
+ font-size: 20px !important;
1876
+ }
1877
+ .seedprod-block-option button {
1878
+ display: -webkit-box;
1879
+ display: -ms-flexbox;
1880
+ display: flex;
1881
+ -webkit-box-orient: vertical;
1882
+ -webkit-box-direction: normal;
1883
+ -ms-flex-direction: column;
1884
+ flex-direction: column;
1885
+ font-size: 11px;
1886
+ -webkit-box-pack: center;
1887
+ -ms-flex-pack: center;
1888
+ justify-content: center;
1889
+ -webkit-box-align: center;
1890
+ -ms-flex-align: center;
1891
+ align-items: center;
1892
+ width: 100%;
1893
+ height: 100%;
1894
+ cursor: move;
1895
+ }
1896
+ .seedprod-block-option span {
1897
+ -webkit-box-flex: 1;
1898
+ -ms-flex: 1;
1899
+ flex: 1;
1900
+ display: -webkit-box;
1901
+ display: -ms-flexbox;
1902
+ display: flex;
1903
+ -webkit-box-align: center;
1904
+ -ms-flex-align: center;
1905
+ align-items: center;
1906
+ }
1907
+ #seedprod-wrapper .seedprod-block-option-details {
1908
+ background: #fff;
1909
+ border-top: 1px solid #f2f2f2;
1910
+ color: #707070;
1911
+ position: relative;
1912
+ padding: 20px 0;
1913
+ display: table-cell;
1914
+ width: 480px;
1915
+ text-align: left;
1916
+ padding-left: 74px;
1917
+ font-size: 16px;
1918
+ cursor: pointer;
1919
+ }
1920
+ .seedprod-entry-drag-area {
1921
+ width: 582px;
1922
+ margin-left: -34px;
1923
+ }
1924
+ .seedprod-entry-drag-area > div {
1925
+ width: 100%;
1926
+ margin: auto;
1927
+ }
1928
+ #seedprod-wrapper .seedprod-block-option-move:hover {
1929
+ color: #333;
1930
+ }
1931
+ #seedprod-wrapper .seedprod-block-option-move {
1932
+ background: #fcfcfc;
1933
+ border: 1px solid #f2f2f2;
1934
+ color: #b3b3b3;
1935
+ padding: 18px 0 ;
1936
+ width: 34px;
1937
+ display: table-cell;
1938
+ visibility: hidden;
1939
+ border-top-left-radius: 3px;
1940
+ border-bottom-left-radius: 3px;
1941
+ text-align: center;
1942
+ position: relative;
1943
+ }
1944
+ #seedprod-wrapper .seedprod-block-option-edit {
1945
+ background: #fcfcfc;
1946
+ border: 1px solid #f2f2f2;
1947
+ color: #b3b3b3;
1948
+ border-right: none;
1949
+ padding: 18px 0;
1950
+ width: 34px;
1951
+ display: table-cell;
1952
+ visibility: hidden;
1953
+ }
1954
+ #seedprod-wrapper .seedprod-block-option-edit:hover {
1955
+ color: #333;
1956
+ }
1957
+ #seedprod-wrapper .seedprod-block-option-value {
1958
+ border: 1px solid #f2f2f2;
1959
+ color: #9b9b9b;
1960
+ padding: 2px;
1961
+ padding-top: 5px;
1962
+ width: 30px;
1963
+ height: 30px;
1964
+ right: 24px;
1965
+ position: absolute;
1966
+ top: 50%;
1967
+ -webkit-transform: translateY(-50%);
1968
+ transform: translateY(-50%);
1969
+ font-size: 13px;
1970
+ text-align: center;
1971
+ }
1972
+ .seedprod-block-option-icon {
1973
+ border: 1px solid #f2f2f2;
1974
+ padding: 2px;
1975
+ padding-left: 3px;
1976
+ padding-top: 4px;
1977
+ width: 29px;
1978
+ height: 29px;
1979
+ left: 24px;
1980
+ position: absolute;
1981
+ top: 50%;
1982
+ -webkit-transform: translateY(-50%);
1983
+ transform: translateY(-50%);
1984
+ font-size: 14px;
1985
+ text-align: center;
1986
+ }
1987
+ .seedprod-block-option-icon::before {
1988
+ -webkit-font-smoothing: antialiased;
1989
+ }
1990
+ #seedprod-wrapper .seedprod-block-option-remove:hover {
1991
+ color: #333;
1992
+ }
1993
+ #seedprod-wrapper .seedprod-block-option-remove {
1994
+ background: #fcfcfc;
1995
+ border: 1px solid #f2f2f2;
1996
+ color: #b3b3b3;
1997
+ padding: 18px 0;
1998
+ width: 34px;
1999
+ display: table-cell;
2000
+ visibility: hidden;
2001
+ border-top-right-radius: 3px;
2002
+ border-bottom-right-radius: 3px;
2003
+ text-align: center;
2004
+ }
2005
+ .show_hidden {
2006
+ visibility: visible !important;
2007
+ }
2008
+ .seedprod-entry-drag-area > div:last-child .seedprod-block-option-details {
2009
+ border-bottom: 1px solid #f2f2f2;
2010
+ }
2011
+ #seedprod-wrapper .seedprod-block-option-edit {
2012
+ cursor: pointer;
2013
+ }
2014
+ #seedprod-wrapper .seedprod-page .equal {
2015
+ display: -webkit-box;
2016
+ display: -ms-flexbox;
2017
+ display: flex;
2018
+ display: -webkit-flex;
2019
+ -ms-flex-wrap: wrap;
2020
+ flex-wrap: wrap;
2021
+ }
2022
+ #seedprod-wrapper .row,
2023
+ #seedprod-wrapper .seedprod .row {
2024
+ margin-left: 0;
2025
+ margin-right: 0;
2026
+ }
2027
+ #seedprod-prize-info .col-md-12 {
2028
+ padding: 0;
2029
+ background: #fff;
2030
+ }
2031
+ #seedprod-wrapper .col-xs-4,
2032
+ #seedprod-wrapper .seedprod .col-xs-4 {
2033
+ padding-left: 0;
2034
+ padding-right: 0;
2035
+ }
2036
+ #seedprod-countdown,
2037
+ #seedprod-total-entries,
2038
+ #seedprod-my-entires {
2039
+ text-align: center;
2040
+ display: table;
2041
+ width: 100%;
2042
+ min-height: 40px;
2043
+ }
2044
+ #seedprod-countdown {
2045
+ font-size: 16px;
2046
+ }
2047
+ #seedprod-wrapper .slider-btn-left {
2048
+ background: transparent !important;
2049
+ }
2050
+ #seedprod-wrapper .slider-btn-right {
2051
+ background: transparent !important;
2052
+ }
2053
+ #seedprod-wrapper .slider-icon {
2054
+ -webkit-box-shadow: rgba(0, 0, 0, 0.3) -1px 1px 0px;
2055
+ box-shadow: rgba(0, 0, 0, 0.3) -1px 1px 0px;
2056
+ }
2057
+ #seedprod-wrapper .slider-indicator-icon {
2058
+ -webkit-box-shadow: rgba(255, 255, 255, 0.76) 0 0 2px;
2059
+ box-shadow: rgba(255, 255, 255, 0.76) 0 0 2px;
2060
+ width: 8px;
2061
+ height: 8px;
2062
+ }
2063
+ #seedprod-wrapper .slider-indicator-active {
2064
+ -webkit-box-shadow: rgba(0, 0, 0, 0.76) 0 0 2px;
2065
+ box-shadow: rgba(0, 0, 0, 0.76) 0 0 2px;
2066
+ width: 7px;
2067
+ height: 7px;
2068
+ }
2069
+ #seedprod-wrapper .slider-indicator-icon {
2070
+ background-color: rgba(0, 0, 0, 0.3) !important;
2071
+ }
2072
+ #seedprod-wrapper .slider-indicator-active {
2073
+ background-color: rgba(255, 255, 255, 0.9) !important;
2074
+ }
2075
+ #seedprod-wrapper #seedprod-prize-info {
2076
+ border-top: 1px solid #f2f2f2;
2077
+ }
2078
+ #seedprod-wrapper h1 {
2079
+ margin: 0;
2080
+ margin-top: 30px;
2081
+ margin-bottom: 10px;
2082
+ font-size: 24px;
2083
+ color: #2d2d2d;
2084
+ font-weight: 700;
2085
+ }
2086
+ #seedprod-wrapper #seedprod-header {
2087
+ margin: 0;
2088
+ padding: 0 40px;
2089
+ margin-bottom: 12px;
2090
+ font-size: 16px;
2091
+ line-height: 1.4;
2092
+ color: #666;
2093
+ }
2094
+ .seedprod .btn-default:hover {
2095
+ color: #222;
2096
+ background-color: #fff;
2097
+ border-color: #bbb;
2098
+ }
2099
+ .seedprod-action-single h3 {
2100
+ margin-left: 0px !important;
2101
+ margin-right: 0px !important;
2102
+ }
2103
+ .seedprod-action-single .seedprod-action-header:first-child {
2104
+ margin-bottom: 0px !important;
2105
+ }
2106
+ .seedprod-sidebar-action-body {
2107
+ padding: 10px 0;
2108
+ -webkit-box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);
2109
+ box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);
2110
+ }
2111
+ .seedprod-action-single .btn-group button {
2112
+ padding: 9px 16px;
2113
+ }
2114
+ .seedprod .btn-group {
2115
+ display: -webkit-box !important;
2116
+ display: -ms-flexbox !important;
2117
+ display: flex !important;
2118
+ }
2119
+ .seedprod .btn-group .btn-default {
2120
+ border-color: #DEDADE !important;
2121
+ }
2122
+ .seedprod-action-single .btn {
2123
+ padding: 8px 12px;
2124
+ }
2125
+ .seedprod-action-single .btn-group .active {
2126
+ background-color: #f1470d !important;
2127
+ color: #fff !important;
2128
+ -webkit-box-shadow: none !important;
2129
+ box-shadow: none !important;
2130
+ }
2131
+ .seedprod-action-header:first-child {
2132
+ border-top: 0 !important;
2133
+ margin-top: 1px !important;
2134
+ margin-bottom: 20px !important;
2135
+ }
2136
+ .seedprod-action-single {
2137
+ padding-top: 0px;
2138
+ padding-bottom: 0px;
2139
+ }
2140
+ .seedprod-block-option-details.active {
2141
+ -webkit-box-shadow: inset 0px 0px 1px 1px #f3510b;
2142
+ box-shadow: inset 0px 0px 1px 1px #f3510b;
2143
+ }
2144
+ .seedprod .has-error .help-block,
2145
+ .seedprod .has-error .control-label,
2146
+ .seedprod .has-error .radio,
2147
+ .seedprod .has-error .checkbox,
2148
+ .seedprod .has-error .radio-inline,
2149
+ .seedprod .has-error .checkbox-inline,
2150
+ .seedprod .has-error.radio label,
2151
+ .seedprod .has-error.checkbox label,
2152
+ .seedprod .has-error.radio-inline label,
2153
+ .seedprod .has-error.checkbox-inline label {
2154
+ color: #ff0000;
2155
+ }
2156
+ /* Tool tips */
2157
+ .seedprod-tooltip {
2158
+ display: block !important;
2159
+ z-index: 99999;
2160
+ }
2161
+ .seedprod-tooltip .tooltip-inner {
2162
+ font-size: 13px;
2163
+ background: #4F394D;
2164
+ color: #fff;
2165
+ border-radius: 6px;
2166
+ padding: 5px 10px 4px;
2167
+ border: 1px solid #4F394D;
2168
+ -webkit-box-shadow: 0 0 3px #4F394D !important;
2169
+ box-shadow: 0 0 3px #4F394D !important;
2170
+ max-width: 250px;
2171
+ width: auto;
2172
+ word-wrap: break-word;
2173
+ }
2174
+ .seedprod-tooltip .tooltip-arrow {
2175
+ width: 0;
2176
+ height: 0;
2177
+ border-style: solid;
2178
+ position: absolute;
2179
+ margin: 5px;
2180
+ border-color: #4F394D;
2181
+ }
2182
+ .seedprod-tooltip[x-placement^="top"] {
2183
+ margin-bottom: 5px;
2184
+ }
2185
+ .seedprod-tooltip[x-placement^="top"] .tooltip-arrow {
2186
+ border-width: 5px 5px 0 5px;
2187
+ border-left-color: transparent !important;
2188
+ border-right-color: transparent !important;
2189
+ border-bottom-color: transparent !important;
2190
+ bottom: -5px;
2191
+ left: calc(50% - 5px);
2192
+ margin-top: 0;
2193
+ margin-bottom: 0;
2194
+ }
2195
+ .seedprod-tooltip[x-placement^="bottom"] {
2196
+ margin-top: 5px;
2197
+ }
2198
+ .seedprod-tooltip[x-placement^="bottom"] .tooltip-arrow {
2199
+ border-width: 0 5px 5px 5px;
2200
+ border-left-color: transparent !important;
2201
+ border-right-color: transparent !important;
2202
+ border-top-color: transparent !important;
2203
+ top: -5px;
2204
+ left: calc(50% - 5px);
2205
+ margin-top: 0;
2206
+ margin-bottom: 0;
2207
+ }
2208
+ .seedprod-tooltip[x-placement^="right"] {
2209
+ margin-left: 5px;
2210
+ }
2211
+ .seedprod-tooltip[x-placement^="right"] .tooltip-arrow {
2212
+ border-width: 5px 5px 5px 0;
2213
+ border-left-color: transparent !important;
2214
+ border-top-color: transparent !important;
2215
+ border-bottom-color: transparent !important;
2216
+ left: -5px;
2217
+ top: calc(50% - 5px);
2218
+ margin-left: 0;
2219
+ margin-right: 0;
2220
+ }
2221
+ .seedprod-tooltip[x-placement^="left"] {
2222
+ margin-right: 5px;
2223
+ }
2224
+ .seedprod-tooltip[x-placement^="left"] .tooltip-arrow {
2225
+ border-width: 5px 0 5px 5px;
2226
+ border-top-color: transparent !important;
2227
+ border-right-color: transparent !important;
2228
+ border-bottom-color: transparent !important;
2229
+ right: -5px;
2230
+ top: calc(50% - 5px);
2231
+ margin-left: 0;
2232
+ margin-right: 0;
2233
+ }
2234
+ .seedprod-tooltip[aria-hidden='true'] {
2235
+ visibility: hidden;
2236
+ opacity: 0;
2237
+ -webkit-transition: opacity 0.15s, visibility 0.15s;
2238
+ transition: opacity 0.15s, visibility 0.15s;
2239
+ }
2240
+ .seedprod-tooltip[aria-hidden='false'] {
2241
+ visibility: visible;
2242
+ opacity: 1;
2243
+ -webkit-transition: opacity 0.15s;
2244
+ transition: opacity 0.15s;
2245
+ }
2246
+ .swal2-container {
2247
+ z-index: 99999 !important;
2248
+ }
2249
+ button.swal-styled {
2250
+ -webkit-box-shadow: none;
2251
+ box-shadow: none;
2252
+ }
2253
+ .swal2-toast {
2254
+ border-radius: 2px !important;
2255
+ border: none !important;
2256
+ }
2257
+ .swal2-toast .swal2-title {
2258
+ display: none !important;
2259
+ }
2260
+ .swal2-toast #swal2-content {
2261
+ padding-left: 10px;
2262
+ font-size: 13px;
2263
+ color: #fff;
2264
+ }
2265
+ .swal2-toast .swal2-image {
2266
+ margin: 0 !important;
2267
+ }
2268
+ .swal2-popup.swal2-toast {
2269
+ -webkit-box-shadow: 0 0 3px rgba(239, 239, 239, 0.45) !important;
2270
+ box-shadow: 0 0 3px rgba(239, 239, 239, 0.45) !important;
2271
+ border-radius: 3px !important;
2272
+ }
2273
+ .swal2-top-end {
2274
+ top: 30px !important;
2275
+ }
2276
+ .seedprod-builder .swal2-top-end {
2277
+ top: 70px !important;
2278
+ }
2279
+ .seedprod-upgrade-popup .swal2-modal {
2280
+ padding: 20px 0px 0px 0px !important;
2281
+ }
2282
+ .swal2-confirm {
2283
+ -webkit-box-shadow: none !important;
2284
+ box-shadow: none !important;
2285
+ }
2286
+ .seedprod-moreinfo-popup .swal2-image {
2287
+ width: 40px;
2288
+ height: 40px;
2289
+ margin: 10px auto !important;
2290
+ }
2291
+ .seedprod-moreinfo-popup .swal2-modal {
2292
+ width: 600px;
2293
+ }
2294
+ .seedprod-moreinfo-popup .swal2-content {
2295
+ font-size: 16px !important;
2296
+ }
2297
+ .seedprod-upgrade-popup .swal2-modal {
2298
+ width: 600px;
2299
+ }
2300
+ .seedprod-upgrade-popup .swal2-image {
2301
+ width: 40px;
2302
+ height: 40px;
2303
+ }
2304
+ .seedprod-upgrade-popup .swal2-title {
2305
+ line-height: 1;
2306
+ color: #230820 !important;
2307
+ font-size: 18px !important;
2308
+ margin: 0 40px 20px 40px!important;
2309
+ }
2310
+ .seedprod-upgrade-popup .swal2-styled.swal2-confirm {
2311
+ background-color: #DD4A1F !important;
2312
+ -webkit-box-shadow: none !important;
2313
+ box-shadow: none !important;
2314
+ }
2315
+ .seedprod-upgrade-popup .swal2-content {
2316
+ color: #fff !important;
2317
+ font-size: 18px !important;
2318
+ line-height: 1.5 !important;
2319
+ padding: 0px 40px 0px 40px !important;
2320
+ }
2321
+ .seedprod-upgrade-popup .swal2-confirm {
2322
+ padding: 15px 28px !important;
2323
+ font-size: 18px !important;
2324
+ margin-bottom: 27px !important;
2325
+ }
2326
+ .seedprod-upgrade-popup .swal2-footer {
2327
+ position: relative;
2328
+ border-top: none !important;
2329
+ color: #2d2d2d !important;
2330
+ font-size: 16px !important;
2331
+ line-height: 1.5 !important;
2332
+ background: #f9ffab !important;
2333
+ padding: 37px 0 37px !important;
2334
+ border-bottom-left-radius: 0.3125em !important;
2335
+ border-bottom-right-radius: 0.3125em !important;
2336
+ }
2337
+ .seedprod-upgrade-popup .fa-check-circle {
2338
+ position: absolute;
2339
+ top: -16px;
2340
+ font-size: 23px;
2341
+ color: #36ad39;
2342
+ background: #fff;
2343
+ border-radius: 50px;
2344
+ padding: 6px;
2345
+ }
2346
+ .swal2-popup .swal2-styled.swal2-cancel {
2347
+ background-color: #DEDADE !important;
2348
+ color: #4F394D !important;
2349
+ }
2350
+ .swal2-popup .swal2-title {
2351
+ font-size: 18px !important;
2352
+ color: #230820 !important;
2353
+ }
2354
+ .swal2-modal .swal2-close {
2355
+ font-size: 1.5em !important;
2356
+ }
2357
+ .vue-popover-theme {
2358
+ z-index: 10;
2359
+ outline: none;
2360
+ }
2361
+ .v-popover .trigger {
2362
+ display: block !important;
2363
+ }
2364
+ .sp-highlight-section {
2365
+ -webkit-box-shadow: inset 0 0 1px 1px #7036BB;
2366
+ box-shadow: inset 0 0 1px 1px #7036BB;
2367
+ position: absolute;
2368
+ width: 100%;
2369
+ height: 100%;
2370
+ top: 0px;
2371
+ left: 0;
2372
+ }
2373
+ .sp-highlight-row {
2374
+ -webkit-box-shadow: inset 0 0 1px 1px #3F5FD1;
2375
+ box-shadow: inset 0 0 1px 1px #3F5FD1;
2376
+ }
2377
+ .sp-highlight-block {
2378
+ -webkit-box-shadow: inset 0 0 1px 1px #dd4a1f;
2379
+ box-shadow: inset 0 0 1px 1px #dd4a1f;
2380
+ }
2381
+ @-webkit-keyframes hightlight_pulse_color {
2382
+ 0% {
2383
+ -webkit-box-shadow: inset 0 0 1px 1px red;
2384
+ box-shadow: inset 0 0 1px 1px red;
2385
+ }
2386
+ 50% {
2387
+ -webkit-box-shadow: inset 0 0 1px 1px #fff;
2388
+ box-shadow: inset 0 0 1px 1px #fff;
2389
+ }
2390
+ 100% {
2391
+ -webkit-box-shadow: inset 0 0 1px 1px #f3510b;
2392
+ box-shadow: inset 0 0 1px 1px #f3510b;
2393
+ }
2394
+ }
2395
+ @keyframes hightlight_pulse_color {
2396
+ 0% {
2397
+ -webkit-box-shadow: inset 0 0 1px 1px red;
2398
+ box-shadow: inset 0 0 1px 1px red;
2399
+ }
2400
+ 50% {
2401
+ -webkit-box-shadow: inset 0 0 1px 1px #fff;
2402
+ box-shadow: inset 0 0 1px 1px #fff;
2403
+ }
2404
+ 100% {
2405
+ -webkit-box-shadow: inset 0 0 1px 1px #f3510b;
2406
+ box-shadow: inset 0 0 1px 1px #f3510b;
2407
+ }
2408
+ }
2409
+ .seedprod-highlight-prize .input-group-addon,
2410
+ .seedprod-highlight-prize .btn-prize,
2411
+ .seedprod-highlight-prize .btn-prize-single {
2412
+ border-color: #f3510a !important;
2413
+ }
2414
+ .seedprod-highlight-option,
2415
+ .seedprod-highlight-option-slider-img {
2416
+ -webkit-box-shadow: inset 0 0 1px 1px #f3510b;
2417
+ box-shadow: inset 0 0 1px 1px #f3510b;
2418
+ position: relative;
2419
+ cursor: pointer;
2420
+ z-index: 9999;
2421
+ }
2422
+ .seedprod-highlight-padding {
2423
+ padding: 2px;
2424
+ }
2425
+ .seedprod-highlight-option-slider-img::before {
2426
+ position: absolute;
2427
+ bottom: 0px;
2428
+ left: -1px;
2429
+ background: #f3510a;
2430
+ padding: 0px 4px;
2431
+ color: rgba(0, 0, 0, 0.5);
2432
+ font-family: "Font Awesome 5 Free";
2433
+ font-weight: 900;
2434
+ content: "\f303";
2435
+ font-size: 13px;
2436
+ z-index: 9;
2437
+ }
2438
+ #seedprod-welcome-video {
2439
+ margin: 30px 0;
2440
+ }
2441
+ #seedprod-welcome-upgrade {
2442
+ margin: 30px 0;
2443
+ }
2444
+ .seedprod-highlight-option::before {
2445
+ position: absolute;
2446
+ bottom: -17px;
2447
+ background: #f3510a;
2448
+ padding: 0px 4px;
2449
+ color: rgba(0, 0, 0, 0.5);
2450
+ font-family: "Font Awesome 5 Free";
2451
+ font-weight: 900;
2452
+ content: "\f303";
2453
+ font-size: 13px;
2454
+ z-index: 9;
2455
+ }
2456
+ #seedprod-install-options button {
2457
+ font-size: 13px;
2458
+ margin-top: 5px;
2459
+ min-width: 250px;
2460
+ display: block;
2461
+ }
2462
+ .seedprod-50 {
2463
+ width: 49% !important;
2464
+ }
2465
+ h1.seedprod-highlight-option::before {
2466
+ bottom: -15px;
2467
+ padding: 1px 4px;
2468
+ }
2469
+ .help_tip {
2470
+ cursor: pointer;
2471
+ padding: 0 5px;
2472
+ font-size: 13px;
2473
+ vertical-align: middle;
2474
+ }
2475
+ /* Make clicks pass-through */
2476
+ #nprogress {
2477
+ pointer-events: none;
2478
+ }
2479
+ #nprogress .bar {
2480
+ background: #f3510a;
2481
+ position: fixed;
2482
+ z-index: 999999;
2483
+ top: 0;
2484
+ left: 0;
2485
+ width: 100%;
2486
+ height: 2px;
2487
+ }
2488
+ /* Fancy blur effect */
2489
+ #nprogress .peg {
2490
+ display: block;
2491
+ position: absolute;
2492
+ right: 0px;
2493
+ width: 100px;
2494
+ height: 100%;
2495
+ -webkit-box-shadow: 0 0 10px #f3510a, 0 0 5px #f3510a;
2496
+ box-shadow: 0 0 10px #f3510a, 0 0 5px #f3510a;
2497
+ opacity: 1;
2498
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
2499
+ transform: rotate(3deg) translate(0px, -4px);
2500
+ }
2501
+ /* Remove these to get rid of the spinner */
2502
+ #nprogress .spinner {
2503
+ display: block;
2504
+ position: fixed;
2505
+ z-index: 1031;
2506
+ top: 15px;
2507
+ right: 15px;
2508
+ }
2509
+ #nprogress .spinner-icon {
2510
+ width: 18px;
2511
+ height: 18px;
2512
+ -webkit-box-sizing: border-box;
2513
+ box-sizing: border-box;
2514
+ z-index: 1031;
2515
+ border: solid 2px transparent;
2516
+ border-top-color: #29d;
2517
+ border-left-color: #29d;
2518
+ border-radius: 50%;
2519
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
2520
+ animation: nprogress-spinner 400ms linear infinite;
2521
+ }
2522
+ .nprogress-custom-parent {
2523
+ overflow: hidden;
2524
+ position: relative;
2525
+ }
2526
+ .nprogress-custom-parent #nprogress .spinner,
2527
+ .nprogress-custom-parent #nprogress .bar {
2528
+ position: absolute;
2529
+ }
2530
+ @-webkit-keyframes nprogress-spinner {
2531
+ 0% {
2532
+ -webkit-transform: rotate(0deg);
2533
+ }
2534
+ 100% {
2535
+ -webkit-transform: rotate(360deg);
2536
+ }
2537
+ }
2538
+ @keyframes nprogress-spinner {
2539
+ 0% {
2540
+ -webkit-transform: rotate(0deg);
2541
+ transform: rotate(0deg);
2542
+ }
2543
+ 100% {
2544
+ -webkit-transform: rotate(360deg);
2545
+ transform: rotate(360deg);
2546
+ }
2547
+ }
2548
+ .layout-3 .slider-indicators {
2549
+ top: 5px !important;
2550
+ }
2551
+ .tablenav .tablenav-pages a:hover,
2552
+ .tablenav .tablenav-pages a:focus {
2553
+ border-color: #f1470d;
2554
+ color: #fff;
2555
+ background: #f1470d;
2556
+ -webkit-box-shadow: none;
2557
+ box-shadow: none;
2558
+ outline: none;
2559
+ }
2560
+ .tablenav-pages {
2561
+ margin: 5px 0 0px !important;
2562
+ }
2563
+ .tablenav.top .displaying-num {
2564
+ padding-top: 5px;
2565
+ display: inline-block;
2566
+ }
2567
+ .tablenav.bottom .tablenav-pages {
2568
+ margin: 5px 0 0px !important;
2569
+ }
2570
+ thead,
2571
+ tfoot {
2572
+ background: #fff;
2573
+ }
2574
+ .tablenav.bottom {
2575
+ margin-top: 8px !important;
2576
+ }
2577
+ .widefat th input,
2578
+ .updates-table td input,
2579
+ .widefat thead td input,
2580
+ .widefat tfoot td input {
2581
+ margin: 0 0 0 8px !important;
2582
+ padding: 0 !important;
2583
+ vertical-align: text-top !important;
2584
+ }
2585
+ .row-actions span.delete a {
2586
+ color: #ff1010 !important;
2587
+ }
2588
+ #seedprod-giveway-details {
2589
+ border-bottom: 1px solid #ddd;
2590
+ padding-bottom: 15px;
2591
+ margin: 0 0 10px;
2592
+ }
2593
+ #seedprod-settings-nav {
2594
+ height: 58px;
2595
+ margin-left: -20px;
2596
+ border-top: none;
2597
+ background: #fff;
2598
+ margin-bottom: 13px;
2599
+ border-radius: 0;
2600
+ }
2601
+ #seedprod-settings-nav a {
2602
+ height: 58px;
2603
+ padding-top: 18px;
2604
+ padding-left: 10px;
2605
+ padding-right: 10px;
2606
+ font-size: 14px;
2607
+ }
2608
+ #seedprod-settings-nav a span {
2609
+ padding: 0 10px 24px;
2610
+ }
2611
+ #seedprod-settings-nav .active a {
2612
+ -webkit-box-shadow: none !important;
2613
+ box-shadow: none !important;
2614
+ color: #b3b3b3 !important;
2615
+ }
2616
+ #seedprod-settings-nav .router-link-exact-active a {
2617
+ color: #222 !important;
2618
+ }
2619
+ #seedprod-settings-nav .router-link-exact-active a span {
2620
+ -webkit-box-shadow: inset 0 -7px 0 0 #f1470d !important;
2621
+ box-shadow: inset 0 -7px 0 0 #f1470d !important;
2622
+ }
2623
+ .form-table {
2624
+ margin-top: 0;
2625
+ background-color: transparent !important;
2626
+ color: #666;
2627
+ }
2628
+ .form-table tr {
2629
+ border-bottom: 1px solid #e4e4e4;
2630
+ }
2631
+ .form-table p {
2632
+ margin: 8px 0 0;
2633
+ }
2634
+ .form-table label {
2635
+ padding-left: 0 !important;
2636
+ }
2637
+ .form-table .help-block {
2638
+ padding-top: 8px;
2639
+ font-style: italic;
2640
+ color: #666;
2641
+ max-width: 600px;
2642
+ }
2643
+ .form-table h4 {
2644
+ margin-top: 0;
2645
+ margin-bottom: 0;
2646
+ font-size: 20px;
2647
+ font-weight: 700;
2648
+ color: #444;
2649
+ }
2650
+ .form-table strong {
2651
+ padding-top: 8px;
2652
+ color: #444;
2653
+ display: inline-block;
2654
+ }
2655
+ .form-table button {
2656
+ font-weight: 600 !important;
2657
+ }
2658
+ .form-table .form-control {
2659
+ margin-bottom: 0 !important;
2660
+ margin-right: 10px;
2661
+ width: 400px !important;
2662
+ }
2663
+ .seedprod-settings-title th,
2664
+ .seedprod-settings-title td {
2665
+ padding: 20px 0;
2666
+ }
2667
+ .seedprod-settings-form th,
2668
+ .seedprod-settings-form td {
2669
+ padding: 30px 0;
2670
+ }
2671
+ .seedprod-settings-submit {
2672
+ border-bottom: none !important;
2673
+ }
2674
+ .seedprod-settings-submit td {
2675
+ padding: 20px 0;
2676
+ }
2677
+ #seedprod-settings-integrations .seedprod-settings-form td:first-child {
2678
+ width: 160px;
2679
+ }
2680
+ #seedprod-settings-integrations .seedprod-settings-form i {
2681
+ display: inline-block;
2682
+ margin-left: 10px;
2683
+ }
2684
+ #seedprod-settings-integrations .seedprod-settings-form img {
2685
+ background: #fff;
2686
+ border: 1px solid #ddd;
2687
+ max-width: 90px;
2688
+ display: inline;
2689
+ margin: 0 0 0 20px;
2690
+ }
2691
+ #seedprod-settings-lite-cta {
2692
+ background-color: #fff;
2693
+ border: 1px solid #dadada;
2694
+ padding: 25px 20px;
2695
+ margin: 10px 0 0 0;
2696
+ position: relative;
2697
+ }
2698
+ #seedprod-settings-lite-cta .dismiss {
2699
+ position: absolute;
2700
+ top: 10px;
2701
+ right: 10px;
2702
+ color: #666;
2703
+ font-size: 16px;
2704
+ }
2705
+ #seedprod-settings-lite-cta h5 {
2706
+ margin: 0 0 16px;
2707
+ font-size: 18px;
2708
+ font-weight: 700;
2709
+ }
2710
+ #seedprod-settings-lite-cta p {
2711
+ color: #555;
2712
+ font-size: 14px;
2713
+ margin: 0 0 16px;
2714
+ }
2715
+ #seedprod-settings-lite-cta a {
2716
+ color: #f1470d;
2717
+ }
2718
+ #seedprod-settings-lite-cta h6 {
2719
+ font-weight: 700;
2720
+ font-size: 14px;
2721
+ margin: 0 0 16px;
2722
+ }
2723
+ #seedprod-settings-lite-cta p:last-of-type {
2724
+ margin: 0;
2725
+ }
2726
+ #seedprod-settings-lite-cta .list {
2727
+ margin: 0 0 16px 0;
2728
+ overflow: auto;
2729
+ max-width: 900px;
2730
+ }
2731
+ #seedprod-settings-lite-cta ul {
2732
+ margin: 0;
2733
+ padding: 0;
2734
+ width: 50%;
2735
+ float: left;
2736
+ }
2737
+ #seedprod-settings-lite-cta li {
2738
+ margin: 0;
2739
+ padding: 0 0 2px 16px;
2740
+ color: #555;
2741
+ font-size: 14px;
2742
+ position: relative;
2743
+ }
2744
+ #seedprod-settings-lite-cta li:before {
2745
+ content: '+';
2746
+ position: absolute;
2747
+ top: -1px;
2748
+ left: 0;
2749
+ }
2750
+ .btn-facebook {
2751
+ background: #3C5A99;
2752
+ color: #fff;
2753
+ border-radius: 4px;
2754
+ font-size: 14px;
2755
+ padding: 12px 26px;
2756
+ line-height: 1 !important;
2757
+ border: 0;
2758
+ outline: 0;
2759
+ cursor: pointer;
2760
+ color: #fff !important;
2761
+ }
2762
+ .btn-facebook.seedprod-highlight-option::before {
2763
+ bottom: -13px;
2764
+ }
2765
+ .green {
2766
+ color: #218900;
2767
+ font-weight: 700;
2768
+ }
2769
+ /* Welcome */
2770
+ .seedprod-welcome-video .swal2-popup {
2771
+ width: 600px !important;
2772
+ max-width: 100% !important;
2773
+ }
2774
+ .swal2-popup .swal2-styled.swal2-confirm {
2775
+ background-color: #DD4A1F !important;
2776
+ }
2777
+ #seedprod-welcome {
2778
+ color: #555;
2779
+ padding-top: 110px;
2780
+ }
2781
+ #seedprod-welcome .btn {
2782
+ font-size: 15px;
2783
+ }
2784
+ #seedprod-welcome hr {
2785
+ width: 115px;
2786
+ color: #ddd;
2787
+ margin-top: 40px;
2788
+ margin-bottom: 40px;
2789
+ }
2790
+ #seedprod-welcome #license-info {
2791
+ text-align: center;
2792
+ }
2793
+ #seedprod-welcome #license-info p {
2794
+ color: #666;
2795
+ font-size: 15px;
2796
+ }
2797
+ #seedprod-welcome #license-info #license-sub {
2798
+ font-size: 12px;
2799
+ }
2800
+ #seedprod-welcome #license-info #license-sub a {
2801
+ color: #f1470d;
2802
+ text-decoration: underline;
2803
+ }
2804
+ #seedprod-welcome #license-info .input-lg {
2805
+ min-width: 350px !important;
2806
+ height: 42px !important;
2807
+ margin-right: 8px;
2808
+ }
2809
+ #seedprod-welcome #license-info .fa-question-circle {
2810
+ margin-left: 20px;
2811
+ color: #999;
2812
+ font-size: 16px;
2813
+ cursor: pointer;
2814
+ vertical-align: middle;
2815
+ }
2816
+ #seedprod-welcome #license-info .btn {
2817
+ font-size: 14px;
2818
+ padding: 10px 30px;
2819
+ }
2820
+ #seedprod-welcome #license-info .form-inline {
2821
+ margin-bottom: 10px;
2822
+ }
2823
+ #seedprod-welcome #sub-welcome {
2824
+ padding-bottom: 50px;
2825
+ }
2826
+ #seedprod-welcome #sub-welcome h6,
2827
+ #seedprod-welcome #sub-welcome .btn {
2828
+ font-size: 15px;
2829
+ }
2830
+ #seedprod-welcome #sub-welcome .button-wrap {
2831
+ margin-left: 40px;
2832
+ margin-right: 40px;
2833
+ }
2834
+ #seedprod-welcome .btn-default {
2835
+ background: #f1f1f1;
2836
+ border: 1px solid #f1f1f1;
2837
+ color: #666;
2838
+ }
2839
+ #seedprod-welcome .btn-block {
2840
+ font-weight: 500;
2841
+ }
2842
+ #seedprod-welcome .btn-default:hover {
2843
+ background: #ddd;
2844
+ border: 1px solid #f1f1f1;
2845
+ }
2846
+ #seedprod-welcome .intro {
2847
+ background-color: #fff;
2848
+ border: 1px solid #ddd;
2849
+ border-top: 2px solid #ddd;
2850
+ border-bottom: 2px solid #ddd;
2851
+ border-radius: 2px;
2852
+ margin-bottom: 30px;
2853
+ position: relative;
2854
+ padding-top: 40px;
2855
+ border-radius: 7px;
2856
+ }
2857
+ #seedprod-welcome .button-wrap {
2858
+ margin-top: 25px;
2859
+ }
2860
+ #seedprod-welcome .button-wrap .left {
2861
+ float: left;
2862
+ width: 50%;
2863
+ padding-right: 6px;
2864
+ }
2865
+ #seedprod-welcome .button-wrap .right {
2866
+ float: right;
2867
+ width: 50%;
2868
+ padding-left: 6px;
2869
+ }
2870
+ #seedprod-welcome .welcome-container {
2871
+ margin: 0 auto;
2872
+ max-width: 676px;
2873
+ padding: 0;
2874
+ }
2875
+ #seedprod-welcome .robbie {
2876
+ background-color: #fff;
2877
+ border: 2px solid #e1e1e1;
2878
+ border-radius: 50%;
2879
+ height: 114px;
2880
+ width: 114px;
2881
+ padding: 12px 14px 0 14px;
2882
+ position: absolute;
2883
+ top: -58px;
2884
+ left: 50%;
2885
+ margin-left: -55px;
2886
+ }
2887
+ #seedprod-welcome img {
2888
+ max-width: 100%;
2889
+ height: auto;
2890
+ }
2891
+ #seedprod-welcome .block {
2892
+ padding: 40px;
2893
+ }
2894
+ #seedprod-welcome h1 {
2895
+ color: #2d2d2d;
2896
+ font-size: 24px;
2897
+ text-align: center;
2898
+ margin: 0 0 16px 0;
2899
+ font-weight: 700;
2900
+ }
2901
+ #seedprod-welcome h6 {
2902
+ font-size: 16px;
2903
+ font-weight: 400;
2904
+ line-height: 1.6;
2905
+ text-align: center;
2906
+ margin: 0;
2907
+ color: #7c7c7c;
2908
+ }
2909
+ #seedprod-welcome .features {
2910
+ background-color: #fff;
2911
+ border: 1px solid #ddd;
2912
+ border-top: 2px solid #ddd;
2913
+ border-bottom: 0;
2914
+ border-radius: 7px 7px 0 0;
2915
+ position: relative;
2916
+ padding-top: 10px;
2917
+ padding-bottom: 0px;
2918
+ margin-bottom: 0px;
2919
+ }
2920
+ #seedprod-welcome .features .feature-list {
2921
+ margin-top: 60px;
2922
+ }
2923
+ #seedprod-welcome .features .feature-block {
2924
+ float: left;
2925
+ width: 50%;
2926
+ padding-bottom: 35px;
2927
+ overflow: auto;
2928
+ }
2929
+ #seedprod-welcome .features .feature-block img {
2930
+ float: left;
2931
+ max-width: 58px;
2932
+ }
2933
+ #seedprod-welcome .features .feature-block h5 {
2934
+ margin-left: 68px;
2935
+ margin-top: 0;
2936
+ color: #2d2d2d;
2937
+ }
2938
+ #seedprod-welcome .features .feature-block p {
2939
+ margin: 0;
2940
+ margin-left: 68px;
2941
+ font-size: 12px;
2942
+ color: #666;
2943
+ }
2944
+ #seedprod-welcome .features .feature-block.first {
2945
+ padding-right: 16px;
2946
+ clear: both;
2947
+ }
2948
+ #seedprod-welcome .features .feature-block.last {
2949
+ padding-left: 16px;
2950
+ }
2951
+ #seedprod-welcome .seedprod-clear:before {
2952
+ content: " ";
2953
+ display: table;
2954
+ }
2955
+ #seedprod-welcome .seedprod-clear:after {
2956
+ clear: both;
2957
+ content: " ";
2958
+ display: table;
2959
+ }
2960
+ #seedprod-welcome .footer {
2961
+ background-color: #f7f7f7;
2962
+ border: 1px solid #ddd;
2963
+ border-bottom: 2px solid #ddd;
2964
+ border-radius: 0 0 7px 7px;
2965
+ }
2966
+ #seedprod-welcome .footer .block {
2967
+ padding: 45px 80px;
2968
+ }
2969
+ #seedprod-welcome .footer .button-wrap {
2970
+ margin-top: 0px;
2971
+ }
2972
+ #seedprod-welcome .btn-trans-green {
2973
+ background-color: none;
2974
+ color: #0f8000;
2975
+ }
2976
+ #seedprod-welcome .underline {
2977
+ position: relative;
2978
+ }
2979
+ #seedprod-welcome .btn-trans-green .dashicons {
2980
+ height: 18px;
2981
+ }
2982
+ #seedprod-welcome .btn-trans-green .underline:after {
2983
+ content: " ";
2984
+ border-bottom: 1px dashed #0f8000;
2985
+ position: absolute;
2986
+ bottom: -5px;
2987
+ left: 0;
2988
+ width: 100%;
2989
+ }
2990
+ #seedprod-welcome .testimonial-block {
2991
+ margin: 50px 0 0 0;
2992
+ color: #666;
2993
+ }
2994
+ #seedprod-welcome .testimonial-block .sig {
2995
+ margin-top: 35px;
2996
+ }
2997
+ #seedprod-welcome .testimonial-block img {
2998
+ border-radius: 50%;
2999
+ float: left;
3000
+ max-width: 116px;
3001
+ }
3002
+ #seedprod-welcome .testimonial-block p {
3003
+ font-size: 15px;
3004
+ margin: 0 0 12px 140px;
3005
+ }
3006
+ /* About Us */
3007
+ #seedprod-aboutus .row {
3008
+ margin-left: 0 !important;
3009
+ margin-right: 0 !important;
3010
+ }
3011
+ #seedprod-aboutus h2 {
3012
+ margin-top: 0 !important;
3013
+ margin-bottom: 24px;
3014
+ color: #23282d;
3015
+ font-size: 24px;
3016
+ }
3017
+ #seedprod-aboutus h3 {
3018
+ margin-top: 0 !important;
3019
+ font-size: 18px;
3020
+ margin-bottom: 30px;
3021
+ color: #23282C;
3022
+ line-height: 1.6;
3023
+ }
3024
+ #seedprod-aboutus p {
3025
+ font-size: 16px;
3026
+ line-height: 1.52;
3027
+ color: #444;
3028
+ margin: 1em 0;
3029
+ }
3030
+ #seedprod-aboutus p:last-child {
3031
+ margin-bottom: 0;
3032
+ }
3033
+ #seedprod-aboutus figcaption {
3034
+ font-size: 14px;
3035
+ color: #888888;
3036
+ margin-top: 5px;
3037
+ text-align: center;
3038
+ line-height: initial;
3039
+ }
3040
+ #seedprod-aboutus-section {
3041
+ margin-top: 20px;
3042
+ background: #fff;
3043
+ padding: 30px 15px;
3044
+ border: 1px solid #DDDDDD;
3045
+ }
3046
+ #seedprod-plugin-recommendations {
3047
+ margin-top: 20px;
3048
+ }
3049
+ #seedprod-plugin-recommendations .col-md-4:first-child {
3050
+ padding-left: 0;
3051
+ }
3052
+ #seedprod-plugin-recommendations .col-md-4:nth-child(2) {
3053
+ padding-left: 7px;
3054
+ padding-right: 7px;
3055
+ }
3056
+ #seedprod-plugin-recommendations .col-md-4:last-child {
3057
+ padding-right: 0;
3058
+ }
3059
+ .seedprod-plugin-recommendations {
3060
+ display: -webkit-box;
3061
+ display: -ms-flexbox;
3062
+ display: flex;
3063
+ -webkit-box-orient: horizontal;
3064
+ -webkit-box-direction: normal;
3065
+ -ms-flex-flow: row wrap;
3066
+ flex-flow: row wrap;
3067
+ -webkit-box-pack: justify;
3068
+ -ms-flex-pack: justify;
3069
+ justify-content: space-between;
3070
+ margin: 20px -10px 0 !important;
3071
+ }
3072
+ .seedprod-plugin-recommendations li {
3073
+ background-color: #fff;
3074
+ border: 1px solid #ddd;
3075
+ -webkit-box-flex: 1;
3076
+ -ms-flex: 1;
3077
+ flex: 1;
3078
+ margin: 0 10px 20px;
3079
+ display: -webkit-box;
3080
+ display: -ms-flexbox;
3081
+ display: flex;
3082
+ -webkit-box-orient: vertical;
3083
+ -webkit-box-direction: normal;
3084
+ -ms-flex-flow: column ;
3085
+ flex-flow: column ;
3086
+ -ms-flex-preferred-size: 30%;
3087
+ flex-basis: 30%;
3088
+ }
3089
+ .seedprod-plugin-recommendations .seedprod-plugin-recommendations-block {
3090
+ display: -webkit-box;
3091
+ display: -ms-flexbox;
3092
+ display: flex;
3093
+ padding: 20px;
3094
+ }
3095
+ .seedprod-plugin-recommendations .seedprod-media-img {
3096
+ margin-right: 20px;
3097
+ }
3098
+ .seedprod-plugin-recommendations .seedprod-media-img img {
3099
+ border: 1px solid #eee;
3100
+ max-width: 75px;
3101
+ padding: 13px;
3102
+ }
3103
+ .seedprod-plugin-recommendations .seedprod-media-body {
3104
+ -webkit-box-flex: 1;
3105
+ -ms-flex: 1;
3106
+ flex: 1;
3107
+ }
3108
+ .seedprod-plugin-recommendations .seedprod-media-body h4 {
3109
+ margin-top: 0;
3110
+ margin-bottom: 16px;
3111
+ color: #2d2d2d;
3112
+ font-size: 16px;
3113
+ }
3114
+ .seedprod-plugin-recommendations .seedprod-media-body p {
3115
+ font-size: 13px !important;
3116
+ }
3117
+ .seedprod-plugin-recommendations .seedprod-plugin-install {
3118
+ display: -webkit-box;
3119
+ display: -ms-flexbox;
3120
+ display: flex;
3121
+ margin-top: auto;
3122
+ background-color: #f7f7f7;
3123
+ border-top: 1px solid #ddd;
3124
+ padding: 20px;
3125
+ -webkit-box-pack: justify;
3126
+ -ms-flex-pack: justify;
3127
+ justify-content: space-between;
3128
+ -webkit-box-align: center;
3129
+ -ms-flex-align: center;
3130
+ align-items: center;
3131
+ }
3132
+ #seedprod-aboutus-getting-started-section {
3133
+ margin-top: 20px;
3134
+ background: #fff;
3135
+ padding: 30px 15px;
3136
+ border: 1px solid #DDDDDD;
3137
+ }
3138
+ #seedprod-aboutus-getting-started-section .embed-responsive {
3139
+ border: 1px solid #DDDDDD;
3140
+ }
3141
+ #seedprod-aboutus-getting-started-section ul {
3142
+ margin-top: 20px;
3143
+ margin-bottom: 0;
3144
+ }
3145
+ #seedprod-aboutus-getting-started-section a {
3146
+ text-decoration: underline;
3147
+ }
3148
+ #seedprod-aboutus-getting-upsell-section {
3149
+ margin-top: 20px;
3150
+ background: #FAFAFA;
3151
+ border: 1px solid #DDDDDD;
3152
+ font-size: 18px;
3153
+ }
3154
+ #seedprod-aboutus-getting-upsell-section .row:first-child {
3155
+ padding: 30px 15px;
3156
+ }
3157
+ #seedprod-aboutus-getting-upsell-section .row:last-child {
3158
+ padding: 30px 15px;
3159
+ }
3160
+ #seedprod-aboutus-getting-upsell-section p:last-child {
3161
+ margin-top: 15px;
3162
+ }
3163
+ #seedprod-aboutus-getting-upsell-section hr {
3164
+ margin: 0 30px;
3165
+ border: 0;
3166
+ border-top: 1px solid #ddd;
3167
+ }
3168
+ #seedprod-aboutus-getting-upsell-section h2 {
3169
+ font-size: 24px;
3170
+ line-height: 1.6;
3171
+ margin-bottom: 24px;
3172
+ }
3173
+ #seedprod-aboutus-getting-upsell-section #upsell-features {
3174
+ background: #fff;
3175
+ border-top: 1px solid #ddd;
3176
+ }
3177
+ #seedprod-aboutus-getting-upsell-section #upsell-features a {
3178
+ text-decoration: underline;
3179
+ font-weight: 600;
3180
+ }
3181
+ #seedprod-aboutus-getting-upsell-section .fa {
3182
+ color: #2a9b39;
3183
+ margin: 0 8px 0 0;
3184
+ font-size: 16px;
3185
+ }
3186
+ #seedprod-aboutus-getting-upsell-section li {
3187
+ line-height: 2;
3188
+ font-size: 16px;
3189
+ color: #444;
3190
+ margin-bottom: 0;
3191
+ }
3192
+ #seedprod-aboutus-getting-started-docs1-section {
3193
+ margin-top: 20px;
3194
+ }
3195
+ .docs-section {
3196
+ background: #fff;
3197
+ border: 1px solid #DDDDDD;
3198
+ padding: 30px;
3199
+ line-height: 2;
3200
+ }
3201
+ .docs-section img {
3202
+ margin-right: 20px;
3203
+ }
3204
+ .docs-section .media-heading {
3205
+ font-size: 24px;
3206
+ margin-bottom: 16px;
3207
+ }
3208
+ .docs-section .media-body {
3209
+ font-size: 16px;
3210
+ line-height: 1.5;
3211
+ }
3212
+ .docs-section .media-body p {
3213
+ margin-bottom: 30px;
3214
+ }
3215
+ #seedprod-aboutus-lite-vs-pro-section {
3216
+ margin-top: 20px;
3217
+ }
3218
+ #seedprod-aboutus-lite-vs-pro-section table {
3219
+ border: 1px solid #DDDDDD;
3220
+ }
3221
+ #seedprod-aboutus-lite-vs-pro-section table caption {
3222
+ background: #fff;
3223
+ text-align: center;
3224
+ border: 1px solid #DDDDDD;
3225
+ border-bottom: 0;
3226
+ padding: 30px;
3227
+ font-size: 16px;
3228
+ color: #444;
3229
+ }
3230
+ #seedprod-aboutus-lite-vs-pro-section table caption h1 {
3231
+ color: #23282d;
3232
+ font-size: 23px;
3233
+ }
3234
+ #seedprod-aboutus-lite-vs-pro-section td {
3235
+ border: 1px solid #DDDDDD;
3236
+ background: #fff;
3237
+ padding: 30px;
3238
+ vertical-align: top;
3239
+ font-size: 16px;
3240
+ color: #444;
3241
+ width: 33.33333%;
3242
+ }
3243
+ #seedprod-aboutus-lite-vs-pro-section th {
3244
+ border: 0;
3245
+ background: #FAFAFA;
3246
+ padding: 30px;
3247
+ font-size: 18px;
3248
+ color: #23282C;
3249
+ }
3250
+ #seedprod-aboutus-lite-vs-pro-section tfoot {
3251
+ text-align: center;
3252
+ }
3253
+ #seedprod-aboutus-lite-vs-pro-section tfoot a {
3254
+ font-size: 18px;
3255
+ text-decoration: underline;
3256
+ font-weight: bold;
3257
+ }
3258
+ #seedprod-aboutus-lite-vs-pro-section tfoot p {
3259
+ margin-top: 20px;
3260
+ }
3261
+ #seedprod-aboutus-lite-vs-pro-section .features-none {
3262
+ padding-left: 30px;
3263
+ background-position: 0px 4px;
3264
+ background-size: 15px auto;
3265
+ background-repeat: no-repeat;
3266
+ background-image: url(../img/icon-none.svg);
3267
+ }
3268
+ #seedprod-aboutus-lite-vs-pro-section .features-partial {
3269
+ padding-left: 30px;
3270
+ background-position: -3px 0;
3271
+ background-size: 23px auto;
3272
+ background-repeat: no-repeat;
3273
+ background-image: url(../img/icon-partial.svg);
3274
+ }
3275
+ #seedprod-aboutus-lite-vs-pro-section .features-full {
3276
+ padding-left: 30px;
3277
+ background-position: 0 6px;
3278
+ background-size: 15px auto;
3279
+ background-repeat: no-repeat;
3280
+ background-image: url(../img/icon-full.svg);
3281
+ }
3282
+ .clearfix {
3283
+ opacity: 1 !important;
3284
+ }
3285
+ /* Google Charts */
3286
+ svg > g > g:last-child {
3287
+ pointer-events: none;
3288
+ }
3289
+ .seedprod-charts {
3290
+ background: #fff;
3291
+ border: 1px solid #e7e8e7;
3292
+ padding: 40px 0 0;
3293
+ min-height: 120px;
3294
+ }
3295
+ /* New Builder */
3296
+ .sp-btn {
3297
+ padding: 11px 15px;
3298
+ border-radius: 6px;
3299
+ }
3300
+ .sp-btn i {
3301
+ margin-right: 10px;
3302
+ }
3303
+ #seedprod-builder-view {
3304
+ scroll-behavior: smooth;
3305
+ }
3306
+ #sp-revision-history {
3307
+ padding: 20px;
3308
+ }
3309
+ #sp-revision-history p {
3310
+ font-weight: 600;
3311
+ font-size: 13px;
3312
+ padding: 0px 0 16px 0px;
3313
+ }
3314
+ #sp-revision-history .active-current {
3315
+ border: 2px solid #dd4a1f;
3316
+ }
3317
+ #sp-revision-history .sp-revision-item {
3318
+ display: -webkit-box;
3319
+ display: -ms-flexbox;
3320
+ display: flex;
3321
+ -webkit-box-align: center;
3322
+ -ms-flex-align: center;
3323
+ align-items: center;
3324
+ margin-bottom: 10px;
3325
+ margin-left: -6px;
3326
+ }
3327
+ #sp-revision-history .active.sp-revision-item {
3328
+ margin-left: -21px;
3329
+ }
3330
+ #sp-revision-history .active.sp-revision-item button {
3331
+ border: 2px solid #DD4A1F;
3332
+ background: #fff;
3333
+ }
3334
+ #sp-revision-history .active .sp-revision-item-circle {
3335
+ border: 2px solid #dd4a1f;
3336
+ width: 10px;
3337
+ height: 10px;
3338
+ display: inline-block;
3339
+ border-radius: 9999px;
3340
+ }
3341
+ #sp-revision-history .active .sp-revision-item-line {
3342
+ border-bottom: 2px solid #dd4a1f;
3343
+ width: 5px;
3344
+ display: inline-block;
3345
+ }
3346
+ #sp-revision-history button {
3347
+ padding-left: 16px;
3348
+ display: -webkit-box;
3349
+ display: -ms-flexbox;
3350
+ display: flex;
3351
+ -webkit-box-align: center;
3352
+ -ms-flex-align: center;
3353
+ align-items: center;
3354
+ background: #EDEBED;
3355
+ height: 70px;
3356
+ width: 100%;
3357
+ border-radius: 6px;
3358
+ color: #4F394D;
3359
+ font-weight: 600;
3360
+ font-size: 13px;
3361
+ }
3362
+ #sp-revision-history button img {
3363
+ border: none;
3364
+ border-radius: 9999px;
3365
+ width: 39px;
3366
+ height: 39px;
3367
+ margin-right: 16px;
3368
+ }
3369
+ #sp-revision-history button .sp-rev-date {
3370
+ color: #7b6b7a;
3371
+ font-size: 10px;
3372
+ }
3373
+ #sp-revision-history button:hover {
3374
+ background: #fff;
3375
+ }
3376
+ #sp-revision-timeline {
3377
+ margin-top: -3px;
3378
+ padding-top: 16px;
3379
+ border-left: 2px solid #EDEBED;
3380
+ padding-left: 15px;
3381
+ }
3382
+ #sp-bottom-nav-actions {
3383
+ position: fixed;
3384
+ height: 53px;
3385
+ width: inherit;
3386
+ bottom: 0;
3387
+ background: #4F394D;
3388
+ color: #D3CED2;
3389
+ z-index: 20;
3390
+ font-size: 16px;
3391
+ }
3392
+ #sp-bottom-nav-actions button {
3393
+ width: 38px;
3394
+ height: 38px;
3395
+ border-radius: 6px;
3396
+ }
3397
+ #sp-bottom-nav-actions button.active {
3398
+ background: #fff !important;
3399
+ color: #4f394d !important;
3400
+ }
3401
+ #sp-bottom-nav-actions button:hover {
3402
+ color: #fff;
3403
+ background: #392037;
3404
+ }
3405
+ #seedprod-builder-save {
3406
+ font-size: 14px;
3407
+ font-weight: 600;
3408
+ border-top-right-radius: 0;
3409
+ border-bottom-right-radius: 0;
3410
+ background: #0F8A5E;
3411
+ height: 40px;
3412
+ }
3413
+ #seedprod-builder-save:hover {
3414
+ background: #0b6142;
3415
+ }
3416
+ #seedprod-builder-save-dropdown {
3417
+ background: #0F8A5E;
3418
+ display: -webkit-box;
3419
+ display: -ms-flexbox;
3420
+ display: flex;
3421
+ height: 40px;
3422
+ font-size: 15px;
3423
+ border-left: 1px rgba(0, 0, 0, 0.3) solid;
3424
+ border-top-left-radius: 0;
3425
+ border-bottom-left-radius: 0;
3426
+ padding-right: 12px;
3427
+ padding-left: 12px;
3428
+ }
3429
+ #seedprod-builder-save-dropdown i {
3430
+ margin-right: 0px;
3431
+ }
3432
+ #seedprod-builder-save-dropdown:hover {
3433
+ background: #0b6142;
3434
+ }
3435
+ #seedprod-builder-save-dropdown.active {
3436
+ background: #0b6142;
3437
+ }
3438
+ #seedprod-builder-save-dropdown-menu {
3439
+ background: #fff;
3440
+ font-size: 14px;
3441
+ font-weight: 600;
3442
+ width: 179px;
3443
+ margin-top: 2px;
3444
+ z-index: 99999;
3445
+ color: #4F394D;
3446
+ border-radius: 6px;
3447
+ -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
3448
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
3449
+ }
3450
+ #seedprod-builder-save-dropdown-menu .sp-btn {
3451
+ width: 100%;
3452
+ text-align: left;
3453
+ }
3454
+ #seedprod-builder-save-dropdown-menu button:hover {
3455
+ color: #0F8A5E;
3456
+ background: rgba(15, 138, 94, 0.05);
3457
+ }
3458
+ #seedprod-builder-save-dropdown-menu button {
3459
+ display: -webkit-box;
3460
+ display: -ms-flexbox;
3461
+ display: flex;
3462
+ -webkit-box-align: center;
3463
+ -ms-flex-align: center;
3464
+ align-items: center;
3465
+ }
3466
+ #sp-builder-top {
3467
+ background: #230820;
3468
+ color: #fff;
3469
+ }
3470
+ #sp-builder-top > div {
3471
+ height: 72px;
3472
+ }
3473
+ #sp-builder-top-main-nav-utlity {
3474
+ display: -webkit-box;
3475
+ display: -ms-flexbox;
3476
+ display: flex;
3477
+ -webkit-box-align: center;
3478
+ -ms-flex-align: center;
3479
+ align-items: center;
3480
+ -webkit-box-pack: end;
3481
+ -ms-flex-pack: end;
3482
+ justify-content: flex-end;
3483
+ height: 100%;
3484
+ }
3485
+ #sp-builder-top-main-nav {
3486
+ height: 100%;
3487
+ }
3488
+ #sp-builder-top-main-nav > div {
3489
+ display: -webkit-box;
3490
+ display: -ms-flexbox;
3491
+ display: flex;
3492
+ height: 100%;
3493
+ -webkit-box-align: stretch;
3494
+ -ms-flex-align: stretch;
3495
+ align-items: stretch;
3496
+ }
3497
+ #sp-builder-top-main-nav a {
3498
+ display: -webkit-box;
3499
+ display: -ms-flexbox;
3500
+ display: flex;
3501
+ -webkit-box-align: center;
3502
+ -ms-flex-align: center;
3503
+ align-items: center;
3504
+ padding: 2px 20px;
3505
+ font-size: 16px;
3506
+ color: #A79CA6;
3507
+ font-weight: 600;
3508
+ }
3509
+ #sp-builder-top-main-nav a.active {
3510
+ font-size: 16px;
3511
+ color: #fff;
3512
+ -webkit-box-shadow: inset 0 -3px 0 0 #fff !important;
3513
+ box-shadow: inset 0 -3px 0 0 #fff !important;
3514
+ }
3515
+ #sp-builder-top-main-nav a:hover {
3516
+ color: #fff;
3517
+ }
3518
+ .sp-el-toolbar {
3519
+ top: -24px;
3520
+ left: 0;
3521
+ width: inherit;
3522
+ -webkit-box-pack: center;
3523
+ -ms-flex-pack: center;
3524
+ justify-content: center;
3525
+ }
3526
+ .sp-el-toolbar-add {
3527
+ height: 0px;
3528
+ bottom: 0px;
3529
+ left: 0;
3530
+ width: inherit;
3531
+ -webkit-box-pack: center;
3532
+ -ms-flex-pack: center;
3533
+ justify-content: center;
3534
+ z-index: 100;
3535
+ }
3536
+ .sp-el-toolbar-add > span {
3537
+ position: relative;
3538
+ top: -11px;
3539
+ }
3540
+ .sp-toolbar-bottom {
3541
+ top: 0px;
3542
+ }
3543
+ .sp-toolbar-bottom > div {
3544
+ border-top-left-radius: 0px !important;
3545
+ border-top-right-radius: 0px !important;
3546
+ border-bottom-left-radius: 6px;
3547
+ border-bottom-right-radius: 6px;
3548
+ }
3549
+ .sp-el-toolbar > div {
3550
+ border-top-left-radius: 6px;
3551
+ border-top-right-radius: 6px;
3552
+ }
3553
+ .sp-toolbar-left {
3554
+ width: 22px;
3555
+ height: inherit;
3556
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%, #7036BB 50%, #7036BB 100%);
3557
+ background-position-y: 2px;
3558
+ background-repeat: no-repeat;
3559
+ background-position-x: 0px;
3560
+ position: relative;
3561
+ right: -1px;
3562
+ }
3563
+ .sp-toolbar-bottom .sp-toolbar-left {
3564
+ width: 22px;
3565
+ height: inherit;
3566
+ background: linear-gradient(45deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%, #7036BB 50%, #7036BB 100%);
3567
+ background-position-y: 0px;
3568
+ background-repeat: no-repeat;
3569
+ background-position-x: 0px;
3570
+ position: relative;
3571
+ right: -3px;
3572
+ }
3573
+ .sp-toolbar-right {
3574
+ width: 22px;
3575
+ height: inherit;
3576
+ background: linear-gradient(45deg, #7036BB 0%, #7036BB 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0) 100%);
3577
+ background-position-y: 0px;
3578
+ background-repeat: no-repeat;
3579
+ background-position-x: -1px;
3580
+ position: relative;
3581
+ left: -1px;
3582
+ }
3583
+ .sp-toolbar-bottom .sp-toolbar-right {
3584
+ width: 22px;
3585
+ height: inherit;
3586
+ background: linear-gradient(135deg, #7036BB 0%, #7036BB 50%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0) 100%);
3587
+ background-position-y: 0px;
3588
+ background-repeat: no-repeat;
3589
+ background-position-x: -1px;
3590
+ position: relative;
3591
+ left: -1px;
3592
+ }
3593
+ .color-picker-float {
3594
+ position: absolute;
3595
+ z-index: 10;
3596
+ right: 7px;
3597
+ margin-top: 5px;
3598
+ background: #fff;
3599
+ border-radius: 10px;
3600
+ padding: 16px;
3601
+ -webkit-box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);
3602
+ box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);
3603
+ }
3604
+ .color-picker-float-overflow {
3605
+ z-index: 50;
3606
+ left: 20px;
3607
+ margin-left: 18px;
3608
+ margin-top: 5px;
3609
+ background: #fff;
3610
+ border-radius: 10px;
3611
+ padding: 16px;
3612
+ -webkit-box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);
3613
+ box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);
3614
+ top: 0;
3615
+ width: 364px;
3616
+ }
3617
+ .color-picker-float-overflow .vc-chrome {
3618
+ width: 180px;
3619
+ }
3620
+ .color-picker-float-overflow button {
3621
+ -webkit-box-shadow: 0 0 1px 1px #dedede;
3622
+ box-shadow: 0 0 1px 1px #dedede;
3623
+ }
3624
+ .vc-chrome {
3625
+ -webkit-box-shadow: none !important;
3626
+ box-shadow: none !important;
3627
+ }
3628
+ .sp-form-group {
3629
+ margin-bottom: 10px;
3630
+ }
3631
+ .sp-form-group input[type=text],
3632
+ .sp-form-group select {
3633
+ width: 100%;
3634
+ display: block;
3635
+ }
3636
+ .sp-form-group .help_tip i {
3637
+ vertical-align: text-top;
3638
+ }
3639
+ .sp-form-group .color-picker-container {
3640
+ left: 5px;
3641
+ }
3642
+ .sp-form-group .simple-color-picker .sp-cp-label {
3643
+ font-weight: 600;
3644
+ font-size: 14px;
3645
+ }
3646
+ .sp-form-group .simple-color-picker-container .sp-bg-cv-transparent {
3647
+ width: 105px;
3648
+ height: 28px;
3649
+ border-radius: 20px;
3650
+ }
3651
+ .sp-form-group .simple-color-picker-container .current-color {
3652
+ width: 105px;
3653
+ height: 28px;
3654
+ border-radius: 20px;
3655
+ border: 2px solid #FFFFFF;
3656
+ }
3657
+ .sp-form-group .current-color {
3658
+ display: inherit;
3659
+ }
3660
+ .sp-form-group .sp-color-value {
3661
+ padding-left: 28px;
3662
+ }
3663
+ .sp-form-group .sp-color-value-clear {
3664
+ display: inline-block;
3665
+ right: 7px;
3666
+ color: #efefef;
3667
+ }
3668
+ .sp-form-group .sp-btn-primary {
3669
+ background-color: #38A169;
3670
+ color: #fff;
3671
+ padding: 10px 10px;
3672
+ border-radius: 4px;
3673
+ line-height: 1;
3674
+ cursor: pointer;
3675
+ }
3676
+ .sp-bg-cv-transparent {
3677
+ background-image: linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%);
3678
+ background-size: 10px 10px;
3679
+ background-position: 0 0, 0 5px, 5px -5px, -5px 0px;
3680
+ width: 1.25rem;
3681
+ height: 1.25rem;
3682
+ border-radius: 9999px;
3683
+ }
3684
+ .gutter.gutter-horizontal {
3685
+ cursor: ew-resize;
3686
+ margin-left: -1px !important;
3687
+ margin-right: -1px !important;
3688
+ }
3689
+ .sp-btn-group span {
3690
+ padding: 7px;
3691
+ background: #eee;
3692
+ width: 50px;
3693
+ display: inline-block;
3694
+ text-align: center;
3695
+ cursor: pointer;
3696
+ }
3697
+ .sp-btn-group span.active {
3698
+ background: #ccc;
3699
+ }
3700
+ .sp-btn-group span:hover {
3701
+ background: #ddd;
3702
+ }
3703
+ .sp-btn-group span:first-child {
3704
+ border-top-left-radius: 4px;
3705
+ border-bottom-left-radius: 4px;
3706
+ }
3707
+ .sp-btn-group span:last-child {
3708
+ border-top-right-radius: 4px;
3709
+ border-bottom-right-radius: 4px;
3710
+ }
3711
+ .mce-i-help {
3712
+ display: none !important;
3713
+ }
3714
+ .mce-panel .mce-btn i.mce-caret {
3715
+ border-top: 6px solid #7b6b7a;
3716
+ margin-left: 2px;
3717
+ margin-right: 2px;
3718
+ }
3719
+ .mce-panel .mce-btn i.mce-caret {
3720
+ border-top: 6px solid #7b6b7a;
3721
+ margin-left: 2px;
3722
+ margin-right: 2px;
3723
+ }
3724
+ .mce-panel .mce-btn:focus i.mce-caret,
3725
+ .mce-panel .mce-btn:hover i.mce-caret {
3726
+ border-top-color: #ffffff;
3727
+ }
3728
+ .mce-tinymce-inline .mce-flow-layout-item .mce-first,
3729
+ .mce-tinymce-inline .mce-flow-layout-item .mce-last {
3730
+ pointer-events: none !important;
3731
+ }
3732
+ .sp-section-categories li {
3733
+ padding: 16px 0;
3734
+ color: #7B6B7A;
3735
+ font-weight: 600;
3736
+ font-size: 16px;
3737
+ margin-bottom: 0;
3738
+ -webkit-box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);
3739
+ box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);
3740
+ }
3741
+ .sp-section-categories .sp-w-4 {
3742
+ width: 24px;
3743
+ }
3744
+ .sp-section-categories .sp-h-4 {
3745
+ height: 24px;
3746
+ }
3747
+ .mce-toolbar-grp {
3748
+ background: #EDEBED !important;
3749
+ border-bottom: 1px solid #EDEBED !important;
3750
+ }
3751
+ .mce-tinymce-inline.mce-panel {
3752
+ background: transparent !important;
3753
+ -webkit-box-shadow: none !important;
3754
+ box-shadow: none !important;
3755
+ }
3756
+ .mce-tinymce-inline .mce-toolbar-grp {
3757
+ background: #230820 !important;
3758
+ border-bottom: 1px solid #230820 !important;
3759
+ border-radius: 50px;
3760
+ }
3761
+ .mce-tinymce-inline .mce-btn:hover {
3762
+ color: #fff !important;
3763
+ background: #230820 !important;
3764
+ border-color: #7B6B7A !important;
3765
+ -webkit-box-shadow: none !important;
3766
+ box-shadow: none !important;
3767
+ }
3768
+ .mce-tinymce-inline .mce-btn:hover .mce-ico {
3769
+ color: #fff !important;
3770
+ }
3771
+ .mce-tinymce-inline .mce-ico {
3772
+ color: #7B6B7A !important;
3773
+ }
3774
+ .mce-tinymce-inline .mce-toolbar-grp .mce-active {
3775
+ background: #230820 !important;
3776
+ border-color: #7B6B7A !important;
3777
+ }
3778
+ .mce-tinymce-inline .mce-toolbar-grp .mce-active .mce-ico {
3779
+ color: #fff !important;
3780
+ }
3781
+ .mce-inline-toolbar-grp {
3782
+ background: #230820 !important;
3783
+ border-bottom: 1px solid #230820 !important;
3784
+ }
3785
+ .mce-inline-toolbar-grp .mce-ico {
3786
+ color: #7B6B7A !important;
3787
+ }
3788
+ .mce-inline-toolbar-grp .mce-ico:hover {
3789
+ color: #fff !important;
3790
+ }
3791
+ .mce-inline-toolbar-grp .mce-btn:hover {
3792
+ color: #fff !important;
3793
+ background: #230820 !important;
3794
+ border-color: #7B6B7A !important;
3795
+ -webkit-box-shadow: none !important;
3796
+ box-shadow: none !important;
3797
+ }
3798
+ .mce-inline-toolbar-grp .mce-primary {
3799
+ color: #fff !important;
3800
+ background: #0f8a5e !important;
3801
+ border-color: #0f8a5e !important;
3802
+ -webkit-box-shadow: none !important;
3803
+ box-shadow: none !important;
3804
+ }
3805
+ .mce-inline-toolbar-grp .mce-primary .mce-ico {
3806
+ color: #fff !important;
3807
+ }
3808
+ .mce-inline-toolbar-grp .mce-primary:hover {
3809
+ color: #fff !important;
3810
+ background: #0b6142 !important;
3811
+ border-color: #0b6142 !important;
3812
+ -webkit-box-shadow: none !important;
3813
+ box-shadow: none !important;
3814
+ }
3815
+ .mce-inline-toolbar-grp .mce-primary:hover .mce-ico {
3816
+ color: #fff !important;
3817
+ }
3818
+ .mce-inline-toolbar-grp div.wp-link-preview a {
3819
+ color: #fff !important;
3820
+ }
3821
+ div.mce-inline-toolbar-grp.mce-arrow-up:after {
3822
+ border-bottom-color: #230820 !important;
3823
+ }
3824
+ .vue-slider-process {
3825
+ background-color: #dd4a1f !important;
3826
+ }
3827
+ .vue-slider-dot-tooltip-inner {
3828
+ border-color: #dd4a1f !important;
3829
+ background-color: #dd4a1f !important;
3830
+ }
3831
+ .seedprod-sidebar-form::-webkit-scrollbar {
3832
+ display: none;
3833
+ }
3834
+ #wpforms-builder-elementor-popup {
3835
+ position: fixed;
3836
+ top: 0;
3837
+ left: 0;
3838
+ width: 100vw;
3839
+ height: 100vh;
3840
+ padding: 30px;
3841
+ z-index: 10000;
3842
+ background: rgba(0, 0, 0, 0.75);
3843
+ }
3844
+ #wpforms-builder-elementor-popup iframe {
3845
+ width: 100%;
3846
+ height: 100%;
3847
+ background-color: #ffffff;
3848
+ }
3849
+ .fade-enter-active,
3850
+ .fade-leave-active {
3851
+ -webkit-transition: opacity 0.25s ease-out;
3852
+ transition: opacity 0.25s ease-out;
3853
+ }
3854
+ .fade-enter,
3855
+ .fade-leave-to {
3856
+ opacity: 0;
3857
+ }
3858
+ .sp-preview-hidden {
3859
+ display: none !important;
3860
+ }
3861
+ .sp-wp-button {
3862
+ display: inline-block;
3863
+ padding: 0.5em 0.75em;
3864
+ font-weight: 600;
3865
+ border-radius: 3px;
3866
+ }
3867
+ .sp-wp-button-transparent {
3868
+ background-color: transparent;
3869
+ border: 1px solid currentColor;
3870
+ }
3871
+ .sp-wp-button-transparent:hover {
3872
+ background-color: #4f394d;
3873
+ border-color: #4f394d;
3874
+ color: #fff;
3875
+ }
3876
+
3877
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,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 */
3878
+
3879
+ /*# sourceMappingURL=admin-style.css.map */
public/css/admin-style.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["admin-style.css","admin-style.less"],"names":[],"mappings":"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","file":"admin-style.css","sourcesContent":[null,"/* Global */\n\n.seedprod {\n}\n\nbody{\n //font-family: 'Open Sans', sans-serif;\n}\n\nimg{border: inherit}\n\n[v-cloak]{\n\tdisplay: none !important;\n}\n\nbody, .subsubsub, .tablenav .tablenav-pages{\ncolor: #222;\n}\n\n.subsubsub .current{\n color: #222 !important;\n}\n\n.search-box,.subsubsub{\n margin-bottom:0px !important;\n}\n\nbody.seedprod-body{\n background: #fff;\n}\n\nbody.seedprod_page_seedprod_pro_template #wpwrap, body.seedprod_page_seedprod_lite_template #wpwrap{\n background: #f7f6f7;\n}\n\n.seedprod_page_seedprod_pro_template{\nbutton, input, optgroup, select, textarea{\n outline:none !important;\n box-shadow: none !important;\n}\n}\n\n.seedprod_page_seedprod_lite_template{\n button, input, optgroup, select, textarea{\n outline:none !important;\n box-shadow: none !important;\n }\n }\n\n.seedprod_page_seedprod_pro_template{\ninput[type=color], input[type=date], input[type=datetime-local], input[type=datetime], input[type=email], input[type=month], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], input[type=week], select, textarea {\n box-shadow: 0 0 0 transparent;\n border-radius: 4px;\n border: 1px solid #d3ced2;\n background-color: #fff;\n color: #32373c;\n}\n}\n\n.seedprod_page_seedprod_lite_template{\n input[type=color], input[type=date], input[type=datetime-local], input[type=datetime], input[type=email], input[type=month], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], input[type=week], select, textarea {\n box-shadow: 0 0 0 transparent;\n border-radius: 4px;\n border: 1px solid #d3ced2;\n background-color: #fff;\n color: #32373c;\n }\n }\n\n// body.seedprod-body #wpwrap{\n// background: #f1f1f1;\n// }\n\n.seedprod-builder{\n display: none ;\n}\n\n.seedprod-action-txt{\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n width: 340px;\n display: inline-block;\n}\n\n#seedprod-page-name{\n width:100%;\n background:#fbfcfb;\n height: 75px;\n border-bottom:1px solid #f0f0f0;\n margin-top: 67px;\n display: table;\n padding:0 23px;\n input{\n height:40px;\n border-radius:2px;\n width: 315px;\n }\n label{\n margin-bottom: 0px;\n font-size:16px;\n margin-right:15px;\n }\n .form-group{\n display: table-cell;\n vertical-align: middle\n }\n}\n.template-chooser{\n h2{\n margin-top:0;\n margin-bottom: 15px;\n font-size:24px;\n color: #2d2d2d;\n font-weight: 400;\n }\n p{\n color: #666;\n font-size: 14px;\n margin-bottom:30px;\n }\n .highlight-template{\n color: #f1470d !important;\n text-decoration: underline;\n :hover{\n text-decoration: none;\n }\n }\n}\n\n.seedprod-builder #adminmenu,.seedprod-builder #wpadminbar{\n display:none !important;\n}\n\n#seedprod-steps-nav{\n border-left: 1px solid #f9f9f9;\n a{\n font-size:14px;\n padding-left: 15px;\n padding-right: 15px;\n }\n}\n\n.seedprod-builder-step .container-fluid {\n padding-left: 23px !important;\n padding-right: 23px !important;\n}\n\n .seedprod-builder-step h1{\n margin:20px 0 10px 0 !important;\n}\n\n.seedprod table{\n background-color: #f8f8f8;\n}\n\n.seedprod .navbar-default{\n background-color: #fafbfc;\n border-color: #e8e8e8;\n overflow: hidden;\n}\n\n.seedprod-builder .navbar-default{\n background-color: #fff;\n}\n\n.seedprod .panel-default>.panel-heading {\n color: #222;\n background-color: #f8f8f8;\n border-color: #ddd;\n font-weight: bold;\n position: relative;\n}\n\n.widefat thead th, .widefat thead td {\n border-bottom: 1px solid #ddd;\n}\n\n.widget-top, .menu-item-handle, .widget-inside, #menu-settings-column .accordion-container, #menu-management .menu-edit, .manage-menus, table.widefat, .stuffbox, p.popular-tags, .widgets-holder-wrap, .wp-editor-container, .popular-tags, .feature-filter, .imgedit-group, .comment-ays {\n border: 1px solid transparent;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);\n margin-top:20px;\n}\n\n\n\n\n// .seedprod-builder{ .form-control, input[type=\"text\"], input[type=\"password\"], input[type=\"checkbox\"], input[type=\"color\"], input[type=\"date\"], input[type=\"datetime\"], input[type=\"datetime-local\"], input[type=\"email\"], input[type=\"month\"], input[type=\"number\"], input[type=\"search\"], input[type=\"radio\"], input[type=\"tel\"], input[type=\"text\"], input[type=\"time\"], input[type=\"url\"], input[type=\"week\"], select, textarea{\n// background-color: #fff;\n// border-color: #DEDADE;\n// box-shadow: none;\n// }\n// }\n\n.seedprod .form-control[disabled], .seedprod .form-control[readonly], fieldset[disabled] .seedprod .form-control {\n background-color: #fbfcfb;\n opacity: 1;\n}\n\n.seedprod-builder .input-group-addon{\n background-color: #fff;\n border-color: #DEDADE;\n}\n\n.column.entries, .column.subscribers, .column.active {\n width:120px;\n}\n\n.column.type{\n width:160px;\n}\n\n.column.status{\n width:210px;\n white-space: nowrap;\n}\n\n.column.starts{\n width:130px;\n white-space: nowrap;\n\n}\n.column.ends{\n width:130px;\n white-space: nowrap;\n}\n\n.vue-js-switch .v-switch-core{\n background: #d6d6d6 !important;\n}\n\n.vue-js-switch.toggled .v-switch-core{\n background: #4CAF50 !important;\n}\n\n\n\n\n\n// .wp-core-ui #post-body-content .button{\n// color: #222;\n// border-color: #ddd;\n// background: #f8f8f8;\n// box-shadow:none;\n// }\n\n\n.seedprod .navbar-default .navbar-nav>li>a , .seedprod .input-group-addon{\n color: #b3b3b3;\n}\n\n.seedprod-builder #seedprod-sidebar-wrapper .input-group-addon{\n color: #c7c7c7;\n font-size:13px;\n\n}\n\n.seedprod .navbar-nav>li>a{\n padding-top: 19px !important;\n padding-bottom: 23px !important;\n}\n\n.seedprod-builder .navbar-nav>li>a{\n padding-top: 23px !important;\n padding-bottom: 23px !important;\n}\n\n#seedprod-steps-nav a span{\n padding: 0 10px 24px;\n}\n\n.seedprod .navbar-default .navbar-nav>.active>a,\n.seedprod .navbar-default .navbar-nav>.active>a:focus\n{\n color: #222;\n background-color: #fff !important;\n span{\n box-shadow: inset 0 -3px 0px 0px #f1470d !important;\n padding: 0 10px 24px;\n }\n\n}\n\n\n.seedprod .navbar-default .navbar-nav>li>a:hover{\n color: #222;\n background-color: #fff !important;\n}\n\n.striped > tbody > :nth-child(even), ul.striped > :nth-child(even), .alternate {\n background-color: #fff;\n}\n\n.seedprod-icon::before {\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n}\n\n.icon-refer-a-friend::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f004\";\n}\n\n.icon-refer-a-friend{\n background-color: #e42e2f;\n border-color: #e42e2f !important;\n color: #fff;\n}\n\n.icon-automatic-entry::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f3ff\";\n}\n\n.icon-automatic-entry{\n background-color: #FF9800;\n border-color: #FF9800 !important;\n color: #fff;\n}\n\n.icon-submit-image::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f03e\";\n}\n\n.icon-submit-image{\n background-color: #009688;\n border-color: #009688 !important;\n color: #fff;\n}\n\n.icon-polls-surveys::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f681\";\n}\n\n.icon-polls-surveys{\n background-color: #E91E63;\n border-color: #E91E63 !important;\n color: #fff;\n}\n\n.icon-join-newsletter{\n background-color: #4CAF50;\n border-color: #4CAF50 !important;\n color: #fff;\n}\n\n.icon-join-newsletter::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f0e0\";\n}\n\n\n.icon-visit-a-page::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f35d\";\n}\n\n.icon-visit-a-page{\n background-color: #0000ba;\n border-color: #0000ba !important;\n color: #fff;\n}\n\n.icon-visit-fb::before, .icon-fb-page-post::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f09a\";\n}\n\n.icon-visit-fb, .icon-fb-page-post{\n background-color: #4267b2;\n border-color: #4267b2 !important;\n color: #fff;\n}\n\n.icon-tweet::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f099\";\n}\n\n.icon-tweet{\n background-color: #38A1F3;\n border-color: #38A1F3 !important;\n color: #fff;\n}\n\n.icon-twitter-follow::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f099\";\n}\n\n.icon-twitter-follow{\n background-color: #38A1F3;\n border-color: #38A1F3 !important;\n color: #fff;\n}\n\n.icon-instagram-follow::before, .icon-instagram-page-post::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f16d\";\n}\n\n.icon-instagram-follow, .icon-instagram-page-post{\n background-color: #f55f3f;\n border-color: #f55f3f !important;\n color: #fff;\n}\n\n.icon-pinterest-follow::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f0d2\";\n}\n\n.icon-pinterest-follow{\n background-color: #e60023;\n border-color: #e60023 !important;\n color: #fff;\n}\n\n.icon-youtube-follow::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f167\";\n}\n\n.icon-youtube-follow{\n background-color: #ff0000;\n border-color: #ff0000 !important;\n color: #fff;\n}\n\n.icon-watch-a-video::before {\n font-family: \"Font Awesome 5 Brands\"; font-weight: 400; content: \"\\f167\";\n}\n\n.icon-watch-a-video{\n background-color: #ff0000;\n border-color: #ff0000 !important;\n color: #fff;\n}\n\n.icon-question::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f059\";\n}\n\n.icon-question{\n background-color: #9900bb;\n border-color: #9900bb !important;\n color: #fff;\n}\n\n\n.icon-invent-your-own::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f0eb\";\n}\n\n.icon-invent-your-own{\n background-color: #0f0f0f;\n border-color: #0f0f0f !important;\n color: #fff;\n}\n\n\n.seedprod-page-types{\n display: flex;\n margin-left:-20px;\n margin-right:-20px;\n}\n\n.seedprod-page-type{\n border:1px solid #ccc;\n padding:20px;\n margin-left:20px;\n margin-right:20px;\n}\n\n\n#seedprod-dashboard{\npadding-right:20px;\n}\n\n.seedprod-app{\n #poststuff{\n padding-top:30px\n }\n .widefat{\n margin-top:10px !important;\n box-shadow: 0 1px 1px rgba(0,0,0,0.04) !important;\n }\n}\n\n#seedprod-dashboard .column-active{\n\twidth:90px;\n}\n\n#seedprod-dashboard .column-subscribers{\n\twidth:120px;\n}\n\n#seedprod-dashboard .column-entries{\n\twidth:120px;\n}\n\n#seedprod-entries .column-entries{\n\twidth:120px;\n}\n\n#seedprod-entries .fa-trophy{\n padding-right:5px;\n}\n\n#seedprod-entries #poststuff{\n padding-top:10px;\n}\n\n#lpage-details-sub{\n color: #999;\n display: block;\n font-size: 10px;\n text-transform: uppercase;\n margin: 0 0 8px 0;\n}\n\n#lpage-details-title{\n float: left;\n font-size: 18px;\n font-weight: 400;\n margin: 0;\n padding-right:8px\n}\n\n#lpage-selector {\n display: inline-block;\n position: relative;\n}\n\n#seedprod-entries{\n margin-top:20px;\n}\n\n#seedprod-entries .toggle.active {\n background-color: #e3e3e3;\n outline: none;\n}\n\n#seedprod-entries .toggle {\n border-radius: 50%;\n color: #444;\n font-size: 16px;\n box-shadow: none;\n}\n\n#seedprod-entries .toggle:before {\n vertical-align: middle;\n}\n\n#lpage-details-actions{\n margin-top: 26px;\n text-align:right;\n}\n\n.lpage-details-actions{\n margin-right:12px;\n text-decoration:none;\n}\n\n.lpage-details-actions:last-child {\n margin-right:0px;\n }\n\n .lpage-selector {\n display: inline-block;\n position: relative;\n}\n\n.lpage-selector ul {\n max-height: 196px;\n overflow-x: hidden;\n padding: 0;\n margin: 0;\n}\n\n#raffleprsss-lpage-list-loading{\n text-align: center;\n display: block;\n}\n\n.lpage-selector ul li {\n list-style: none;\n margin: 0;\n font-size: 13px;\n}\n\n.lpage-selector ul li a {\n display: block;\n text-decoration: none;\n padding: 5px 15px;\n color: #444;\n}\n\n.lpage-selector ul li a:hover {\n background-color: #f7f7f7;\n color: #444;\n}\n\n#winner-selector{\n display: inline-block;\n position: relative;\n}\n\n#seedprod-winner-options{\n background: #fff;\n border-radius: 3px;\n box-shadow: 0 2px 8px 0 rgba(0,0,0,0.1);\n position: absolute;\n top: 69px;\n left: -15px;\n width: 300px;\n z-index: 9992;\n font-size: 13px;\n font-weight: normal;\n padding: 20px;\n input[type=\"radio\"]{\n margin-top: 3px;\n }\n}\n\n#seedprod-winner-options:before{\n content: \" \";\n position: absolute;\n top: -10px;\n left: 145px;\n width: 0;\n height: 0;\n border-style: solid;\n\n border-width: 0 8px 10px 8px;\n border-color: transparent transparent #fff transparent;\n}\n\n#lpage-list{\n background: #fff;\n border-radius: 3px;\n box-shadow: 0 2px 8px 0 rgba(0,0,0,0.1);\n position: absolute;\n top: 27px;\n left: -108px;\n width: 230px;\n padding: 10px 0;\n z-index: 9991;\n}\n\n#lpage-list:before{\n content: \" \";\n position: absolute;\n top: -10px;\n left: 110px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 8px 10px 8px;\n border-color: transparent transparent #fff transparent;\n}\n\n\n#seedprod-header{\n position: relative;\n background: #fff;\n margin-left: -20px;\n border-bottom:1px solid #ccc;\n}\n\n.seedprod-header-margin{\n margin-top:20px !important;\n}\n\n.seedprod .navbar-right{\n margin-right: 0;\n border-color:transparent;\n border-bottom-color: #e7e7e7;\n}\n\n.seedprod-breadcrumbs{\n display: inline-block;\n margin-top:10px;\n margin-bottom:20px;\n}\n\n#seedprod-page-title{\n background-color: #fff;\n margin: 0 0 0px -20px;\n padding: 15px 20px;\n font-size: 23px;\n font-weight: 400;\n line-height: 29px;\n border-bottom:1px solid #e7e8e7;\n .add-new-h2 {\n margin-left: 28px;\n }\n}\n\n.seedprod-btn-orange {\n background-color: #f1460d !important;\n border-color: #f0460d !important;\n color: #fff !important;\n}\n\n.seedprod-btn-orange:hover {\n background-color: #c1390a !important;\n border-color: #c1390a !important;\n color: #fff !important;\n}\n\n\n.seedprod-breadcrumbs small{\n font-size:14px;\n}\n\n.seedprod .container-fluid{\n padding:0;\n}\n\n.d-ib{\n display:inline-block;\n}\n\n.seedprod .tablenav{\n margin: 0px 0 4px;\n}\n\n\n.seedprod-default-cusor{\n cursor: default;\n}\n\n.seedprod td, .seedprod th{\n padding:10px\n}\n\n.seedprod :focus{\n outline: none !important;\n box-shadow: none !important;\n}\n\n\n/* Builder */\n#seedprod-search-close{\n margin-left: -24px;\n margin-right: 11px;\n color: #aaa;\n z-index:999;\n position: relative;\n cursor: pointer;\n}\n// #seedprod-customizer {\n// background: #fff;\n// position: fixed;\n// top: 0;\n// bottom: 0;\n// left: 0;\n// right: 0;\n// z-index: 99999;\n// height: 100%;\n\n// }\n\n\n\n#seedprod-customizer-wrapper {\n height: 100%;\n}\n\n.seedprod-builder .mx-input, #seedprod-sidebar-wrapper .form-control{\n font-size: 16px;\n height:40px;\n\n}\n\n.seedprod-builder .btn i{\n color: rgba(0, 0, 0, 0.34);\n}\n\n// .seedprod-builder .seedprod-sidebar-form-body .btn i {\n// margin-right: 4px;\n// }\n// .seedprod-builder .seedprod-settings-page-wrapper .btn i {\n// margin-right: 4px;\n// }\n\n.rules-modal{\n\n .seedprod-modal-container{\n border-radius: 6px;\n max-width:620px;\n position: relative;\n }\n hr{\n margin-top:15px;\n margin-bottom:25px;\n }\n .seedprod-modal-body{\n margin-top:0;\n }\n i{\n color: #ccc;\n cursor: pointer;\n position:absolute;\n top:20px;\n font-size:16px;\n right:20px\n }\n}\n\n\n\n\n\n#seedprod-sidebar-nav-wrapper {\n background-color: #2d2d2d;\n color: #a3a3a3;\n z-index: 200;\n left: 0px;\n position: absolute;\n bottom: 0;\n top: 67px;\n right: auto;\n width: 95px;\n overflow-y: auto;\n overflow-x: hidden;\n .active{\n background-color: #000;\n color:#fff;\n }\n}\n\n\n.sp-section-toolbar{\n background: url(../svg/section-toolbar.svg);\n background-position: top center;\n background-repeat: no-repeat;\n width: 218px;\n height: 28px;\n margin-top: -4px;\n align-items: center;\n justify-content: center;\n span{\n margin: 2px 2px 0 2px;\n }\n span:first-child{\n margin-left:6px\n }\n}\n\n#sp-sidebar-drawer{\ncursor: pointer;\n height:76px;\n width:13px;\n background-image: url(../svg/sidebar-drawer.svg);\n background-repeat: no-repeat;\n background-size: auto;\n background-position: -7px 0;\n top:50%;\n svg{\n min-width: 23px;\n margin-left: -6px;\n }\n}\n\n.sp-sidebar-drawer-closed{\n margin-left: -320px !important;\n}\n\n#seedprod-sidebar-wrapper {\n background-color: #F7F6F7;\n color: #4F394D;\n width: 320px;\n min-width: 320px;\n z-index:10;\n margin-top: 0px;\n margin-bottom: 125px;\n box-shadow: 0 .5rem 1rem rgba(0,0,0,.15);\n}\n\n#seedprod-preview-wrapper.sp-setup_settings_connect{\n background-color: #EDEBED !important;\n}\n\n\n\n#seedprod-preview-wrapper{\n margin-bottom: 72px;\n background-color: #7B6B7A;\n overflow-y: scroll;\n\n #seedprod-builder-view{\n margin-left:auto;\n margin-right:auto;\n background-color: #fff;\n }\n}\n\n.sp-mobile-view{\n border-radius: 10px;\n border: 5px solid #4F394D;\n box-shadow: 0px 15px 50px rgba(35, 8, 32, 0.25);\n margin-top:15px;\n}\n\n\n.seedprod-sidebar-form-body {\n padding: 0px;\n padding-top:0px;\n padding-bottom: 30px;\n margin: 0 20px;\n text-align: left;\n box-shadow: inset 0 -1px 0 rgba(167,156,166,0.25);\n .col-md-6:first-child{\n padding-right:7px;\n }\n .col-md-6:last-child{\n padding-left:7px;\n }\n .help_tip i{\n vertical-align: text-top;\n color: #c7c7c7;\n }\n}\n\n// .seedprod_collaspe, .seedprod-sidebar-form-body{\n// border-bottom: 1px solid #e3dfe3;\n// }\n\n\n// .seedprod-sidebar-form h3{\n// cursor: pointer;\n// color: #4f394d;\n// font-weight: 600;\n// font-size: 16px;\n// padding: 15px 0;\n// }\n\n\n\n// .seedprod-sidebar-form h3::after {\n// text-align: right;\n// float:right;\n// content: \"\";\n// // font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f078\";\n// // color: #4F394D ;\n// background-image: url(../img/down-arrow.png);\n// background-repeat: no-repeat;\n// background-size: auto;\n// background-position: 0;\n// width: 13px;\n// height: 13px;\n// }\n\n\n// .seedprod-sidebar-form h3.seedprod_collaspe::after {\n// text-align: right;\n// float:right;\n// content: \"\";\n// background-image: url(../img/right-arrow.png);\n// background-repeat: no-repeat;\n// background-size: auto;\n// background-position: 0;\n// width: 13px;\n// height: 13px;\n// }\n\n\n#seedprod-dragbar {\n background-color: #ccc;\n height: 100%;\n width: 3px;\n cursor: col-resize;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n#seedprod-ajax-status{\n background: #230820;\n position: fixed;\n right: 29px;\n top: 26px;\n font-size:16px;\n z-index: 999999;\n color: #fff;\n}\n\n#seedprod-builder-view{\n padding:0;\n height:100%;\n overflow-y: auto;\n}\n\n#seedprod-preview, .seedprod-settings-page {\n overflow-y: scroll;\n float: right;\n height: 100%;\n width: 100%;\n padding:40px 35px;\n //background:#EDEBED;\n background:#F7F6F7;\n}\n\n.sp-sectiontemplates .seedprod-settings-page {\n background:#EDEBED;\n}\n\n\n\n#seedprod-sidebar-wrapper .sp-setting-control{\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom:10px;\n }\n\n#seedprod-sidebar-wrapper .sp-setting-control label{\n font-size:13px;\n }\n\n.seedprod-settings-page-wrapper{\n color:#4F394D;\n p, label{\n font-size:16px !important;\n font-weight:600;\n }\n .form-group{\n margin-bottom:25px;\n }\n\n h1{\n font-weight: bold;\n font-size: 20px;\n margin-bottom: 40px;\n }\n hr{\n margin-top: 15px;\n margin-bottom: 25px;\n }\n .checkbox label{\n color: #4F394D;\n }\n .form-control, .btn {\n height: 40px;\n }\n .help_tip {\n vertical-align: top;\n display: inline-block;\n i{\n color: #c7c7c7;\n }\n\n }\n .seedprod-affiliate-details{\n color: #999 !important;\n font-size:13px !important;\n margin-top:8px;\n a{\n color: #f1470d !important;\n text-decoration: underline;\n }\n }\n}\n\n#seedprod-settings{\n border-right:0px;\n border-left:0px;\n\n .list-group-item{\n display: flex;\n justify-content: space-between ;\n align-items: center;\n padding: 19px 24px;\n color: #7B6B7A;\n width: 100%;\n text-align: left;\n font-weight: 600;\n font-size: 16px;\n border-bottom: 1px solid #EDEBED;\n }\n\n .list-group-item:first-child{\n border-top:0 !important;\n\n }\n\n .active{\n color: #f1470d;\n }\n\n}\n\n#seedprod-preview{\n padding:0;\n}\n\n#seedprod-customizer-header-wrapper{\n\ttop:0;\n\tleft:0;\n\theight: 67px;\n\twidth:100%;\n background:#fafafa;\n z-index:99;\n\n}\n\n.seedprod .navbar-brand{\n padding: 6px 15px;\n height: 67px;\n}\n\n.seedprod-builder .navbar-brand{\n padding: 11px 15px;\n height: 67px;\n}\n\n#seedprod-builder-help{\n color: #A79CA6;\n margin-right: 18px;\n font-size:14px;\n padding: 8px 12px;\n i{ margin-right: 4px;\n color:#A79CA6;\n }\n}\n\n#seedprod-builder-help:hover{\n color: #fff;\n}\n\n\n\n\n\n.seedprod-overflow-hidden{\n overflow: hidden;\n}\n\n// .seedprod-overflow-scroll{\n// overflow-y: scroll;\n// }\n\n#seedprod_preview{\n width:100%;\n height:700px;\n}\n\n\n\n.seedprod .navbar{\n\tborder-radius: 0 !important;\n\tmargin-bottom: 0;\n\theight: 90px;\n}\n\n.seedprod-builder .navbar{\n\tborder-radius: 0;\n\tmargin-bottom: 0;\n\theight: 67px;\n}\n\n\n\n#seedprod-builder-close{\n margin-right: 16px;\n margin-left: 14px;\n font-size:15px;\n width: 40px;\n height: 40px;\n color: #a79ca6;\n border-radius: 100px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n#seedprod-builder-close:hover{\n color: #fff;\n}\n\n\n\n\n.seedprod-install-option{\n\tfloat: left;\n\twidth:250px;\n\tmin-height: 195px;\n\tmargin-right:20px;\n}\n\n#seedprod-publish-title{\nfont-size:24px;\nfont-weight: 400;\nmargin-top:50px;\nmargin-bottom:15px;\ncolor:#2d2d2d;\n}\n\n#seedprod-publish-desc{\ncolor:#676767;\nfont-size:14px;\nmargin-bottom:30px;\n}\n\n.seedprod-publish-option{\n padding:20px;\n background: #fff;\n border: 1px solid #f1f1f1;\n border-radius: 8px;\n cursor: pointer;\n margin-bottom:20px;\n h3{\n margin-top:0;\n margin-bottom: 17px;\n font-size: 16px;\n }\n p{\n margin:0;\n font-size:14px;\n color: #a7a7a7;\n }\n}\n\n.seedprod-publish-options .col-sm-4:first-child{\n padding-right:7px;\n}\n\n.seedprod-publish-options .col-sm-4:nth-child(2){\n padding-right:7px;\n padding-left:7px;\n}\n\n.seedprod-publish-options .col-sm-4:last-child{\n padding-left:7px;\n}\n\n#seedprod-publish-options-details{\n padding:30px 20px;\n background: #fff;\n border: 1px solid #f1f1f1;\n border-radius: 8px;\n margin:0 0px;\n h4{\n font-size: 18px;\n color: #2d2d2d;\n margin:0 0 40px 0;\n font-weight: 400;\n }\n ol{\n margin:0;\n margin-left: 15px;\n }\n li{\n color: #666;\n font-size:14px;\n margin-bottom:10px;\n\n }\n p{\n margin:40px 0 15px 0;\n color: #666;\n font-size: 14px;\n }\n .fa-copy{\n\n color:#999;\n }\n .input-group-addon{\n padding: 2px 10px 0;\n cursor: pointer;\n }\n .input-group-addon, .form-control{\n height: 40px;\n }\n .form-control{\n width: 215px;\n }\n .btn{\n height: 40px;\n margin-left:7px;\n }\n\n\n\n}\n\n.seedprod-sidebar-nav{\n\tpadding:17px 0;\n\ttext-align: center;\n border-bottom: 1px solid #3d3d3d;\n}\n\n.seedprod-sidebar-nav:hover{\n color: #fff;\n}\n\n.seedprod-sidebar-nav span{\n display: block;\n padding-top:5px;\n font-size:14px;\n}\n\n.seedprod-sidebar-nav i{\n font-size: 25px;\n}\n\n\n\n.seedprod-enter-active{\n\ttransition: opacity .3s\n}\n\n.seedprod-leave-active {\n\topacity: 0\n}\n\n.seedprod-enter,.seedprod-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0\n}\n\n.fade-enter-active{\n\ttransition: opacity 1s\n}\n\n.fade-leave-active {\n\topacity: 0\n}\n\n// .fade-enter,.fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n// \topacity: 0\n// }\n\n#seedprod-sidebar-nav-wrapper > div{\n\tcursor: pointer;\n}\n\n.seedprod-prize{\n margin-bottom:13px;\n}\n\n.seedprod-prize .btn{\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.toast {\n opacity: 1 !important;\n}\n\n.seedprod-install-option{\n cursor:pointer;\n}\n\n.seedprod .vue-swatches__row{\n height:24px;\n}\n\n.seedprod .vue-swatches__container{\n white-space: normal;\n}\n\n.seedprod .vue-swatches__wrapper{\n width: 230px !important;\n}\n\n\n.seedprod .input-group-addon{\n padding:2px 6px 0;\n}\n\n.seedprod .vue-swatches .vue-swatches__trigger{\n width: 20px !important;\n height: 20px !important;\n}\n\n.seedprod .mx-input,.seedprod .mx-input-append ,.seedprod .mx-calendar{\n color:#555 !important ;\n}\n.seedprod .mx-input-append{\n padding: 7px;\n}\n\n.seedprod .mx-calendar .actived{\n color:#fff !important;\n}\n\n.seedprod .mx-datepicker-popup{\n margin-top: -10px;\n}\n\n\n.seedprod .time-picker input.display-time{\n border:1px solid #ddd;\n box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 );\n height: 34px;\n border-radius: 4px;\n padding: 6px 10px;\n font-size:14px;\n width: 100%;\n color: #6a6a6a;\n}\n\n.time-picker .dropdown ul li.active, .time-picker .dropdown ul li.active:hover {\n background: #f3510a;\n color: #fff;\n}\n\n.seedprod-builder .time-select:after{\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f017\";\n color: #a6a6a6;\n position: absolute;\n right: 23px;\n top:11px;\n font-size:13px;\n}\n\n.seedprod-builder select.form-control {\n // appearance:none;\n // background: url(../img/down-arrow.png) 250px no-repeat;\n}\n\n.time-select select.form-control {\n appearance:none;\n}\n\n\n\n\n.mx-panel-date td.today {\n color: #f3510a !important;\n}\n\n.mx-calendar-content .cell.actived {\n color: #fff;\n background-color: #f3510a !important;\n}\n\n\n\n.seedprod-img-preview{\n position:relative;\n display: inline-block;\n}\n\n.seedprod-img-preview i{\n position: absolute;\n top: 4px;\n right: -6px;\n}\n\n.seedprod-img-preview img{\n max-width:100%;\n max-height:280px;\n // border:1px solid #DEDADE;\n // padding:5px;\n\n}\n\n/* Slideshow BG Settings */\n.sp-slideshow-bg-settings {\n}\n\n.sp-slideshow-bg-settings .seedprod-img-preview {\n\tcursor: move;\n}\n\n.sp-slideshow-bg-settings .seedprod-img-preview img {\n\tmax-width: 150px;\n\tmax-height: 150px;\n}\n\n.sp-slideshow-bg-settings .seedprod-img-preview button:nth-of-type(2) {\n\tdisplay: none;\n}\n\n.sp-slideshow-bg-settings .sp-slide .sp-remove-slide-btn {\n\tvisibility: hidden;\n}\n\n.sp-slideshow-bg-settings .sp-slide:hover .sp-remove-slide-btn {\n\tvisibility: visible;\n}\n\n.seedprod textarea.form-control{\n height:auto;\n}\n\n.seedprod :focus {\n outline: none;\n}\n\n// .seedprod label{\n// cursor: default;\n// }\n\n// .seedprod-builder label{\n// font-size:13px;\n// font-weight: normal;\n// }\n\n\n.seedprod-modal-mask {\n position: fixed;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, .5);\n display: table;\n transition: opacity .3s ease;\n}\n\n.seedprod-modal-wrapper {\n display: table-cell;\n vertical-align: middle;\n}\n\n\n\n.seedprod-modal-header h3 {\n margin-top: 0;\n}\n\n.seedprod-modal-header h3{\n font-size: 20px;\n margin-top: 0;\n margin: 0;\n padding: 0;\n background: #fff;\n display: block;\n}\n\n\n\n.seedprod-modal-body {\n margin: 20px 0;\n}\n\n.seedprod-modal-enter {\n opacity: 0;\n}\n\n.seedprod-modal-leave-active {\n opacity: 0;\n}\n\n.seedprod-modal-enter .seedprod-modal-container,\n.seedprod-modal-leave-active .seedprod-modal-container {\n -webkit-transform: scale(1.1);\n transform: scale(1.1);\n}\n\n.seedprod .btn-prize{\n text-align:left;\n border-left:none;\n border-right:none;\n border-radius:0;\n width: 213px;\n font-size: 13px;\n color: #666;\n\n}\n\n.seedprod .btn-prize-sngle{\n text-align:left;\n width: 213px;\n font-size: 13px;\n color: #666;\n\n}\n\n.seedprod .btn-prize,\n.seedprod .btn-prize-single{\n background: #fff !important;\n color: #333 !important;\n border-color: #efefef !important;\n padding-left:2px;\n padding-right:2px;\n\n}\n\n.seedprod .btn-add-prize, .seedprod .btn-prize-single{\n font-size: 14px;\n}\n\n.seedprod .btn-prize-single{\n padding-left:10px;\n padding-right:10px;\n}\n\n.seedprod .btn-prize::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f303\";\n float:right;\n color: #c7c7c7;\n}\n\n\n.seedprod .btn-prize-single::before {\n font-family: \"Font Awesome 5 Free\"; font-weight: 900; content: \"\\f303\";\n float:right;\n color: #c7c7c7;\n}\n\n.seedprod .btn-prize:active::before, .seedprod .btn-prize:hover::before, .seedprod .btn-prize-single:hover::before {\n color: #333 !important;\n}\n\n.seedprod .btn-my-entry-option{\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align:left;\n}\n\n.seedprod-prize .input-group-addon:hover{\n color: #333;\n}\n\n.seedprod-prize-close, .seedprod-block-option-remove{\n cursor:pointer;\n}\n\n.seedprod-prize-move, .seedprod-block-option-move{\n cursor:grab;\n}\n\n.seedprod-prize-move:active, .seedprod-block-option-move:active{\n cursor:grabbing;\n}\n\n.seedprod .btn-entry-option{\n margin-bottom:8px;\n position: relative;\n padding-left: 45px;\n height: 40px;\n}\n\n.seedprod .btn-entry-option:active,.seedprod .btn-entry-option:focus {\n background-color:#fff !important;\n}\n\n.btn-entry-option{\n .seedprod-block-option-icon{\n position: absolute;\n left: 0;\n height: 40px;\n padding-top: 9px;\n padding-left: 10px;\n padding-right: 10px;\n width: 35px;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .fa-plus,.fa-sync-alt{\n position: absolute;\n right: 10px;\n color: #c7c7c7;\n top: 12px;\n }\n}\n\n#seedprod-add-actions{\n\n h3{\n color:#4F394D;\n font-weight: 600;\n font-size: 16px;\n margin: 0px 20px;\n padding:15px 0;\n\n }\n\n // h3:last-of-type{\n // border-bottom: 1px solid #e3dfe3 !important;\n // }\n\n\n}\n\n\n\n\n/* scroll modal */\n\n.seedprod-modal-mask {\n position: fixed !important;\n z-index: 99999 !important;\n top: 0px !important;\n right: 0px !important;\n bottom: 0px !important;\n left: 0px !important;\n overflow-y: auto !important;\n transform: translate3d(0,0,0) !important;\n display: flex !important;\n transition: opacity .3s ease;\n }\n\n .seedprod-modal-wrapper {\n display: flex !important;\n margin: auto !important;\n //max-width: 760px !important;\n width: 100% !important;\n padding-left:80px;\n padding-right: 80px;\n }\n\n .seedprod-modal-container {\n width: 600px;\n background-color: #ffffff;\n flex: 1 !important;\n width: 100% !important;\n margin: 100px auto;\n padding:0 ;\n background-color: #fff;\n border-radius: 10px;\n box-shadow: 0 2px 8px rgba(35,8,32, 0.6);\n transition: all .3s ease;\n .seedprod-modal-body{\n margin:0;\n }\n .sp-modal-left{\n border-top-left-radius: 10px;\n border-bottom-left-radius: 10px;\n }\n .sp-modal-right{\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n }\n }\n\n .seedprod-modal-header h3 {\n margin-top: 0;\n }\n\n .seedprod-modal-body {\n margin: 20px 0;\n }\n\n .seedprod-modal-enter, .seedprod-modal-leave {\n opacity: 0;\n }\n\n .seedprod-modal-enter .seedprod-modal-container,\n .seedprod-modal-leave .seedprod-modal-container {\n -webkit-transform: scale(1.1);\n transform: scale(1.1);\n }\n\n .seedprod input[type=checkbox], .seedprod input[type=radio] {\n margin: 0px 0 0;\n}\n\n.seedprod-sidebar-nav.active:before {\n position: absolute;\n right: -10px;\n margin-top: 28px;\n display: block;\n width: 20px;\n height: 20px;\n content: '';\n background-color: #ffffff;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n border-bottom: 1px solid transparent;\n border-right: 1px solid rgba(0,0,0,.05);\n}\n\n.seedprod .modal{\n z-index: 99999;\n background-color:rgba(0, 0, 0, 0.5);\n}\n\n.seedprod .modal-dialog{\n margin: 80px auto;\n}\n\n#seedprod-upgrade-ribbon-wrapper{\n position: fixed;\n z-index: 1;\n right: 0;\n bottom: 0;\n overflow: hidden;\n height: 110px;\n width: 150px;\n}\n\n#seedprod-upgrade-ribbon{\n position: absolute;\n z-index: 1;\n right: -48px;\n bottom: -15px;\n height: 75px;\n width: 150px;\n font-size: 14px;\n font-weight: 700;\n color: #fff;\n text-transform: uppercase;\n text-align: right;\n line-height: 20px;\n transform: rotate(-45deg);\n cursor:pointer;\n display: block;\n background: #4CAF50;\n box-shadow: inset 0 3px 15px -5px #000;\n}\n\n#seedprod-upgrade-ribbon span{\n transform: rotate(45deg);\n position: absolute;\n bottom: 25px;\n right: 43px;\n}\n\n.seedprod-pro #seedprod-upgrade-ribbon-wrapper{\n display: none;\n }\n\n.seedprod .ribbon {\n position: absolute;\n right: 0px;\n top: 0px;\n z-index: 1;\n overflow: hidden;\n width: 75px;\n height: 75px;\n text-align: left;\n}\n\n.ribbon span {\n font-size: 8px;\n font-weight: 700;\n color: #fff;\n text-transform: uppercase;\n text-align: center;\n line-height: 20px;\n transform: rotate(45deg);\n width: 100px;\n display: block;\n background: #79a70a;\n background: linear-gradient(#ff9c41 0%,#ff9c41 100%);\n box-shadow: 0 3px 20px -5px #000;\n position: absolute;\n top: 18px;\n right: -21px;\n}\n\n\n\n\n\n.seedprod-img-preview i{\n cursor: pointer;\n}\n\n.seedprod .help-block{\n font-size: 12px;\n\n}\n\n.seedprod .has-error .form-control {\n border-color: #ff0000 !important;\n}\n\n.seedprod-builder .input-group-poll-choices{\n margin-bottom:10px;\n position: relative;\n i{\n position: absolute ;\n top: 13px;\n right: 7px;\n color: #c7c7c7;\n cursor: pointer;\n }\n}\n\n.seedprod-winner{\n background-color: rgba(241, 71, 13, 0.08) !important;\n background-image: url(../img/confetti-light.png);\n background-repeat: no-repeat;\n background-size: 200px;\n background-position: 23px -48px;\n font-weight: bold;\n\n}\n\n.seedprod-invalid-entry{\nopacity: 0.4;\n}\n\n.notice, div.updated, div.error{\n}\n\n.error{\n color:red !important;\n}\n\n.seedprod-pro #wpfooter{\n display:none;\n}\n\n#footer-upgrade{\n display:none;\n}\n\n#email_integrations{\n width:100%\n}\n\nhtml{\n background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;\n background-repeat: no-repeat !important;\n background-position: center center !important;\n height: 100%;\n}\n\n#email_integrations_wrapper{\n background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==');\n background-repeat: no-repeat;\n background-position: center center;\n}\n\n.iframe_loading{\n background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;\n background-repeat: no-repeat !important;\n background-position: center 100px !important;\n height: 100%;\n}\n\n.results_loading{\n background-image: url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;\n background-repeat: no-repeat !important;\n background-position: center 50px !important;\n height: 100%;\n}\n\n.seedprod .navbar-right {\n margin-right: 0px !important;\n}\n\n.seedprod_page_seedprod_account .seedprod .radio label, .seedprod-pro_page_seedprod_account .seedprod .radio label{\n padding-left:0;\n}\n\n.seedprod .navbar-header {\n float: left !important;\n}\n\n.seedprod{\n.navbar-collapse.collapse {\n display: block!important;\n }\n\n .navbar-nav>li, .navbar-nav {\n float: left !important;\n }\n\n\n .navbar-right {\n float: right!important;\n }\n}\n\n.seedprod-pro-feature{\n opacity: 0.65;\n}\n\n\n.seedprod-pro-upgrade{\n background: rgba(4, 4, 4, 0.6);\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 99999;\n display: table;\n width: 100%;\n height: 100%;\n}\n\n.seedprod-pro-upgrade-row{\n display: table-row;\n width: 100%;\n}\n\n.seedprod-pro-upgrade-cell{\n display: table-cell;\n vertical-align: middle;\n}\n\n.seedprod-pro-upgrade-content{\n background-color: #fff;\n border-radius: 4px;\n max-width: 500px;\n margin: auto;\n padding: 20px;\n text-align:center;\n .btn{\n text-transform: uppercase;\n }\n}\n\n.handdrawn-underline {\n border-bottom: 2px solid #ff9948;\n line-height: .9;\n display: inline-block;\n}\n\n\n/* Builder Preview */\n#seedprod-wrapper{\n\n\n max-width: 480px;\n margin:auto;\n text-align:center;\n border-radius: 6px;\n color: #696969;\n background-color: #fbfbfb;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);\n}\n#seedprod-wrapper .seedprod-td{\n display: table-cell;\n vertical-align: middle;\n padding:0 3px;\n height: 68px;\n}\n\n#seedprod-page-footer {\n padding: 15px 20px;\n font-size: 11px;\n a{\n color: #9c9c9c !important;\n }\n}\n\n#seedprod-page-entries {\n padding: 11px 0px 0 0;\n color: #2d2d2d;\n p > strong{\n font-size: 16px;\n }\n p{\n margin-bottom:11px;\n }\n}\n\n#seedprod-page-login {\n padding: 15px 0px;\n font-size: 14px;\n color:#666;\n .btn-primary{\n color: #fff;\n background-color: #36ad39;\n border-color: #36ad39;\n }\n .form-control{\n height: 40px;\n margin-right:8px;\n width:165px;\n }\n .btn{\n padding: 9px 20px;\n }\n i{\n color: #fff;\n }\n #login-ft-txt{\n margin-top:15px;\n font-size:12px;\n }\n}\n\n#seedprod-page-form {\n background: #fff;\n border-bottom: 1px solid #f2f2f2;\n padding:5px;\n}\n#seedprod-wrapper .seedprod-top-sep{\n border-right: 1px solid #f2f2f2;\n\n}\n\n#seedprod-wrapper .seedprod-over-txt{\n font-size:20px;\n line-height: 0.9;\n font-weight: bold;\n margin-bottom: 5px;\n display: inline-block;\n}\n\n#seedprod-wrapper .seedprod-under-txt{\n font-size:12px;\n line-height: 1;\n display: block;\n\n}\n\n.seedprod-drag-source{\n margin-bottom: -8px;\n margin-right: -8px;\n}\n\n#sp-blocks-editing{\n background: #DD4A1F;\n color: #fff;\n height:56px;\n line-height: 1;\n font-weight: 600;\nfont-size: 16px;\ntext-transform: capitalize;\n span{\n display: block;\n opacity: 0.5;\n text-transform: uppercase;\n font-weight: 600;\nfont-size: 10px;\n }\n}\n\n.sp-block-type-global{\n background: #E4E1E4!important;\n color: #4F394D !important;\n}\n\n.sp-block-type-row{\n background: #3F5FD1 !important;\n}\n\n.sp-block-type-section{\n background: #7036BB !important;\n}\n\n.sp-sidebar-headers .sp-w-5 {\n width: 1.5rem !important;\n}\n\n#sp-blocks-edit-sections {\n margin-bottom:16px;\n margin-left: -20px;\n margin-right: -20px;\n div{\n display:flex;\n padding-top:18px;\n padding-bottom:18px;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n font-size: 13px;\n\n }\n i{\n margin-right:6px;\n }\n div.sp-secondary{\n background: #DEDADE;\n color: #7B6B7A;\n }\n}\n\n#sp-blocks-sections {\n div{\n display:flex;\n padding-top:18px;\n padding-bottom:18px;\n justify-content: center;\n align-items: center;\n font-weight: 600;\n font-size: 14px;\n\n }\n i{\n margin-right:6px;\n }\n div.sp-secondary{\n background: #DEDADE;\n color: #7B6B7A;\n }\n}\n\n\n.seedprod-block-option:hover{\n background: #DD4A1F;\n border-radius:5px;\n color: #fff;\n}\n\n.seedprod-block-option{\n background: #EDEBED;\n width:88px;\n height:85px;\n margin-bottom:8px;\n margin-right:8px;\n display:flex;\n justify-content: center;\n border-radius:5px;\n\n i{\n margin-top:24px;\n font-size:20px !important;\n }\n button{\n display: flex;\n flex-direction: column;\n font-size:11px;\n justify-content: center;\n align-items:center;\n width:100%;\n height:100%;\n cursor: move;\n\n }\n span{\n flex:1;\n display: flex;\n align-items: center;\n }\n\n}\n\n\n\n#seedprod-wrapper .seedprod-block-option-details{\n background: #fff;\n border-top:1px solid #f2f2f2;\n color: #707070;\n position: relative;\n padding:20px 0;\n display: table-cell;\n width: 480px;\n text-align: left;\n padding-left: 74px;\n font-size:16px;\n cursor: pointer;\n}\n\n\n\n.seedprod-entry-drag-area{\n width: 582px;\n margin-left: -34px;\n}\n\n.seedprod-entry-drag-area > div{\n width:100%;\n margin:auto;\n}\n\n#seedprod-wrapper .seedprod-block-option-move:hover{\n color: #333;\n}\n\n\n#seedprod-wrapper .seedprod-block-option-move{\n background: #fcfcfc;\n border: 1px solid #f2f2f2;\n color: #b3b3b3;\n padding: 18px 0 ;\n width: 34px;\n display:table-cell;\n visibility: hidden;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n text-align: center;\n position: relative;\n}\n\n#seedprod-wrapper .seedprod-block-option-edit{\n background: #fcfcfc;\n border: 1px solid #f2f2f2;\n color: #b3b3b3;\n border-right: none;\n padding: 18px 0;\n width: 34px;\n display:table-cell;\n visibility: hidden;\n}\n\n#seedprod-wrapper .seedprod-block-option-edit:hover{\n color: #333;\n}\n\n#seedprod-wrapper .seedprod-block-option-value{\n border: 1px solid #f2f2f2;\n color: #9b9b9b;\n padding:2px;\n padding-top: 5px;\n width: 30px;\n height: 30px;\n right: 24px;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n font-size:13px;\n text-align: center;\n}\n\n .seedprod-block-option-icon{\n border: 1px solid #f2f2f2;\n padding:2px;\n padding-left:3px;\n padding-top: 4px;\n width: 29px;\n height: 29px;\n left: 24px;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n font-size:14px;\n text-align: center;\n}\n\n.seedprod-block-option-icon::before{\n -webkit-font-smoothing: antialiased;\n}\n\n#seedprod-wrapper .seedprod-block-option-remove:hover{\n color: #333;\n}\n\n\n#seedprod-wrapper .seedprod-block-option-remove{\n background: #fcfcfc;\n border: 1px solid #f2f2f2;\n color: #b3b3b3;\n padding: 18px 0;\n width: 34px;\n display:table-cell;\n visibility: hidden;\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n text-align: center;\n}\n\n.show_hidden{\n visibility:visible !important;\n}\n\n\n.seedprod-entry-drag-area > div:last-child .seedprod-block-option-details\n{\n border-bottom:1px solid #f2f2f2;\n}\n\n#seedprod-wrapper .seedprod-block-option-edit{\n cursor:pointer;\n}\n\n\n#seedprod-wrapper .seedprod-page .equal {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n }\n\n#seedprod-wrapper .row , #seedprod-wrapper .seedprod .row{\n margin-left: 0;\n margin-right: 0;\n}\n\n\n#seedprod-prize-info .col-md-12{\n padding:0;\n background: #fff;\n}\n\n#seedprod-wrapper .col-xs-4, #seedprod-wrapper .seedprod .col-xs-4 {\n padding-left: 0;\n padding-right: 0;\n}\n\n\n#seedprod-countdown,#seedprod-total-entries,#seedprod-my-entires {\n text-align:center;\n display: table;\n width: 100%;\n min-height: 40px;\n}\n\n#seedprod-countdown{\n font-size: 16px;\n}\n\n#seedprod-wrapper .slider-btn-left{\n background: transparent !important;\n}\n\n#seedprod-wrapper .slider-btn-right{\n background: transparent !important;\n}\n\n#seedprod-wrapper .slider-icon{\n box-shadow: rgba(0, 0, 0, 0.3) -1px 1px 0px;\n}\n\n#seedprod-wrapper .slider-indicator-icon{\n box-shadow: rgba(255, 255, 255, 0.76) 0 0 2px;\n width: 8px;\n height: 8px;\n}\n\n#seedprod-wrapper .slider-indicator-active{\n box-shadow: rgba(0, 0, 0, 0.76) 0 0 2px;\n width: 7px;\n height: 7px;\n}\n\n\n#seedprod-wrapper .slider-indicator-icon{\n background-color: rgba(0,0,0,.3) !important;\n}\n\n#seedprod-wrapper .slider-indicator-active {\n background-color: rgba(255,255,255,.9) !important;\n}\n\n#seedprod-wrapper #seedprod-prize-info {\n border-top: 1px solid #f2f2f2;\n //border-bottom: 1px solid #f2f2f2;\n}\n\n#seedprod-wrapper h1{\n margin:0;\n margin-top: 30px;\n margin-bottom: 10px;\n font-size: 24px;\n color: #2d2d2d;\n font-weight: 700;\n}\n\n#seedprod-wrapper #seedprod-header{\n margin:0;\n padding:0 40px;\n margin-bottom:12px;\n font-size:16px;\n line-height: 1.4;\n color: #666;\n}\n\n.seedprod .btn-default:hover {\n color: #222;\n background-color: #fff;\n border-color: #bbb;\n}\n\n\n\n.seedprod-action-single h3{\n margin-left: 0px !important;\n margin-right: 0px !important;\n}\n\n.seedprod-action-single .seedprod-action-header:first-child {\n margin-bottom: 0px !important;\n}\n\n.seedprod-sidebar-action-body{\n padding:10px 0;\n // border-bottom-width: 1px;\n // border-color: #d3ced2;\n box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);\n}\n\n.seedprod-action-single .btn-group button{\n padding: 9px 16px;\n\n}\n\n.seedprod .btn-group{\n display:flex !important;\n .btn-default{\n border-color: #DEDADE !important;\n }\n}\n\n.seedprod-action-single .btn{\n padding: 8px 12px;\n}\n\n.seedprod-action-single .btn-group .active{\n background-color: #f1470d !important;\n color: #fff !important;\n box-shadow: none !important;\n\n}\n\n.seedprod-action-header:first-child{\n border-top:0 !important;\n margin-top:1px !important;\n margin-bottom:20px !important;\n}\n\n.seedprod-action-single{\n padding-top: 0px;\n padding-bottom: 0px;\n}\n\n\n.seedprod-block-option-details.active{\n box-shadow:inset 0px 0px 1px 1px #f3510b;\n}\n\n.seedprod .has-error .help-block, .seedprod .has-error .control-label, .seedprod .has-error .radio, .seedprod .has-error .checkbox, .seedprod .has-error .radio-inline, .seedprod .has-error .checkbox-inline, .seedprod .has-error.radio label, .seedprod .has-error.checkbox label, .seedprod .has-error.radio-inline label, .seedprod .has-error.checkbox-inline label {\n color: #ff0000;\n}\n\n\n\n\n/* Tool tips */\n.seedprod-tooltip {\n display: block !important;\n z-index: 99999;\n\n }\n\n .seedprod-tooltip .tooltip-inner {\n font-size:13px;\n background: #4F394D;\n color: #fff;\n border-radius: 6px;\n padding: 5px 10px 4px;\n border:1px solid #4F394D;\n box-shadow: 0 0 3px #4F394D !important;\n max-width:250px;\n width:auto;\n word-wrap: break-word;\n }\n\n .seedprod-tooltip .tooltip-arrow {\n width: 0;\n height: 0;\n border-style: solid;\n position: absolute;\n margin: 5px;\n border-color:#4F394D;\n }\n\n .seedprod-tooltip .tooltip-arrow:before {\n // position: absolute;\n // bottom: -1px;\n // left: 33px;\n // display: block;\n // width: 10px;\n // height: 10px;\n // content: '';\n // background-color: white;\n // -webkit-transform: rotate(45deg);\n // transform: rotate(45deg);\n // border-bottom: 1px solid #b9b9b9;\n // border-right: 1px solid rgba(193, 193, 193, 0.87);\n // z-index: 1;\n}\n\n .seedprod-tooltip[x-placement^=\"top\"] {\n margin-bottom: 5px;\n }\n\n .seedprod-tooltip[x-placement^=\"top\"] .tooltip-arrow {\n border-width: 5px 5px 0 5px;\n border-left-color: transparent !important;\n border-right-color: transparent !important;\n border-bottom-color: transparent !important;\n bottom: -5px;\n left: calc(50% - 5px);\n margin-top: 0;\n margin-bottom: 0;\n }\n\n .seedprod-tooltip[x-placement^=\"bottom\"] {\n margin-top: 5px;\n }\n\n .seedprod-tooltip[x-placement^=\"bottom\"] .tooltip-arrow {\n border-width: 0 5px 5px 5px;\n border-left-color: transparent !important;\n border-right-color: transparent !important;\n border-top-color: transparent !important;\n top: -5px;\n left: calc(50% - 5px);\n margin-top: 0;\n margin-bottom: 0;\n }\n\n .seedprod-tooltip[x-placement^=\"right\"] {\n margin-left: 5px;\n }\n\n .seedprod-tooltip[x-placement^=\"right\"] .tooltip-arrow {\n border-width: 5px 5px 5px 0;\n border-left-color: transparent !important;\n border-top-color: transparent !important;\n border-bottom-color: transparent !important;\n left: -5px;\n top: calc(50% - 5px);\n margin-left: 0;\n margin-right: 0;\n }\n\n .seedprod-tooltip[x-placement^=\"left\"] {\n margin-right: 5px;\n }\n\n .seedprod-tooltip[x-placement^=\"left\"] .tooltip-arrow {\n border-width: 5px 0 5px 5px;\n border-top-color: transparent !important;\n border-right-color: transparent !important;\n border-bottom-color: transparent !important;\n right: -5px;\n top: calc(50% - 5px);\n margin-left: 0;\n margin-right: 0;\n }\n\n .seedprod-tooltip[aria-hidden='true'] {\n visibility: hidden;\n opacity: 0;\n transition: opacity .15s, visibility .15s;\n }\n\n .seedprod-tooltip[aria-hidden='false'] {\n visibility: visible;\n opacity: 1;\n transition: opacity .15s;\n }\n\n .swal2-container{\n z-index: 99999 !important;\n }\n\n button.swal-styled{\n box-shadow:none;\n }\n\n\n\n .swal2-toast{\n border-radius: 2px !important;\n border:none !important;\n .swal2-title{\n display:none !important;\n }\n #swal2-content{\n padding-left:10px;\n font-size: 13px;\n color: #fff;\n }\n\n }\n\n .swal2-toast .swal2-image{\n margin:0 !important;\n }\n\n .swal2-popup.swal2-toast{\n box-shadow: 0 0 3px rgba(239, 239, 239, 0.45)!important;\n border-radius:3px !important;\n }\n\n .swal2-top-end{\n top:30px !important;\n }\n\n .seedprod-builder{\n .swal2-top-end{\n top:70px !important;\n }\n }\n\n .seedprod-upgrade-popup{\n .swal2-modal{\n padding: 20px 0px 0px 0px !important;\n }\n }\n\n .swal2-confirm{\n box-shadow: none !important;\n }\n\n .seedprod-moreinfo-popup{\n .swal2-image{\n width:40px;\n height:40px;\n margin: 10px auto !important;\n\n }\n .swal2-modal{\n width:600px;\n }\n .swal2-content{\n font-size:16px !important;\n }\n }\n\n .seedprod-upgrade-popup {\n .swal2-modal{\n width:600px;\n }\n\n .swal2-image{\n width:40px;\n height:40px;\n\n }\n .swal2-title{\n line-height: 1;\n color: #230820 !important;\n font-size:18px !important;\n margin: 0 40px 20px 40px!important;\n }\n .swal2-styled.swal2-confirm{\n background-color: #DD4A1F !important;\n box-shadow: none !important;\n }\n .swal2-content{\n color: #fff !important;\n font-size:18px !important;\n line-height: 1.5 !important;\n padding: 0px 40px 0px 40px !important;\n\n }\n .swal2-confirm{\n padding: 15px 28px !important;\n font-size: 18px !important;\n margin-bottom: 27px !important;\n }\n .swal2-footer{\n position: relative;\n border-top: none !important;\n color: #2d2d2d !important;\n font-size:16px !important;\n line-height: 1.5 !important;\n background: #f9ffab !important;\n padding: 37px 0 37px !important;\n border-bottom-left-radius: .3125em !important;\n border-bottom-right-radius: .3125em !important;\n }\n .fa-check-circle{\n position: absolute;\n top: -16px;\n font-size: 23px;\n color: #36ad39;\n background: #fff;\n border-radius: 50px;\n padding: 6px;\n }\n }\n\n .swal2-popup .swal2-styled.swal2-cancel{\n background-color: #DEDADE !important;\n color: #4F394D !important;\n }\n\n .swal2-popup .swal2-title{\n font-size:18px !important;\n color: #230820 !important;\n }\n .swal2-modal .swal2-close{\n font-size: 1.5em !important;\n }\n\n// .swal2-modal .swal2-image{\n// display:none !important;\n// }\n\n .vue-popover-theme{\n z-index:10;\n outline:none;\n }\n\n .v-popover .trigger{\n display: block !important;\n }\n\n\n\n .sp-highlight-section{\n box-shadow: inset 0 0 1px 1px #7036BB;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0;\n }\n\n .sp-highlight-row {\n box-shadow: inset 0 0 1px 1px #3F5FD1;\n }\n\n .sp-highlight-block{\n box-shadow: inset 0 0 1px 1px #dd4a1f;\n // position: absolute;\n // width: 100%;\n // height: 100%;\n // top: 0px;\n // left: 0;\n // animation-name: hightlight_pulse_color;\n // animation-duration: 1.5s;\n // animation-iteration-count: infinite;\n // animation-timing-function: ease;\n }\n\n\n\n@keyframes hightlight_pulse_color {\n0% {\n box-shadow: inset 0 0 1px 1px red;\n}\n50% {\n box-shadow: inset 0 0 1px 1px #fff;\n}\n100% {\n box-shadow: inset 0 0 1px 1px #f3510b;\n}\n}\n\n.seedprod-highlight-prize {\n .input-group-addon,.btn-prize,.btn-prize-single {\n border-color: #f3510a !important;\n }\n\n\n}\n\n .seedprod-highlight-option , .seedprod-highlight-option-slider-img{\n box-shadow: inset 0 0 1px 1px #f3510b;\n position: relative;\n cursor: pointer;\n z-index:9999;\n\n}\n\n.seedprod-highlight-padding {\n padding:2px;\n}\n\n.seedprod-highlight-option-slider-img::before {\n position: absolute;\n bottom:0px;\n left:-1px;\n background: #f3510a;\n padding: 0px 4px;\n color:rgba(0,0,0,0.5);\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n content: \"\\f303\";\n font-size:13px;\n z-index: 9;\n}\n\n#seedprod-welcome-video{\n margin:30px 0;\n}\n\n#seedprod-welcome-upgrade{\n margin:30px 0;\n}\n\n.seedprod-highlight-option::before {\n position: absolute;\n bottom: -17px;\n background: #f3510a;\n padding: 0px 4px;\n color:rgba(0,0,0,0.5);\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n content: \"\\f303\";\n font-size:13px;\n z-index: 9;\n}\n\n#seedprod-install-options button{\n font-size:13px;\n margin-top:5px;\n min-width: 250px;\n display: block;\n}\n\n.seedprod-50{\n width:49% !important;\n}\n\nh1.seedprod-highlight-option::before {\n bottom: -15px;\n padding: 1px 4px;\n}\n\n// input[type=\"text\"]:focus, input[type=\"password\"]:focus, input[type=\"color\"]:focus, input[type=\"date\"]:focus, input[type=\"datetime\"]:focus, input[type=\"datetime-local\"]:focus, input[type=\"email\"]:focus, input[type=\"month\"]:focus, input[type=\"number\"]:focus, input[type=\"search\"]:focus, input[type=\"tel\"]:focus, input[type=\"text\"]:focus, input[type=\"time\"]:focus, input[type=\"url\"]:focus, input[type=\"week\"]:focus, input[type=\"checkbox\"]:focus, input[type=\"radio\"]:focus, select:focus, textarea:focus {\n// border-color: #5b9dd9;//#f3510a;\n// }\n\n.help_tip{\n cursor: pointer;\n padding: 0 5px;\n font-size:13px;\n vertical-align: middle;\n}\n\n\n /* Make clicks pass-through */\n#nprogress {\n pointer-events: none;\n }\n\n #nprogress .bar {\n background: #f3510a;\n\n position: fixed;\n z-index: 999999;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n }\n\n /* Fancy blur effect */\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px #f3510a, 0 0 5px #f3510a;\n opacity: 1.0;\n\n transform: rotate(3deg) translate(0px, -4px);\n }\n\n /* Remove these to get rid of the spinner */\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n z-index: 1031;\n border: solid 2px transparent;\n border-top-color: #29d;\n border-left-color: #29d;\n border-radius: 50%;\n\n\n animation: nprogress-spinner 400ms linear infinite;\n }\n\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n\n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .layout-3 .slider-indicators{\n top:5px !important;\n }\n\n .tablenav .tablenav-pages a:hover, .tablenav .tablenav-pages a:focus {\n border-color: #f1470d;\n color: #fff;\n background: #f1470d;\n box-shadow: none;\n outline: none;\n}\n\n.tablenav-pages{\n margin: 5px 0 0px !important;\n\n}\n.tablenav.top .displaying-num{\n padding-top: 5px;\n display: inline-block;\n}\n\n.tablenav.bottom{\n.tablenav-pages{\n margin: 5px 0 0px !important;\n}\n}\n\nthead, tfoot{\n background:#fff;\n}\n\n.tablenav.bottom{\n margin-top:8px !important\n}\n\n.widefat th input, .updates-table td input, .widefat thead td input, .widefat tfoot td input {\n margin: 0 0 0 8px !important;\n padding: 0 !important;\n vertical-align: text-top !important;\n}\n\n.row-actions span.delete a{\n color: #ff1010 !important;\n}\n\n#seedprod-giveway-details{\n border-bottom: 1px solid #ddd;\n padding-bottom: 15px;\n margin: 0 0 10px;\n}\n\n#seedprod-settings-nav{\n height: 58px;\n margin-left: -20px;\n border-top:none;\n background: #fff;\n margin-bottom:13px;\n border-radius: 0;\n a{\n height: 58px;\n padding-top: 18px;\n padding-left: 10px;\n padding-right: 10px;\n font-size:14px;\n span{\n padding: 0 10px 24px;\n }\n }\n .active a{\n box-shadow: none !important;\n color: #b3b3b3 !important;\n }\n .router-link-exact-active a{\n color:#222 !important;\n span{\n box-shadow: inset 0 -7px 0 0 #f1470d !important;\n }\n\n }\n\n}\n\n.form-table{\n margin-top:0;\n background-color:transparent !important;\n color: #666;\n tr{\n border-bottom:1px solid #e4e4e4;\n }\n p{\n margin: 8px 0 0;\n }\n label{\n padding-left: 0 !important;\n }\n .help-block{\n padding-top:8px;\n font-style: italic;\n color: #666;\n max-width:600px;\n }\n h4{\n margin-top:0;\n margin-bottom:0;\n font-size: 20px;\n font-weight: 700;\n color: #444;\n }\n strong{\n padding-top: 8px;\n color: #444;\n display:inline-block;\n }\n button{\n font-weight:600 !important;\n }\n .form-control{\n margin-bottom:0 !important;\n margin-right:10px;\n width:400px !important;\n }\n}\n\n.seedprod-settings-title{\n th,td{\n padding:20px 0;\n }\n}\n\n.seedprod-settings-form{\n th,td{\n padding:30px 0;\n }\n}\n\n.seedprod-settings-submit{\n border-bottom:none !important;\n td{\n padding:20px 0;\n }\n}\n\n#seedprod-settings-integrations .seedprod-settings-form{\n td:first-child{\n width:160px\n }\n i{\n display: inline-block;\n margin-left: 10px;\n }\n img{\n background: #fff;\n border: 1px solid #ddd;\n max-width: 90px;\n display: inline;\n margin: 0 0 0 20px;\n }\n}\n\n#seedprod-settings-lite-cta{\n background-color: #fff;\n border: 1px solid #dadada;\n padding: 25px 20px;\n margin: 10px 0 0 0;\n position: relative;\n .dismiss {\n position: absolute;\n top: 10px;\n right: 10px;\n color: #666;\n font-size: 16px;\n }\n h5{\n margin: 0 0 16px;\n font-size: 18px;\n font-weight: 700;\n }\n p{\n color: #555;\n font-size: 14px;\n margin: 0 0 16px;\n }\n a{\n color: #f1470d;\n }\n h6{\n font-weight: 700;\n font-size: 14px;\n margin: 0 0 16px;\n }\n p:last-of-type {\n margin: 0;\n }\n .list {\n margin: 0 0 16px 0;\n overflow: auto;\n max-width: 900px;\n }\n ul {\n margin: 0;\n padding: 0;\n width: 50%;\n float: left;\n }\n li {\n margin: 0;\n padding: 0 0 2px 16px;\n color: #555;\n font-size: 14px;\n position: relative;\n }\n li:before {\n content: '+';\n position: absolute;\n top: -1px;\n left: 0;\n }\n}\n\n\n\n.btn-facebook{\n background: #3C5A99;\n color: #fff;\n border-radius: 4px;\n font-size: 14px;\n padding: 12px 26px;\n line-height: 1 !important;\n border: 0;\n outline: 0;\n cursor: pointer;\n color:#fff !important;\n}\n.btn-facebook.seedprod-highlight-option::before{\n bottom:-13px;\n}\n\n.green{\n color: #218900;\n font-weight: 700;\n}\n\n/* Welcome */\n.seedprod-welcome-video{\n .swal2-popup {\n width: 600px !important;\n max-width:100% !important;\n }\n\n}\n\n.swal2-popup .swal2-styled.swal2-confirm{\n background-color: #DD4A1F !important;\n}\n#seedprod-welcome {\n color: #555;\n padding-top: 110px;\n .btn{\n font-size:15px;\n\n }\n hr{\n width:115px;\n color: #ddd;\n margin-top: 40px;\n margin-bottom: 40px;\n }\n #license-info{\n text-align:center;\n p{\n color: #666;\n font-size: 15px;\n }\n #license-sub{\n font-size:12px;\n a{\n color: #f1470d;\n text-decoration: underline;\n }\n }\n .input-lg{\n min-width: 350px !important;\n height: 42px !important;\n margin-right: 8px;\n }\n .fa-question-circle{\n margin-left:20px;\n color: #999;\n font-size:16px;\n cursor: pointer;\n vertical-align:middle;\n }\n .btn {\n font-size: 14px;\n padding: 10px 30px;\n }\n .form-inline{\n margin-bottom:10px\n }\n\n }\n\n #sub-welcome{\n padding-bottom:50px;\n h6, .btn{\n font-size:15px;\n }\n .button-wrap {\n margin-left:40px;\n margin-right: 40px;\n }\n }\n .btn-default{\n background:#f1f1f1;\n border:1px solid #f1f1f1;\n color:#666;\n }\n .btn-block{\n font-weight: 500;\n }\n .btn-default:hover{\n background:#ddd;\n border:1px solid #f1f1f1;\n }\n .intro {\n background-color: #fff;\n border: 1px solid #ddd;\n border-top: 2px solid #ddd;\n border-bottom: 2px solid #ddd;\n border-radius: 2px;\n margin-bottom: 30px;\n position: relative;\n padding-top: 40px;\n border-radius: 7px;\n }\n .button-wrap {\n margin-top: 25px;\n .left {\n float: left;\n width: 50%;\n padding-right: 6px;\n\n }\n .right {\n float: right;\n width: 50%;\n padding-left: 6px;\n\n }\n }\n .welcome-container {\n margin: 0 auto;\n max-width: 676px;\n padding: 0;\n }\n .robbie {\n background-color: #fff;\n border: 2px solid #e1e1e1;\n border-radius: 50%;\n height: 114px;\n width: 114px;\n padding: 12px 14px 0 14px;\n position: absolute;\n top: -58px;\n left: 50%;\n margin-left: -55px;\n }\n img {\n max-width: 100%;\n height: auto;\n }\n .block {\n padding: 40px;\n }\n h1 {\n color: #2d2d2d;\n font-size: 24px;\n text-align: center;\n margin: 0 0 16px 0;\n font-weight: 700;\n }\n h6 {\n font-size: 16px;\n font-weight: 400;\n line-height: 1.6;\n text-align: center;\n margin: 0;\n color:#7c7c7c;\n }\n\n .features {\n background-color: #fff;\n border: 1px solid #ddd;\n border-top: 2px solid #ddd;\n border-bottom: 0;\n\n border-radius: 7px 7px 0 0;\n position: relative;\n padding-top: 10px;\n padding-bottom: 0px;\n margin-bottom:0px;\n .feature-list {\n margin-top: 60px;\n }\n .feature-block {\n float: left;\n width: 50%;\n padding-bottom: 35px;\n overflow: auto;\n\n img {\n float: left;\n max-width: 58px;\n }\n h5 {\n margin-left: 68px;\n margin-top:0;\n color:#2d2d2d;\n }\n p {\n margin: 0;\n margin-left: 68px;\n font-size:12px;\n color:#666;\n }\n }\n .feature-block.first {\n padding-right: 16px;\n clear: both;\n }\n .feature-block.last {\n padding-left: 16px;\n }\n }\n .seedprod-clear:before {\n content: \" \";\n display: table;\n }\n\n .seedprod-clear:after {\n clear: both;\n content: \" \";\n display: table;\n }\n\n .footer {\n background-color: #f7f7f7;\n border: 1px solid #ddd;\n border-bottom: 2px solid #ddd;\n border-radius: 0 0 7px 7px;\n .block {\n padding: 45px 80px;\n }\n .button-wrap{\n margin-top: 0px;\n }\n }\n\n .btn-trans-green {\n background-color: none;\n color: #0f8000;\n }\n\n .underline {\n position: relative;\n }\n\n .btn-trans-green .dashicons {\n height: 18px;\n }\n\n .btn-trans-green .underline:after {\n content: \" \";\n border-bottom: 1px dashed #0f8000;\n position: absolute;\n bottom: -5px;\n left: 0;\n width: 100%;\n }\n\n .testimonial-block {\n margin: 50px 0 0 0;\n color:#666;\n .sig{\n margin-top:35px\n }\n }\n .testimonial-block img {\n border-radius: 50%;\n float: left;\n max-width: 116px;\n }\n\n .testimonial-block p {\n font-size: 15px;\n margin: 0 0 12px 140px;\n }\n\n}\n\n/* About Us */\n\n#seedprod-aboutus{\n .row{\n margin-left:0 !important;\n margin-right:0 !important;\n }\n h2{\n margin-top:0 !important;\n margin-bottom: 24px;\n color: #23282d;\n font-size: 24px;\n }\n h3{\n margin-top:0 !important;\n font-size: 18px;\n margin-bottom: 30px;\n color: #23282C;\n line-height: 1.6;\n }\n p {\n font-size: 16px;\n line-height: 1.52;\n color:#444;\n margin: 1em 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n figcaption {\n font-size: 14px;\n color: #888888;\n margin-top: 5px;\n text-align: center;\n line-height: initial;\n }\n}\n\n#seedprod-aboutus-section{\n margin-top:20px;\n background:#fff;\n padding: 30px 15px;\n border: 1px solid #DDDDDD;\n\n}\n\n#seedprod-plugin-recommendations{\n margin-top:20px;\n .col-md-4:first-child{\n padding-left:0;\n }\n .col-md-4:nth-child(2){\n padding-left:7px;\n padding-right:7px;\n }\n .col-md-4:last-child{\n padding-right:0;\n }\n}\n\n.seedprod-plugin-recommendations{\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n margin:20px -10px 0 !important;\n li{\n background-color:#fff;\n border: 1px solid #ddd;\n flex: 1;\n margin:0 10px 20px;\n display: flex;\n flex-flow: column ;\n flex-basis:30%;\n }\n .seedprod-plugin-recommendations-block{\n display:flex;\n padding:20px;\n }\n .seedprod-media-img{\n margin-right:20px;\n img{\n border: 1px solid #eee;\n max-width: 75px;\n padding: 13px;\n }\n }\n .seedprod-media-body{\n flex:1;\n h4{\n margin-top:0;\n margin-bottom:16px;\n color:#2d2d2d;\n font-size:16px;\n }\n p{\n font-size:13px !important;\n }\n }\n .seedprod-plugin-install{\n display:flex;\n margin-top: auto;\n background-color: #f7f7f7;\n border-top: 1px solid #ddd;\n padding: 20px;\n justify-content: space-between;\n align-items: center;\n }\n\n}\n\n\n#seedprod-aboutus-getting-started-section{\n margin-top:20px;\n background:#fff;\n padding: 30px 15px;\n border: 1px solid #DDDDDD;\n .embed-responsive{\n border: 1px solid #DDDDDD;\n }\n ul{\n margin-top:20px;\n margin-bottom:0;\n }\n a{\n text-decoration:underline;\n }\n}\n\n#seedprod-aboutus-getting-upsell-section{\n margin-top:20px;\n background:#FAFAFA;\n\n border: 1px solid #DDDDDD;\n font-size: 18px;\n .row:first-child{\n padding: 30px 15px;\n }\n .row:last-child{\n padding: 30px 15px;\n }\n p:last-child{\n margin-top: 15px;\n }\n hr {\n margin:0 30px;\n border: 0;\n border-top: 1px solid #ddd;\n }\n h2{\n font-size: 24px;\n line-height: 1.6;\n margin-bottom: 24px;\n }\n #upsell-features{\n background: #fff;\n border-top: 1px solid #ddd;\n a{\n text-decoration: underline;\n font-weight: 600;\n }\n }\n\n .fa {\n color: #2a9b39;\n margin: 0 8px 0 0;\n font-size:16px;\n }\n li{\n line-height:2;\n font-size:16px;\n color: #444;\n margin-bottom:0;\n\n }\n}\n\n#seedprod-aboutus-getting-started-docs1-section{\n margin-top:20px;\n\n}\n\n.docs-section{\n background:#fff;\n border: 1px solid #DDDDDD;\n padding: 30px;\n line-height: 2;\n img{\n margin-right:20px;\n }\n .media-heading{\n font-size:24px;\n margin-bottom:16px;\n }\n .media-body{\n font-size:16px;\n line-height: 1.5;\n p{\n margin-bottom:30px;\n }\n\n }\n}\n\n#seedprod-aboutus-lite-vs-pro-section{\n margin-top:20px;\n table{\n border: 1px solid #DDDDDD;\n caption{\n background:#fff;\n text-align:center;\n border: 1px solid #DDDDDD;\n border-bottom: 0;\n padding: 30px;\n font-size:16px;\n color:#444;\n h1{\n color: #23282d;\n font-size:23px;\n }\n\n }\n }\n td{\n border: 1px solid #DDDDDD;\n background:#fff;\n padding: 30px;\n vertical-align: top;\n font-size: 16px;\n color:#444;\n width:33.33333%\n }\n th{\n border: 0;\n background:#FAFAFA;\n padding: 30px;\n font-size: 18px;\n color: #23282C;\n }\n tfoot{\n text-align:center;\n a{\n font-size:18px;\n text-decoration: underline;\n font-weight: bold;\n }\n p{\n margin-top:20px;\n }\n }\n\n .features-none{\n padding-left: 30px;\n background-position: 0px 4px;\n background-size: 15px auto;\n background-repeat: no-repeat;\n background-image: url(../img/icon-none.svg);\n }\n\n .features-partial{\n padding-left: 30px;\n background-position: -3px 0;\n background-size: 23px auto;\n background-repeat: no-repeat;\n background-image: url(../img/icon-partial.svg);\n }\n\n .features-full{\n padding-left: 30px;\n background-position: 0 6px;\n background-size: 15px auto;\n background-repeat: no-repeat;\n background-image: url(../img/icon-full.svg);\n }\n\n}\n\n.clearfix{\n opacity: 1 !important;\n\n}\n\n/* Google Charts */\nsvg > g > g:last-child { pointer-events: none }\n\n.seedprod-charts{\n background: #fff;\n border: 1px solid #e7e8e7;\n padding: 40px 0 0;\n min-height: 120px;\n\n}\n\n/* New Builder */\n.sp-btn{\n padding: 11px 15px;\n border-radius: 6px;\n i{ margin-right: 10px;}\n}\n\n#seedprod-builder-view{\n scroll-behavior: smooth;\n}\n\n#sp-revision-history{\n padding: 20px;\n p{\n font-weight: 600;\n font-size: 13px;\n padding: 0px 0 16px 0px;\n }\n .active-current{\n border: 2px solid #dd4a1f;\n }\n .sp-revision-item{\n display: flex;\n align-items: center;\n margin-bottom:10px;\n margin-left: -6px;\n }\n .active.sp-revision-item{\n margin-left: -21px;\n button{\n border: 2px solid #DD4A1F;\n background: #fff;\n }\n }\n .active .sp-revision-item-circle{\n border: 2px solid #dd4a1f;\n width: 10px;\n height: 10px;\n display: inline-block;\n border-radius: 9999px;\n }\n .active .sp-revision-item-line{\n border-bottom: 2px solid #dd4a1f;\n width: 5px;\n display: inline-block;\n }\n button{\n padding-left:16px;\n display: flex;\n align-items: center;\n background: #EDEBED;\n height: 70px;\n width: 100%;\n border-radius: 6px;\n color: #4F394D;\n font-weight: 600;\n font-size: 13px;\n img{\n border: none;\n border-radius: 9999px;\n width:39px;\n height: 39px;\n margin-right:16px;\n }\n .sp-rev-date{\n color: #7b6b7a;\n font-size: 10px;\n }\n }\n button:hover{\n background: #fff;\n }\n\n}\n\n\n\n#sp-revision-timeline{\n margin-top:-3px;\n padding-top: 16px;\n border-left: 2px solid #EDEBED;\n padding-left:15px;\n}\n\n#sp-bottom-nav-actions{\n position: fixed;\n height:53px;\n width:inherit;\n bottom: 0;\n background: #4F394D;\n color: #D3CED2;\n z-index:20;\n font-size: 16px;\n\n}\n\n#sp-bottom-nav-actions button{\n width: 38px;\n height: 38px;\n border-radius: 6px;\n}\n\n#sp-bottom-nav-actions button.active{\n background: #fff !important;\n color: #4f394d !important;\n}\n\n#sp-bottom-nav-actions button:hover{\n color: #fff ;\n background: #392037;\n}\n\n#seedprod-builder-save{\n font-size:14px;\n font-weight: 600;\n border-top-right-radius:0;\n border-bottom-right-radius:0;\n background:#0F8A5E;\n height:40px;\n}\n\n#seedprod-builder-save:hover{\n background: #0b6142;\n}\n\n#seedprod-builder-save-dropdown{\n background:#0F8A5E;\n display:flex;\n height:40px;\n font-size:15px;\n border-left: 1px rgba(0, 0, 0, 0.3) solid;\n border-top-left-radius:0;\n border-bottom-left-radius:0;\n padding-right: 12px;\n padding-left: 12px;\n i{ margin-right: 0px;}\n}\n\n#seedprod-builder-save-dropdown:hover{\n background: #0b6142;\n}\n\n#seedprod-builder-save-dropdown.active{\n background: #0b6142;\n}\n\n#seedprod-builder-save-dropdown-menu{\n background: #fff;\n font-size:14px;\n font-weight:600;\n width: 179px;\n margin-top: 2px;\n z-index: 99999;\n color: #4F394D ;\n border-radius: 6px;\n box-shadow: 0 .5rem 1rem rgba(0,0,0,.15)!important;\n .sp-btn{\n width: 100%;\n text-align:left;\n }\n button:hover{\n color: #0F8A5E;\n background:rgba(15, 138, 94, 0.05);\n }\n button{\n display: flex;\n align-items: center;\n }\n}\n\n\n\n#sp-builder-top{\n background: #230820;\n color: #fff;\n}\n\n#sp-builder-top > div{\n height: 72px;\n}\n\n#sp-builder-top-main-nav-utlity{\n display: flex;\n align-items: center;\n justify-content: flex-end;\n height: 100%;\n}\n\n#sp-builder-top-main-nav{\n height: 100%;\n > div{\n\n display: flex;\n height: 100%;\n align-items: stretch;\n\n }\n a{\n display: flex;\n align-items: center;\n padding:2px 20px;\n font-size: 16px;\n color: #A79CA6;\n font-weight:600;\n }\n a.active{\n font-size: 16px;\n color:#fff;\n box-shadow: inset 0 -3px 0 0 #fff !important;\n }\n a:hover{\n color: #fff;\n }\n}\n\n\n\n.sp-el-toolbar{\n top: -24px;\n left: 0;\n width: inherit;\n justify-content: center;\n}\n\n.sp-el-toolbar-add{\n height: 0px;\n bottom: 0px;\n left: 0;\n width: inherit;\n justify-content: center;\n z-index:100;\n}\n\n.sp-el-toolbar-add > span{\n position: relative;\n top: -11px;\n}\n\n.sp-toolbar-bottom{\n top: 0px;\n\n > div{\n border-top-left-radius: 0px !important;\n border-top-right-radius: 0px !important;\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n }\n\n}\n\n.sp-el-toolbar > div{\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n}\n\n.sp-toolbar-left{\n width: 22px;\n height: inherit;\n background: linear-gradient(135deg, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 50%,#7036BB 50%,#7036BB 100%);\n background-position-y: 2px;\n background-repeat: no-repeat;\n background-position-x: 0px;\n position: relative;\n right: -1px;\n}\n\n.sp-toolbar-bottom{\n .sp-toolbar-left{\n width: 22px;\n height: inherit;\n background: linear-gradient(45deg, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 50%,#7036BB 50%,#7036BB 100%);\n background-position-y: 0px;\n background-repeat: no-repeat;\n background-position-x: 0px;\n position: relative;\n right: -3px;\n }\n}\n\n.sp-toolbar-right{\n width: 22px;\n height: inherit;\n background: linear-gradient(45deg, #7036BB 0%,#7036BB 50%,rgba(255,255,255,0) 50%,rgba(255,255,255,0) 100%);\n background-position-y: 0px;\n background-repeat: no-repeat;\n background-position-x: -1px;\n position: relative;\n left: -1px;\n}\n\n.sp-toolbar-bottom{\n .sp-toolbar-right{\n width: 22px;\n height: inherit;\n background: linear-gradient(135deg, #7036BB 0%,#7036BB 50%,rgba(255,255,255,0) 50%,rgba(255,255,255,0) 100%);\n background-position-y: 0px;\n background-repeat: no-repeat;\n background-position-x: -1px;\n position: relative;\n left: -1px;\n }\n}\n\n.color-picker-float{\n position: absolute;\n z-index: 10;\n right: 7px;\n margin-top:5px;\n background:#fff;\n border-radius: 10px;\n padding:16px;\n box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);\n\n}\n\n.color-picker-float-overflow{\n //position: absolute;\n z-index: 50;\n left: 20px;\n margin-left:18px;\n margin-top:5px;\n background:#fff;\n border-radius: 10px;\n padding:16px;\n box-shadow: 0px 15px 50px rgba(81, 75, 104, 0.3);\n top:0;\n width: 364px;\n .vc-chrome{\n width:180px\n }\n button{\n box-shadow: 0 0 1px 1px #dedede;\n }\n}\n\n.vc-chrome{\n box-shadow:none !important;\n}\n\n.sp-form-group{\n margin-bottom:10px;\n input[type=text],select{\n width:100%;\n display:block;\n }\n .help_tip i{\n vertical-align: text-top;\n }\n .color-picker-container{\n left:5px;\n }\n .simple-color-picker{\n .sp-cp-label{\n font-weight: 600;\n font-size: 14px;\n }\n }\n .simple-color-picker-container{\n\n .sp-bg-cv-transparent{\n width:105px;\n height:28px;\n border-radius: 20px;\n }\n .current-color{\n width:105px;\n height:28px;\n border-radius: 20px;\n border: 2px solid #FFFFFF;\n }\n }\n .current-color{\n //border:1px solid #DEDADE;\n display: inherit;\n }\n .sp-color-value{\n padding-left:28px;\n }\n // .vc-sketch{\n // position: absolute;\n // z-index: 10;\n // left:20px;\n // }\n .sp-color-value-clear{\n display:inline-block;\n right:7px;\n color: #efefef;\n }\n .sp-btn-primary{\n background-color: #38A169;\n color:#fff;\n padding:10px 10px;\n border-radius:4px;\n line-height: 1;\n cursor: pointer;\n }\n}\n\n.sp-bg-cv-transparent{\n background-image: linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%);\n background-size: 10px 10px;\n background-position: 0 0, 0 5px, 5px -5px, -5px 0px;\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 9999px;\n}\n\n\n\n .gutter.gutter-horizontal {\n cursor: ew-resize;\n margin-left: -1px !important;\n margin-right: -1px !important;\n }\n\n// .sp-el-row {\n// margin-left: -2px !important;\n// margin-right: -2px !important;\n// }\n\n// .sp-el-col {\n// margin-left: 2px !important;\n// margin-right: 2px !important;\n// }\n\n .sp-btn-group{\n span{\n padding:7px;\n background: #eee;\n width: 50px;\n display:inline-block;\n text-align:center;\n cursor: pointer;\n }\n span.active{\n background: #ccc;\n }\n span:hover{\n background: #ddd;\n }\n span:first-child{\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n span:last-child{\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n }\n\n .mce-i-help{\n display: none !important;\n }\n\n .mce-panel .mce-btn i.mce-caret {\n border-top: 6px solid #7b6b7a;\n margin-left: 2px;\n margin-right: 2px;\n}\n\n.mce-panel .mce-btn i.mce-caret {\n border-top: 6px solid #7b6b7a;\n margin-left: 2px;\n margin-right: 2px;\n}\n\n.mce-panel .mce-btn:focus i.mce-caret, .mce-panel .mce-btn:hover i.mce-caret {\n border-top-color: #ffffff;\n}\n\n\n .mce-tinymce-inline .mce-flow-layout-item .mce-first,.mce-tinymce-inline .mce-flow-layout-item .mce-last{\n pointer-events: none !important;\n }\n\n .sp-section-categories{\n li{\n padding:16px 0;\n color: #7B6B7A;\n font-weight: 600;\n font-size: 16px;\n margin-bottom:0;\n //border-bottom: 1px solid\n box-shadow: inset 0px -1px 0px rgba(167, 156, 166, 0.25);\n }\n .sp-w-4{\n width:24px;\n }\n .sp-h-4{\n height:24px;\n }\n }\n\n.mce-toolbar-grp{\n background: #EDEBED !important;\n border-bottom: 1px solid #EDEBED !important;\n }\n\n .mce-tinymce-inline.mce-panel{\n background: transparent !important;\n box-shadow: none !important;\n }\n.mce-tinymce-inline .mce-toolbar-grp{\n background: #230820 !important;\n border-bottom: 1px solid #230820 !important;\n border-radius: 50px;\n }\n\n .mce-tinymce-inline .mce-btn:hover{\n color: #fff !important;\n background: #230820 !important;\n border-color: #7B6B7A !important;\n box-shadow: none !important;\n .mce-ico{\n color:#fff !important;\n }\n\n }\n\n .mce-tinymce-inline .mce-ico{\ncolor:#7B6B7A !important;\n }\n\n .mce-tinymce-inline .mce-toolbar-grp .mce-active {\n\n background: #230820 !important;\n border-color: #7B6B7A !important;\n\n\n .mce-ico{\n color:#fff !important;\n }\n }\n\n .mce-inline-toolbar-grp{\n background: #230820 !important;\n border-bottom: 1px solid #230820 !important;\n .mce-ico{\n color:#7B6B7A !important;\n }\n .mce-ico:hover{\n color:#fff !important;\n }\n .mce-btn:hover{\n color:#fff !important;\n background: #230820 !important;\n border-color: #7B6B7A !important;\n box-shadow: none !important;\n\n }\n\n .mce-primary{\n color:#fff !important;\n background: #0f8a5e !important;\n border-color: #0f8a5e !important;\n box-shadow: none !important;\n .mce-ico{\n color: #fff !important;\n }\n }\n\n .mce-primary:hover{\n color:#fff !important;\n background: #0b6142 !important;\n border-color: #0b6142 !important;\n box-shadow: none !important;\n .mce-ico{\n color: #fff !important;\n }\n }\n\n div.wp-link-preview a {\n color: #fff !important;\n }\n }\n\n div.mce-inline-toolbar-grp.mce-arrow-up:after {\n border-bottom-color: #230820 !important;\n\n}\n\n\n\n\n.vue-slider-process{\n background-color: #dd4a1f !important;\n}\n\n.vue-slider-dot-tooltip-inner{\n border-color: #dd4a1f !important;\n background-color: #dd4a1f !important;\n}\n\n.seedprod-sidebar-form::-webkit-scrollbar {\n display: none;\n }\n\n\n #wpforms-builder-elementor-popup {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n padding: 30px;\n z-index: 10000;\n background: rgba( 0, 0, 0, 0.75 );\n}\n\n#wpforms-builder-elementor-popup iframe {\n width: 100%;\n height: 100%;\n background-color: #ffffff;\n}\n\n.fade-enter-active, .fade-leave-active {\n transition: opacity 0.25s ease-out;\n}\n\n.fade-enter, .fade-leave-to {\n opacity: 0;\n}\n\n.sp-preview-hidden {\n display: none !important;\n}\n\n.sp-wp-button {\n display: inline-block;\n padding: .5em .75em;\n font-weight: 600;\n border-radius: 3px;\n\n &-transparent {\n background-color: transparent;\n border: 1px solid currentColor;\n\n &:hover {\n background-color: #4f394d;\n border-color: #4f394d;\n color: #fff;\n }\n }\n}\n\n"]}
public/css/admin-style.min.css ADDED
@@ -0,0 +1,732 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ img{border:inherit}
2
+ [v-cloak]{display:none !important}
3
+ body,.subsubsub,.tablenav .tablenav-pages{color:#222}
4
+ .subsubsub .current{color:#222 !important}
5
+ .search-box,.subsubsub{margin-bottom:0 !important}
6
+ body.seedprod-body{background:#fff}
7
+ body.seedprod_page_seedprod_pro_template #wpwrap,body.seedprod_page_seedprod_lite_template #wpwrap{background:#f7f6f7}
8
+ .seedprod_page_seedprod_pro_template button,.seedprod_page_seedprod_pro_template input,.seedprod_page_seedprod_pro_template optgroup,.seedprod_page_seedprod_pro_template select,.seedprod_page_seedprod_pro_template textarea{outline:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}
9
+ .seedprod_page_seedprod_lite_template button,.seedprod_page_seedprod_lite_template input,.seedprod_page_seedprod_lite_template optgroup,.seedprod_page_seedprod_lite_template select,.seedprod_page_seedprod_lite_template textarea{outline:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}
10
+ .seedprod_page_seedprod_pro_template input[type=color],.seedprod_page_seedprod_pro_template input[type=date],.seedprod_page_seedprod_pro_template input[type=datetime-local],.seedprod_page_seedprod_pro_template input[type=datetime],.seedprod_page_seedprod_pro_template input[type=email],.seedprod_page_seedprod_pro_template input[type=month],.seedprod_page_seedprod_pro_template input[type=number],.seedprod_page_seedprod_pro_template input[type=password],.seedprod_page_seedprod_pro_template input[type=search],.seedprod_page_seedprod_pro_template input[type=tel],.seedprod_page_seedprod_pro_template input[type=text],.seedprod_page_seedprod_pro_template input[type=time],.seedprod_page_seedprod_pro_template input[type=url],.seedprod_page_seedprod_pro_template input[type=week],.seedprod_page_seedprod_pro_template select,.seedprod_page_seedprod_pro_template textarea{-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #d3ced2;background-color:#fff;color:#32373c}
11
+ .seedprod_page_seedprod_lite_template input[type=color],.seedprod_page_seedprod_lite_template input[type=date],.seedprod_page_seedprod_lite_template input[type=datetime-local],.seedprod_page_seedprod_lite_template input[type=datetime],.seedprod_page_seedprod_lite_template input[type=email],.seedprod_page_seedprod_lite_template input[type=month],.seedprod_page_seedprod_lite_template input[type=number],.seedprod_page_seedprod_lite_template input[type=password],.seedprod_page_seedprod_lite_template input[type=search],.seedprod_page_seedprod_lite_template input[type=tel],.seedprod_page_seedprod_lite_template input[type=text],.seedprod_page_seedprod_lite_template input[type=time],.seedprod_page_seedprod_lite_template input[type=url],.seedprod_page_seedprod_lite_template input[type=week],.seedprod_page_seedprod_lite_template select,.seedprod_page_seedprod_lite_template textarea{-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #d3ced2;background-color:#fff;color:#32373c}
12
+ .seedprod-builder{display:none}
13
+ .seedprod-action-txt{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:340px;display:inline-block}
14
+ #seedprod-page-name{width:100%;background:#fbfcfb;height:75px;border-bottom:1px solid #f0f0f0;margin-top:67px;display:table;padding:0 23px}
15
+ #seedprod-page-name input{height:40px;border-radius:2px;width:315px}
16
+ #seedprod-page-name label{margin-bottom:0;font-size:16px;margin-right:15px}
17
+ #seedprod-page-name .form-group{display:table-cell;vertical-align:middle}
18
+ .template-chooser h2{margin-top:0;margin-bottom:15px;font-size:24px;color:#2d2d2d;font-weight:400}
19
+ .template-chooser p{color:#666;font-size:14px;margin-bottom:30px}
20
+ .template-chooser .highlight-template{color:#f1470d !important;text-decoration:underline}
21
+ .template-chooser .highlight-template :hover{text-decoration:none}
22
+ .seedprod-builder #adminmenu,.seedprod-builder #wpadminbar{display:none !important}
23
+ #seedprod-steps-nav{border-left:1px solid #f9f9f9}
24
+ #seedprod-steps-nav a{font-size:14px;padding-left:15px;padding-right:15px}
25
+ .seedprod-builder-step .container-fluid{padding-left:23px !important;padding-right:23px !important}
26
+ .seedprod-builder-step h1{margin:20px 0 10px 0 !important}
27
+ .seedprod table{background-color:#f8f8f8}
28
+ .seedprod .navbar-default{background-color:#fafbfc;border-color:#e8e8e8;overflow:hidden}
29
+ .seedprod-builder .navbar-default{background-color:#fff}
30
+ .seedprod .panel-default>.panel-heading{color:#222;background-color:#f8f8f8;border-color:#ddd;font-weight:bold;position:relative}
31
+ .widefat thead th,.widefat thead td{border-bottom:1px solid #ddd}
32
+ .widget-top,.menu-item-handle,.widget-inside,#menu-settings-column .accordion-container,#menu-management .menu-edit,.manage-menus,table.widefat,.stuffbox,p.popular-tags,.widgets-holder-wrap,.wp-editor-container,.popular-tags,.feature-filter,.imgedit-group,.comment-ays{border:1px solid transparent;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.2),0 1px 5px 0 rgba(0,0,0,0.12);box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.2),0 1px 5px 0 rgba(0,0,0,0.12);margin-top:20px}
33
+ .seedprod .form-control[disabled],.seedprod .form-control[readonly],fieldset[disabled] .seedprod .form-control{background-color:#fbfcfb;opacity:1}
34
+ .seedprod-builder .input-group-addon{background-color:#fff;border-color:#dedade}
35
+ .column.entries,.column.subscribers,.column.active{width:120px}
36
+ .column.type{width:160px}
37
+ .column.status{width:210px;white-space:nowrap}
38
+ .column.starts{width:130px;white-space:nowrap}
39
+ .column.ends{width:130px;white-space:nowrap}
40
+ .vue-js-switch .v-switch-core{background:#d6d6d6 !important}
41
+ .vue-js-switch.toggled .v-switch-core{background:#4caf50 !important}
42
+ .seedprod .navbar-default .navbar-nav>li>a,.seedprod .input-group-addon{color:#b3b3b3}
43
+ .seedprod-builder #seedprod-sidebar-wrapper .input-group-addon{color:#c7c7c7;font-size:13px}
44
+ .seedprod .navbar-nav>li>a{padding-top:19px !important;padding-bottom:23px !important}
45
+ .seedprod-builder .navbar-nav>li>a{padding-top:23px !important;padding-bottom:23px !important}
46
+ #seedprod-steps-nav a span{padding:0 10px 24px}
47
+ .seedprod .navbar-default .navbar-nav>.active>a,.seedprod .navbar-default .navbar-nav>.active>a:focus{color:#222;background-color:#fff !important}
48
+ .seedprod .navbar-default .navbar-nav>.active>a span,.seedprod .navbar-default .navbar-nav>.active>a:focus span{-webkit-box-shadow:inset 0 -3px 0 0 #f1470d !important;box-shadow:inset 0 -3px 0 0 #f1470d !important;padding:0 10px 24px}
49
+ .seedprod .navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#fff !important}
50
+ .striped>tbody>:nth-child(even),ul.striped>:nth-child(even),.alternate{background-color:#fff}
51
+ .seedprod-icon::before{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased}
52
+ .icon-refer-a-friend::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f004"}
53
+ .icon-refer-a-friend{background-color:#e42e2f;border-color:#e42e2f !important;color:#fff}
54
+ .icon-automatic-entry::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f3ff"}
55
+ .icon-automatic-entry{background-color:#ff9800;border-color:#ff9800 !important;color:#fff}
56
+ .icon-submit-image::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f03e"}
57
+ .icon-submit-image{background-color:#009688;border-color:#009688 !important;color:#fff}
58
+ .icon-polls-surveys::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f681"}
59
+ .icon-polls-surveys{background-color:#e91e63;border-color:#e91e63 !important;color:#fff}
60
+ .icon-join-newsletter{background-color:#4caf50;border-color:#4caf50 !important;color:#fff}
61
+ .icon-join-newsletter::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0e0"}
62
+ .icon-visit-a-page::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f35d"}
63
+ .icon-visit-a-page{background-color:#0000ba;border-color:#0000ba !important;color:#fff}
64
+ .icon-visit-fb::before,.icon-fb-page-post::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f09a"}
65
+ .icon-visit-fb,.icon-fb-page-post{background-color:#4267b2;border-color:#4267b2 !important;color:#fff}
66
+ .icon-tweet::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f099"}
67
+ .icon-tweet{background-color:#38a1f3;border-color:#38a1f3 !important;color:#fff}
68
+ .icon-twitter-follow::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f099"}
69
+ .icon-twitter-follow{background-color:#38a1f3;border-color:#38a1f3 !important;color:#fff}
70
+ .icon-instagram-follow::before,.icon-instagram-page-post::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f16d"}
71
+ .icon-instagram-follow,.icon-instagram-page-post{background-color:#f55f3f;border-color:#f55f3f !important;color:#fff}
72
+ .icon-pinterest-follow::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f0d2"}
73
+ .icon-pinterest-follow{background-color:#e60023;border-color:#e60023 !important;color:#fff}
74
+ .icon-youtube-follow::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f167"}
75
+ .icon-youtube-follow{background-color:red;border-color:#f00 !important;color:#fff}
76
+ .icon-watch-a-video::before{font-family:"Font Awesome 5 Brands";font-weight:400;content:"\f167"}
77
+ .icon-watch-a-video{background-color:red;border-color:#f00 !important;color:#fff}
78
+ .icon-question::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f059"}
79
+ .icon-question{background-color:#90b;border-color:#90b !important;color:#fff}
80
+ .icon-invent-your-own::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0eb"}
81
+ .icon-invent-your-own{background-color:#0f0f0f;border-color:#0f0f0f !important;color:#fff}
82
+ .seedprod-page-types{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-20px;margin-right:-20px}
83
+ .seedprod-page-type{border:1px solid #ccc;padding:20px;margin-left:20px;margin-right:20px}
84
+ #seedprod-dashboard{padding-right:20px}
85
+ .seedprod-app #poststuff{padding-top:30px}
86
+ .seedprod-app .widefat{margin-top:10px !important;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04) !important;box-shadow:0 1px 1px rgba(0,0,0,0.04) !important}
87
+ #seedprod-dashboard .column-active{width:90px}
88
+ #seedprod-dashboard .column-subscribers{width:120px}
89
+ #seedprod-dashboard .column-entries{width:120px}
90
+ #seedprod-entries .column-entries{width:120px}
91
+ #seedprod-entries .fa-trophy{padding-right:5px}
92
+ #seedprod-entries #poststuff{padding-top:10px}
93
+ #lpage-details-sub{color:#999;display:block;font-size:10px;text-transform:uppercase;margin:0 0 8px 0}
94
+ #lpage-details-title{float:left;font-size:18px;font-weight:400;margin:0;padding-right:8px}
95
+ #lpage-selector{display:inline-block;position:relative}
96
+ #seedprod-entries{margin-top:20px}
97
+ #seedprod-entries .toggle.active{background-color:#e3e3e3;outline:0}
98
+ #seedprod-entries .toggle{border-radius:50%;color:#444;font-size:16px;-webkit-box-shadow:none;box-shadow:none}
99
+ #seedprod-entries .toggle:before{vertical-align:middle}
100
+ #lpage-details-actions{margin-top:26px;text-align:right}
101
+ .lpage-details-actions{margin-right:12px;text-decoration:none}
102
+ .lpage-details-actions:last-child{margin-right:0}
103
+ .lpage-selector{display:inline-block;position:relative}
104
+ .lpage-selector ul{max-height:196px;overflow-x:hidden;padding:0;margin:0}
105
+ #raffleprsss-lpage-list-loading{text-align:center;display:block}
106
+ .lpage-selector ul li{list-style:none;margin:0;font-size:13px}
107
+ .lpage-selector ul li a{display:block;text-decoration:none;padding:5px 15px;color:#444}
108
+ .lpage-selector ul li a:hover{background-color:#f7f7f7;color:#444}
109
+ #winner-selector{display:inline-block;position:relative}
110
+ #seedprod-winner-options{background:#fff;border-radius:3px;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);position:absolute;top:69px;left:-15px;width:300px;z-index:9992;font-size:13px;font-weight:normal;padding:20px}
111
+ #seedprod-winner-options input[type="radio"]{margin-top:3px}
112
+ #seedprod-winner-options:before{content:" ";position:absolute;top:-10px;left:145px;width:0;height:0;border-style:solid;border-width:0 8px 10px 8px;border-color:transparent transparent #fff transparent}
113
+ #lpage-list{background:#fff;border-radius:3px;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);position:absolute;top:27px;left:-108px;width:230px;padding:10px 0;z-index:9991}
114
+ #lpage-list:before{content:" ";position:absolute;top:-10px;left:110px;width:0;height:0;border-style:solid;border-width:0 8px 10px 8px;border-color:transparent transparent #fff transparent}
115
+ #seedprod-header{position:relative;background:#fff;margin-left:-20px;border-bottom:1px solid #ccc}
116
+ .seedprod-header-margin{margin-top:20px !important}
117
+ .seedprod .navbar-right{margin-right:0;border-color:transparent;border-bottom-color:#e7e7e7}
118
+ .seedprod-breadcrumbs{display:inline-block;margin-top:10px;margin-bottom:20px}
119
+ #seedprod-page-title{background-color:#fff;margin:0 0 0 -20px;padding:15px 20px;font-size:23px;font-weight:400;line-height:29px;border-bottom:1px solid #e7e8e7}
120
+ #seedprod-page-title .add-new-h2{margin-left:28px}
121
+ .seedprod-btn-orange{background-color:#f1460d !important;border-color:#f0460d !important;color:#fff !important}
122
+ .seedprod-btn-orange:hover{background-color:#c1390a !important;border-color:#c1390a !important;color:#fff !important}
123
+ .seedprod-breadcrumbs small{font-size:14px}
124
+ .seedprod .container-fluid{padding:0}
125
+ .d-ib{display:inline-block}
126
+ .seedprod .tablenav{margin:0 0 4px}
127
+ .seedprod-default-cusor{cursor:default}
128
+ .seedprod td,.seedprod th{padding:10px}
129
+ .seedprod :focus{outline:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}
130
+ #seedprod-search-close{margin-left:-24px;margin-right:11px;color:#aaa;z-index:999;position:relative;cursor:pointer}
131
+ #seedprod-customizer-wrapper{height:100%}
132
+ .seedprod-builder .mx-input,#seedprod-sidebar-wrapper .form-control{font-size:16px;height:40px}
133
+ .seedprod-builder .btn i{color:rgba(0,0,0,0.34)}
134
+ .rules-modal .seedprod-modal-container{border-radius:6px;max-width:620px;position:relative}
135
+ .rules-modal hr{margin-top:15px;margin-bottom:25px}
136
+ .rules-modal .seedprod-modal-body{margin-top:0}
137
+ .rules-modal i{color:#ccc;cursor:pointer;position:absolute;top:20px;font-size:16px;right:20px}
138
+ #seedprod-sidebar-nav-wrapper{background-color:#2d2d2d;color:#a3a3a3;z-index:200;left:0;position:absolute;bottom:0;top:67px;right:auto;width:95px;overflow-y:auto;overflow-x:hidden}
139
+ #seedprod-sidebar-nav-wrapper .active{background-color:#000;color:#fff}
140
+ .sp-section-toolbar{background:url(../svg/section-toolbar.svg);background-position:top center;background-repeat:no-repeat;width:218px;height:28px;margin-top:-4px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
141
+ .sp-section-toolbar span{margin:2px 2px 0 2px}
142
+ .sp-section-toolbar span:first-child{margin-left:6px}
143
+ #sp-sidebar-drawer{cursor:pointer;height:76px;width:13px;background-image:url(../svg/sidebar-drawer.svg);background-repeat:no-repeat;background-size:auto;background-position:-7px 0;top:50%}
144
+ #sp-sidebar-drawer svg{min-width:23px;margin-left:-6px}
145
+ .sp-sidebar-drawer-closed{margin-left:-320px !important}
146
+ #seedprod-sidebar-wrapper{background-color:#f7f6f7;color:#4f394d;width:320px;min-width:320px;z-index:10;margin-top:0;margin-bottom:125px;-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,0.15);box-shadow:0 .5rem 1rem rgba(0,0,0,0.15)}
147
+ #seedprod-preview-wrapper.sp-setup_settings_connect{background-color:#edebed !important}
148
+ #seedprod-preview-wrapper{margin-bottom:72px;background-color:#7b6b7a;overflow-y:scroll}
149
+ #seedprod-preview-wrapper #seedprod-builder-view{margin-left:auto;margin-right:auto;background-color:#fff}
150
+ .sp-mobile-view{border-radius:10px;border:5px solid #4f394d;-webkit-box-shadow:0 15px 50px rgba(35,8,32,0.25);box-shadow:0 15px 50px rgba(35,8,32,0.25);margin-top:15px}
151
+ .seedprod-sidebar-form-body{padding:0;padding-top:0;padding-bottom:30px;margin:0 20px;text-align:left;-webkit-box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25);box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25)}
152
+ .seedprod-sidebar-form-body .col-md-6:first-child{padding-right:7px}
153
+ .seedprod-sidebar-form-body .col-md-6:last-child{padding-left:7px}
154
+ .seedprod-sidebar-form-body .help_tip i{vertical-align:text-top;color:#c7c7c7}
155
+ #seedprod-dragbar{background-color:#ccc;height:100%;width:3px;cursor:col-resize;position:absolute;right:0;top:0}
156
+ #seedprod-ajax-status{background:#230820;position:fixed;right:29px;top:26px;font-size:16px;z-index:999999;color:#fff}
157
+ #seedprod-builder-view{padding:0;height:100%;overflow-y:auto}
158
+ #seedprod-preview,.seedprod-settings-page{overflow-y:scroll;float:right;height:100%;width:100%;padding:40px 35px;background:#f7f6f7}
159
+ .sp-sectiontemplates .seedprod-settings-page{background:#edebed}
160
+ #seedprod-sidebar-wrapper .sp-setting-control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:10px}
161
+ #seedprod-sidebar-wrapper .sp-setting-control label{font-size:13px}
162
+ .seedprod-settings-page-wrapper{color:#4f394d}
163
+ .seedprod-settings-page-wrapper p,.seedprod-settings-page-wrapper label{font-size:16px !important;font-weight:600}
164
+ .seedprod-settings-page-wrapper .form-group{margin-bottom:25px}
165
+ .seedprod-settings-page-wrapper h1{font-weight:bold;font-size:20px;margin-bottom:40px}
166
+ .seedprod-settings-page-wrapper hr{margin-top:15px;margin-bottom:25px}
167
+ .seedprod-settings-page-wrapper .checkbox label{color:#4f394d}
168
+ .seedprod-settings-page-wrapper .form-control,.seedprod-settings-page-wrapper .btn{height:40px}
169
+ .seedprod-settings-page-wrapper .help_tip{vertical-align:top;display:inline-block}
170
+ .seedprod-settings-page-wrapper .help_tip i{color:#c7c7c7}
171
+ .seedprod-settings-page-wrapper .seedprod-affiliate-details{color:#999 !important;font-size:13px !important;margin-top:8px}
172
+ .seedprod-settings-page-wrapper .seedprod-affiliate-details a{color:#f1470d !important;text-decoration:underline}
173
+ #seedprod-settings{border-right:0;border-left:0}
174
+ #seedprod-settings .list-group-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:19px 24px;color:#7b6b7a;width:100%;text-align:left;font-weight:600;font-size:16px;border-bottom:1px solid #edebed}
175
+ #seedprod-settings .list-group-item:first-child{border-top:0 !important}
176
+ #seedprod-settings .active{color:#f1470d}
177
+ #seedprod-preview{padding:0}
178
+ #seedprod-customizer-header-wrapper{top:0;left:0;height:67px;width:100%;background:#fafafa;z-index:99}
179
+ .seedprod .navbar-brand{padding:6px 15px;height:67px}
180
+ .seedprod-builder .navbar-brand{padding:11px 15px;height:67px}
181
+ #seedprod-builder-help{color:#a79ca6;margin-right:18px;font-size:14px;padding:8px 12px}
182
+ #seedprod-builder-help i{margin-right:4px;color:#a79ca6}
183
+ #seedprod-builder-help:hover{color:#fff}
184
+ .seedprod-overflow-hidden{overflow:hidden}
185
+ #seedprod_preview{width:100%;height:700px}
186
+ .seedprod .navbar{border-radius:0 !important;margin-bottom:0;height:90px}
187
+ .seedprod-builder .navbar{border-radius:0;margin-bottom:0;height:67px}
188
+ #seedprod-builder-close{margin-right:16px;margin-left:14px;font-size:15px;width:40px;height:40px;color:#a79ca6;border-radius:100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
189
+ #seedprod-builder-close:hover{color:#fff}
190
+ .seedprod-install-option{float:left;width:250px;min-height:195px;margin-right:20px}
191
+ #seedprod-publish-title{font-size:24px;font-weight:400;margin-top:50px;margin-bottom:15px;color:#2d2d2d}
192
+ #seedprod-publish-desc{color:#676767;font-size:14px;margin-bottom:30px}
193
+ .seedprod-publish-option{padding:20px;background:#fff;border:1px solid #f1f1f1;border-radius:8px;cursor:pointer;margin-bottom:20px}
194
+ .seedprod-publish-option h3{margin-top:0;margin-bottom:17px;font-size:16px}
195
+ .seedprod-publish-option p{margin:0;font-size:14px;color:#a7a7a7}
196
+ .seedprod-publish-options .col-sm-4:first-child{padding-right:7px}
197
+ .seedprod-publish-options .col-sm-4:nth-child(2){padding-right:7px;padding-left:7px}
198
+ .seedprod-publish-options .col-sm-4:last-child{padding-left:7px}
199
+ #seedprod-publish-options-details{padding:30px 20px;background:#fff;border:1px solid #f1f1f1;border-radius:8px;margin:0}
200
+ #seedprod-publish-options-details h4{font-size:18px;color:#2d2d2d;margin:0 0 40px 0;font-weight:400}
201
+ #seedprod-publish-options-details ol{margin:0;margin-left:15px}
202
+ #seedprod-publish-options-details li{color:#666;font-size:14px;margin-bottom:10px}
203
+ #seedprod-publish-options-details p{margin:40px 0 15px 0;color:#666;font-size:14px}
204
+ #seedprod-publish-options-details .fa-copy{color:#999}
205
+ #seedprod-publish-options-details .input-group-addon{padding:2px 10px 0;cursor:pointer}
206
+ #seedprod-publish-options-details .input-group-addon,#seedprod-publish-options-details .form-control{height:40px}
207
+ #seedprod-publish-options-details .form-control{width:215px}
208
+ #seedprod-publish-options-details .btn{height:40px;margin-left:7px}
209
+ .seedprod-sidebar-nav{padding:17px 0;text-align:center;border-bottom:1px solid #3d3d3d}
210
+ .seedprod-sidebar-nav:hover{color:#fff}
211
+ .seedprod-sidebar-nav span{display:block;padding-top:5px;font-size:14px}
212
+ .seedprod-sidebar-nav i{font-size:25px}
213
+ .seedprod-enter-active{-webkit-transition:opacity .3s;transition:opacity .3s}
214
+ .seedprod-leave-active{opacity:0}
215
+ .seedprod-enter,.seedprod-leave-to{opacity:0}
216
+ .fade-enter-active{-webkit-transition:opacity 1s;transition:opacity 1s}
217
+ .fade-leave-active{opacity:0}
218
+ #seedprod-sidebar-nav-wrapper>div{cursor:pointer}
219
+ .seedprod-prize{margin-bottom:13px}
220
+ .seedprod-prize .btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
221
+ .toast{opacity:1 !important}
222
+ .seedprod-install-option{cursor:pointer}
223
+ .seedprod .vue-swatches__row{height:24px}
224
+ .seedprod .vue-swatches__container{white-space:normal}
225
+ .seedprod .vue-swatches__wrapper{width:230px !important}
226
+ .seedprod .input-group-addon{padding:2px 6px 0}
227
+ .seedprod .vue-swatches .vue-swatches__trigger{width:20px !important;height:20px !important}
228
+ .seedprod .mx-input,.seedprod .mx-input-append,.seedprod .mx-calendar{color:#555 !important}
229
+ .seedprod .mx-input-append{padding:7px}
230
+ .seedprod .mx-calendar .actived{color:#fff !important}
231
+ .seedprod .mx-datepicker-popup{margin-top:-10px}
232
+ .seedprod .time-picker input.display-time{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);box-shadow:inset 0 1px 2px rgba(0,0,0,0.07);height:34px;border-radius:4px;padding:6px 10px;font-size:14px;width:100%;color:#6a6a6a}
233
+ .time-picker .dropdown ul li.active,.time-picker .dropdown ul li.active:hover{background:#f3510a;color:#fff}
234
+ .seedprod-builder .time-select:after{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f017";color:#a6a6a6;position:absolute;right:23px;top:11px;font-size:13px}
235
+ .time-select select.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}
236
+ .mx-panel-date td.today{color:#f3510a !important}
237
+ .mx-calendar-content .cell.actived{color:#fff;background-color:#f3510a !important}
238
+ .seedprod-img-preview{position:relative;display:inline-block}
239
+ .seedprod-img-preview i{position:absolute;top:4px;right:-6px}
240
+ .seedprod-img-preview img{max-width:100%;max-height:280px}
241
+ .sp-slideshow-bg-settings .seedprod-img-preview{cursor:move}
242
+ .sp-slideshow-bg-settings .seedprod-img-preview img{max-width:150px;max-height:150px}
243
+ .sp-slideshow-bg-settings .seedprod-img-preview button:nth-of-type(2){display:none}
244
+ .sp-slideshow-bg-settings .sp-slide .sp-remove-slide-btn{visibility:hidden}
245
+ .sp-slideshow-bg-settings .sp-slide:hover .sp-remove-slide-btn{visibility:visible}
246
+ .seedprod textarea.form-control{height:auto}
247
+ .seedprod :focus{outline:0}
248
+ .seedprod-modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.5);display:table;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}
249
+ .seedprod-modal-wrapper{display:table-cell;vertical-align:middle}
250
+ .seedprod-modal-header h3{margin-top:0}
251
+ .seedprod-modal-header h3{font-size:20px;margin-top:0;margin:0;padding:0;background:#fff;display:block}
252
+ .seedprod-modal-body{margin:20px 0}
253
+ .seedprod-modal-enter{opacity:0}
254
+ .seedprod-modal-leave-active{opacity:0}
255
+ .seedprod-modal-enter .seedprod-modal-container,.seedprod-modal-leave-active .seedprod-modal-container{-webkit-transform:scale(1.1);transform:scale(1.1)}
256
+ .seedprod .btn-prize{text-align:left;border-left:0;border-right:0;border-radius:0;width:213px;font-size:13px;color:#666}
257
+ .seedprod .btn-prize-sngle{text-align:left;width:213px;font-size:13px;color:#666}
258
+ .seedprod .btn-prize,.seedprod .btn-prize-single{background:#fff !important;color:#333 !important;border-color:#efefef !important;padding-left:2px;padding-right:2px}
259
+ .seedprod .btn-add-prize,.seedprod .btn-prize-single{font-size:14px}
260
+ .seedprod .btn-prize-single{padding-left:10px;padding-right:10px}
261
+ .seedprod .btn-prize::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f303";float:right;color:#c7c7c7}
262
+ .seedprod .btn-prize-single::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f303";float:right;color:#c7c7c7}
263
+ .seedprod .btn-prize:active::before,.seedprod .btn-prize:hover::before,.seedprod .btn-prize-single:hover::before{color:#333 !important}
264
+ .seedprod .btn-my-entry-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
265
+ .seedprod-prize .input-group-addon:hover{color:#333}
266
+ .seedprod-prize-close,.seedprod-block-option-remove{cursor:pointer}
267
+ .seedprod-prize-move,.seedprod-block-option-move{cursor:-webkit-grab;cursor:grab}
268
+ .seedprod-prize-move:active,.seedprod-block-option-move:active{cursor:-webkit-grabbing;cursor:grabbing}
269
+ .seedprod .btn-entry-option{margin-bottom:8px;position:relative;padding-left:45px;height:40px}
270
+ .seedprod .btn-entry-option:active,.seedprod .btn-entry-option:focus{background-color:#fff !important}
271
+ .btn-entry-option .seedprod-block-option-icon{position:absolute;left:0;height:40px;padding-top:9px;padding-left:10px;padding-right:10px;width:35px;border-top-left-radius:3px;border-bottom-left-radius:3px}
272
+ .btn-entry-option .fa-plus,.btn-entry-option .fa-sync-alt{position:absolute;right:10px;color:#c7c7c7;top:12px}
273
+ #seedprod-add-actions h3{color:#4f394d;font-weight:600;font-size:16px;margin:0 20px;padding:15px 0}
274
+ .seedprod-modal-mask{position:fixed !important;z-index:99999 !important;top:0 !important;right:0 !important;bottom:0 !important;left:0 !important;overflow-y:auto !important;-webkit-transform:translate3d(0,0,0) !important;transform:translate3d(0,0,0) !important;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}
275
+ .seedprod-modal-wrapper{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;margin:auto !important;width:100% !important;padding-left:80px;padding-right:80px}
276
+ .seedprod-modal-container{width:600px;background-color:#fff;-webkit-box-flex:1 !important;-ms-flex:1 !important;flex:1 !important;width:100% !important;margin:100px auto;padding:0;background-color:#fff;border-radius:10px;-webkit-box-shadow:0 2px 8px rgba(35,8,32,0.6);box-shadow:0 2px 8px rgba(35,8,32,0.6);-webkit-transition:all .3s ease;transition:all .3s ease}
277
+ .seedprod-modal-container .seedprod-modal-body{margin:0}
278
+ .seedprod-modal-container .sp-modal-left{border-top-left-radius:10px;border-bottom-left-radius:10px}
279
+ .seedprod-modal-container .sp-modal-right{border-top-right-radius:10px;border-bottom-right-radius:10px}
280
+ .seedprod-modal-header h3{margin-top:0}
281
+ .seedprod-modal-body{margin:20px 0}
282
+ .seedprod-modal-enter,.seedprod-modal-leave{opacity:0}
283
+ .seedprod-modal-enter .seedprod-modal-container,.seedprod-modal-leave .seedprod-modal-container{-webkit-transform:scale(1.1);transform:scale(1.1)}
284
+ .seedprod input[type=checkbox],.seedprod input[type=radio]{margin:0}
285
+ .seedprod-sidebar-nav.active:before{position:absolute;right:-10px;margin-top:28px;display:block;width:20px;height:20px;content:'';background-color:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-bottom:1px solid transparent;border-right:1px solid rgba(0,0,0,0.05)}
286
+ .seedprod .modal{z-index:99999;background-color:rgba(0,0,0,0.5)}
287
+ .seedprod .modal-dialog{margin:80px auto}
288
+ #seedprod-upgrade-ribbon-wrapper{position:fixed;z-index:1;right:0;bottom:0;overflow:hidden;height:110px;width:150px}
289
+ #seedprod-upgrade-ribbon{position:absolute;z-index:1;right:-48px;bottom:-15px;height:75px;width:150px;font-size:14px;font-weight:700;color:#fff;text-transform:uppercase;text-align:right;line-height:20px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);cursor:pointer;display:block;background:#4caf50;-webkit-box-shadow:inset 0 3px 15px -5px #000;box-shadow:inset 0 3px 15px -5px #000}
290
+ #seedprod-upgrade-ribbon span{-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;bottom:25px;right:43px}
291
+ .seedprod-pro #seedprod-upgrade-ribbon-wrapper{display:none}
292
+ .seedprod .ribbon{position:absolute;right:0;top:0;z-index:1;overflow:hidden;width:75px;height:75px;text-align:left}
293
+ .ribbon span{font-size:8px;font-weight:700;color:#fff;text-transform:uppercase;text-align:center;line-height:20px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:100px;display:block;background:#79a70a;background:-webkit-gradient(linear,left top,left bottom,from(#ff9c41),to(#ff9c41));background:linear-gradient(#ff9c41 0,#ff9c41 100%);-webkit-box-shadow:0 3px 20px -5px #000;box-shadow:0 3px 20px -5px #000;position:absolute;top:18px;right:-21px}
294
+ .seedprod-img-preview i{cursor:pointer}
295
+ .seedprod .help-block{font-size:12px}
296
+ .seedprod .has-error .form-control{border-color:#f00 !important}
297
+ .seedprod-builder .input-group-poll-choices{margin-bottom:10px;position:relative}
298
+ .seedprod-builder .input-group-poll-choices i{position:absolute;top:13px;right:7px;color:#c7c7c7;cursor:pointer}
299
+ .seedprod-winner{background-color:rgba(241,71,13,0.08) !important;background-image:url(../img/confetti-light.png);background-repeat:no-repeat;background-size:200px;background-position:23px -48px;font-weight:bold}
300
+ .seedprod-invalid-entry{opacity:.4}
301
+ .error{color:red !important}
302
+ .seedprod-pro #wpfooter{display:none}
303
+ #footer-upgrade{display:none}
304
+ #email_integrations{width:100%}
305
+ html{background-image:url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;background-repeat:no-repeat !important;background-position:center center !important;height:100%}
306
+ #email_integrations_wrapper{background-image:url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==');background-repeat:no-repeat;background-position:center center}
307
+ .iframe_loading{background-image:url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;background-repeat:no-repeat !important;background-position:center 100px !important;height:100%}
308
+ .results_loading{background-image:url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==') !important;background-repeat:no-repeat !important;background-position:center 50px !important;height:100%}
309
+ .seedprod .navbar-right{margin-right:0 !important}
310
+ .seedprod_page_seedprod_account .seedprod .radio label,.seedprod-pro_page_seedprod_account .seedprod .radio label{padding-left:0}
311
+ .seedprod .navbar-header{float:left !important}
312
+ .seedprod .navbar-collapse.collapse{display:block !important}
313
+ .seedprod .navbar-nav>li,.seedprod .navbar-nav{float:left !important}
314
+ .seedprod .navbar-right{float:right !important}
315
+ .seedprod-pro-feature{opacity:.65}
316
+ .seedprod-pro-upgrade{background:rgba(4,4,4,0.6);position:fixed;top:0;left:0;z-index:99999;display:table;width:100%;height:100%}
317
+ .seedprod-pro-upgrade-row{display:table-row;width:100%}
318
+ .seedprod-pro-upgrade-cell{display:table-cell;vertical-align:middle}
319
+ .seedprod-pro-upgrade-content{background-color:#fff;border-radius:4px;max-width:500px;margin:auto;padding:20px;text-align:center}
320
+ .seedprod-pro-upgrade-content .btn{text-transform:uppercase}
321
+ .handdrawn-underline{border-bottom:2px solid #ff9948;line-height:.9;display:inline-block}
322
+ #seedprod-wrapper{max-width:480px;margin:auto;text-align:center;border-radius:6px;color:#696969;background-color:#fbfbfb;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.2),0 1px 5px 0 rgba(0,0,0,0.12);box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.2),0 1px 5px 0 rgba(0,0,0,0.12)}
323
+ #seedprod-wrapper .seedprod-td{display:table-cell;vertical-align:middle;padding:0 3px;height:68px}
324
+ #seedprod-page-footer{padding:15px 20px;font-size:11px}
325
+ #seedprod-page-footer a{color:#9c9c9c !important}
326
+ #seedprod-page-entries{padding:11px 0 0 0;color:#2d2d2d}
327
+ #seedprod-page-entries p>strong{font-size:16px}
328
+ #seedprod-page-entries p{margin-bottom:11px}
329
+ #seedprod-page-login{padding:15px 0;font-size:14px;color:#666}
330
+ #seedprod-page-login .btn-primary{color:#fff;background-color:#36ad39;border-color:#36ad39}
331
+ #seedprod-page-login .form-control{height:40px;margin-right:8px;width:165px}
332
+ #seedprod-page-login .btn{padding:9px 20px}
333
+ #seedprod-page-login i{color:#fff}
334
+ #seedprod-page-login #login-ft-txt{margin-top:15px;font-size:12px}
335
+ #seedprod-page-form{background:#fff;border-bottom:1px solid #f2f2f2;padding:5px}
336
+ #seedprod-wrapper .seedprod-top-sep{border-right:1px solid #f2f2f2}
337
+ #seedprod-wrapper .seedprod-over-txt{font-size:20px;line-height:.9;font-weight:bold;margin-bottom:5px;display:inline-block}
338
+ #seedprod-wrapper .seedprod-under-txt{font-size:12px;line-height:1;display:block}
339
+ .seedprod-drag-source{margin-bottom:-8px;margin-right:-8px}
340
+ #sp-blocks-editing{background:#dd4a1f;color:#fff;height:56px;line-height:1;font-weight:600;font-size:16px;text-transform:capitalize}
341
+ #sp-blocks-editing span{display:block;opacity:.5;text-transform:uppercase;font-weight:600;font-size:10px}
342
+ .sp-block-type-global{background:#e4e1e4 !important;color:#4f394d !important}
343
+ .sp-block-type-row{background:#3f5fd1 !important}
344
+ .sp-block-type-section{background:#7036bb !important}
345
+ .sp-sidebar-headers .sp-w-5{width:1.5rem !important}
346
+ #sp-blocks-edit-sections{margin-bottom:16px;margin-left:-20px;margin-right:-20px}
347
+ #sp-blocks-edit-sections div{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:18px;padding-bottom:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:600;font-size:13px}
348
+ #sp-blocks-edit-sections i{margin-right:6px}
349
+ #sp-blocks-edit-sections div.sp-secondary{background:#dedade;color:#7b6b7a}
350
+ #sp-blocks-sections div{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:18px;padding-bottom:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:600;font-size:14px}
351
+ #sp-blocks-sections i{margin-right:6px}
352
+ #sp-blocks-sections div.sp-secondary{background:#dedade;color:#7b6b7a}
353
+ .seedprod-block-option:hover{background:#dd4a1f;border-radius:5px;color:#fff}
354
+ .seedprod-block-option{background:#edebed;width:88px;height:85px;margin-bottom:8px;margin-right:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:5px}
355
+ .seedprod-block-option i{margin-top:24px;font-size:20px !important}
356
+ .seedprod-block-option button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-size:11px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%;cursor:move}
357
+ .seedprod-block-option span{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
358
+ #seedprod-wrapper .seedprod-block-option-details{background:#fff;border-top:1px solid #f2f2f2;color:#707070;position:relative;padding:20px 0;display:table-cell;width:480px;text-align:left;padding-left:74px;font-size:16px;cursor:pointer}
359
+ .seedprod-entry-drag-area{width:582px;margin-left:-34px}
360
+ .seedprod-entry-drag-area>div{width:100%;margin:auto}
361
+ #seedprod-wrapper .seedprod-block-option-move:hover{color:#333}
362
+ #seedprod-wrapper .seedprod-block-option-move{background:#fcfcfc;border:1px solid #f2f2f2;color:#b3b3b3;padding:18px 0;width:34px;display:table-cell;visibility:hidden;border-top-left-radius:3px;border-bottom-left-radius:3px;text-align:center;position:relative}
363
+ #seedprod-wrapper .seedprod-block-option-edit{background:#fcfcfc;border:1px solid #f2f2f2;color:#b3b3b3;border-right:0;padding:18px 0;width:34px;display:table-cell;visibility:hidden}
364
+ #seedprod-wrapper .seedprod-block-option-edit:hover{color:#333}
365
+ #seedprod-wrapper .seedprod-block-option-value{border:1px solid #f2f2f2;color:#9b9b9b;padding:2px;padding-top:5px;width:30px;height:30px;right:24px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:13px;text-align:center}
366
+ .seedprod-block-option-icon{border:1px solid #f2f2f2;padding:2px;padding-left:3px;padding-top:4px;width:29px;height:29px;left:24px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:14px;text-align:center}
367
+ .seedprod-block-option-icon::before{-webkit-font-smoothing:antialiased}
368
+ #seedprod-wrapper .seedprod-block-option-remove:hover{color:#333}
369
+ #seedprod-wrapper .seedprod-block-option-remove{background:#fcfcfc;border:1px solid #f2f2f2;color:#b3b3b3;padding:18px 0;width:34px;display:table-cell;visibility:hidden;border-top-right-radius:3px;border-bottom-right-radius:3px;text-align:center}
370
+ .show_hidden{visibility:visible !important}
371
+ .seedprod-entry-drag-area>div:last-child .seedprod-block-option-details{border-bottom:1px solid #f2f2f2}
372
+ #seedprod-wrapper .seedprod-block-option-edit{cursor:pointer}
373
+ #seedprod-wrapper .seedprod-page .equal{display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex;-ms-flex-wrap:wrap;flex-wrap:wrap}
374
+ #seedprod-wrapper .row,#seedprod-wrapper .seedprod .row{margin-left:0;margin-right:0}
375
+ #seedprod-prize-info .col-md-12{padding:0;background:#fff}
376
+ #seedprod-wrapper .col-xs-4,#seedprod-wrapper .seedprod .col-xs-4{padding-left:0;padding-right:0}
377
+ #seedprod-countdown,#seedprod-total-entries,#seedprod-my-entires{text-align:center;display:table;width:100%;min-height:40px}
378
+ #seedprod-countdown{font-size:16px}
379
+ #seedprod-wrapper .slider-btn-left{background:transparent !important}
380
+ #seedprod-wrapper .slider-btn-right{background:transparent !important}
381
+ #seedprod-wrapper .slider-icon{-webkit-box-shadow:rgba(0,0,0,0.3) -1px 1px 0;box-shadow:rgba(0,0,0,0.3) -1px 1px 0}
382
+ #seedprod-wrapper .slider-indicator-icon{-webkit-box-shadow:rgba(255,255,255,0.76) 0 0 2px;box-shadow:rgba(255,255,255,0.76) 0 0 2px;width:8px;height:8px}
383
+ #seedprod-wrapper .slider-indicator-active{-webkit-box-shadow:rgba(0,0,0,0.76) 0 0 2px;box-shadow:rgba(0,0,0,0.76) 0 0 2px;width:7px;height:7px}
384
+ #seedprod-wrapper .slider-indicator-icon{background-color:rgba(0,0,0,0.3) !important}
385
+ #seedprod-wrapper .slider-indicator-active{background-color:rgba(255,255,255,0.9) !important}
386
+ #seedprod-wrapper #seedprod-prize-info{border-top:1px solid #f2f2f2}
387
+ #seedprod-wrapper h1{margin:0;margin-top:30px;margin-bottom:10px;font-size:24px;color:#2d2d2d;font-weight:700}
388
+ #seedprod-wrapper #seedprod-header{margin:0;padding:0 40px;margin-bottom:12px;font-size:16px;line-height:1.4;color:#666}
389
+ .seedprod .btn-default:hover{color:#222;background-color:#fff;border-color:#bbb}
390
+ .seedprod-action-single h3{margin-left:0 !important;margin-right:0 !important}
391
+ .seedprod-action-single .seedprod-action-header:first-child{margin-bottom:0 !important}
392
+ .seedprod-sidebar-action-body{padding:10px 0;-webkit-box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25);box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25)}
393
+ .seedprod-action-single .btn-group button{padding:9px 16px}
394
+ .seedprod .btn-group{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}
395
+ .seedprod .btn-group .btn-default{border-color:#dedade !important}
396
+ .seedprod-action-single .btn{padding:8px 12px}
397
+ .seedprod-action-single .btn-group .active{background-color:#f1470d !important;color:#fff !important;-webkit-box-shadow:none !important;box-shadow:none !important}
398
+ .seedprod-action-header:first-child{border-top:0 !important;margin-top:1px !important;margin-bottom:20px !important}
399
+ .seedprod-action-single{padding-top:0;padding-bottom:0}
400
+ .seedprod-block-option-details.active{-webkit-box-shadow:inset 0 0 1px 1px #f3510b;box-shadow:inset 0 0 1px 1px #f3510b}
401
+ .seedprod .has-error .help-block,.seedprod .has-error .control-label,.seedprod .has-error .radio,.seedprod .has-error .checkbox,.seedprod .has-error .radio-inline,.seedprod .has-error .checkbox-inline,.seedprod .has-error.radio label,.seedprod .has-error.checkbox label,.seedprod .has-error.radio-inline label,.seedprod .has-error.checkbox-inline label{color:red}
402
+ .seedprod-tooltip{display:block !important;z-index:99999}
403
+ .seedprod-tooltip .tooltip-inner{font-size:13px;background:#4f394d;color:#fff;border-radius:6px;padding:5px 10px 4px;border:1px solid #4f394d;-webkit-box-shadow:0 0 3px #4f394d !important;box-shadow:0 0 3px #4f394d !important;max-width:250px;width:auto;word-wrap:break-word}
404
+ .seedprod-tooltip .tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#4f394d}
405
+ .seedprod-tooltip[x-placement^="top"]{margin-bottom:5px}
406
+ .seedprod-tooltip[x-placement^="top"] .tooltip-arrow{border-width:5px 5px 0 5px;border-left-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;bottom:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}
407
+ .seedprod-tooltip[x-placement^="bottom"]{margin-top:5px}
408
+ .seedprod-tooltip[x-placement^="bottom"] .tooltip-arrow{border-width:0 5px 5px 5px;border-left-color:transparent !important;border-right-color:transparent !important;border-top-color:transparent !important;top:-5px;left:calc(50% - 5px);margin-top:0;margin-bottom:0}
409
+ .seedprod-tooltip[x-placement^="right"]{margin-left:5px}
410
+ .seedprod-tooltip[x-placement^="right"] .tooltip-arrow{border-width:5px 5px 5px 0;border-left-color:transparent !important;border-top-color:transparent !important;border-bottom-color:transparent !important;left:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}
411
+ .seedprod-tooltip[x-placement^="left"]{margin-right:5px}
412
+ .seedprod-tooltip[x-placement^="left"] .tooltip-arrow{border-width:5px 0 5px 5px;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;right:-5px;top:calc(50% - 5px);margin-left:0;margin-right:0}
413
+ .seedprod-tooltip[aria-hidden='true']{visibility:hidden;opacity:0;-webkit-transition:opacity .15s,visibility .15s;transition:opacity .15s,visibility .15s}
414
+ .seedprod-tooltip[aria-hidden='false']{visibility:visible;opacity:1;-webkit-transition:opacity .15s;transition:opacity .15s}
415
+ .swal2-container{z-index:99999 !important}
416
+ button.swal-styled{-webkit-box-shadow:none;box-shadow:none}
417
+ .swal2-toast{border-radius:2px !important;border:none !important}
418
+ .swal2-toast .swal2-title{display:none !important}
419
+ .swal2-toast #swal2-content{padding-left:10px;font-size:13px;color:#fff}
420
+ .swal2-toast .swal2-image{margin:0 !important}
421
+ .swal2-popup.swal2-toast{-webkit-box-shadow:0 0 3px rgba(239,239,239,0.45) !important;box-shadow:0 0 3px rgba(239,239,239,0.45) !important;border-radius:3px !important}
422
+ .swal2-top-end{top:30px !important}
423
+ .seedprod-builder .swal2-top-end{top:70px !important}
424
+ .seedprod-upgrade-popup .swal2-modal{padding:20px 0 0 0 !important}
425
+ .swal2-confirm{-webkit-box-shadow:none !important;box-shadow:none !important}
426
+ .seedprod-moreinfo-popup .swal2-image{width:40px;height:40px;margin:10px auto !important}
427
+ .seedprod-moreinfo-popup .swal2-modal{width:600px}
428
+ .seedprod-moreinfo-popup .swal2-content{font-size:16px !important}
429
+ .seedprod-upgrade-popup .swal2-modal{width:600px}
430
+ .seedprod-upgrade-popup .swal2-image{width:40px;height:40px}
431
+ .seedprod-upgrade-popup .swal2-title{line-height:1;color:#230820 !important;font-size:18px !important;margin:0 40px 20px 40px !important}
432
+ .seedprod-upgrade-popup .swal2-styled.swal2-confirm{background-color:#dd4a1f !important;-webkit-box-shadow:none !important;box-shadow:none !important}
433
+ .seedprod-upgrade-popup .swal2-content{color:#fff !important;font-size:18px !important;line-height:1.5 !important;padding:0 40px 0 40px !important}
434
+ .seedprod-upgrade-popup .swal2-confirm{padding:15px 28px !important;font-size:18px !important;margin-bottom:27px !important}
435
+ .seedprod-upgrade-popup .swal2-footer{position:relative;border-top:none !important;color:#2d2d2d !important;font-size:16px !important;line-height:1.5 !important;background:#f9ffab !important;padding:37px 0 37px !important;border-bottom-left-radius:.3125em !important;border-bottom-right-radius:.3125em !important}
436
+ .seedprod-upgrade-popup .fa-check-circle{position:absolute;top:-16px;font-size:23px;color:#36ad39;background:#fff;border-radius:50px;padding:6px}
437
+ .swal2-popup .swal2-styled.swal2-cancel{background-color:#dedade !important;color:#4f394d !important}
438
+ .swal2-popup .swal2-title{font-size:18px !important;color:#230820 !important}
439
+ .swal2-modal .swal2-close{font-size:1.5em !important}
440
+ .vue-popover-theme{z-index:10;outline:0}
441
+ .v-popover .trigger{display:block !important}
442
+ .sp-highlight-section{-webkit-box-shadow:inset 0 0 1px 1px #7036bb;box-shadow:inset 0 0 1px 1px #7036bb;position:absolute;width:100%;height:100%;top:0;left:0}
443
+ .sp-highlight-row{-webkit-box-shadow:inset 0 0 1px 1px #3f5fd1;box-shadow:inset 0 0 1px 1px #3f5fd1}
444
+ .sp-highlight-block{-webkit-box-shadow:inset 0 0 1px 1px #dd4a1f;box-shadow:inset 0 0 1px 1px #dd4a1f}
445
+ .seedprod-highlight-prize .input-group-addon,.seedprod-highlight-prize .btn-prize,.seedprod-highlight-prize .btn-prize-single{border-color:#f3510a !important}
446
+ .seedprod-highlight-option,.seedprod-highlight-option-slider-img{-webkit-box-shadow:inset 0 0 1px 1px #f3510b;box-shadow:inset 0 0 1px 1px #f3510b;position:relative;cursor:pointer;z-index:9999}
447
+ .seedprod-highlight-padding{padding:2px}
448
+ .seedprod-highlight-option-slider-img::before{position:absolute;bottom:0;left:-1px;background:#f3510a;padding:0 4px;color:rgba(0,0,0,0.5);font-family:"Font Awesome 5 Free";font-weight:900;content:"\f303";font-size:13px;z-index:9}
449
+ #seedprod-welcome-video{margin:30px 0}
450
+ #seedprod-welcome-upgrade{margin:30px 0}
451
+ .seedprod-highlight-option::before{position:absolute;bottom:-17px;background:#f3510a;padding:0 4px;color:rgba(0,0,0,0.5);font-family:"Font Awesome 5 Free";font-weight:900;content:"\f303";font-size:13px;z-index:9}
452
+ #seedprod-install-options button{font-size:13px;margin-top:5px;min-width:250px;display:block}
453
+ .seedprod-50{width:49% !important}
454
+ h1.seedprod-highlight-option::before{bottom:-15px;padding:1px 4px}
455
+ .help_tip{cursor:pointer;padding:0 5px;font-size:13px;vertical-align:middle}
456
+ #nprogress{pointer-events:none}
457
+ #nprogress .bar{background:#f3510a;position:fixed;z-index:999999;top:0;left:0;width:100%;height:2px}
458
+ #nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #f3510a,0 0 5px #f3510a;box-shadow:0 0 10px #f3510a,0 0 5px #f3510a;opacity:1;-webkit-transform:rotate(3deg) translate(0,-4px);transform:rotate(3deg) translate(0,-4px)}
459
+ #nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}
460
+ #nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1031;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}
461
+ .nprogress-custom-parent{overflow:hidden;position:relative}
462
+ .nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}
463
+ .layout-3 .slider-indicators{top:5px !important}
464
+ .tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{border-color:#f1470d;color:#fff;background:#f1470d;-webkit-box-shadow:none;box-shadow:none;outline:0}
465
+ .tablenav-pages{margin:5px 0 0 !important}
466
+ .tablenav.top .displaying-num{padding-top:5px;display:inline-block}
467
+ .tablenav.bottom .tablenav-pages{margin:5px 0 0 !important}
468
+ thead,tfoot{background:#fff}
469
+ .tablenav.bottom{margin-top:8px !important}
470
+ .widefat th input,.updates-table td input,.widefat thead td input,.widefat tfoot td input{margin:0 0 0 8px !important;padding:0 !important;vertical-align:text-top !important}
471
+ .row-actions span.delete a{color:#ff1010 !important}
472
+ #seedprod-giveway-details{border-bottom:1px solid #ddd;padding-bottom:15px;margin:0 0 10px}
473
+ #seedprod-settings-nav{height:58px;margin-left:-20px;border-top:0;background:#fff;margin-bottom:13px;border-radius:0}
474
+ #seedprod-settings-nav a{height:58px;padding-top:18px;padding-left:10px;padding-right:10px;font-size:14px}
475
+ #seedprod-settings-nav a span{padding:0 10px 24px}
476
+ #seedprod-settings-nav .active a{-webkit-box-shadow:none !important;box-shadow:none !important;color:#b3b3b3 !important}
477
+ #seedprod-settings-nav .router-link-exact-active a{color:#222 !important}
478
+ #seedprod-settings-nav .router-link-exact-active a span{-webkit-box-shadow:inset 0 -7px 0 0 #f1470d !important;box-shadow:inset 0 -7px 0 0 #f1470d !important}
479
+ .form-table{margin-top:0;background-color:transparent !important;color:#666}
480
+ .form-table tr{border-bottom:1px solid #e4e4e4}
481
+ .form-table p{margin:8px 0 0}
482
+ .form-table label{padding-left:0 !important}
483
+ .form-table .help-block{padding-top:8px;font-style:italic;color:#666;max-width:600px}
484
+ .form-table h4{margin-top:0;margin-bottom:0;font-size:20px;font-weight:700;color:#444}
485
+ .form-table strong{padding-top:8px;color:#444;display:inline-block}
486
+ .form-table button{font-weight:600 !important}
487
+ .form-table .form-control{margin-bottom:0 !important;margin-right:10px;width:400px !important}
488
+ .seedprod-settings-title th,.seedprod-settings-title td{padding:20px 0}
489
+ .seedprod-settings-form th,.seedprod-settings-form td{padding:30px 0}
490
+ .seedprod-settings-submit{border-bottom:none !important}
491
+ .seedprod-settings-submit td{padding:20px 0}
492
+ #seedprod-settings-integrations .seedprod-settings-form td:first-child{width:160px}
493
+ #seedprod-settings-integrations .seedprod-settings-form i{display:inline-block;margin-left:10px}
494
+ #seedprod-settings-integrations .seedprod-settings-form img{background:#fff;border:1px solid #ddd;max-width:90px;display:inline;margin:0 0 0 20px}
495
+ #seedprod-settings-lite-cta{background-color:#fff;border:1px solid #dadada;padding:25px 20px;margin:10px 0 0 0;position:relative}
496
+ #seedprod-settings-lite-cta .dismiss{position:absolute;top:10px;right:10px;color:#666;font-size:16px}
497
+ #seedprod-settings-lite-cta h5{margin:0 0 16px;font-size:18px;font-weight:700}
498
+ #seedprod-settings-lite-cta p{color:#555;font-size:14px;margin:0 0 16px}
499
+ #seedprod-settings-lite-cta a{color:#f1470d}
500
+ #seedprod-settings-lite-cta h6{font-weight:700;font-size:14px;margin:0 0 16px}
501
+ #seedprod-settings-lite-cta p:last-of-type{margin:0}
502
+ #seedprod-settings-lite-cta .list{margin:0 0 16px 0;overflow:auto;max-width:900px}
503
+ #seedprod-settings-lite-cta ul{margin:0;padding:0;width:50%;float:left}
504
+ #seedprod-settings-lite-cta li{margin:0;padding:0 0 2px 16px;color:#555;font-size:14px;position:relative}
505
+ #seedprod-settings-lite-cta li:before{content:'+';position:absolute;top:-1px;left:0}
506
+ .btn-facebook{background:#3c5a99;color:#fff;border-radius:4px;font-size:14px;padding:12px 26px;line-height:1 !important;border:0;outline:0;cursor:pointer;color:#fff !important}
507
+ .btn-facebook.seedprod-highlight-option::before{bottom:-13px}
508
+ .green{color:#218900;font-weight:700}
509
+ .seedprod-welcome-video .swal2-popup{width:600px !important;max-width:100% !important}
510
+ .swal2-popup .swal2-styled.swal2-confirm{background-color:#dd4a1f !important}
511
+ #seedprod-welcome{color:#555;padding-top:110px}
512
+ #seedprod-welcome .btn{font-size:15px}
513
+ #seedprod-welcome hr{width:115px;color:#ddd;margin-top:40px;margin-bottom:40px}
514
+ #seedprod-welcome #license-info{text-align:center}
515
+ #seedprod-welcome #license-info p{color:#666;font-size:15px}
516
+ #seedprod-welcome #license-info #license-sub{font-size:12px}
517
+ #seedprod-welcome #license-info #license-sub a{color:#f1470d;text-decoration:underline}
518
+ #seedprod-welcome #license-info .input-lg{min-width:350px !important;height:42px !important;margin-right:8px}
519
+ #seedprod-welcome #license-info .fa-question-circle{margin-left:20px;color:#999;font-size:16px;cursor:pointer;vertical-align:middle}
520
+ #seedprod-welcome #license-info .btn{font-size:14px;padding:10px 30px}
521
+ #seedprod-welcome #license-info .form-inline{margin-bottom:10px}
522
+ #seedprod-welcome #sub-welcome{padding-bottom:50px}
523
+ #seedprod-welcome #sub-welcome h6,#seedprod-welcome #sub-welcome .btn{font-size:15px}
524
+ #seedprod-welcome #sub-welcome .button-wrap{margin-left:40px;margin-right:40px}
525
+ #seedprod-welcome .btn-default{background:#f1f1f1;border:1px solid #f1f1f1;color:#666}
526
+ #seedprod-welcome .btn-block{font-weight:500}
527
+ #seedprod-welcome .btn-default:hover{background:#ddd;border:1px solid #f1f1f1}
528
+ #seedprod-welcome .intro{background-color:#fff;border:1px solid #ddd;border-top:2px solid #ddd;border-bottom:2px solid #ddd;border-radius:2px;margin-bottom:30px;position:relative;padding-top:40px;border-radius:7px}
529
+ #seedprod-welcome .button-wrap{margin-top:25px}
530
+ #seedprod-welcome .button-wrap .left{float:left;width:50%;padding-right:6px}
531
+ #seedprod-welcome .button-wrap .right{float:right;width:50%;padding-left:6px}
532
+ #seedprod-welcome .welcome-container{margin:0 auto;max-width:676px;padding:0}
533
+ #seedprod-welcome .robbie{background-color:#fff;border:2px solid #e1e1e1;border-radius:50%;height:114px;width:114px;padding:12px 14px 0 14px;position:absolute;top:-58px;left:50%;margin-left:-55px}
534
+ #seedprod-welcome img{max-width:100%;height:auto}
535
+ #seedprod-welcome .block{padding:40px}
536
+ #seedprod-welcome h1{color:#2d2d2d;font-size:24px;text-align:center;margin:0 0 16px 0;font-weight:700}
537
+ #seedprod-welcome h6{font-size:16px;font-weight:400;line-height:1.6;text-align:center;margin:0;color:#7c7c7c}
538
+ #seedprod-welcome .features{background-color:#fff;border:1px solid #ddd;border-top:2px solid #ddd;border-bottom:0;border-radius:7px 7px 0 0;position:relative;padding-top:10px;padding-bottom:0;margin-bottom:0}
539
+ #seedprod-welcome .features .feature-list{margin-top:60px}
540
+ #seedprod-welcome .features .feature-block{float:left;width:50%;padding-bottom:35px;overflow:auto}
541
+ #seedprod-welcome .features .feature-block img{float:left;max-width:58px}
542
+ #seedprod-welcome .features .feature-block h5{margin-left:68px;margin-top:0;color:#2d2d2d}
543
+ #seedprod-welcome .features .feature-block p{margin:0;margin-left:68px;font-size:12px;color:#666}
544
+ #seedprod-welcome .features .feature-block.first{padding-right:16px;clear:both}
545
+ #seedprod-welcome .features .feature-block.last{padding-left:16px}
546
+ #seedprod-welcome .seedprod-clear:before{content:" ";display:table}
547
+ #seedprod-welcome .seedprod-clear:after{clear:both;content:" ";display:table}
548
+ #seedprod-welcome .footer{background-color:#f7f7f7;border:1px solid #ddd;border-bottom:2px solid #ddd;border-radius:0 0 7px 7px}
549
+ #seedprod-welcome .footer .block{padding:45px 80px}
550
+ #seedprod-welcome .footer .button-wrap{margin-top:0}
551
+ #seedprod-welcome .btn-trans-green{background-color:none;color:#0f8000}
552
+ #seedprod-welcome .underline{position:relative}
553
+ #seedprod-welcome .btn-trans-green .dashicons{height:18px}
554
+ #seedprod-welcome .btn-trans-green .underline:after{content:" ";border-bottom:1px dashed #0f8000;position:absolute;bottom:-5px;left:0;width:100%}
555
+ #seedprod-welcome .testimonial-block{margin:50px 0 0 0;color:#666}
556
+ #seedprod-welcome .testimonial-block .sig{margin-top:35px}
557
+ #seedprod-welcome .testimonial-block img{border-radius:50%;float:left;max-width:116px}
558
+ #seedprod-welcome .testimonial-block p{font-size:15px;margin:0 0 12px 140px}
559
+ #seedprod-aboutus .row{margin-left:0 !important;margin-right:0 !important}
560
+ #seedprod-aboutus h2{margin-top:0 !important;margin-bottom:24px;color:#23282d;font-size:24px}
561
+ #seedprod-aboutus h3{margin-top:0 !important;font-size:18px;margin-bottom:30px;color:#23282c;line-height:1.6}
562
+ #seedprod-aboutus p{font-size:16px;line-height:1.52;color:#444;margin:1em 0}
563
+ #seedprod-aboutus p:last-child{margin-bottom:0}
564
+ #seedprod-aboutus figcaption{font-size:14px;color:#888;margin-top:5px;text-align:center;line-height:initial}
565
+ #seedprod-aboutus-section{margin-top:20px;background:#fff;padding:30px 15px;border:1px solid #ddd}
566
+ #seedprod-plugin-recommendations{margin-top:20px}
567
+ #seedprod-plugin-recommendations .col-md-4:first-child{padding-left:0}
568
+ #seedprod-plugin-recommendations .col-md-4:nth-child(2){padding-left:7px;padding-right:7px}
569
+ #seedprod-plugin-recommendations .col-md-4:last-child{padding-right:0}
570
+ .seedprod-plugin-recommendations{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:20px -10px 0 !important}
571
+ .seedprod-plugin-recommendations li{background-color:#fff;border:1px solid #ddd;-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 10px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;-ms-flex-preferred-size:30%;flex-basis:30%}
572
+ .seedprod-plugin-recommendations .seedprod-plugin-recommendations-block{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px}
573
+ .seedprod-plugin-recommendations .seedprod-media-img{margin-right:20px}
574
+ .seedprod-plugin-recommendations .seedprod-media-img img{border:1px solid #eee;max-width:75px;padding:13px}
575
+ .seedprod-plugin-recommendations .seedprod-media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}
576
+ .seedprod-plugin-recommendations .seedprod-media-body h4{margin-top:0;margin-bottom:16px;color:#2d2d2d;font-size:16px}
577
+ .seedprod-plugin-recommendations .seedprod-media-body p{font-size:13px !important}
578
+ .seedprod-plugin-recommendations .seedprod-plugin-install{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:auto;background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
579
+ #seedprod-aboutus-getting-started-section{margin-top:20px;background:#fff;padding:30px 15px;border:1px solid #ddd}
580
+ #seedprod-aboutus-getting-started-section .embed-responsive{border:1px solid #ddd}
581
+ #seedprod-aboutus-getting-started-section ul{margin-top:20px;margin-bottom:0}
582
+ #seedprod-aboutus-getting-started-section a{text-decoration:underline}
583
+ #seedprod-aboutus-getting-upsell-section{margin-top:20px;background:#fafafa;border:1px solid #ddd;font-size:18px}
584
+ #seedprod-aboutus-getting-upsell-section .row:first-child{padding:30px 15px}
585
+ #seedprod-aboutus-getting-upsell-section .row:last-child{padding:30px 15px}
586
+ #seedprod-aboutus-getting-upsell-section p:last-child{margin-top:15px}
587
+ #seedprod-aboutus-getting-upsell-section hr{margin:0 30px;border:0;border-top:1px solid #ddd}
588
+ #seedprod-aboutus-getting-upsell-section h2{font-size:24px;line-height:1.6;margin-bottom:24px}
589
+ #seedprod-aboutus-getting-upsell-section #upsell-features{background:#fff;border-top:1px solid #ddd}
590
+ #seedprod-aboutus-getting-upsell-section #upsell-features a{text-decoration:underline;font-weight:600}
591
+ #seedprod-aboutus-getting-upsell-section .fa{color:#2a9b39;margin:0 8px 0 0;font-size:16px}
592
+ #seedprod-aboutus-getting-upsell-section li{line-height:2;font-size:16px;color:#444;margin-bottom:0}
593
+ #seedprod-aboutus-getting-started-docs1-section{margin-top:20px}
594
+ .docs-section{background:#fff;border:1px solid #ddd;padding:30px;line-height:2}
595
+ .docs-section img{margin-right:20px}
596
+ .docs-section .media-heading{font-size:24px;margin-bottom:16px}
597
+ .docs-section .media-body{font-size:16px;line-height:1.5}
598
+ .docs-section .media-body p{margin-bottom:30px}
599
+ #seedprod-aboutus-lite-vs-pro-section{margin-top:20px}
600
+ #seedprod-aboutus-lite-vs-pro-section table{border:1px solid #ddd}
601
+ #seedprod-aboutus-lite-vs-pro-section table caption{background:#fff;text-align:center;border:1px solid #ddd;border-bottom:0;padding:30px;font-size:16px;color:#444}
602
+ #seedprod-aboutus-lite-vs-pro-section table caption h1{color:#23282d;font-size:23px}
603
+ #seedprod-aboutus-lite-vs-pro-section td{border:1px solid #ddd;background:#fff;padding:30px;vertical-align:top;font-size:16px;color:#444;width:33.33333%}
604
+ #seedprod-aboutus-lite-vs-pro-section th{border:0;background:#fafafa;padding:30px;font-size:18px;color:#23282c}
605
+ #seedprod-aboutus-lite-vs-pro-section tfoot{text-align:center}
606
+ #seedprod-aboutus-lite-vs-pro-section tfoot a{font-size:18px;text-decoration:underline;font-weight:bold}
607
+ #seedprod-aboutus-lite-vs-pro-section tfoot p{margin-top:20px}
608
+ #seedprod-aboutus-lite-vs-pro-section .features-none{padding-left:30px;background-position:0 4px;background-size:15px auto;background-repeat:no-repeat;background-image:url(../img/icon-none.svg)}
609
+ #seedprod-aboutus-lite-vs-pro-section .features-partial{padding-left:30px;background-position:-3px 0;background-size:23px auto;background-repeat:no-repeat;background-image:url(../img/icon-partial.svg)}
610
+ #seedprod-aboutus-lite-vs-pro-section .features-full{padding-left:30px;background-position:0 6px;background-size:15px auto;background-repeat:no-repeat;background-image:url(../img/icon-full.svg)}
611
+ .clearfix{opacity:1 !important}
612
+ svg>g>g:last-child{pointer-events:none}
613
+ .seedprod-charts{background:#fff;border:1px solid #e7e8e7;padding:40px 0 0;min-height:120px}
614
+ .sp-btn{padding:11px 15px;border-radius:6px}
615
+ .sp-btn i{margin-right:10px}
616
+ #seedprod-builder-view{scroll-behavior:smooth}
617
+ #sp-revision-history{padding:20px}
618
+ #sp-revision-history p{font-weight:600;font-size:13px;padding:0 0 16px 0}
619
+ #sp-revision-history .active-current{border:2px solid #dd4a1f}
620
+ #sp-revision-history .sp-revision-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;margin-left:-6px}
621
+ #sp-revision-history .active.sp-revision-item{margin-left:-21px}
622
+ #sp-revision-history .active.sp-revision-item button{border:2px solid #dd4a1f;background:#fff}
623
+ #sp-revision-history .active .sp-revision-item-circle{border:2px solid #dd4a1f;width:10px;height:10px;display:inline-block;border-radius:9999px}
624
+ #sp-revision-history .active .sp-revision-item-line{border-bottom:2px solid #dd4a1f;width:5px;display:inline-block}
625
+ #sp-revision-history button{padding-left:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#edebed;height:70px;width:100%;border-radius:6px;color:#4f394d;font-weight:600;font-size:13px}
626
+ #sp-revision-history button img{border:0;border-radius:9999px;width:39px;height:39px;margin-right:16px}
627
+ #sp-revision-history button .sp-rev-date{color:#7b6b7a;font-size:10px}
628
+ #sp-revision-history button:hover{background:#fff}
629
+ #sp-revision-timeline{margin-top:-3px;padding-top:16px;border-left:2px solid #edebed;padding-left:15px}
630
+ #sp-bottom-nav-actions{position:fixed;height:53px;width:inherit;bottom:0;background:#4f394d;color:#d3ced2;z-index:20;font-size:16px}
631
+ #sp-bottom-nav-actions button{width:38px;height:38px;border-radius:6px}
632
+ #sp-bottom-nav-actions button.active{background:#fff !important;color:#4f394d !important}
633
+ #sp-bottom-nav-actions button:hover{color:#fff;background:#392037}
634
+ #seedprod-builder-save{font-size:14px;font-weight:600;border-top-right-radius:0;border-bottom-right-radius:0;background:#0f8a5e;height:40px}
635
+ #seedprod-builder-save:hover{background:#0b6142}
636
+ #seedprod-builder-save-dropdown{background:#0f8a5e;display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;font-size:15px;border-left:1px rgba(0,0,0,0.3) solid;border-top-left-radius:0;border-bottom-left-radius:0;padding-right:12px;padding-left:12px}
637
+ #seedprod-builder-save-dropdown i{margin-right:0}
638
+ #seedprod-builder-save-dropdown:hover{background:#0b6142}
639
+ #seedprod-builder-save-dropdown.active{background:#0b6142}
640
+ #seedprod-builder-save-dropdown-menu{background:#fff;font-size:14px;font-weight:600;width:179px;margin-top:2px;z-index:99999;color:#4f394d;border-radius:6px;-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,0.15) !important;box-shadow:0 .5rem 1rem rgba(0,0,0,0.15) !important}
641
+ #seedprod-builder-save-dropdown-menu .sp-btn{width:100%;text-align:left}
642
+ #seedprod-builder-save-dropdown-menu button:hover{color:#0f8a5e;background:rgba(15,138,94,0.05)}
643
+ #seedprod-builder-save-dropdown-menu button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
644
+ #sp-builder-top{background:#230820;color:#fff}
645
+ #sp-builder-top>div{height:72px}
646
+ #sp-builder-top-main-nav-utlity{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;height:100%}
647
+ #sp-builder-top-main-nav{height:100%}
648
+ #sp-builder-top-main-nav>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}
649
+ #sp-builder-top-main-nav a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:2px 20px;font-size:16px;color:#a79ca6;font-weight:600}
650
+ #sp-builder-top-main-nav a.active{font-size:16px;color:#fff;-webkit-box-shadow:inset 0 -3px 0 0 #fff !important;box-shadow:inset 0 -3px 0 0 #fff !important}
651
+ #sp-builder-top-main-nav a:hover{color:#fff}
652
+ .sp-el-toolbar{top:-24px;left:0;width:inherit;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
653
+ .sp-el-toolbar-add{height:0;bottom:0;left:0;width:inherit;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:100}
654
+ .sp-el-toolbar-add>span{position:relative;top:-11px}
655
+ .sp-toolbar-bottom{top:0}
656
+ .sp-toolbar-bottom>div{border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-left-radius:6px;border-bottom-right-radius:6px}
657
+ .sp-el-toolbar>div{border-top-left-radius:6px;border-top-right-radius:6px}
658
+ .sp-toolbar-left{width:22px;height:inherit;background:linear-gradient(135deg,rgba(255,255,255,0) 0,rgba(255,255,255,0) 50%,#7036bb 50%,#7036bb 100%);background-position-y:2px;background-repeat:no-repeat;background-position-x:0;position:relative;right:-1px}
659
+ .sp-toolbar-bottom .sp-toolbar-left{width:22px;height:inherit;background:linear-gradient(45deg,rgba(255,255,255,0) 0,rgba(255,255,255,0) 50%,#7036bb 50%,#7036bb 100%);background-position-y:0;background-repeat:no-repeat;background-position-x:0;position:relative;right:-3px}
660
+ .sp-toolbar-right{width:22px;height:inherit;background:linear-gradient(45deg,#7036bb 0,#7036bb 50%,rgba(255,255,255,0) 50%,rgba(255,255,255,0) 100%);background-position-y:0;background-repeat:no-repeat;background-position-x:-1px;position:relative;left:-1px}
661
+ .sp-toolbar-bottom .sp-toolbar-right{width:22px;height:inherit;background:linear-gradient(135deg,#7036bb 0,#7036bb 50%,rgba(255,255,255,0) 50%,rgba(255,255,255,0) 100%);background-position-y:0;background-repeat:no-repeat;background-position-x:-1px;position:relative;left:-1px}
662
+ .color-picker-float{position:absolute;z-index:10;right:7px;margin-top:5px;background:#fff;border-radius:10px;padding:16px;-webkit-box-shadow:0 15px 50px rgba(81,75,104,0.3);box-shadow:0 15px 50px rgba(81,75,104,0.3)}
663
+ .color-picker-float-overflow{z-index:50;left:20px;margin-left:18px;margin-top:5px;background:#fff;border-radius:10px;padding:16px;-webkit-box-shadow:0 15px 50px rgba(81,75,104,0.3);box-shadow:0 15px 50px rgba(81,75,104,0.3);top:0;width:364px}
664
+ .color-picker-float-overflow .vc-chrome{width:180px}
665
+ .color-picker-float-overflow button{-webkit-box-shadow:0 0 1px 1px #dedede;box-shadow:0 0 1px 1px #dedede}
666
+ .vc-chrome{-webkit-box-shadow:none !important;box-shadow:none !important}
667
+ .sp-form-group{margin-bottom:10px}
668
+ .sp-form-group input[type=text],.sp-form-group select{width:100%;display:block}
669
+ .sp-form-group .help_tip i{vertical-align:text-top}
670
+ .sp-form-group .color-picker-container{left:5px}
671
+ .sp-form-group .simple-color-picker .sp-cp-label{font-weight:600;font-size:14px}
672
+ .sp-form-group .simple-color-picker-container .sp-bg-cv-transparent{width:105px;height:28px;border-radius:20px}
673
+ .sp-form-group .simple-color-picker-container .current-color{width:105px;height:28px;border-radius:20px;border:2px solid #fff}
674
+ .sp-form-group .current-color{display:inherit}
675
+ .sp-form-group .sp-color-value{padding-left:28px}
676
+ .sp-form-group .sp-color-value-clear{display:inline-block;right:7px;color:#efefef}
677
+ .sp-form-group .sp-btn-primary{background-color:#38a169;color:#fff;padding:10px 10px;border-radius:4px;line-height:1;cursor:pointer}
678
+ .sp-bg-cv-transparent{background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0;width:1.25rem;height:1.25rem;border-radius:9999px}
679
+ .gutter.gutter-horizontal{cursor:ew-resize;margin-left:-1px !important;margin-right:-1px !important}
680
+ .sp-btn-group span{padding:7px;background:#eee;width:50px;display:inline-block;text-align:center;cursor:pointer}
681
+ .sp-btn-group span.active{background:#ccc}
682
+ .sp-btn-group span:hover{background:#ddd}
683
+ .sp-btn-group span:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}
684
+ .sp-btn-group span:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}
685
+ .mce-i-help{display:none !important}
686
+ .mce-panel .mce-btn i.mce-caret{border-top:6px solid #7b6b7a;margin-left:2px;margin-right:2px}
687
+ .mce-panel .mce-btn i.mce-caret{border-top:6px solid #7b6b7a;margin-left:2px;margin-right:2px}
688
+ .mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#fff}
689
+ .mce-tinymce-inline .mce-flow-layout-item .mce-first,.mce-tinymce-inline .mce-flow-layout-item .mce-last{pointer-events:none !important}
690
+ .sp-section-categories li{padding:16px 0;color:#7b6b7a;font-weight:600;font-size:16px;margin-bottom:0;-webkit-box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25);box-shadow:inset 0 -1px 0 rgba(167,156,166,0.25)}
691
+ .sp-section-categories .sp-w-4{width:24px}
692
+ .sp-section-categories .sp-h-4{height:24px}
693
+ .mce-toolbar-grp{background:#edebed !important;border-bottom:1px solid #edebed !important}
694
+ .mce-tinymce-inline.mce-panel{background:transparent !important;-webkit-box-shadow:none !important;box-shadow:none !important}
695
+ .mce-tinymce-inline .mce-toolbar-grp{background:#230820 !important;border-bottom:1px solid #230820 !important;border-radius:50px}
696
+ .mce-tinymce-inline .mce-btn:hover{color:#fff !important;background:#230820 !important;border-color:#7b6b7a !important;-webkit-box-shadow:none !important;box-shadow:none !important}
697
+ .mce-tinymce-inline .mce-btn:hover .mce-ico{color:#fff !important}
698
+ .mce-tinymce-inline .mce-ico{color:#7b6b7a !important}
699
+ .mce-tinymce-inline .mce-toolbar-grp .mce-active{background:#230820 !important;border-color:#7b6b7a !important}
700
+ .mce-tinymce-inline .mce-toolbar-grp .mce-active .mce-ico{color:#fff !important}
701
+ .mce-inline-toolbar-grp{background:#230820 !important;border-bottom:1px solid #230820 !important}
702
+ .mce-inline-toolbar-grp .mce-ico{color:#7b6b7a !important}
703
+ .mce-inline-toolbar-grp .mce-ico:hover{color:#fff !important}
704
+ .mce-inline-toolbar-grp .mce-btn:hover{color:#fff !important;background:#230820 !important;border-color:#7b6b7a !important;-webkit-box-shadow:none !important;box-shadow:none !important}
705
+ .mce-inline-toolbar-grp .mce-primary{color:#fff !important;background:#0f8a5e !important;border-color:#0f8a5e !important;-webkit-box-shadow:none !important;box-shadow:none !important}
706
+ .mce-inline-toolbar-grp .mce-primary .mce-ico{color:#fff !important}
707
+ .mce-inline-toolbar-grp .mce-primary:hover{color:#fff !important;background:#0b6142 !important;border-color:#0b6142 !important;-webkit-box-shadow:none !important;box-shadow:none !important}
708
+ .mce-inline-toolbar-grp .mce-primary:hover .mce-ico{color:#fff !important}
709
+ .mce-inline-toolbar-grp div.wp-link-preview a{color:#fff !important}
710
+ div.mce-inline-toolbar-grp.mce-arrow-up:after{border-bottom-color:#230820 !important}
711
+ .vue-slider-process{background-color:#dd4a1f !important}
712
+ .vue-slider-dot-tooltip-inner{border-color:#dd4a1f !important;background-color:#dd4a1f !important}
713
+ .seedprod-sidebar-form::-webkit-scrollbar{display:none}
714
+ #wpforms-builder-elementor-popup{position:fixed;top:0;left:0;width:100vw;height:100vh;padding:30px;z-index:10000;background:rgba(0,0,0,0.75)}
715
+ #wpforms-builder-elementor-popup iframe{width:100%;height:100%;background-color:#fff}
716
+ .fade-enter-active,.fade-leave-active{-webkit-transition:opacity .25s ease-out;transition:opacity .25s ease-out}
717
+ .fade-enter,.fade-leave-to{opacity:0}
718
+ .sp-preview-hidden{display:none !important}
719
+ .sp-wp-button{display:inline-block;padding:.5em .75em;font-weight:600;border-radius:3px}
720
+ .sp-wp-button-transparent{background-color:transparent;border:1px solid currentColor}
721
+ .sp-wp-button-transparent:hover{background-color:#4f394d;border-color:#4f394d;color:#fff}
722
+ @-webkit-keyframes hightlight_pulse_color{0%{-webkit-box-shadow:inset 0 0 1px 1px red;box-shadow:inset 0 0 1px 1px red}
723
+ 50%{-webkit-box-shadow:inset 0 0 1px 1px #fff;box-shadow:inset 0 0 1px 1px #fff}
724
+ 100%{-webkit-box-shadow:inset 0 0 1px 1px #f3510b;box-shadow:inset 0 0 1px 1px #f3510b}
725
+ }@keyframes hightlight_pulse_color{0%{-webkit-box-shadow:inset 0 0 1px 1px red;box-shadow:inset 0 0 1px 1px red}
726
+ 50%{-webkit-box-shadow:inset 0 0 1px 1px #fff;box-shadow:inset 0 0 1px 1px #fff}
727
+ 100%{-webkit-box-shadow:inset 0 0 1px 1px #f3510b;box-shadow:inset 0 0 1px 1px #f3510b}
728
+ }@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}
729
+ 100%{-webkit-transform:rotate(360deg)}
730
+ }@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}
731
+ 100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}
732
+ }
public/css/global-admin.css ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .seedprod-mode-active a{
3
+ background: #DD4A1F !important;
4
+ color: #fff !important;
5
+ display: flex !important;
6
+ align-items: center !important;
7
+ justify-content: center !important;
8
+ }
9
+ .seedprod-mode-active a:hover{
10
+ background-color: #f15d32 !important;
11
+ }
12
+
13
+ .seedprod-mode-active img{
14
+ margin-right: 5px !important;
15
+ margin-top: 5px !important;
16
+ }
17
+
18
+
19
+ .sp-is-logged-in.sp-seedprod{
20
+ padding-top:32px;
21
+ margin-top:0px !important;
22
+ }
23
+
24
+ .seedprod-mb-icon{
25
+ margin-top:17px !important;
26
+ margin-right: 5px !important;
27
+ height: 34px !important;
28
+ }
29
+
30
+ .seedprod-mode-active .ab-sub-wrapper a{
31
+ justify-content: left !important;
32
+ }
33
+
34
+ .toplevel_page_seedprod_pro div.wp-menu-image.svg , .toplevel_page_seedprod_lite div.wp-menu-image.svg {
35
+ background-size: 16px auto !important;
36
+ }
37
+
38
+ .seedprod-menu-notification-counter {
39
+ margin-left: 7px !important;
40
+ display: flex !important;
41
+ align-items: center !important;
42
+ justify-content: center !important;
43
+ min-width: 18px !important;
44
+ height: 18px !important;
45
+ border-radius: 9px !important;
46
+ background-color: #ca4a1f !important;
47
+ color: #fff !important;
48
+ font-size: 11px !important;
49
+ line-height: 0 !important;
50
+ text-align: center !important;
51
+ }
public/css/seedprod-style.css ADDED
@@ -0,0 +1,3992 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @charset "UTF-8";
2
+ /*!
3
+ * animate.css -http://daneden.me/animate
4
+ * Version - 3.7.0
5
+ * Licensed under the MIT license - http://opensource.org/licenses/MIT
6
+ *
7
+ * Copyright (c) 2018 Daniel Eden
8
+ */
9
+ @-webkit-keyframes bounce {
10
+ 0%,
11
+ 20%,
12
+ 53%,
13
+ 80%,
14
+ to {
15
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
16
+ -webkit-transform: translateZ(0);
17
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
18
+ transform: translateZ(0);
19
+ }
20
+ 40%,
21
+ 43% {
22
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
23
+ -webkit-transform: translate3d(0, -30px, 0);
24
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
25
+ transform: translate3d(0, -30px, 0);
26
+ }
27
+ 70% {
28
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
29
+ -webkit-transform: translate3d(0, -15px, 0);
30
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
31
+ transform: translate3d(0, -15px, 0);
32
+ }
33
+ 90% {
34
+ -webkit-transform: translate3d(0, -4px, 0);
35
+ transform: translate3d(0, -4px, 0);
36
+ }
37
+ }
38
+ @keyframes bounce {
39
+ 0%,
40
+ 20%,
41
+ 53%,
42
+ 80%,
43
+ to {
44
+ -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
45
+ -webkit-transform: translateZ(0);
46
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
47
+ transform: translateZ(0);
48
+ }
49
+ 40%,
50
+ 43% {
51
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
52
+ -webkit-transform: translate3d(0, -30px, 0);
53
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
54
+ transform: translate3d(0, -30px, 0);
55
+ }
56
+ 70% {
57
+ -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
58
+ -webkit-transform: translate3d(0, -15px, 0);
59
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
60
+ transform: translate3d(0, -15px, 0);
61
+ }
62
+ 90% {
63
+ -webkit-transform: translate3d(0, -4px, 0);
64
+ transform: translate3d(0, -4px, 0);
65
+ }
66
+ }
67
+ .bounce {
68
+ -webkit-animation-name: bounce;
69
+ -webkit-transform-origin: center bottom;
70
+ animation-name: bounce;
71
+ transform-origin: center bottom;
72
+ }
73
+ @-webkit-keyframes flash {
74
+ 0%,
75
+ 50%,
76
+ to {
77
+ opacity: 1;
78
+ }
79
+ 25%,
80
+ 75% {
81
+ opacity: 0;
82
+ }
83
+ }
84
+ @keyframes flash {
85
+ 0%,
86
+ 50%,
87
+ to {
88
+ opacity: 1;
89
+ }
90
+ 25%,
91
+ 75% {
92
+ opacity: 0;
93
+ }
94
+ }
95
+ .flash {
96
+ -webkit-animation-name: flash;
97
+ animation-name: flash;
98
+ }
99
+ @-webkit-keyframes pulse {
100
+ 0% {
101
+ -webkit-transform: scaleX(1);
102
+ transform: scaleX(1);
103
+ }
104
+ 50% {
105
+ -webkit-transform: scale3d(1.05, 1.05, 1.05);
106
+ transform: scale3d(1.05, 1.05, 1.05);
107
+ }
108
+ to {
109
+ -webkit-transform: scaleX(1);
110
+ transform: scaleX(1);
111
+ }
112
+ }
113
+ @keyframes pulse {
114
+ 0% {
115
+ -webkit-transform: scaleX(1);
116
+