AMP for WP – Accelerated Mobile Pages - Version 0.9.97.10

Version Description

(18th August 2018) = * Fixed: Homepage build with AMP PageBuilder is displaying only when the checkbox of the Custom AMP editor is enabled #2350 * Added: Created a new function to get the settings instead of calling it directly from global $redux_builder_amp everytime. ampforwp_get_setting created #2177 * Fixed: Comments and share not loading on pages only in swift #2401 * Fixed: Back to Top link not working in Swift Design #2404 * Added: Ads Below the Author Area in Swift theme #2455 * Fixed: AMP should remove spaces from GTM ID automatically #2413 * Fixed: Some Posts are not displaying in Blog page even when AMP is enabled from Post settings #2375 * Fixed: Wrong AMPHTML when using static page as blog using custom-code/pagebuilder from reading settings #2396 * Added: Add paginations meta tags #2343 * Fixed: Updated the code of AMP renders with ?q after the /amp #2361 * Added: Add support for Relevanssi search #2307 * Added: Show index/noindex label when enabling the options in SEO Settings #2290 * Added: Add AMP consent in AMP Theme Framework #2440 * Added: Created a component called AMP-geo so anyone can use it in thier AMP theme #2440

Download this release

Release Info

Developer mohammed_kaludi
Plugin Icon 128x128 AMP for WP – Accelerated Mobile Pages
Version 0.9.97.10
Comparing to
See all releases

Code changes from version 0.9.97.9 to 0.9.97.10

Files changed (41) hide show
  1. LICENSE +357 -357
  2. README.md +1885 -1866
  3. accelerated-moblie-pages.php +773 -754
  4. base_remover/base_remover.php +126 -126
  5. base_remover/dependencyScript.js +20 -20
  6. classes/class-ampforwp-instagram-sanitizer.php +49 -49
  7. classes/class-ampforwp-youtube-embed.php +131 -131
  8. classes/class-init.php +10 -10
  9. components/author-box/author-box.php +107 -103
  10. components/breadcrumb/breadcrumb.php +218 -218
  11. components/call-now/call-now.php +15 -15
  12. components/categories-tags/categories-tags.php +44 -44
  13. components/comments/comments.php +267 -267
  14. components/components-core.php +575 -567
  15. components/featured-image/featured-image.php +52 -52
  16. components/gdpr/gdpr.php +245 -0
  17. components/logo/logo.php +53 -58
  18. components/loop/loop.php +420 -414
  19. components/menu/menu.php +21 -21
  20. components/post-navigation/post-navigation.php +25 -25
  21. components/post-pagination/post-pagination.php +159 -159
  22. components/related-posts/related-posts.php +168 -168
  23. components/search/search.php +34 -34
  24. components/sidebar/sidebar.php +79 -79
  25. components/social-icons/fonts/icomoon.svg +21 -21
  26. components/social-icons/social-icons.php +230 -230
  27. components/theme-loader.php +279 -279
  28. feeds/instant-article-feed.php +55 -55
  29. includes/admin-script.js +603 -581
  30. includes/admin-style.css +723 -720
  31. includes/amp-consent/consent.php +2 -2
  32. includes/disqus.html +91 -91
  33. includes/icons/amp-icons.php +780 -780
  34. includes/includes.php +52 -52
  35. includes/modules/ampforwp-blurb.php +195 -195
  36. includes/modules/ampforwp-button.php +251 -251
  37. includes/modules/js/amp.js +158 -158
  38. includes/newsletter.php +131 -131
  39. includes/onesignal-integration/amp-helper-frame.html +6 -6
  40. includes/onesignal-integration/amp-permission-dialog.html +6 -6
  41. includes/options/admin-config.php +0 -1399
LICENSE CHANGED
@@ -1,357 +1,357 @@
1
- This program is free software; you can redistribute it and/or modify
2
- it under the terms of the GNU General Public License as published by
3
- the Free Software Foundation; either version 2 of the License, or
4
- (at your option) any later version.
5
-
6
- This program is distributed in the hope that it will be useful,
7
- but WITHOUT ANY WARRANTY; without even the implied warranty of
8
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
- GNU General Public License for more details.
10
-
11
- You should have received a copy of the GNU General Public License
12
- along with this program; if not, write to the Free Software
13
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
14
-
15
-
16
- ===================================
17
-
18
- GNU GENERAL PUBLIC LICENSE
19
- Version 2, June 1991
20
-
21
- Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
22
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
- Everyone is permitted to copy and distribute verbatim copies
24
- of this license document, but changing it is not allowed.
25
-
26
- Preamble
27
-
28
- The licenses for most software are designed to take away your
29
- freedom to share and change it. By contrast, the GNU General Public
30
- License is intended to guarantee your freedom to share and change free
31
- software--to make sure the software is free for all its users. This
32
- General Public License applies to most of the Free Software
33
- Foundation's software and to any other program whose authors commit to
34
- using it. (Some other Free Software Foundation software is covered by
35
- the GNU Lesser General Public License instead.) You can apply it to
36
- your programs, too.
37
-
38
- When we speak of free software, we are referring to freedom, not
39
- price. Our General Public Licenses are designed to make sure that you
40
- have the freedom to distribute copies of free software (and charge for
41
- this service if you wish), that you receive source code or can get it
42
- if you want it, that you can change the software or use pieces of it
43
- in new free programs; and that you know you can do these things.
44
-
45
- To protect your rights, we need to make restrictions that forbid
46
- anyone to deny you these rights or to ask you to surrender the rights.
47
- These restrictions translate to certain responsibilities for you if you
48
- distribute copies of the software, or if you modify it.
49
-
50
- For example, if you distribute copies of such a program, whether
51
- gratis or for a fee, you must give the recipients all the rights that
52
- you have. You must make sure that they, too, receive or can get the
53
- source code. And you must show them these terms so they know their
54
- rights.
55
-
56
- We protect your rights with two steps: (1) copyright the software, and
57
- (2) offer you this license which gives you legal permission to copy,
58
- distribute and/or modify the software.
59
-
60
- Also, for each author's protection and ours, we want to make certain
61
- that everyone understands that there is no warranty for this free
62
- software. If the software is modified by someone else and passed on, we
63
- want its recipients to know that what they have is not the original, so
64
- that any problems introduced by others will not reflect on the original
65
- authors' reputations.
66
-
67
- Finally, any free program is threatened constantly by software
68
- patents. We wish to avoid the danger that redistributors of a free
69
- program will individually obtain patent licenses, in effect making the
70
- program proprietary. To prevent this, we have made it clear that any
71
- patent must be licensed for everyone's free use or not licensed at all.
72
-
73
- The precise terms and conditions for copying, distribution and
74
- modification follow.
75
-
76
- GNU GENERAL PUBLIC LICENSE
77
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
78
-
79
- 0. This License applies to any program or other work which contains
80
- a notice placed by the copyright holder saying it may be distributed
81
- under the terms of this General Public License. The "Program", below,
82
- refers to any such program or work, and a "work based on the Program"
83
- means either the Program or any derivative work under copyright law:
84
- that is to say, a work containing the Program or a portion of it,
85
- either verbatim or with modifications and/or translated into another
86
- language. (Hereinafter, translation is included without limitation in
87
- the term "modification".) Each licensee is addressed as "you".
88
-
89
- Activities other than copying, distribution and modification are not
90
- covered by this License; they are outside its scope. The act of
91
- running the Program is not restricted, and the output from the Program
92
- is covered only if its contents constitute a work based on the
93
- Program (independent of having been made by running the Program).
94
- Whether that is true depends on what the Program does.
95
-
96
- 1. You may copy and distribute verbatim copies of the Program's
97
- source code as you receive it, in any medium, provided that you
98
- conspicuously and appropriately publish on each copy an appropriate
99
- copyright notice and disclaimer of warranty; keep intact all the
100
- notices that refer to this License and to the absence of any warranty;
101
- and give any other recipients of the Program a copy of this License
102
- along with the Program.
103
-
104
- You may charge a fee for the physical act of transferring a copy, and
105
- you may at your option offer warranty protection in exchange for a fee.
106
-
107
- 2. You may modify your copy or copies of the Program or any portion
108
- of it, thus forming a work based on the Program, and copy and
109
- distribute such modifications or work under the terms of Section 1
110
- above, provided that you also meet all of these conditions:
111
-
112
- a) You must cause the modified files to carry prominent notices
113
- stating that you changed the files and the date of any change.
114
-
115
- b) You must cause any work that you distribute or publish, that in
116
- whole or in part contains or is derived from the Program or any
117
- part thereof, to be licensed as a whole at no charge to all third
118
- parties under the terms of this License.
119
-
120
- c) If the modified program normally reads commands interactively
121
- when run, you must cause it, when started running for such
122
- interactive use in the most ordinary way, to print or display an
123
- announcement including an appropriate copyright notice and a
124
- notice that there is no warranty (or else, saying that you provide
125
- a warranty) and that users may redistribute the program under
126
- these conditions, and telling the user how to view a copy of this
127
- License. (Exception: if the Program itself is interactive but
128
- does not normally print such an announcement, your work based on
129
- the Program is not required to print an announcement.)
130
-
131
- These requirements apply to the modified work as a whole. If
132
- identifiable sections of that work are not derived from the Program,
133
- and can be reasonably considered independent and separate works in
134
- themselves, then this License, and its terms, do not apply to those
135
- sections when you distribute them as separate works. But when you
136
- distribute the same sections as part of a whole which is a work based
137
- on the Program, the distribution of the whole must be on the terms of
138
- this License, whose permissions for other licensees extend to the
139
- entire whole, and thus to each and every part regardless of who wrote it.
140
-
141
- Thus, it is not the intent of this section to claim rights or contest
142
- your rights to work written entirely by you; rather, the intent is to
143
- exercise the right to control the distribution of derivative or
144
- collective works based on the Program.
145
-
146
- In addition, mere aggregation of another work not based on the Program
147
- with the Program (or with a work based on the Program) on a volume of
148
- a storage or distribution medium does not bring the other work under
149
- the scope of this License.
150
-
151
- 3. You may copy and distribute the Program (or a work based on it,
152
- under Section 2) in object code or executable form under the terms of
153
- Sections 1 and 2 above provided that you also do one of the following:
154
-
155
- a) Accompany it with the complete corresponding machine-readable
156
- source code, which must be distributed under the terms of Sections
157
- 1 and 2 above on a medium customarily used for software interchange; or,
158
-
159
- b) Accompany it with a written offer, valid for at least three
160
- years, to give any third party, for a charge no more than your
161
- cost of physically performing source distribution, a complete
162
- machine-readable copy of the corresponding source code, to be
163
- distributed under the terms of Sections 1 and 2 above on a medium
164
- customarily used for software interchange; or,
165
-
166
- c) Accompany it with the information you received as to the offer
167
- to distribute corresponding source code. (This alternative is
168
- allowed only for noncommercial distribution and only if you
169
- received the program in object code or executable form with such
170
- an offer, in accord with Subsection b above.)
171
-
172
- The source code for a work means the preferred form of the work for
173
- making modifications to it. For an executable work, complete source
174
- code means all the source code for all modules it contains, plus any
175
- associated interface definition files, plus the scripts used to
176
- control compilation and installation of the executable. However, as a
177
- special exception, the source code distributed need not include
178
- anything that is normally distributed (in either source or binary
179
- form) with the major components (compiler, kernel, and so on) of the
180
- operating system on which the executable runs, unless that component
181
- itself accompanies the executable.
182
-
183
- If distribution of executable or object code is made by offering
184
- access to copy from a designated place, then offering equivalent
185
- access to copy the source code from the same place counts as
186
- distribution of the source code, even though third parties are not
187
- compelled to copy the source along with the object code.
188
-
189
- 4. You may not copy, modify, sublicense, or distribute the Program
190
- except as expressly provided under this License. Any attempt
191
- otherwise to copy, modify, sublicense or distribute the Program is
192
- void, and will automatically terminate your rights under this License.
193
- However, parties who have received copies, or rights, from you under
194
- this License will not have their licenses terminated so long as such
195
- parties remain in full compliance.
196
-
197
- 5. You are not required to accept this License, since you have not
198
- signed it. However, nothing else grants you permission to modify or
199
- distribute the Program or its derivative works. These actions are
200
- prohibited by law if you do not accept this License. Therefore, by
201
- modifying or distributing the Program (or any work based on the
202
- Program), you indicate your acceptance of this License to do so, and
203
- all its terms and conditions for copying, distributing or modifying
204
- the Program or works based on it.
205
-
206
- 6. Each time you redistribute the Program (or any work based on the
207
- Program), the recipient automatically receives a license from the
208
- original licensor to copy, distribute or modify the Program subject to
209
- these terms and conditions. You may not impose any further
210
- restrictions on the recipients' exercise of the rights granted herein.
211
- You are not responsible for enforcing compliance by third parties to
212
- this License.
213
-
214
- 7. If, as a consequence of a court judgment or allegation of patent
215
- infringement or for any other reason (not limited to patent issues),
216
- conditions are imposed on you (whether by court order, agreement or
217
- otherwise) that contradict the conditions of this License, they do not
218
- excuse you from the conditions of this License. If you cannot
219
- distribute so as to satisfy simultaneously your obligations under this
220
- License and any other pertinent obligations, then as a consequence you
221
- may not distribute the Program at all. For example, if a patent
222
- license would not permit royalty-free redistribution of the Program by
223
- all those who receive copies directly or indirectly through you, then
224
- the only way you could satisfy both it and this License would be to
225
- refrain entirely from distribution of the Program.
226
-
227
- If any portion of this section is held invalid or unenforceable under
228
- any particular circumstance, the balance of the section is intended to
229
- apply and the section as a whole is intended to apply in other
230
- circumstances.
231
-
232
- It is not the purpose of this section to induce you to infringe any
233
- patents or other property right claims or to contest validity of any
234
- such claims; this section has the sole purpose of protecting the
235
- integrity of the free software distribution system, which is
236
- implemented by public license practices. Many people have made
237
- generous contributions to the wide range of software distributed
238
- through that system in reliance on consistent application of that
239
- system; it is up to the author/donor to decide if he or she is willing
240
- to distribute software through any other system and a licensee cannot
241
- impose that choice.
242
-
243
- This section is intended to make thoroughly clear what is believed to
244
- be a consequence of the rest of this License.
245
-
246
- 8. If the distribution and/or use of the Program is restricted in
247
- certain countries either by patents or by copyrighted interfaces, the
248
- original copyright holder who places the Program under this License
249
- may add an explicit geographical distribution limitation excluding
250
- those countries, so that distribution is permitted only in or among
251
- countries not thus excluded. In such case, this License incorporates
252
- the limitation as if written in the body of this License.
253
-
254
- 9. The Free Software Foundation may publish revised and/or new versions
255
- of the General Public License from time to time. Such new versions will
256
- be similar in spirit to the present version, but may differ in detail to
257
- address new problems or concerns.
258
-
259
- Each version is given a distinguishing version number. If the Program
260
- specifies a version number of this License which applies to it and "any
261
- later version", you have the option of following the terms and conditions
262
- either of that version or of any later version published by the Free
263
- Software Foundation. If the Program does not specify a version number of
264
- this License, you may choose any version ever published by the Free Software
265
- Foundation.
266
-
267
- 10. If you wish to incorporate parts of the Program into other free
268
- programs whose distribution conditions are different, write to the author
269
- to ask for permission. For software which is copyrighted by the Free
270
- Software Foundation, write to the Free Software Foundation; we sometimes
271
- make exceptions for this. Our decision will be guided by the two goals
272
- of preserving the free status of all derivatives of our free software and
273
- of promoting the sharing and reuse of software generally.
274
-
275
- NO WARRANTY
276
-
277
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
278
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
279
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
280
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
281
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
282
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
283
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
284
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
285
- REPAIR OR CORRECTION.
286
-
287
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
288
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
289
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
290
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
291
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
292
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
293
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
294
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
295
- POSSIBILITY OF SUCH DAMAGES.
296
-
297
- END OF TERMS AND CONDITIONS
298
-
299
- How to Apply These Terms to Your New Programs
300
-
301
- If you develop a new program, and you want it to be of the greatest
302
- possible use to the public, the best way to achieve this is to make it
303
- free software which everyone can redistribute and change under these terms.
304
-
305
- To do so, attach the following notices to the program. It is safest
306
- to attach them to the start of each source file to most effectively
307
- convey the exclusion of warranty; and each file should have at least
308
- the "copyright" line and a pointer to where the full notice is found.
309
-
310
- {description}
311
- Copyright (C) {year} {fullname}
312
-
313
- This program is free software; you can redistribute it and/or modify
314
- it under the terms of the GNU General Public License as published by
315
- the Free Software Foundation; either version 2 of the License, or
316
- (at your option) any later version.
317
-
318
- This program is distributed in the hope that it will be useful,
319
- but WITHOUT ANY WARRANTY; without even the implied warranty of
320
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
321
- GNU General Public License for more details.
322
-
323
- You should have received a copy of the GNU General Public License along
324
- with this program; if not, write to the Free Software Foundation, Inc.,
325
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
326
-
327
- Also add information on how to contact you by electronic and paper mail.
328
-
329
- If the program is interactive, make it output a short notice like this
330
- when it starts in an interactive mode:
331
-
332
- Gnomovision version 69, Copyright (C) year name of author
333
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
334
- This is free software, and you are welcome to redistribute it
335
- under certain conditions; type `show c' for details.
336
-
337
- The hypothetical commands `show w' and `show c' should show the appropriate
338
- parts of the General Public License. Of course, the commands you use may
339
- be called something other than `show w' and `show c'; they could even be
340
- mouse-clicks or menu items--whatever suits your program.
341
-
342
- You should also get your employer (if you work as a programmer) or your
343
- school, if any, to sign a "copyright disclaimer" for the program, if
344
- necessary. Here is a sample; alter the names:
345
-
346
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
347
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
348
-
349
- {signature of Ty Coon}, 1 April 1989
350
- Ty Coon, President of Vice
351
-
352
- This General Public License does not permit incorporating your program into
353
- proprietary programs. If your program is a subroutine library, you may
354
- consider it more useful to permit linking proprietary applications with the
355
- library. If this is what you want to do, use the GNU Lesser General
356
- Public License instead of this License.
357
-
1
+ This program is free software; you can redistribute it and/or modify
2
+ it under the terms of the GNU General Public License as published by
3
+ the Free Software Foundation; either version 2 of the License, or
4
+ (at your option) any later version.
5
+
6
+ This program is distributed in the hope that it will be useful,
7
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
+ GNU General Public License for more details.
10
+
11
+ You should have received a copy of the GNU General Public License
12
+ along with this program; if not, write to the Free Software
13
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
14
+
15
+
16
+ ===================================
17
+
18
+ GNU GENERAL PUBLIC LICENSE
19
+ Version 2, June 1991
20
+
21
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
22
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
+ Everyone is permitted to copy and distribute verbatim copies
24
+ of this license document, but changing it is not allowed.
25
+
26
+ Preamble
27
+
28
+ The licenses for most software are designed to take away your
29
+ freedom to share and change it. By contrast, the GNU General Public
30
+ License is intended to guarantee your freedom to share and change free
31
+ software--to make sure the software is free for all its users. This
32
+ General Public License applies to most of the Free Software
33
+ Foundation's software and to any other program whose authors commit to
34
+ using it. (Some other Free Software Foundation software is covered by
35
+ the GNU Lesser General Public License instead.) You can apply it to
36
+ your programs, too.
37
+
38
+ When we speak of free software, we are referring to freedom, not
39
+ price. Our General Public Licenses are designed to make sure that you
40
+ have the freedom to distribute copies of free software (and charge for
41
+ this service if you wish), that you receive source code or can get it
42
+ if you want it, that you can change the software or use pieces of it
43
+ in new free programs; and that you know you can do these things.
44
+
45
+ To protect your rights, we need to make restrictions that forbid
46
+ anyone to deny you these rights or to ask you to surrender the rights.
47
+ These restrictions translate to certain responsibilities for you if you
48
+ distribute copies of the software, or if you modify it.
49
+
50
+ For example, if you distribute copies of such a program, whether
51
+ gratis or for a fee, you must give the recipients all the rights that
52
+ you have. You must make sure that they, too, receive or can get the
53
+ source code. And you must show them these terms so they know their
54
+ rights.
55
+
56
+ We protect your rights with two steps: (1) copyright the software, and
57
+ (2) offer you this license which gives you legal permission to copy,
58
+ distribute and/or modify the software.
59
+
60
+ Also, for each author's protection and ours, we want to make certain
61
+ that everyone understands that there is no warranty for this free
62
+ software. If the software is modified by someone else and passed on, we
63
+ want its recipients to know that what they have is not the original, so
64
+ that any problems introduced by others will not reflect on the original
65
+ authors' reputations.
66
+
67
+ Finally, any free program is threatened constantly by software
68
+ patents. We wish to avoid the danger that redistributors of a free
69
+ program will individually obtain patent licenses, in effect making the
70
+ program proprietary. To prevent this, we have made it clear that any
71
+ patent must be licensed for everyone's free use or not licensed at all.
72
+
73
+ The precise terms and conditions for copying, distribution and
74
+ modification follow.
75
+
76
+ GNU GENERAL PUBLIC LICENSE
77
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
78
+
79
+ 0. This License applies to any program or other work which contains
80
+ a notice placed by the copyright holder saying it may be distributed
81
+ under the terms of this General Public License. The "Program", below,
82
+ refers to any such program or work, and a "work based on the Program"
83
+ means either the Program or any derivative work under copyright law:
84
+ that is to say, a work containing the Program or a portion of it,
85
+ either verbatim or with modifications and/or translated into another
86
+ language. (Hereinafter, translation is included without limitation in
87
+ the term "modification".) Each licensee is addressed as "you".
88
+
89
+ Activities other than copying, distribution and modification are not
90
+ covered by this License; they are outside its scope. The act of
91
+ running the Program is not restricted, and the output from the Program
92
+ is covered only if its contents constitute a work based on the
93
+ Program (independent of having been made by running the Program).
94
+ Whether that is true depends on what the Program does.
95
+
96
+ 1. You may copy and distribute verbatim copies of the Program's
97
+ source code as you receive it, in any medium, provided that you
98
+ conspicuously and appropriately publish on each copy an appropriate
99
+ copyright notice and disclaimer of warranty; keep intact all the
100
+ notices that refer to this License and to the absence of any warranty;
101
+ and give any other recipients of the Program a copy of this License
102
+ along with the Program.
103
+
104
+ You may charge a fee for the physical act of transferring a copy, and
105
+ you may at your option offer warranty protection in exchange for a fee.
106
+
107
+ 2. You may modify your copy or copies of the Program or any portion
108
+ of it, thus forming a work based on the Program, and copy and
109
+ distribute such modifications or work under the terms of Section 1
110
+ above, provided that you also meet all of these conditions:
111
+
112
+ a) You must cause the modified files to carry prominent notices
113
+ stating that you changed the files and the date of any change.
114
+
115
+ b) You must cause any work that you distribute or publish, that in
116
+ whole or in part contains or is derived from the Program or any
117
+ part thereof, to be licensed as a whole at no charge to all third
118
+ parties under the terms of this License.
119
+
120
+ c) If the modified program normally reads commands interactively
121
+ when run, you must cause it, when started running for such
122
+ interactive use in the most ordinary way, to print or display an
123
+ announcement including an appropriate copyright notice and a
124
+ notice that there is no warranty (or else, saying that you provide
125
+ a warranty) and that users may redistribute the program under
126
+ these conditions, and telling the user how to view a copy of this
127
+ License. (Exception: if the Program itself is interactive but
128
+ does not normally print such an announcement, your work based on
129
+ the Program is not required to print an announcement.)
130
+
131
+ These requirements apply to the modified work as a whole. If
132
+ identifiable sections of that work are not derived from the Program,
133
+ and can be reasonably considered independent and separate works in
134
+ themselves, then this License, and its terms, do not apply to those
135
+ sections when you distribute them as separate works. But when you
136
+ distribute the same sections as part of a whole which is a work based
137
+ on the Program, the distribution of the whole must be on the terms of
138
+ this License, whose permissions for other licensees extend to the
139
+ entire whole, and thus to each and every part regardless of who wrote it.
140
+
141
+ Thus, it is not the intent of this section to claim rights or contest
142
+ your rights to work written entirely by you; rather, the intent is to
143
+ exercise the right to control the distribution of derivative or
144
+ collective works based on the Program.
145
+
146
+ In addition, mere aggregation of another work not based on the Program
147
+ with the Program (or with a work based on the Program) on a volume of
148
+ a storage or distribution medium does not bring the other work under
149
+ the scope of this License.
150
+
151
+ 3. You may copy and distribute the Program (or a work based on it,
152
+ under Section 2) in object code or executable form under the terms of
153
+ Sections 1 and 2 above provided that you also do one of the following:
154
+
155
+ a) Accompany it with the complete corresponding machine-readable
156
+ source code, which must be distributed under the terms of Sections
157
+ 1 and 2 above on a medium customarily used for software interchange; or,
158
+
159
+ b) Accompany it with a written offer, valid for at least three
160
+ years, to give any third party, for a charge no more than your
161
+ cost of physically performing source distribution, a complete
162
+ machine-readable copy of the corresponding source code, to be
163
+ distributed under the terms of Sections 1 and 2 above on a medium
164
+ customarily used for software interchange; or,
165
+
166
+ c) Accompany it with the information you received as to the offer
167
+ to distribute corresponding source code. (This alternative is
168
+ allowed only for noncommercial distribution and only if you
169
+ received the program in object code or executable form with such
170
+ an offer, in accord with Subsection b above.)
171
+
172
+ The source code for a work means the preferred form of the work for
173
+ making modifications to it. For an executable work, complete source
174
+ code means all the source code for all modules it contains, plus any
175
+ associated interface definition files, plus the scripts used to
176
+ control compilation and installation of the executable. However, as a
177
+ special exception, the source code distributed need not include
178
+ anything that is normally distributed (in either source or binary
179
+ form) with the major components (compiler, kernel, and so on) of the
180
+ operating system on which the executable runs, unless that component
181
+ itself accompanies the executable.
182
+
183
+ If distribution of executable or object code is made by offering
184
+ access to copy from a designated place, then offering equivalent
185
+ access to copy the source code from the same place counts as
186
+ distribution of the source code, even though third parties are not
187
+ compelled to copy the source along with the object code.
188
+
189
+ 4. You may not copy, modify, sublicense, or distribute the Program
190
+ except as expressly provided under this License. Any attempt
191
+ otherwise to copy, modify, sublicense or distribute the Program is
192
+ void, and will automatically terminate your rights under this License.
193
+ However, parties who have received copies, or rights, from you under
194
+ this License will not have their licenses terminated so long as such
195
+ parties remain in full compliance.
196
+
197
+ 5. You are not required to accept this License, since you have not
198
+ signed it. However, nothing else grants you permission to modify or
199
+ distribute the Program or its derivative works. These actions are
200
+ prohibited by law if you do not accept this License. Therefore, by
201
+ modifying or distributing the Program (or any work based on the
202
+ Program), you indicate your acceptance of this License to do so, and
203
+ all its terms and conditions for copying, distributing or modifying
204
+ the Program or works based on it.
205
+
206
+ 6. Each time you redistribute the Program (or any work based on the
207
+ Program), the recipient automatically receives a license from the
208
+ original licensor to copy, distribute or modify the Program subject to
209
+ these terms and conditions. You may not impose any further
210
+ restrictions on the recipients' exercise of the rights granted herein.
211
+ You are not responsible for enforcing compliance by third parties to
212
+ this License.
213
+
214
+ 7. If, as a consequence of a court judgment or allegation of patent
215
+ infringement or for any other reason (not limited to patent issues),
216
+ conditions are imposed on you (whether by court order, agreement or
217
+ otherwise) that contradict the conditions of this License, they do not
218
+ excuse you from the conditions of this License. If you cannot
219
+ distribute so as to satisfy simultaneously your obligations under this
220
+ License and any other pertinent obligations, then as a consequence you
221
+ may not distribute the Program at all. For example, if a patent
222
+ license would not permit royalty-free redistribution of the Program by
223
+ all those who receive copies directly or indirectly through you, then
224
+ the only way you could satisfy both it and this License would be to
225
+ refrain entirely from distribution of the Program.
226
+
227
+ If any portion of this section is held invalid or unenforceable under
228
+ any particular circumstance, the balance of the section is intended to
229
+ apply and the section as a whole is intended to apply in other
230
+ circumstances.
231
+
232
+ It is not the purpose of this section to induce you to infringe any
233
+ patents or other property right claims or to contest validity of any
234
+ such claims; this section has the sole purpose of protecting the
235
+ integrity of the free software distribution system, which is
236
+ implemented by public license practices. Many people have made
237
+ generous contributions to the wide range of software distributed
238
+ through that system in reliance on consistent application of that
239
+ system; it is up to the author/donor to decide if he or she is willing
240
+ to distribute software through any other system and a licensee cannot
241
+ impose that choice.
242
+
243
+ This section is intended to make thoroughly clear what is believed to
244
+ be a consequence of the rest of this License.
245
+
246
+ 8. If the distribution and/or use of the Program is restricted in
247
+ certain countries either by patents or by copyrighted interfaces, the
248
+ original copyright holder who places the Program under this License
249
+ may add an explicit geographical distribution limitation excluding
250
+ those countries, so that distribution is permitted only in or among
251
+ countries not thus excluded. In such case, this License incorporates
252
+ the limitation as if written in the body of this License.
253
+
254
+ 9. The Free Software Foundation may publish revised and/or new versions
255
+ of the General Public License from time to time. Such new versions will
256
+ be similar in spirit to the present version, but may differ in detail to
257
+ address new problems or concerns.
258
+
259
+ Each version is given a distinguishing version number. If the Program
260
+ specifies a version number of this License which applies to it and "any
261
+ later version", you have the option of following the terms and conditions
262
+ either of that version or of any later version published by the Free
263
+ Software Foundation. If the Program does not specify a version number of
264
+ this License, you may choose any version ever published by the Free Software
265
+ Foundation.
266
+
267
+ 10. If you wish to incorporate parts of the Program into other free
268
+ programs whose distribution conditions are different, write to the author
269
+ to ask for permission. For software which is copyrighted by the Free
270
+ Software Foundation, write to the Free Software Foundation; we sometimes
271
+ make exceptions for this. Our decision will be guided by the two goals
272
+ of preserving the free status of all derivatives of our free software and
273
+ of promoting the sharing and reuse of software generally.
274
+
275
+ NO WARRANTY
276
+
277
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
278
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
279
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
280
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
281
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
282
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
283
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
284
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
285
+ REPAIR OR CORRECTION.
286
+
287
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
288
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
289
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
290
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
291
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
292
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
293
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
294
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
295
+ POSSIBILITY OF SUCH DAMAGES.
296
+
297
+ END OF TERMS AND CONDITIONS
298
+
299
+ How to Apply These Terms to Your New Programs
300
+
301
+ If you develop a new program, and you want it to be of the greatest
302
+ possible use to the public, the best way to achieve this is to make it
303
+ free software which everyone can redistribute and change under these terms.
304
+
305
+ To do so, attach the following notices to the program. It is safest
306
+ to attach them to the start of each source file to most effectively
307
+ convey the exclusion of warranty; and each file should have at least
308
+ the "copyright" line and a pointer to where the full notice is found.
309
+
310
+ {description}
311
+ Copyright (C) {year} {fullname}
312
+
313
+ This program is free software; you can redistribute it and/or modify
314
+ it under the terms of the GNU General Public License as published by
315
+ the Free Software Foundation; either version 2 of the License, or
316
+ (at your option) any later version.
317
+
318
+ This program is distributed in the hope that it will be useful,
319
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
320
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
321
+ GNU General Public License for more details.
322
+
323
+ You should have received a copy of the GNU General Public License along
324
+ with this program; if not, write to the Free Software Foundation, Inc.,
325
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
326
+
327
+ Also add information on how to contact you by electronic and paper mail.
328
+
329
+ If the program is interactive, make it output a short notice like this
330
+ when it starts in an interactive mode:
331
+
332
+ Gnomovision version 69, Copyright (C) year name of author
333
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
334
+ This is free software, and you are welcome to redistribute it
335
+ under certain conditions; type `show c' for details.
336
+
337
+ The hypothetical commands `show w' and `show c' should show the appropriate
338
+ parts of the General Public License. Of course, the commands you use may
339
+ be called something other than `show w' and `show c'; they could even be
340
+ mouse-clicks or menu items--whatever suits your program.
341
+
342
+ You should also get your employer (if you work as a programmer) or your
343
+ school, if any, to sign a "copyright disclaimer" for the program, if
344
+ necessary. Here is a sample; alter the names:
345
+
346
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
347
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
348
+
349
+ {signature of Ty Coon}, 1 April 1989
350
+ Ty Coon, President of Vice
351
+
352
+ This General Public License does not permit incorporating your program into
353
+ proprietary programs. If your program is a subroutine library, you may
354
+ consider it more useful to permit linking proprietary applications with the
355
+ library. If this is what you want to do, use the GNU Lesser General
356
+ Public License instead of this License.
357
+
README.md CHANGED
@@ -1,1866 +1,1885 @@
1
- === AMP for WP - Accelerated Mobile Pages ===
2
- Contributors: mohammed_kaludi, ahmedkaludi, ampforwp
3
- Tags: AMP, accelerated mobile pages, mobile, amp project, google amp, amp wp, google, plugin, SEO
4
- Donate link: https://www.paypal.me/Kaludi/25
5
- Requires at least: 3.0
6
- Tested up to: 4.9.5
7
- Stable tag: 0.9.97.8
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- AMP for WP is the most recommended AMP plugin by the community. Automatically add Accelerated Mobile Pages (Google AMP Project) functionality on your WordPress site.
12
-
13
- == Description ==
14
- AMP for WP automatically adds Accelerated Mobile Pages (Google AMP Project) functionality to your WordPress site. AMP makes your website faster for Mobile visitors.
15
-
16
- [What's New in this Version?](https://ampforwp.com/new/) | [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) | [View Demo](https://ampforwp.com/demo/) | [Screenshots](https://wordpress.org/plugins/accelerated-mobile-pages/screenshots/) | [Community](https://ampforwp.com/community/)
17
-
18
- [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
19
-
20
- [youtube https://www.youtube.com/watch?v=QTbkn2rHyqM]
21
-
22
- <strong>Extensions</strong><br>
23
- Some useful extensions to extend AMP features, check [AMP Adsense Support](https://ampforwp.com/advanced-amp-ads/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Contact Form 7 Support](https://ampforwp.com/contact-form-7/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Email Opt-in Support](https://ampforwp.com/opt-in-forms/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) and [Call To Action Support](https://ampforwp.com/call-to-action/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin). To view more, go to our [Extensions page](https://ampforwp.com/extensions/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin).
24
-
25
- <strong>Premium Support</strong><br>
26
- We try our best to provide support on WordPress.org forums. However, One-on-one email support is available to people who bought the [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) only.
27
-
28
- <strong>Bug Reports</strong><br>
29
- Bug reports for AMP for WP are [welcomed on GitHub](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages). Please note GitHub is _not_ a support forum, and issues that aren't properly qualified as bugs will be closed.
30
-
31
-
32
- = Features: =
33
-
34
- * NEW - GDPR Compliance
35
- * NEW - Introducing Page Builder 3.0 for AMP! [Learn More & Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
36
- * NEW Default Theme for AMP called Swift
37
- * NEW - 3 Pre-built AMP Layouts for Business websites and landing pages
38
- * NEW - Alexa Metrics Compatibility added
39
- * NEW - OneSignal Push Notifications integration
40
- * NEW - Advanced WooCommerce Support [More Info](https://ampforwp.com/woocommerce/)
41
- * Gravity Forms Support [More Info](https://ampforwp.com/gravity-forms/)
42
- * AMP Plugins Manager - Which allows you to disable a specific plugin functionality only in the AMP version
43
- * Structured Data Options
44
- * Page Break / NextPage (Pagination) Support
45
- * Contact Form 7 Support [More Info](https://ampforwp.com/contact-form-7/)
46
- * Facebook Comments Support
47
- * Github Gist Support
48
- * Email Opt-in Subscription form support in AMP added
49
- * Call to Action boxes and notification bars
50
- * 9 Advertisement sizes - 2 More AD slots added recently
51
- * Comments Forms in AMP.
52
- * Native AMP Search functionality.
53
- * Design 3 [Watch the Video Overview](https://www.youtube.com/watch?v=ub1pwskt3Rc)
54
- * Disqus Comments Support
55
- * Google Tag Manager Support
56
- * Page, Category & Tags Support Added
57
- * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
58
- * Mobile Redirection - More than 50% of your traffic is from mobile and you aren’t doing anything to improve their user experience, which means you are falling behind on SEO and it can result in lower SERPS. Lightning fast mobile version means faster User experience means more engagement which directly results in the lower bounce rate.
59
- * Custom Post Type Support
60
- * Star Ratings
61
- * Drag & Drop Page builder Added
62
- * 4 Designs for AMP
63
- * Yoast SEO support on AMP pages and other SEO plugins
64
- * AMP WooCommerce Support
65
- * Switch on/off Support for Pages & Posts on AMP
66
- * Translation Panel & RTL
67
- * Internal AMP linking - You can browse AMP pages internally
68
- * Related posts below the post
69
- * Recent Comments list
70
- * Automatically integrate AMP to your website.
71
- * Google Adsense (AMP-AD) Support with 4 different Ad slots across the layout! The First Plugin to have this capability.
72
- * Google Analytics Support.
73
- * User Friendly Theme Options Panel.
74
- * Unlimited Color Scheme.
75
- * Image Logo Upload.
76
- * Supports Posts and Pages.
77
- * Proper rel canonical tags which means that Google know the original page.
78
- * Overlay Navigation Menu bar.
79
- * Social Sharing in the Single.
80
- * Sexy Design.
81
- * Separate WordPress Menu for AMP version.
82
- * Page builder & Shortcodes Compatibility.
83
- * Carousel support for Gallery.
84
- * Better Image stretching and resizing.
85
- * Youtube Video Embed Support.
86
- * Vine Embed Support.
87
- * Twitter oembed Support.
88
- * Instagram Embed Support.
89
- * Facebook Video Embed Support.
90
- * RTL Support
91
- * Custom AMP FrontPage
92
- * Notifications
93
- * Chartbeat, Hi-stats, Yandex Metrika, Piwik, Segment.com, StatCounter, Effective Measure and comScore Support
94
- * Incontent & DoubleClick Support
95
- * Great Support & Active Development.
96
- * Widgets & WooCommerce
97
- * Genesis SEO Support
98
- * Breadcrumb Support added
99
- * Facebook Instant Articles Support Added
100
- * AMP Installation Wizard that makes it easy to setup for new users.
101
- * Category base remover support
102
- * Tag base remover support
103
- * 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber)
104
- * AMP Theme Framework Core Support Added. You can now create AMP templates of your own in just minutes. **[More](https://ampforwp.com/amp-theme-framework/)**
105
- * NEW - Make AMP & Non-AMP Same with just one click!
106
- * NEW - Allows you to use AMP as primary website!
107
-
108
- **[JOIN CHAT GROUP COMMUNITY](https://ampforwp.com/community/)**: Purpose of this group is to get proper suggestions and feedback from plugin users and the community so that we can make the plugin even better.
109
-
110
- = Getting Started: =
111
- **[1. User Documentation:](https://ampforwp.com/help/)** The AMP for WordPress plugin is easy to setup but we have some tutorials and guides prepared for you which will help you dive deep with the plugin.
112
-
113
- **[2. Developer Docs:](https://ampforwp.com/help/#extend)** We have created special documentations for developers and semi technical users who are willing to modify the plugin according to their own needs.
114
-
115
- **[3. Fixing AMP Validation Errors:](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin)** We will personally take care that your website’s AMP version is perfectly validated. We will make sure that your AMP version gets approved and indexed by Google Webmaster Tools properly and we will even keep an eye on AMP updates from Google and implement them into your website.
116
-
117
- **[4. Community Support Forum:](https://ampforwp.com/help/#support-forum)** We have a special community support forum where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means alot to us and so we try our best to reply each and every question that gets asked.
118
-
119
- **[5. Frequently Asked Questions:](https://ampforwp.com/faq/)** Some of the Frequently Asked questions.
120
-
121
-
122
- == Installation ==
123
- **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
124
-
125
- [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
126
-
127
- **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
128
-
129
-
130
- == Frequently Asked Questions ==
131
-
132
- = Can I add analytics? =
133
-
134
- Yes, you easily can. In fact, we have support for 12 Analytics companies. Including Google Analytics, Facebook Pixel, StatCounter, QuantCast, Chartbeat, comScore to list a few. Also, we have Google Tag Manager (GTM) support as well.
135
-
136
- = Can I add Ads in my AMP pages? =
137
-
138
- Yes, you can. We have 6 ad placement slots that are built in and strategically placed to get maximum views. Also, we have [an extension](https://ampforwp.com/advanced-amp-ads/) from which you can insert ads between the content, will get more ad slots and also add custom banners to all the available slots.
139
-
140
-
141
- = Can I extend/Change the AMP design, so it suits my needs? =
142
-
143
- Yes, you easily can. We have created this plugin in such a way that it can easily be extended. Check out our [AMP Theme Framework](https://ampforwp.com/tutorials/article/getting-started-amp-framework/)
144
-
145
-
146
- = Do you have any prebuilt designs? =
147
-
148
- Yes, we have AMP themes section where we have free and paid designs available. We also update it regularly. You can check it out our [AMP Themes](https://ampforwp.com/themes)
149
-
150
-
151
- = I'm a developer and I want to add custom functionality for a client, can I do that? =
152
-
153
- Yes, of course. This plugin is very developer friendly, we have lots of hooks and filters that you can use to extend and customize according to the requirements. Also, we have [developer documentation](https://ampforwp.com/tutorials/article-categories/developer-documentation/) which we update regularly.
154
-
155
-
156
- = How do I report bugs and suggest new features? =
157
-
158
- You can report the bugs [here](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues)
159
-
160
- = Will you Add New features to my request? =
161
-
162
- Yes, Absolutely! We would suggest you send your feature request by creating an issue in [Github](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues/new/) . It helps us organize the feedback easily.
163
-
164
-
165
- = How do I get in touch? =
166
-
167
- You can contact us from [here](https://ampforwp.com/contact/)
168
-
169
-
170
- == Screenshots ==
171
- 1. AMP Homepage
172
- 2. AMP Single Post
173
- 3. Post Navigation in Single
174
- 4. Sticky Social sharing icons
175
- 5. Overlay Navigation menu sidebar.
176
- 6. Page builder of the Single article. You can drag and drop any element.
177
- 7. Single post of Design One
178
- 8. GTMetrix Performance Report
179
- 9. Google PageSpeed Insight report for AMP
180
- 10. Homepage of Design One
181
- 11. Pingdom Speed Report for AMP
182
-
183
-
184
- == Changelog ==
185
-
186
- = 0.9.97.8 (24th July 2018) =
187
- * Fixed: AMP renders with ?q after the /amp #2361
188
- * Fixed: iThemes Sync can not connect to the site. #2380
189
- * Fixed: H1 to H6 styling is not reflecting in the Swift theme #2383
190
- * Fixed: Underline on Links function is not working. #2372
191
- * Fixed: WordPress Admin Color Scheme not applying #2390
192
- * Fixed: Breadcrumbs are not disabling when the sidebar template is selected #2376
193
- * Fixed: All the Images are Adding AMP at the End of their URL. #2391
194
-
195
- = 0.9.97.7 (18th July 2018) =
196
- * Fixed: PageBuilder not loading on frontpage #2360
197
- * Fixed: 500 error on somepages due to open wp_query by other plugins
198
- * Fixed: License key reupdating #2261
199
- * Fixed: AMP renders with ?q after the /amp #2361
200
-
201
- = 0.9.97.6 (14th July 2018) =
202
- * Fixed: Error and Warning on Structured Data for Logo. #2360
203
- * Fixed: Category Bulk tool breaking meta boxes #2335
204
-
205
- = 0.9.97.5 (11th July 2018) =
206
- * Fixed: Title disappearing in Design 1,2,3 when legacy pagebuilder is enabled #2341
207
- * Fixed: ld+json getting a broken when special characters are added in the image. #2346
208
- * Fixed: Hide by Category Breaking post metabox #2330
209
- * Fixed: Hiding excerpt when global $redux_builder_amp is empty #2330
210
- * Fixed: When Google Tag Manager is enabled, only Google Analytics should get disabled but not other analytics. #2340
211
-
212
- = 0.9.97.4 (09th July 2018) =
213
- * Fixed: Huge Performance upgrade in the way fetching the logo url #2317
214
- * Fixed: Fatal Error due to unable to modify values in Structured Data Object #2327
215
- * Fixed: Seperate option for Featured Image in pages in Swift theme #2328
216
- * Fixed: `<p>` tags disabling where not wanted #2330
217
- * Fixed: Fatal error in contact form module while ninja form or gravity form plugins are not activated #2310
218
- * Fixed: Woo Commerce Category page not working properly #2333
219
- * Fixed: Few issues related to amp-facebook-comments #2300
220
- * Fixed: Limit number of Tags and Category to 500 in Hide AMP-Bulk tools #2336
221
-
222
- = 0.9.97 (27th June 2018) =
223
- * For more details check out [the blog post](https://ampforwp.com/0-9-97-released-strengthening-of-foundation-89th-update/)
224
- * Fixed: Extraposition attribute left in CSS Design #2 #2119
225
- * Fixed: Non-AMP header link not working #2109
226
- * Added: Create an Ad Above the Post Content #2155
227
- * Fixed: "AGO" text was not translatable #2158
228
- * Added: Filter created `ampforwp_header_url` to modify logo url #2141
229
- * Fixed: Removing the text "amp" in footer view non-amp-link #2158
230
- * Added: Compatibility WP user Avatar plugin added #2011
231
- * Fixed: Design 2 - meta info producing a block of empty HTML #1969 #1954
232
- * Added: Pocket and Hatena Bookmark social share buttons Added #1652
233
- * Fixed: External Links are appended with "amp" at the end of the url in content. #2174
234
- * Fixed: Some Issues Found in Design #3 #2130
235
- * Fixed: ScoopVersion: 1.4 By boostdevelopers theme displaying the error only in the category #1683
236
- * Fixed: Page featured Image is not displaying in the Swift theme #2136
237
- * Fixed: Dropcap breaking the youtube embed code #2157
238
- * Fixed: Bulk hide by default option is requires Permalinks to be saved #2145
239
- * Fixed: Fully compatibility with muffin page builder #2180
240
- * Fixed: Incontent Related Post Issues #2078
241
- * Fixed: Search page should not have AMP version of the page and not in search result #2191
242
- * Added: Control added to modify Retina Images resolutions #2099
243
- * Added: Created an option to duplicate a page builder element #1986
244
- * Added: Image Caption is not displaying below the Image in design 1,2,3 #2101
245
- * Fixed: Post pagination not working properly in D1, D2 and D3 #2168 #2243
246
- * Fixed: Auto re-save permalink if the options in reading setting page get changed #2190
247
- * Fixed: Leave a comment not looking good in Swift theme #2150
248
- * Added: Social icons for pages. #2162
249
- * Added: Create an option to pull canonical from Yoast #2118
250
- * Added: Full Support for All in one SEO #1720
251
- * Fixed: Single with sidebar CSS should only load if that layout type is selected #2091
252
- * Fixed: Required Filed is not working in the Repeater in Page builder #2217
253
- * Fixed: alt in `<div>` causing validation errors. #2093
254
- * Added: Drop Down Menu Support in Swift Header Menu #2095
255
- * Added: Parallax Setting Added in PageBuilder #2095
256
- * Added: Multiple Layout Settings added in Feature Module in Page Builder #2095
257
- * Added: Add the option changing the sliding speed of slider in "Slider module" of AMP Page Builder #2218
258
- * Added: Created an option Related Post link in non amp #2201
259
- * Fixed: Removed Jannah LazyLoad on AMP Mode #2224
260
- * Fixed: Custom post types with custom taxonomy not working in AMP #2209
261
- * Fixed: frontpage and homepage not working properly AMP take over #2153 #2277
262
- * Added: Button field created in Feature module #2068
263
- * Added: Excerpt should also work on homepage and categories page #2176
264
- * Fixed: Options panel breaks in when RTL in WP Dashboard #2176
265
- * Fixed: Featured image from Custom fields in page builder Category module #2237
266
- * Added: Forms Module Support added in PageBuilder #2221
267
- * Fixed: Paginated AMP URL on the category are opening to 404-page #2233
268
- * Fixed: Ads not displaying properly in RTL #2227 #2138
269
- * Fixed: single quotation (') in text module breaking AMP page builder #1940
270
- * Added: Filter created to modify `ampforwp_loop_image_update` image arguments in components of AMP theme framework #2057
271
- * Added: Option to change the locale of Facebook comments #2127
272
- * Added: Search option in options panel #2088
273
- * Fixed: Accordion not working when the user enters some data in Description with HTML Tags #2088 #2097
274
- * Fixed: Internal links now working with ?amp=1 #2204
275
- * Fixed: UTM Parameters not working properly with AMP #2223
276
- * Fixed: Multiple Slider module of AMP Page builder not working #2090
277
- * Fixed: Hide AMP by categories option should hide by default in the backend of that specific post #2112
278
- * Added: IP Anonymization in Google analytics #2135
279
- * Fixed: Improvement in the styling of AMP option panel #2102
280
- * Added: Added new fonts control for Content in Single page #2122
281
- * Fixed: Legacy page builder button styling is not loading properly #2036
282
- * Added: Filter added so we can disable Comments on specific pages `ampforwp_comments_visibility` #2170
283
- * Fixed: Improvement in Excerpt on small screen option #2034
284
- * Added: Comments on Pages #2229
285
- * Fixed: Pagination not working for some websites #2241
286
- * Fixed: "Menu" option in Footer connected with Swift #2146
287
- * Added: Wistia Support #1875
288
- * Added: Add option in page builder to give the specific name to all modules #2251
289
- * Added: Compatibility with Muffin Builder #2137
290
- * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
291
- * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
292
- * Added: Render all the AMP Components added in Post Editor #2216 #2228
293
- * Fixed: "Gap" Module of ThemeCo breaking the AMP pages #2220
294
- * Added: Search widget compatibility #2143
295
- * Added: Advertisement Module created in AMP Pagebuilder #2131
296
- * Fixed: Performance issue with the function `ampforwp_get_comments_gravatar` #2234
297
- * Fixed: Empty the amp pages, when the Clearfy HTML compress is enabled #2110
298
- * Fixed: The attribute 'value' appearing in tag 'a' throwing the validation error #2262
299
- * Fixed: Versioning of Styles and Scripts of redux-core #2126
300
- * Added: Related Posts based on X days #2132
301
- * Fixed: Warning in custom-sanitizer.php #2173
302
- * Added: vuukle comment support #2075
303
- * Fixed: Facebook Comment should not appear on the Checkout page, Add to cart page, or shop page #2170
304
- * Added: SpotIM comment support #2075
305
- * Added: Additional Controls added in Design3 Featured slider #2222
306
- * Fixed: Username in AMP Option panel color was too light #2266
307
- * Added: Settings created to modify H1 to H6 #2059
308
- * Fixed: AMP_QUERY_VAR debug issue #2265
309
- * Added: Custom page template in AMP #1923
310
- * Fixed: Comments Button is not displaying in Design #3 #2163
311
- * Added: Ability to add Forms Shortcodes in footer Widgets #2226
312
- * Added: Option to add rel="nofollow" in AMP page builder button module #2239
313
- * Added: Background video option in amp page builder #2195
314
- * Fixed: Drop Down Menu Support in Swift Header Menu #2095
315
- * Fixed: Yoast Description not getting added in AMP #2159
316
- * Fixed: Improvement in styling of AMP option panel #2102
317
- * Fixed: Hide AMP Bulk Tools Improvements #1867
318
- * Added: Compatibility with the Relevanssi Plugin #1503
319
-
320
- = 0.9.96 (2nd June 2018) =
321
- * Added: Fully GDPR Compliance
322
- * Fixed: GTM not working
323
-
324
- = 0.9.86.1 (8th May 2018) =
325
- * A bug causing validation issues has been resolved.
326
-
327
- = 0.9.86 (3rd May 2018) =
328
- * For more detials check out [this blog post](https://ampforwp.com/0-9-86-released-getting-ready-for-future-87th-update/)
329
- * Added: GDPR Compliancy #2040
330
- * Added: Muffin Page Builder Compatibility #1455 #1893
331
- * Added: Thrive leads compatibility #2067
332
- * Fixed: Load structured markup json in Footer to improve performance #1945
333
- * Added: Font Size and Font Family Controls added in Content Presentation Module #1962
334
- * Added: Font Weight Control added in Text Module in PageBuilder #1962
335
- * Added: Other necessary controls added in Content Presentation Module #1962
336
- * Added: New Design called "Design 4" added in Content Presentation Module. #1962
337
- * Fixed: License Activation process connected with AMP extensions #1981
338
- * Added: Icon Selector control added in Button module in AMP Page Builder #1962
339
- * Added: Filter called `ampforwp_get_comments_gravatar` to modify Author Avatar Images #1949
340
- * Fixed: Validation error fixed by removing json+ld values to remove CDATA #1977
341
- * Added: Icon Adjustment Option is added in the Button Module #1962
342
- * Fixed: Debug Warnings fixed #1976
343
- * Fixed: If AMP support on post and page is disabled then mobile redirection was not working #1979
344
- * Fixed: Responsive element added in Image Module #1962
345
- * Fixed: Custom Post and Custom Taxonomies Archives not working in AMP #1957
346
- * Fixed: AMP take over is on and AMP support on the home page is disabled it was redirecting to some other pages #1994
347
- * Fixed: Design 1 and Design 2 shouldn't show 'social' tab #1996
348
- * Added: AMP WordPress Theme notice
349
- * Added: Rewrite Rules Added for WooCommerece #1957
350
- * Fixed: AMP Takeover blog search results giving blank page #1990
351
- * Fixed: Swift pagination markup is present even the page has no pagination #2000
352
- * Fixed: Pagination breaking on second page on Archives when Blog page is not set #1998
353
- * Fixed: Added proper Google API jump link #1966
354
- * Fixed: Advance Index and no-index controls did not had description #1978
355
- * Added: Filter added `amp_blacklisted_tags` in blacklist-sanitizer file
356
- * Added: Hyperlink for image module added #1989
357
- * Added: `ampforwp_get_frontpage_id` a common fucntion created to get post id for AMP frontpage #2025
358
- * Fixed: Comments controls were not working properly #1987
359
- * Fixed: Fatal Error after updating the plugin from 0.9.73 to 0.9.83 version #2017
360
- * Fixed: Filter created `ampforwp_modify_rel_url` to modify rel canonical URL #2012
361
- * Fixed: Remove structured data json if removed from AMP options panel
362
- * Fixed: amp widget appearing twice in design one #2008
363
- * Fixed: Gif in content + Lightbox feature throws validation issue. #2032
364
- * Added: New Features in the Page builder Modules #2029
365
- * Fixed: License Key was not working properly #2026
366
- * Fixed: Instagram comment view is getting cut off in Swift Theme #2002
367
- * Added: Icon module support added in Desgin 1, 2 & 3 #1997
368
- * Fixed: if GD or ImageMagick library is not present in the server then send the original image #2037 #2038
369
- * Fixed: Swift theme homepage (Non-AMP) image resizing issues in Mobile version #1992
370
- * Fixed: Header Element not working in Swift theme #1967
371
- * Fixed: Stop Loading of Latest post scripts on Homepage and Frontpage #2041
372
- * Added: Filter created `ampforwp_non_amp_links()` so users can have all the internal links non-amp #1973
373
- * Fixed: Sanitize the archive description in loop component #1974
374
- * Fixed: Double AMPHTML when FBIA Plugin is active #2043
375
- * Fixed: Image Div is loading even if the image is not present in Swift #2033
376
- * Fixed: Custom AMP editor is visible on pages (post type) even if the Page Support is off from amp options panel #2047
377
- * Fixed: When 'Structure Data for WP' plugin active, Schema type in Structure section should hide #2049
378
- * Fixed: Bugs in Video Module in AMP pagebuilder #2048
379
- * Added: Autoplay feature added in Video Module #2048
380
- * Fixed: Throwing error when Product Structured Data is selected #1975
381
- * Fixed: Advanced CSS is not loading because the files are with hosting path #2046
382
- * Fixed: Double Quotes breaking the html #2004
383
- * Removed: Blog option is removed from AMP Options panel and it is connected with Pages option Under Reading Settings #2027
384
- * Fixed: amphtml should not be created for 404 pages #2018
385
- * Added: 404 Template added, useful for AMP Takeover #2042
386
- * Fixed: Genesis meta titles are lost and not rendering correctly #2050
387
- * Fixed: Search blank on AMP Takeover #1990
388
- * Fixed: Remove Unused js files from Paginated Post Pages #2001
389
- * Fixed: Extra Space adding in H1 and other SEO tags #2054
390
- * Fixed: Undefined Index when called from robot #1960
391
- * Fixed: amp facebook comment Js not loading to the custom front page of the swift theme. #2053
392
- * Fixed: Tags label is not working properly when RTL Support on #1719
393
- * Fixed: View Non-AMP Version In the footer link has an error #2066
394
- * Fixed: Squirrly SEO is Adding the Javascript code in AMP #1696
395
- * Fixed: Translation option issue when using POT file method #1941
396
- * Fixed: amp-facebook-like extension is missing on Custom Frontpage #2061
397
- * Fixed: GTM option repositioned #2056
398
- * Fixed: Menu is appearing on left side instead of Right side when RTL support is ON for Design3 #1928
399
- * Fixed: Sidebar Bugs #1972
400
- * Added: Table Styling in Swift #1961
401
- * Fixed: Genesis index, follow options not being rendered #2071
402
- * Added: Filter created `ampforwp_robots_meta` to modify robots meta information #2071
403
- * Fixed: PHP Notices #2065
404
- * Added: Add a new hook `ampforwp_after_amp_menu` after the menu in all designs #2072
405
- * Added: New Look to Options panel #1823
406
- * Added: Retina Image Support added #1846
407
- * Fixed: Pagebuilder hrefs were stripped in hebrew language #2089
408
- * Fixed: Warning Fixed #2083
409
- * Fixed: Gallery module images not loading in Firefox #1980
410
- * Fixed: Pagebuilder Improvement #2024
411
-
412
- = 0.9.85.5 (21st April 2018) =
413
- * Added: Filter added to modify frontpage post id `ampforwp_modify_frontpage_id`
414
- * Added: Filter added to modify amp template directory `ampforwp_template_locate` #1982
415
- * Other minor bugs fixed
416
-
417
- = 0.9.85.3 (12th April 2018) =
418
- * Added: Custom Post type Archive Page support #1995
419
- * Fixed: AMP TakeOver redirection issues #1994
420
- * Fixed: Debug errors #1976
421
- * Fixed: Social Profile pages were hidden for Design 1 to 3 #1996
422
- * Fixed: Structured Data insertion was adding CData causing validation error #1999
423
-
424
- = 0.9.85.2 =
425
- * Minor Bugs fixed
426
-
427
- = 0.9.85.1 =
428
- * Minor Bugs fixed
429
-
430
- = 0.9.85 (3rd April 2018) =
431
- * For more detials check out [this blog post](https://ampforwp.com/0-9-85-released-stability-update-86th-update/)
432
- * Fixed: Fatal error: Allowed memory size on FrontPage #1865
433
- * Fixed: Proper Parameters for Pinterest Sharing #1853
434
- * Added: Extra settings added in Button Module
435
- * Added: Extra settings added in Text Module
436
- * Fixed: Proper Parameters for Pinterest Sharing
437
- * Fixed: Unwanted fields are removed form the Repeater in Button module
438
- * Added: Enable/disable option added Related Posts #1829
439
- * Fixed: Legacy PageBuilder option Repositioned #1851
440
- * Fixed: Display the img tag only if source is present #1869
441
- * Fixed: Huge design improvements in Swift theme #1818
442
- * Added: Hook for Between Related Post is Added #1874
443
- * Added: Blurb module text size and background color added
444
- * Fixed: Comments Pagination issues #1816
445
- * Added: Counter Module added
446
- * Fixed: Date 48 years ago #1864 #1876
447
- * Added: Ability to pass post id in amp_content() #1872
448
- * Fixed: Changed the way images we fetched in WooWidget #1847
449
- * Fixed: Changed the position of layout in Pagebuilder #1873
450
- * Added: Pricing Module
451
- * Fixed: Changed the position of layout in Pagebuilder #1873
452
- * Fixed: amp_aq_resizer was not able to process the outside url #1881
453
- * Fixed: Advanced Google Analytics improvements #1630 #1860
454
- * Added: Field Added For ON & OFF in Page builder #1870
455
- * Fixed: Two paginations in search pages in Swift theme #1855
456
- * Fixed: Extra Div if categories not available #1856
457
- * Fixed: removed debuged tags #1870
458
- * Fixed: Published date connected with AMP options Panel #1888
459
- * Added: Featured Image option in Swift #1889
460
- * Added: Separate Blog settings #1887
461
- * Fixed: single post ads should not load on pages #1896
462
- * Fixed: Ads should not load on FrontPage if PageBuilder is enabled #1885
463
- * Fixed: Background Image Support for the Columns #1871
464
- * Added: Blockquotes design for Swift #1894
465
- * Added: Co-Authors Plus compatibility #1895
466
- * Added: pagebuilder for custom post types #1884
467
- * Added: Border option is connected to options panel #1818
468
- * Added: Responsive AD unit support #1852
469
- * Added: Sub category arrow symbol is added in Swift theme #1818
470
- * Added: Search text color is connected to options panel #1818
471
- * Fixed: Removed notice when no posttype selected #1884
472
- * Added: Ability to overwrite page template the WordPress way like front-page.php and page-{id}.php #1902
473
- * Added: Ability to overwrite author page template the WordPress way like author.php and author author-name.php #1902
474
- * Added: Lightbox Support for the images #1892
475
- * Fixed: No mobile redirection when Dev mode is enabled #1907
476
- * Added: Option to hide Author name in Swift #1890
477
- * Fixed: Script facebook-comments should not load for Frontpage #1897
478
- * Added: amp-facebook comments for AMP2WP #1911
479
- * Added: Alt tag in all modules #1898
480
- * Added: Sanitizers in Footer and sidebar widget in Swift #1835
481
- * Added: Dropcap support #1900
482
- * Added: Proper styling for iframes and videos in Swift theme #1909
483
- * Fixed: Non-AMP link fixed for AMP Takeover #1916
484
- * Fixed: Swift connected with Breadcrumb option #1915
485
- * Added: Uninstall option created to completely remove AMPforWP data #1903
486
- * Fixed: Recipe Structured Data requires name attribute #1917
487
- * Fixed: No amphtml when It is hidden from Categories #1919
488
- * Fixed: Content is breaking when Inline Related Post option is enabled #1912
489
- * Fixed: Proper redirection setup for AMP Takeover #1913
490
- * Added: Social media profiles added in menu #1901
491
- * Fixed: No Ads should display on Frontpage or Posts if Pagebuilder is enabled #1885
492
- * Added: #1899 Proper conditions for amp-analytics script
493
- * Fixed: Turn off option not working by default fixed #1537
494
- * Fixed: BreadCrumbs Should not load when PageBuilder is enabled #1925
495
- * Fixed: Removed unwanted elements loading while pagebuilder is enabled #1929
496
- * Fixed: amp-web-push should not load on Homepage and Blog #1930
497
- * Added: SmartMag theme Compatibility #1905
498
- * Fixed: Template overriding not working in child theme #1920
499
- * Fixed: Horizontal scrolling in Swift #1844
500
- * Fixed: Home page title should not be visible in AMP takeover #1921
501
- * Added: Carousel Module Added #1937
502
- * Fixed: Comments pagination not working #1816
503
- * Fixed: Comments pagination not working #1816
504
- * Added: Glue html css compatibility #1932
505
- * Added: Data Caption Support on AMP Instagram Embed #1938
506
- * Added: Ability to pass {author_name} and {author_id} added in Advance Analytics #1936
507
- * Fixed: Scrollbar in Header area in Swift in firefox #1818
508
- * Added: Disqus iframe height adjustment option #1935
509
- * Fixed: Options panel conflict fixed with Mobius theme #1942
510
- * Fixed: Problem with Button in Mobile view in Swift #1926
511
- * Fixed: Removed canvas tag in AMP version causing validation errors #1880
512
- * Fixed: Getting Conflict with Facebook Button by BestWebSoft #1740
513
- * Added: Option to enter the "ID" on CTA button module #1931
514
- * Added: Option for open same window in CTA module of page builder #1866
515
- * Fixed: Logo fetch causing Huge performance issue #1679
516
- * Fixed: Blurb module's default values were not set #1952
517
- * Fixed: Allow script with application/ld+json #1958
518
-
519
- = 0.9.84 (14th March 2018) =
520
- * Added: Polylang Frontpage compatibility added #1779
521
- * Fixed: Proper link for Linkedin added #1820
522
- * Fixed: Incorrect function name was Added #1827
523
- * Fixed: Thumbnail resizing issue in Swift #1828
524
- * Fixed: Thumbnail issue in Loops of Design 3 #1714
525
- * Fixed: Hide post builder for Swift #1824
526
- * Fixed: To avoid warnings when there are no pages in WordPress #1810
527
- * Fixed: Condition for the Thumbnail for Swift #1733
528
- * Fixed: Proper Styling for footer for Swift #1733
529
- * Fixed: Line height issue and CSS editor not working in Swift #1821
530
- * Fixed: Renamed aq_resize to ampfrowp_aq_resize to avoid conflicts #1838
531
- * Fixed: Add the prefix to avoid conflicts #1817
532
- * Fixed: Added Custom format option in amp_date #1845
533
- * Fixed: Removed amp-img tag where blank SRC in Page builder #1843
534
- * Fixed: Pagebuilder modal max-height removed so it will become full width #1843
535
- * Added: An option for select target type in Button Module #1822
536
- * Fixed: Remove AMP category widget if swift is enabled #1790
537
- * Fixed: Filter added change mode type #1833
538
- * Added: Rewrite rule for .html blog page #1775
539
- * Fixed: Filter added change mode type #1833
540
- * Fixed: Swift Footer Widget Sanitizer Added #1800
541
- * Fixed: No OneSignal widget when PageBuilder is enabled #1840
542
- * Fixed: span tag added around the pagination text #1834
543
- * Added: Page specific option to add script/html and styles in page builder #1831
544
- * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
545
- * Added: Jarida theme compatibility added #1842
546
- * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
547
- * Fixed: Replace value attribute only from html tags. Otherwise it is removing value from * shortcodes which is breaking the whole page. #1738
548
- * Added: Underline option for content links added #1808
549
- * Added: Page specific option to add RTL in page builder #1858
550
- * Added: Converts AMP ads to normal so ads show when takeover is enabled in Normal Mode #1724
551
- * Added: Converts AMP Analytics to normal so Analytics works when takeover is enabled in Normal Mode #1724
552
- * Fixed: Phone icon proper alignment in Design3 #1730
553
- * Added: ADS for WP activation box in Extensions tab
554
- * Added: New design field added #1861
555
-
556
- = 0.9.83.1 (8th March 2018) =
557
- * Fixed: Pagebuilder contents not shows on custom home page #1794
558
- * Added: Header hook added `ampforwp_advance_header_layout_options`
559
- * Fixed: Load admin files only in admin pages #1799
560
- * Fixed: Conflict with WP bakery pagebuilder #1783
561
- * Fixed: Slide in Menu break in RTL mode #1825
562
- * Fixed: Validation issue in loops due to empty attributes #1795
563
- * Fixed: Featrued Image connected Properly with Swift theme #1733
564
- * Fixed: Changed the disqus.php to disqus.html to pass authentication #1788
565
- * Added: CSS styling for Loop on shop page #1803
566
- * Fixed: Facebook comments not work in swift #1789
567
- * Fixed: Style AMP Category module in Footer swift #1790
568
- * Fixed: Load aq_resizer only in AMP #1805
569
- * Fixed: Proper markup for Pinterest in Design3 and Swift #1793
570
- * Fixed: Proper url for vk
571
-
572
- = 0.9.83 (03rd March 2018) =
573
- * Added: Ability to add amp-carousel and amp-selector directly into WYSIWYG Editor #1588
574
- * Fixed: Debug error caused by Playbuzz Sanitizer #1674
575
- * Added: Show default gravatar for comments #1758
576
- * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
577
- * Fixed: To avoid debug error in swift
578
- * Fixed: Translation improved for some strings #1678
579
- * Fixed: Stop AMP takeover for Feed pages #1767
580
- * Fixed: Menu issues In Design 1 & Design 2 after changing from AMP-Sidebar #1565
581
- * Fixed: AMP Options panel Not Working After Update (0.9.82.1) version #1761
582
- * Fixed: Move the label to the top [UX improvement] #1746
583
- * Fixed: Error with Vue #1745
584
- * Added: Video Module added in AMP Page Builder #1750
585
- * Fixed: Sidebar menu is not scrollable swift theme #1769
586
- * Fixed: View Non-AMP should be usertrailingslashit #1772
587
- * Fixed: Proper structured data for Blogpage #1660
588
- * Fixed: Legacy Page Builder not working after the update #1773
589
- * Fixed: Content blank when only image in content #1778
590
- * Fixed: Comment ID display issue fixed #1758
591
- * Fixed: PHP Warning: A non-numeric value encountered in components/logo/logo.php on line 52 #1764
592
- * Fixed: Yummly support added in Swift #1708
593
- * Fixed: Demo Link updated #1781
594
- * Fixed: CSS is not loading in Swift Theme #1780
595
- * Added: Ability to add Advertisement or Sponsored label under ads #1710
596
- * Fixed: Featured images distortion in related posts #1684
597
- * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
598
- * Fixed: noarchive instead of nofollow in Archive pages #1693
599
- * Fixed: Internal links of tags are showing “/amp” after changing the end point to “?amp” in design 2 #1752
600
- * Fixed: line height is added for the logo in Swift design
601
- * Added: Class for Custom Frontpage #1787
602
- * Fixed: Recent post enable disable for Swift theme #1784
603
- * Fixed: Connect Show/Hide AMP option with AMP takeover#1786
604
- * Fixed: Added sanitizer to footer Widget #1756
605
-
606
- = 0.9.82.1 (18th February 2018) =
607
- * Selector code reverted due to it's effect on carousel
608
-
609
- = 0.9.82 (18th February 2018) =
610
- * View more details on https://ampforwp.com/0-9-82-released-stability-update-82nd-update/
611
- * Logo Resizing calculation by Pixels and resizing bug solved.
612
- * Update Notification in the Admin panel will only appear in the AMP options panel. So it will not annoy you anymore.
613
- * Glue underline is applying for some reason
614
- * Fatal error after 0.9.81 fixed
615
- * Facebook comments loading twice on swift
616
- * PHP Notice: Undefined variable: post_author_name
617
- * Pagebuilder fix in version 0.9.81 Compatibility with Yoast and other plugins #1749
618
- * Home loop modifier option added. Allows you to exclude the categories from the loop or include the Custom Post type in the homepage loop.
619
- * amphtml Conflict with Instant Article for Facebook resolved
620
- * /amp folder in the theme is applying changes in plugin, which causing a bug, but it’s been fixed
621
- * Backward Compatibility for AMP Preview
622
- * SEO Section Improvements
623
- * Wrong comments count on AMP pages
624
- * AMP Allow selector in the The Content. You can add tabs and AMP components directly into the loop.
625
- * If we turn off the Homepage Support then Blog is turned off as well, solved.
626
- * Post Pagination have two options like “Number of pages” and Previous & Next.
627
- * Removed the dot from the one Signal Service worker URL if the subdomain isn’t added (Causes Validation issues.)
628
- * Extra Space due to empty divs in Design 3
629
- * Remove alt from a tag in the AMP version caused many validation issues.
630
-
631
-
632
- = 0.9.81 (15th February 2018) =
633
- * Edge case fatal error on features.php fixed
634
- * Admin dashboard messup CSS fix #1731
635
- * Custom CSS Output added in Swift
636
-
637
- = 0.9.80 (15th February 2018) =
638
- * View More details on the [blog post](https://ampforwp.com/introducing-swift/)
639
- * AMP Page Builder 3.0: The AMP Page Builder is a lightweight and much stable than ever and works flawlessly! [Read More](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
640
- * Swift: The New Default Theme, which you can select from the design section of the Page builder.
641
- * A way to create a Child Theme for AMP [read more](https://ampforwp.com/tutorials/article/child-theme-amp/)
642
- * Make AMP & Non-AMP Same: We have an amazing new option called AMP to WP which will generate the WordPress version of the AMP design which will be viewed on the canonical version of the website.
643
- * AMP Takeover: You can deliver a fully AMP compatible website with this option. It will basically take over the non-amp version and deliver an AMP version to your desktop and mobile users, on WordPress & AMP version. That’s why it was called AMP Takeover
644
- * Logo Resizing made easy
645
- * Typography Options
646
- * 3 Headers design in swift theme
647
- * Error while sharing the image on Pinterest #1699
648
- * Homepage support was not working ( when page support is off ) #1695
649
- * Custom Permalinks rewrite issue solved #1689
650
- * Custom post type was appearing two types #1688
651
- * Theia Post Slider plugin incompatibility with post pagination fixed #1677
652
- * Link to the categories in loop of Design 3 #1632
653
- * amphtml was not working when plain permalink selected along with static page as homepage #1614
654
- * AFS Analytics Integration added #1605
655
- * Removed the blank spaces from analytics id field to deliver a good UX. #1599
656
- * ?amp endpoint feature added #1561
657
- * Ability to remove the excerpt and image from related post #1510
658
- * Thumbnails on-the-fly generation added for better control over the design.
659
-
660
-
661
- = 0.9.74 (23rd January 2018) =
662
- * View More details on the [blog post](https://ampforwp.com/0-9-74-released-stability-update-79th-update/)
663
- * Fixed: Push Notifications button alligned in center #1500
664
- * Added: Meta robots tag support from Yoast #1563
665
- * Added: Option to Disable wptexturize/smart-quotes Support #1458
666
- * Fixed: Changed the label id to avoid conflict with Advanced AMP Ads #1591
667
- * Fixed: esc_attr causing validation issues with single and double quotes #1616
668
- * Fixed: Image stretching problem resolved when "Featured Image from the content" was set #1580 #1582
669
- * Added: Create Template by Custom taxonomy name like product-jeans.php in AMP Theme FrameWork #1594
670
- * Added: Custom Post type support added in the Core #1612
671
- * Fixed: custom-amp-content.php cleaned with PHPCS #1497
672
- * Added: Basic Product(WooCommerce) support added #992 #1276 for full WooCommerce Support please check this [Extension](https://ampforwp.com/woocommerce/#utm_source=readme-log&utm_medium=0.9.74-readme&utm_campaign=AMP%20Plugin)
673
- * Added: Proper fallback support added if the current active AMP theme is not available #1624
674
- * Fixed: Resolved debug errors #1622
675
- * Added: All in One SEO compatibility #1557
676
- * Fixed: Load AMP Styling only on AMP pages #1441
677
- * Added: 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber) #1265
678
- * Fixed: itemprop="url" was adding in non-amp #1626
679
- * Fixed: SiteOrigin Pagebuilder compatibility with Custom Frontpage #1592 #1593
680
- * Added: MediaAce lazy load compatibility of Bibmer Theme #1472
681
- * Fixed: Content Links plugin was causing validation errors #1569
682
- * Added: Filter added called get_content_from_dom to modify the output in AMP function #1462
683
- * Added: amp_breadcrumb component added in AMP Theme Framework #1636
684
- * Fixed: Sidebar Styling and proper sanitizer updated
685
- * Added: amp_author_meta component added in AMP Theme Framework #1641
686
- * Fixed: amp_post_pagination component improvement in AMP Theme Framework
687
- * Added: Ability to add link classes in amp_post_pagination in AMP Theme Framework
688
- * Fixed: amp_author_meta image code improvement in AMP Theme Framework
689
-
690
- = 0.9.73 (15th January 2018) =
691
- * View More details on the [blog post](https://ampforwp.com/0-9-73-released-stability-update-78th-update/)
692
- * Added: Instagram Sanitizer added to process Instagram Embeds inside the BlockQuotes #1581
693
- * Added: Option Created to Enable/Disable rel="nofollow" for View Non-AMP link #1572
694
- * Fixed: Custom AMP Content was not working with Elementor Pagbuilder #1495
695
- * Fixed: ampforwp_is_front_page() is not working in the newspaper theme #1583
696
- * Added: Allow people to use multiple Analytics on AMP #1124
697
- * Fixed: 'https' error with PlayBuzz Embeds #1481
698
- * Added: Option to show last modified date instead of Published date #1496
699
- * Fixed: Add proper permission for ampforwptourinstaller page
700
- * Fixed: Debug warnings #1586 and #1459
701
- * Fixed: A lot of Security Fixes has been done #1497
702
- * Fixed: Removed lot of unused code #1497
703
- * Added: AMP skip for checkout page #1443
704
- * Added: Show the list of Child pages at the end in Parent Page with on/off #1551
705
- * Fixed: Properly strip shortcodes fom Structured data description #1512
706
-
707
- = 0.9.72 (6th January 2018, Happy New Year) =
708
- * View More details on https://ampforwp.com/0-9-72-released-stability-update-77th-update
709
- * Related Posts Image stretching in Design 3 AMP theme Framework #1482
710
- * RTL option must be integrated into AMP theme Framework #1562
711
- * `DOMDocument::loadHTML():` Attribute itemprop redefined warning fixed #1539
712
- * Created an option to add Author bio article in Facebook Instant Article #1521
713
- * Options to add push notification button above and below the content #1571
714
- * Copy the Content button for Custom Post types #1532
715
- * Alexa Metrics Compatibility added #1536
716
- * Logo styling added with amp_logo. So styling can work with AMP Theme Framework. #1520
717
- * Content parsing login improved, so it will not through any warnings if the content has only 1 paragraph. #1523
718
- * Debug Warnings removed #1564
719
- * Caption in the Gallery creating validation errors Fixed. #1549
720
- * Tables Link color should be as same as the link of the body #1559
721
- * Separate options for In-Content related posts #1546
722
- * WebPage Schema Type added in Structured Data options #1558
723
- * Fatal Error fixed with `mb_detect_encoding()` after enabling the minify option #1494
724
- * Content blank or fatal errors due to itemscope and itemtype, fixed. #1570
725
- * Performance improved. Due to `_transient__redux_activation_redirect` transient. #1526
726
-
727
- = 0.9.71 (1st December 2017) =
728
- * Design 2 Post Titles issue fixed
729
- * Instant Articles validation issue fixed.
730
-
731
- = 0.9.70 (30th November 2017) =
732
- * View More details on https://ampforwp.com/0-9-70-released-stability-update-76th-update/
733
- * Image alt tags are empty which caused issues. #1154 (thanks to @liagua)
734
- * ALT and IMG tags are in one line #1442
735
- * Updated the permalink for post view in admin area #1318
736
- * aria-current causing validation issues #1427
737
- * Aligning Captions in the Bottom in Gallery #1428
738
- * Logo’s height & width should dynamically come from the logo. This was a great UX improvement in my opinion. The logo would good regardless of the kind of image you upload. #1429
739
- * After 0.9.69.1 update Call to undefined function mb_convert_encoding #1447
740
- * Featured image options now also reflect the structured data #1430
741
- * Blur & Stretching issues of Design 3 thumbnails are now fixed. They’re crisp and clear than ever! #1227
742
- * Related posts are showing on single even when turned off #1434
743
- * Show Related posts CSS only when it is selected #1356
744
- * Author image now displays on author pages #1426
745
- * Category base removal in AMP from url option is only working on the first page #1418
746
- * Bug fixed: PHP Warning DOMDocument Empty string supplied as input #1449
747
- * Video support added in Instant Articles #1300
748
- * Read more tag in Instant articles issue fixed #1415
749
- * Amp carousel issues fixed #1446 #1456
750
- * Compatibilty with Envira Gallery Lazy Loading #1432
751
- * Inline Related Posts in AMP Theme Framework #1457
752
- * Different number of in-content related post and related posts at the footer #1448
753
- * FooGallery update broke all the AMP compatibility, but we fixed it from our side so that user’s gallery work perfectly #1424
754
- * WPBakery Page Builder Conflict solved #1419
755
- * Goodlife theme Lazy Load compatibility added #1416
756
- * AMP-Facebook-Like Was found but unused Validation Error fixed. #1463
757
- * Playbuzz not displaying if added with https: #1466
758
- * Options Panel labels renamed for better understanding.
759
-
760
-
761
- = 0.9.69 (20th November 2017) =
762
- * View More details on https://ampforwp.com/0-9-69-released-stability-update-75th-update/
763
- * One Signal Push Notifications bug fixed! #1404
764
- * AMP theme framework Related posts extended so that it can be used as a loop format #1406
765
- * Facebook like Button improvements #1405
766
- * Add layout responsive tag to image module in page builder #1373
767
- * Strip the shortcodes from Structure data area #1389
768
- * Test HTTP API Call From admin panel by redux #1391
769
- * Meta description tag in normal site Unicode character is different from AMP site unicode character. #1369
770
- * Updated the check for ampforwp_is_amp_endpoint this should fix the issue #1372
771
- * Updated the URL for design 3 so it can work with plain permalink #1318
772
- * Updated the option Featured Image from The Content #1367
773
- * If “Featured Image From The Content is enabled and Duplicate Featured Image” is disable it will remove all the duplicate images from the content. #1375
774
- * Date Format under Homepage improvements #1408
775
- * Warnings due to inline related posts in Homepage #1413
776
- * Plain Permalinks Support improved. #1318
777
- * Allow Homepage title of Bread Crumbs feature to be changed from Translation Panel #1414
778
- * Debug Errors in AMP Theme Framework #1403
779
- * Unnecessary loading of Merriweather fixed, it will only load in the Design 1.
780
- * Enter Phone Number is not Appearing when switch to Call now button #1425
781
- * Need excerpt below the title, above the meta #1399
782
- * Remove the Separator piple symbol from the footer when “Back to Top link” is off #1417
783
- * Display Child or subcategories on Category pages. #1385
784
- * Add Caption in the Gallery Image feature conflicting with Gallery widget #1407
785
- * Youtube Shortcode embed with &rel=0 support #1378
786
- * Filter for Excerpt custom text in the AMP options #1411
787
- * WPML Multilingual CMS plugin flags compatibility #1270
788
- * Compatibility with Tasty Recipes plugin and other page builders with amp page builder #1431
789
-
790
-
791
- = 0.9.68 (12th November 2017) =
792
- * View More details on https://ampforwp.com/0-9-68-released-stability-update-74th-update/
793
- * ADs are Optimize For Viewability, meaning it will try to load faster than the original AMP AD loading strategy.
794
- * Content was disappearing issue was resolved #1392
795
- * Featured Image from The Content option is connected to related post #1339
796
- * Fix amp-web-push helper iframe configuration URL #1387
797
- * Facebook Like button added to AMP #1327
798
- * WPML support for AMP Improvement #1285
799
- * Debug Errors fixed #1366
800
- * Setting ad density for Facebook Instant Articles ads #1287
801
- * Showing the number of comments in Single #1341
802
- * Styling added to the sitewide ads and made sure that they are in the center. #1343
803
- * One Signal buttons Translation added #1383
804
- * Article type added to Structured data #1344 #1354
805
- * The issue with the amp-carousel when RTL was enabled #1358
806
- * amp-carousel with images of different sizes #1358
807
- * a bug where Img is getting converted to amp-img if there's no height or width. which causing validation issue and image is not visible fixed.
808
- * Instant Article should have a default value for number of posts, it was causing the memory issue with alot of posts #1390
809
- * Notice if a post has no author data #1338
810
- * Added a new redux extension select field in redux framework #1349
811
- * Issues with galleries as well as gallery captions #1363
812
- * Added a hook for adding anything in between the loops #1396
813
- * Hide meta boxes as per the user level types #1340
814
- * A Switch between the Date formats #1384
815
- * Fix: Jannah theme lazy load issue #1362
816
- * Issues with galleries as well as gallery captions #1363
817
- * Create Dynamic url of amp according to the permalink structure #1318
818
- * Minor code performance improvement.
819
- * Archive titles in Design 3 frontend issue
820
-
821
- = 0.9.67.0 (6th November 2017) =
822
- * View more details on https://ampforwp.com/one-signal-push-notifications-for-amp/
823
- * OneSignal Push Notifications integrated #807
824
- * Vimeo embed support added
825
- * SoundCloud embed support added
826
- * Pinterest embed support added
827
- * PlayBuzz embed support added
828
- * DailyMotion embed support added
829
- * Fix: Handle issues with data uri images in CSS #1033
830
- * Fix attribute when adding AMP Mustache lib #1033
831
- * Fix: Output CSS for feature image #1033
832
- * An option added for users who don't want to receive update notifications #1342
833
- * Structured data nav improvement
834
- * Sitenavigationelement has been implemented correctly for footer menu. #1345
835
- * Style sanitization for Menu Items #1359
836
- * Polylang flags support for menu  #1360
837
- * Mobile Redirection issues fixed #1173
838
- * Jetpack fatal error fixed #1355
839
- * AMP Page Builder requires a button to be clicked, so the scripts are not running on the runtime making it easy on the edit screen page and avoid the possible script conflict.
840
- * Needs proper CTA Bar's styling. #1361
841
- * Debug errors on archive pages #1353
842
- * Preview shall only be loaded on click rather than in background #1331
843
- * ampforwp_is_home() function code improved
844
- * making sure scripts and styling is properly adding when sanitizing the sidebar #868
845
- * All the backend css and js should be versioned, so it's not cached. #1335
846
-
847
- = 0.9.66.1 (30th October 2017) =
848
- * Fatal error if has version less than WP 4.8 fixed
849
- * More Minor Validation errors fixed
850
- * Odnoklassniki sharing button is not working #1337
851
-
852
- = 0.9.66.0 (29th October 2017) =
853
- * View more details on https://ampforwp.com/0-9-66-released-bug-squashing-oct-2017-72nd-update/
854
- * Design 3 & Design 1 are optimised with 90+ Google PageSpeed Score on Mobile and 95+ in desktop performance #1273
855
- * Featured Image from the content for blog and homepage #1295
856
- * Category Module for AMP Page builder added #888
857
- * Don't load unused CSS selectors. All the CSS is conditionally loading, to decrease the number of CSS loaded per page and increased in performance #1292
858
- * Twitter Video embed code support added in AMP #1307
859
- * Video Posting Structured data #1293
860
- * Navigation menus are now Schema compatible for better Structured data integration #1229
861
- * Yoast checking conditions for Structured Data Improved #1293
862
- * Added "back to Top" in design 3 #959
863
- * Proper blog check and author for custom frontpage #1260 (Made some changes to check the blog properly and also added the author details for Custom Frontpage)
864
- * AMP not working on password-protected pages #1192
865
- * Debug errors reported by the user #1284 and few more we found internally
866
- * Inline Style Sanitizer for Comments to avoid any validation issues #1193
867
- * Next/Previous links removed from pages #1268 props @Frenchomatic
868
- * WPML Multilingual CMS plugin flags compatibility added #1270
869
- * Image sanitizer added for the Sidebar #1270
870
- * Added AMP Components the correct way. Added amp-gist, amp-social-share. #336
871
- * amp-video script added - Which decreases the non-critical validation issues #991
872
- * Arrows in Design 3 pagination #1000
873
- * Author page links in Single #1282
874
- * Added previous open state of option panel and show again when search clean #1238
875
- * Odnoklassniki Social Sharing Support for AMP (with target blank for better bounce rate) #1230
876
- * GIF or animated images resize problem fixed #1281
877
- * In Design1, Header Background & Link Color have same option #1249
878
- * FB Pixel for AMP added #1231
879
- * Structured Data Type option for AMPed Custom Post types only #1259
880
- * Attribute ‘readability in the tag ‘div’ removed - this decreases the validation issues #1306
881
- * AMP Theme Framework Improvements: loop, author, related_post, Add Author support #1311
882
- * Commentator's Avatar in the comments section #1132
883
- * Remove 'Welcome to AMP' from Dashboard sub-menu and moved to the options area to decrease the annoyance and increase the user happiness #902
884
- * Option to Sort the Random Order of Related Posts to increase the audience engagement (Default is 'ID', on enabling the option it will change to 'rand') #1250
885
- *  View AMP on Admin Bar for the respected page/post If enable. #1236
886
- * google maps iframe link to larger map #1099
887
- * Comments now jumping due to the slash at the end #1309
888
- * Page Builder causes Incompatibility with the Divi theme (We restructured the Text Module for Page builder for better compatibility and UX) #1162
889
- * Inline Style Sanitizer for Comments added. Less Critical Validation issues and Better Presentation #1193
890
- * WPML amp-html error fixed #1285
891
- * Radio button not working for Show View more Button" #1018
892
- * Added registered handle for tinymcePointer localize data #1301
893
- * Date in the Design 2 should not be hidden in mobile version #1315
894
- * Page builder not working on homepage(Selected as front page) #1316
895
- * Instant articles number of posts option #1271 (Removed some unused code as well, it will rendered all posts if none is enter in the options)
896
- * Auto flush on save for FBIA to improve the UX.
897
- * Plain Permalinks Support improved. #1318
898
- * Tables support added to FB Instant Articles #1266
899
- * Demo link added in the Theme selector option #1248
900
- * Remove invalid attributes from multiple tags which reduces critical validation errors and validates pages.
901
- * AMP makes a problem in archive page label, when it is active in non-amp version #1304
902
- * placeholder-icon.png is 404 fixed #1310
903
- * Category & Tags switches for Single added. #1055
904
- * Copy Content (Custom AMP Editor) Option Not showing with Page Builder of SiteOrigin issue fixed #1280
905
- * Improving UX with: when AMP support is off for a specific post type then all the AMP related metaboxes should be removed #1289
906
- * Options Panel Options rearranged, labels rewritten, descriptions repositioned for better User interaction [commit]
907
-
908
- = 0.9.65.2 (25th October 2017) =
909
- * TypeWatch is not a function #1299
910
- * Error with BackupBuddy fixed #1303
911
-
912
- = 0.9.65.1 (24th October 2017) =
913
- * AMP Minifcation Issues fixed
914
-
915
- = 0.9.65 (22nd October 2017) =
916
- * View more details on https://ampforwp.com/new/
917
- * Favicon for AMP #1039
918
- * AMP Minification option added with Performance Tab in Options #1286
919
- * Post support is turned off then Meta box should also be removed #1253
920
- * Excerpt Length feature in Design two and Three #1122
921
- * Test Contact form plugins and their settings in the options panel #1121
922
- * Mobile preview in Edit Screen #1082
923
- * Search feature for Options Panel #1238
924
- * WordPress Social Share Buttons Validation Issues #1272
925
- * itemtype attribute is striping in the ul tag #1210
926
- * Debug Error in Breadcrumb 0.9.64 #1267
927
- * Disable AMP linking at Wordpress Search Page #969
928
- * Featured Image is missing #1071
929
- * Removed ampforwp_plugin_activation_notice #1034
930
- * Add VK (Vkontakte) Sharing Button #1187
931
- * Grab the first image instead of post thumbnail for featured image #1189
932
- * AMP theme framework core changes #1274
933
- * Grab the first image instead of post thumbnail for featured image #1189
934
- * Create a Switch on Top of Page Builder #1279
935
- * Inline Related Posts added that helps you with improving bounce rate #1078
936
- * Caption Support in Image Gallery Carousel #1172 #1136
937
- * Instant Articles feed shows sticky posts on top #945
938
- * Added search check, to fix debug notice
939
- * Option to hide date from Design 1 & Design 3 Homepage Loop #1264
940
- * UI labels improvements in the Options panel
941
- * Sorting out design #2 static front page #1175
942
-
943
- = 0.9.64 (15th October 2017) =
944
- * View more details on https://ampforwp.com/new/
945
- * Structured Data Type option added. You can now change the structured data format for Posts, Pages and Custom post types #323
946
- * When comments plugin activate, Comments section should remove. #1093
947
- * Notification causes a validation error. #1147
948
- * CSS !important need sanitization #1225 - This will help us to validate tens of thousands of pages.
949
- * Strange spaces when using Sassy Social Share #1185
950
- * Remote CDN use? Let's host it? #549
951
- * Typo fix for Linkedin Profile Page URL section #905 [Thanks to Prayag @pra85]
952
- * Replace fastimage with fasterimage for PHP 5.4+ #1191
953
- * Debug Errors Post 0.9.63 #1219
954
- * Ad5 code injected twice #1116
955
- * Homepage Support must be Off when we turn Off Homepage Support. #738
956
- * Add custom class in post pagination for styling #1100
957
- * Removed the Lazy Loading issue of Schema Theme #1170
958
- * H1 tag for archive titles (Commit) #1155
959
- * Alt tag for the Logo #1155
960
- * Design 3 Menu RTL issue fixed #1106
961
- * Ability to add dynamic classes in body tag #1237
962
- * Warnings fixed on 404 page #1243
963
- * Properly structured data for Homepage, Custom Frontpage and Blog #1155 #1242
964
- * Option added to Enable/Disable categories and Tags links from Single #1155
965
- * Fatal error after 0.9.63 fixed #1220
966
- * Debug Error due to vendor AMP #1213
967
- * PHP warning on line 147 after 0.9.63 #1241
968
-
969
- = 0.9.63 (8th October 2017) =
970
- * View more details on https://ampforwp.com/new/
971
- * Category and Tag Base Remover as core features #1079
972
- * Hide AMP on Posts option added #935
973
- * Installation Setup Screen Added for new users
974
- * Validation for the session in PHP #1158. PR by Bryan Contreras @bryan3561
975
- * All the amp pages should work perfect with Plain Permalink settings #488
976
- * WYSIWYG TinyMCE editor added for the Text Module in AMP Page Builder #1205
977
- * WPML Static Front Page Support for title and description with Yoast. #1143
978
- * Row Settings area added for AMP Page Builder #1148
979
- * xlink attribute causes Validation Issues #1149
980
- * Posts with no images on Archive pages are squeezed to 65% #1058
981
- * Body Class to target specific pages #1123
982
- * Option to enable/disable Breadcrumb #1129
983
- * Debug errors due to Breadcrumbs fixed #1109 #1130 #966
984
- * Visit AMP option added below the View Site in Dashboard. #1076
985
- * Many Debug errors fixed #1109
986
- * Textarea for body tag which will help people add AMP Auto Ads #1064
987
- * Structured data improvements #1048 #1044 #1085 #1118
988
- * Twitter share URL based on users choice, you can allow people to share pretty links and short links. #1097
989
- * Author Avatar removed code fixed which has been displayed in the div "amp-wp-meta amp-wp-byline". #1087
990
- * Only one figure element is allowed in the article header FB Instant Articles #1127 & #1157
991
- * Image alt tags are empty and cause issues fixed. #1154
992
- * Button to copy the content into Custom AMP Editor #783
993
- * Rename AMP loop widget areas or add proper descriptions #1045
994
- * Trailing slash issue #1095
995
- * Related Posts by Post type featured added #1141
996
- * Ultimate Social Media Icons plugin causes validation issues fixed #1135
997
- * Adding proper path for functions.php, it was causing strange fatal errors and irregular white screen of death fixed  #1144
998
- * A smooth way to migrate from other AMP plugins to AMPforWP #1051
999
- * Alert added on AMP by Automattic installation. #1180
1000
- * Insertion of strange spaces around H1 titles #1069
1001
- * AMP Page Builder and HTTPS #1164
1002
- * You can display comments from more than one vendor such as displaying WP & FB Comments #1150
1003
- * Rename AMP loop widget areas or add proper descriptions #1045
1004
- * FrontPage featured image with srcset #1063
1005
- * An option for Showing featured image from custom field #1098
1006
- * Added the Custom Front Page Title From Yoast SEO #1163
1007
- * Commenting breaks SSI directives causes to display error #1179
1008
- * rel canonical appears more than once in search pages #1195
1009
- * Dev mode in AMP #1083
1010
- * Social Sticky Icons Improvements #1061
1011
- * Grand-Child support added in Design #1152
1012
- * amp-accordion non-critical error in Design 3 & CSS improvements fixed #1152
1013
- * Incorrect @id for mainentity #1080
1014
- * Hide AMP by specific Categories tweaked for performance. Thanks to Joshua Eichorn @jeichorn CTO at Page.ly #1133 - Huge Thanks!
1015
- * amp-auto-ads for sites with RTL support ON #1176
1016
- * Redirected the Google forms to our contact page so that we can take each and every query and answer every person. #1201
1017
- * ui-state-highlight class was conflicting with ACF date picker fixed #1199
1018
- * Responsify WP Lazy loading causes blank image (Compatibility) #1131
1019
- * amp-carousel scripts loading on the second page fixed in Design 3
1020
- * Show Design screenshot while selection of design #1209
1021
- * Switches Redesigned for better UX #1211
1022
- * Welcome Page UX Improved #1214
1023
-
1024
- = 0.9.62 (25th September 2017) =
1025
- * View more details on https://ampforwp.com/new/
1026
- * INTRODUCING Page Builder 2.0 for AMP! [Learn More & Watch the Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
1027
- * Documentation & Help links improved
1028
- * Post type specific classes for targetting
1029
- * Design name restored in Options panel (It was recently renamed to Appearance)
1030
- * Minor Bug fixes as well
1031
-
1032
- = 0.9.61 (10th September 2017) =
1033
- * View more details on https://ampforwp.com/options-restructured/
1034
- * Options Panel Restructured Options were dividing into two parts: Settings and Appearance.
1035
- * AMP Theme Framework Core Support Added. You can now create themes of your own in just minutes.
1036
- * WPML Static Front Page Support #1111
1037
- * Notification message disables when CF7 & gravity form is activated. #1107
1038
- * Space after On in Design 3 #1114
1039
-
1040
- = 0.9.60 (4th September 2017) =
1041
- * View more details on https://ampforwp.com/0-9-60-released-improved-redirection-66th-update/
1042
- * Class added to View non-amp anchor tag
1043
- * Params added properly to get rid of a warning #1077
1044
- * rel=attachment noopener generating validation errors #1090
1045
- * Breadcrumbs Support Added #701
1046
- * Enable / Disable button added for Navigation Menu #735
1047
- * Move the ad code for Instant Article down after the article #964
1048
- * Add analytics code of FB instant articles properly #1096
1049
- * datetime Tag not stripping properly #1043
1050
- * Mobile redirection on custom post types #1028 #1052
1051
- * Mobile Redirection causing extra redirect #879 #933
1052
- * Proper mobile redirection on Homepage #1052
1053
- * View non-amp on blog will redirect to blog
1054
- * Blog will redirect to blog irrespective of AMP Homepage option #871
1055
- * Dont redirect if archive support is disabled #1052
1056
- * non-amp category pages should redirect to non-amp pages if turned off from Hide AMP #999
1057
- * Disable amp for forum plugin (wpforo) #592
1058
-
1059
- = 0.9.59 (23th August 2017) =
1060
- * Design 3 Images were not aligned properly. Fixed. #1040
1061
- * Caption in the design 3 improved
1062
- * Jetpack File not loading throwing fatal error #1038
1063
- * If the mobile redirection is ON and the category is excluded to display the AMP then it should redirect properly
1064
- * Custom Editor Compatibility issue with SiteOrigin PageBuilder fixed #997
1065
- * Native Twitter Embed support
1066
- * Added a hook after the body tag: ampforwp_body_beginning (commit)
1067
- * GTM in AMP Improved #958
1068
- * WP User Avatar compatibility Added #975
1069
- * Alt tag on frontpage featured image added #1050
1070
- * Blurred Images on the frontpage fixed #1050
1071
- * Need to escape alt tag #1049
1072
- * Debug errors & PHP warnings were fixed #859 #811 #830 #810
1073
- * Proper rel canonicals for inner pages #1047
1074
- * Added Video sanitizer for comments #1053
1075
- * When activating the AMP plugin, display a notification in the popup. #1036
1076
- * Video Sanitizer added for Comments
1077
-
1078
- = 0.9.58.1 (9th August 2017) =
1079
- * Jetpack conflict issue solved #1038
1080
- * Genesis SEO Support added #1013
1081
- * Fixed Wrong SEO title issue #1013 and #836
1082
- * Design 3 Carousel script loading method improved #990
1083
-
1084
- = 0.9.58 (9th August 2017) =
1085
- * View more details on https://ampforwp.com/new/
1086
- * Genesis SEO for AMP support added
1087
- * AMP 0.4.2 Vendor Bundled for making it crash proof
1088
- * Archive desc only on 1st page #1029
1089
- * Ads are not working after 0.9.6 #1030
1090
- * Fixed the Post 0.9.57 Update Bugs #1025
1091
- * All Images are aligned on left side in design 3 #1031
1092
- * Custom frontpage title issue in Design 3 fixed
1093
-
1094
- = 0.9.57 (5th August 2017) =
1095
- * See the Full changelog https://ampforwp.com/0-9-57-released-compatibility-issue-fixed-62nd-update/
1096
-
1097
- = 0.9.56 (31st July 2017) =
1098
- * View more details on https://ampforwp.com/page-break-in-amp/
1099
- * Page Break / NextPage (Pagination) Support Added #834 #857 (Improvement)
1100
- * Show/Hide AMP for Categories of Posts or All posts #872 (Improvement)
1101
- * Adding analytics capabilities to Instant Articles #978
1102
- * JetPack Plugin Conflict Solved #971
1103
- * Social sharing code improved. amp-social-share js is getting added for line and WhatsApp social share #981
1104
- * Code improvement for rel canonicals(home and archive)
1105
- * Perfect SEO URL + Yoast SEO Compatibility #982
1106
- * Some styling for tags to show up properly
1107
- * Undefined index notices #960
1108
- * Non-amp category pages should redirect to non-amp pages if turned off from Hiding AMP #999
1109
- * Page builder text and button module issues #972
1110
- * Documentation links updated in the Options panel
1111
-
1112
- = 0.9.55 (13th July 2017) =
1113
- * View more details on https://ampforwp.com/0-9-55-released-improvement-update-61st-update/
1114
- * Disqus Comments show up even when disabled per post #931
1115
- * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
1116
- * H3 inside OL in Related-Posts.php #930
1117
- * Advertisement Options in Instant Articles #943
1118
- * Incompatible with bootstrap plugin #525
1119
- * Error in tag and category links #934
1120
- * Pagebuilder Button module link had issues #951
1121
- * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
1122
- * WPtouch Pro Compatibility Issues #927
1123
- * Better scripts compatibility in Single of post types #757
1124
- * Instant Articles Error: "The HTML element does not contain any text" #949
1125
- * added a filter in all the dates so a user can change the date format and modify #962
1126
- * Design3 Menu Arrows are clickable along with the links #952
1127
-
1128
-
1129
- = 0.9.54.2 (4th July 2017) =
1130
- * Minor bug post 0.9.54 bug fixed
1131
-
1132
- = 0.9.54 (4th July 2017) =
1133
- * View more details on https://ampforwp.com/new/
1134
- * Facebook Instant Articles Support #862
1135
- * Exclude Some Pages from Mobile Redirection #914
1136
- * After 0.9.53 update amp-social-share js missing (critical issue) #924
1137
- * Hooks added in Header (above and below)
1138
- * View non AMP[Code improvement] #928
1139
- * Pages are not supposed to show meta like this, especially Categories #894
1140
- * Monarch plugin having design issues #925
1141
- * Show AMP Hide AMP Check Box Fixes #794
1142
-
1143
- = 0.9.53 (19th June 2017) =
1144
- * View more details on https://ampforwp.com/stability-validation-issues-59th-update/
1145
- * Compatibility Issue with Rocket Lazy Load plugin #907
1146
- * Link color issue with UX of Color Pickers in Design 3 #731
1147
- * amp-analytics js appears more than once when Google tag manager is used #885
1148
- * SEO by SQUIRRLY is adding analytics twice #678
1149
- * Fatal error when WPSEO is activated #900
1150
- * Design 3 Sticky header should have an option #625
1151
- * Search form was enhanced, it can now be used on the websites without https certificate. That will certainly fix a lot of validation issues. #912
1152
- * Yandex Metrika support in AMP #585
1153
- * Histats Analytics Support #880
1154
- * Chartbeat Analytics Support #882
1155
- * Do not strip Rel from anchor tags #790
1156
- * Design close Resulting Blank Screen in AMP Site #642
1157
- * Logo size is not applying #817
1158
- * AMP Publisher logo guidelines #162
1159
- * Remove amp-social-share extension .js from Custom Frontpage #899
1160
- * Add compatibility with Sassy Social Share #679
1161
- * Remove Disallowed ‘like’ tag from Facebook Like button by Ultimate Facebook plugin
1162
-
1163
- = 0.9.51.1 (12th June 2017) =
1164
- * Redirection issue after 0.9.51 Update.
1165
- * Improved compatibility with plugins.
1166
-
1167
- = 0.9.51 (8th June 2017) =
1168
- * View more details on https://ampforwp.com/page-builder-released-in-amp/
1169
- * Page Builder Support added ( See Tutorial at https://ampforwp.com/tutorials/page-builder/ )
1170
- * Comments are not showing properly when words are long #861
1171
- * Remove amp-social-share extension .js from Pages #853
1172
- * The tag ‘amp-sidebar extension .js script’ appears more than once in the document #828
1173
- * Remove Advertisement tab #839
1174
- * Compatibility with Slide-in Plugin by WPMU dev #866
1175
- * Mobile redirection issue with bbpress #867
1176
- * All the data must be properly sanitize in the sidebar #849
1177
- * AMP html should not be added on the second page of comments
1178
- * Author page’s support #456
1179
- * URLs in comments should be clickable(links) #869
1180
- * Featured image should be centered in desktop mode #870
1181
- * Added More Hooks #721 (Documentation on this coming soon!)
1182
- * Page 2 goes to the wrong URL #865
1183
- * Proper Title and meta for homepage and posts #850
1184
- * Gist Support added #608 – Just add a shortcode and enjoy Devs (Ex: amp-gist id="b9bb35bc68df68259af94430f012425f )
1185
- * /blog/amp pagination not working #875
1186
- * separate the Text and Date format in design 2 #876
1187
- * Comments show in AMP w/o breaks between paragraphs #873
1188
- * If no featured image below hooks are not working #877
1189
- * Change meta name Viewport and its value #878
1190
- * Bolt icon in option #474
1191
- * Code restructuring and code quality improvements.
1192
- * Create a seperate function for comment code in frontpage.php #682
1193
- * Remove all the duplicate code from frontpage.php of all the designs and use hooks to add the code instead of static code #889
1194
- * Few Debug errors removed.
1195
-
1196
- = 0.9.50 (24 May 2017) =
1197
- * View more details on https://ampforwp.com/facebook-comments-in-amp/
1198
- * Design 3 Social Icons issue #832
1199
- * View non AMP leads to /?nonamp=1 #814
1200
- * Youtube shortcode compatibility improved #557
1201
- * welcome.php should be shown only if user is “administrator” #696
1202
- * Facebook comments support added in AMP #825
1203
- * WP Like Button Compatibility #841
1204
- * Custom Taxonomy Support added with Custom Post Type Extension.
1205
- * Front page comments not found as expected #837
1206
- * Fixed xml:lang tag issue #848
1207
- * Sanitize Iframe in the archive description Fixed #845
1208
- * Compatibility with Newspaper Theme by TagDiv #842 and #796
1209
- * Some debug problems (blog page, style.php) #838
1210
- * Featured Image hooks added
1211
- * Twitter is misspelled #854
1212
- * The core concept of the AMP Content builder has been built.
1213
-
1214
-
1215
- = 0.9.49 (12 May 2017) =
1216
- * View more details on https://ampforwp.com/0-9-49-released-small-important-bugs-fixed-56th-update/
1217
- * Option added to display the excerpt in Single #806
1218
- * Ability to add new invalid tags to filter out from AMP pages #809
1219
- * In frontpage, comment button is pointing to wrong URL #812
1220
- * Call now button and search is overlapping in Design-1 #784
1221
- * Sticky Social Icons should be off if the CTA notification bar is on #788
1222
- * Author bio in Design 1 and 2 #732
1223
- * Styling in Taxonomy description causing validation issues #798
1224
- * Twitter share(handle, url positions fixed) #815
1225
- * Tables responsiveness in ALL Designs #726
1226
- * Output all the categories and tags with their own ID’s in the div classes #750
1227
- * Social Share Icons Overlap with Leave A Comment in Design 3 #716
1228
- * Effective Measure Support on AMP #297
1229
- * Custom AMP editor on pages should only be shown when page support is ON #756
1230
- * AMP on website.com/blog without need of separate installation #775
1231
- * GTranslate Compatible #819
1232
- * Images and amp-anim styling added #725
1233
- * Filter to make the title in a post to a link #727
1234
- * Author Bio and Social Share button must not come in Pages #770
1235
- * StatCounter is now compatible with AMP #361
1236
- * Line Social media support #500
1237
- * Footer menus for Design 1 & Design 2 #623
1238
- * Strip out src=”about:blank” When Gravity Forms used #804
1239
- * Add Compatibility with Crazy Lazy load plugin #751
1240
- * Meta Titles and Description issues fixed with Yoast, All in one SEO and The SEO Framework #813
1241
- * Double quotes in the Excerpt of the meta description is making AMP Invalidated #818
1242
- * Missing featured image on static front page #824
1243
- * Fatal error while activation: see the video 0.9.49 Beta #827
1244
- * Review this code in archive.php in all 3 designs. #826
1245
-
1246
-
1247
- = 0.9.48 (28 April 2017) =
1248
- * View more details on: https://ampforwp.com/0-9-48-released-step-towards-multilingual-support-55th-update/
1249
- * The default translation method of WordPress added. (Option in Translation panel to switch between * Translation panel and POT file #540)
1250
- * A new Advertisement slot added above the related posts in the Single. It not only gives better options for people to display ads but this ad slot is also very handy if you are using ad companies like Taboola and RevContent.
1251
- * Another Advertisement slot added below the post title in the Single post.
1252
- * Fatal error: require_once report-bugs.php #747 fixed
1253
- * Add / for codes in Meta Description #766 fixed
1254
- * Controls re-adjusted & Renamed title of yoast description control in Options panel
1255
- * Design-3 Slider URL redirecting to non-AMP page #758
1256
- * Added new sanitizer For HTML to AMP-HTML conversion
1257
- * Sanitized Archive descriptions so that it would convert to AMP
1258
- * Comments sanitized with new sanitizer so that HTML tags automatically become AMP compatible.
1259
- * 301 redirects on non-pretty internal links #767
1260
- * Create a filter to modify the value of rel="amphtml" #778
1261
- * Max-width added for images in comments
1262
- * If in WooCommerce ?amp endpoint set then update href.
1263
- * Undefined Variable (Debug) #733 and many other debug issues were fixed
1264
- * Show last updated Post instead of published date #575
1265
- * WooCommerce Widget added to display latest products on homepage. #763
1266
- * add amp_post_template_above_footer hook global in all the designs #779
1267
- * Excerpt on top of the content in Single #665
1268
- * Subscribe box has been improved for the UX needs #712
1269
- * Notice warnings since 0.4.2 update #740
1270
- * AMP Comments Form Integration with the extension
1271
- * Filter added on the loop in Homepage of the Design 3 so that it can be modified with an external plugin.
1272
- * 404 on paged home page #781
1273
- * Twitter handle should be at the end of the tweet not in the beginning #787
1274
- * Wrong Rel Canonical for AMP Custom Frontpage #799
1275
- * Merged a pull request #761 that will improve the title and description output that is much more stable and flexible for future enhancement and use. It was contributed by Sybre Waaijer - Thanks mate for the contribution, we (our team and users) really appreciate your hard work done on this code.
1276
- * Extension page user experienced improved.
1277
- * Removed old Youtube installation video and replaced with new one.
1278
-
1279
- = 0.9.47.2 (12 April 2017) =
1280
- * Design-3 Slider URL redirecting to non-AMP page #758
1281
- * Ads showing in comments #768
1282
-
1283
- = 0.9.47.1 (11 April 2017) =
1284
- * Meta description option improved in SEO section #766
1285
- * Fatal error: require_once report-bugs.php #747
1286
-
1287
- = 0.9.47 (10 April 2017) =
1288
- * View more details at https://ampforwp.com/0-9-47-released-54th-update/
1289
- * Meta saving method updated for customAMP content editor checkbox was causing some conflict.
1290
- * Wrong Yoast title and structured data in Custom Frontpage fixed
1291
- * CSS minification all 3 designs
1292
- * Polylang flags in menu was causing validation issue, is now resolved
1293
- * WPML flags in menu was causing validation issue, is now resolved
1294
- * Standardized function created for content sanitization.
1295
- * Archive description now displays AMP compatible markup
1296
- * Comments markup sanitized for AMP
1297
- * Design 3 images not aligned properly, fixed
1298
- * Images are aligned to center in Design 1.
1299
- * carousel ending with //amp instead of /amp – fixed #753
1300
- * Title of the Post along with Post link when shared in twitter #683
1301
- * Ads were cutting in half in RTL, fixed
1302
- * Add / at the end of AMP links with in the AMP pages (Internal links) #668
1303
- * Rendering the wrong URLs in front page if paged #742
1304
- * Option to turn off AMP on all pages, so people can turn on only for specific pages #746
1305
- * Need Meta Description on amp pages #741
1306
- * Woocommerce Loop shortcode updated
1307
- * Call Now Button added in header #563
1308
- * Post images are not centered in Design 3 #695
1309
- * UX of GTM settings done, since users were getting confused #700
1310
- * Front page amphtml fixed for paginated pages
1311
-
1312
- = 0.9.45.6 (31 March 2017) =
1313
- * Installation Process from welcome page was not working after WP Plugin DIR API change was fixed.
1314
- * WP Rocket Minifcation and Concatenation was not working, its fixed now.
1315
- * WP Rocket was tested properly to make sure everything is working fine.
1316
-
1317
- = 0.9.45.5 (25 March 2017) =
1318
- * WP rocket conflict solved
1319
- * Cannot set property ‘innerHTML’ of null issue fixed
1320
-
1321
- = 0.9.45.3 (21 March 2017) =
1322
- * Post 0.9.45 bugs fixed and released as an urgent update.
1323
-
1324
- = 0.9.45.1 (19 March 2017) =
1325
- * Post 0.9.45 bugs fixed and released as an urgent update.
1326
-
1327
- = 0.9.45 (18 March 2017) =
1328
- * View more details at https://ampforwp.com/0-9-45-released-compatibility-rtl-53rd-update/
1329
- * W3Total cache compatibility added
1330
- * RTL Support added for Right-to-Left language websites.
1331
- * Comments Pagination feature added
1332
- * WP-Rocket Compatibility added
1333
- * WPML Compatibility added
1334
- * Quantcast analytics support added
1335
- * ComScore support added
1336
- * Custom Yoast title support added #685
1337
- * WooCommerce Shortcode: Allows you to display WooCommerce Products. [amp-woocommerce num=6] will display the 6 products from WooCommerce. [amp-woocommerce num=6 link=noamp] will display 6 products but they will go to non-amp website, if you want to link to AMP version of the page then use [amp-woocommerce num=6 link=amp]
1338
- * Admin area UX improvements
1339
- * Adding notifications script in the correct way
1340
- * Comments now display on frontpage as well.
1341
- * Re-positioned non-amp Header link control to the right section.
1342
- * ?nonamp=1 only displays when the Mobile redirection is on
1343
- * Properly adding iFrame js.
1344
- * Custom Post type incompatibility fixed
1345
- * Widgets added to the Custom Frontpage.
1346
- * Stripping shortcodes from excerpts.
1347
- * Custom content on static frontpage had over riding issue #687
1348
- * Option added for controlling number of comments
1349
- * Welcome page should be shown only if user is “administrator” #696
1350
- * Digg Digg social share compatibility #694
1351
- * Removed unnecessary lines from Design 3
1352
- * Sanitized Archive Description to amp Compatible #659
1353
- * Author box now displays HTML properly #645
1354
- * Date added Design-3 in meta #583
1355
- * Options link was removed from wp-admin tool bar after a feedback from a user.
1356
- * Footer sub menus layout compatibility.
1357
-
1358
-
1359
- = 0.9.44 (5 March 2017) =
1360
- * View more details at https://ampforwp.com/user-experience-52nd-update/
1361
- * Added Welcome Screen for better User experience. [Enhancement]
1362
- * Undefined Index debug error resolved [Bug fix]
1363
- * All in one SEO Support support tested [3rd party compatibility]
1364
- * Frontpage title in Design 3 is out of the container #644 [Bug fix]
1365
- * Default Table markup in AMP #643 [Enhancement]
1366
- * AMP carousel is not working on Frontpage #641 [Bug fix]
1367
- * Social share .js was getting added even when it was not required #638 [Bug fix]
1368
- * Search Feature added for Design 1 & Design 2 [Major Improvement]
1369
- * Accordion script loading issue in Design 3 #634 [Bug fix]
1370
- * ?nonamp=1 links should be nofollow #622 [Bug fix]
1371
- * Same Header and Color Scheme are making header elements invisible #629 [Enhancement]
1372
- * In Search AMP rel canonical was different #631 [Bug fix]
1373
- * Non-AMP link in Design 3 was not working when mobile redirection was enabled #632 [Bug fix]
1374
- * Search form text strings are now added in the translation panel #607 [Bug fix]
1375
- * Load AMP-ads conditionally only if ads are available #609 [Bug fix]
1376
- * Added compatibility with Custom post type extension. Option to hide/show AMP on all custom post types #587 [Bug fix]
1377
- * Report a Bug & Request feature links added [Enhancement]
1378
- * If there was no menu set in Design 3 then all pages were getting displayed. #613 [Bug fix]
1379
- * The tag Font is disallowed #616 [Validation Improved]
1380
- * index/noindex separately added for Tags and also for Categories #606 [Enhancement]
1381
- * Use of undefined constant AMP_QUERY_VAR #596 [Bug fixed]
1382
- * Logo is not centered in Design 3 #586 [Bug fixed]
1383
- * Remove defer, a very rare type of defer was getting added #589 [Validation Improved]
1384
- * Disqus comments iframe had scrolling issues #566 [Bug fixed]
1385
- * Left side blank gap in the RTL in design 2 #541 [Bug fixed]
1386
- * Inline Styles not working correctly in Custom AMP Editor #533 [Bug fixed]
1387
- * Re-save permalinks issues. Flushing rewrites with options saved. #511 [Improvement]
1388
- * Code review and cleaning of the customizer #404 [Code Cleaning]
1389
- * Google Search iframe had some header alignment issues in Design 3. #624 - Thank you Leo Osa @leoosa for the contribution! [Bug fixed]
1390
- * AMP Frontpage + Override AMP Content = Blank page #604 [Bug fixed]
1391
- * Widget area added on the homepage with an 'AMP Category Blocks' widget. It means you can display multiple category blocks the homepage. This allows you to display complex layouts, even on AMP. [Major Improvement]
1392
- * Auto-append /amp at the end of internal links in Menu with an option in the Menu section of the options panel #531 [Major Improvement]
1393
- Reformatting and Minifying of stylesheet [Code Cleaning]
1394
- * Created a new section for Homepage and moved some controls from other areas to the home section for the better user experience. [User Experience]
1395
- * Override Homepage Thumbnail size option added. It will give you more control over your thumbnails. [Major Improvement]
1396
- * New color picker added to change the color of the header elements in the Design 3 to give you better control over the design. [Enhancement]
1397
- * Extra amp-carousel script loading is now fixed. [Bug fixed]
1398
- * Crafting of layout code in design 2 and design 3, especially with social icons area. [Code Cleaning]
1399
- * Design of search form was not clickable in iOS devices #621 [Bug fixed]
1400
- * Disqus iframe was loading even when there was no disqus name was added in the option. We found that many users might be enabling it without knowing the output and then they seem to forget, which was causing them validation warnings. [Bug fixed]
1401
-
1402
- = 0.9.43.6 =
1403
- * View more details at https://ampforwp.com/stability-sprint-3-51st-update/
1404
- * Typo in the is_home() function fixed
1405
- * Option to hide/show AMP on all custom post types #587
1406
- * False detection by Windows defender tool fixed
1407
- * Conditional tags were not compatible with Advanced AMP ads which were causing some conflicts but is now fixed.
1408
-
1409
- = 0.9.43.5 =
1410
- * View more details at https://ampforwp.com/stability-sprint-2-50th-update/
1411
- * Fixed shortcodes issue in related posts #543
1412
- * Iframe Scripts Added properly
1413
- * Proper conditions added for the social section of Design 3
1414
- * Featured Image issue stretched in Design 2 & 3
1415
- * Removed extra global $redux_builder_amp;
1416
- * Custom Logo Dimensions option added #479
1417
- * Index & NoIndex options added for SEO section. #558
1418
- * Added URL for rewrite flushing rules in Options
1419
- * Option to enable and disable the Author area in Design 3#577
1420
- * Rel Nofollow added in credit link
1421
- * debug issue solved: fn_offset not defined
1422
- * debug issue solved: global $post not declared
1423
- * The word 'ago' is now translatable in design 3
1424
- * The word 'read next' is translatable now
1425
- * Tablepress compatibility added #392
1426
- * Secure API server is now serving through Google Cloud Manager.
1427
- * Thrive Content builder was displaying twice when the Custom AMP content was on. It was a complex issue which has been solved now.
1428
- * amp-ad extension.js script was loading if the Ads are not enabled. #598
1429
- * Social Share Extension Included on Homepage even if we didn't have social icons #599
1430
- * Installation UX improvement #593
1431
- * Removed duplicate global variable
1432
- * Proper OG tags added #588
1433
- * Proper instructions added for Custom AMP content #471
1434
-
1435
-
1436
- = 0.9.43.1 =
1437
- * View more details at https://ampforwp.com/0-9-43-1-released-stability-sprint-1-49th-update/
1438
- * Emoji in comments leads to AMP errors
1439
- * Design 1 showing time on archives
1440
- * Added some space between the archive label.
1441
- * Lazy loading plugins compatibility #544
1442
- * Custom header and footer areas
1443
- * Sticky posts now come on top #564
1444
- * Footer non-amplink added in design 3 #562
1445
- * HTML Paragraph tag is shown in the title in category! #518
1446
-
1447
- = 0.9.42 =
1448
- * View more details at https://ampforwp.com/design-three-update/
1449
- * Design 3 was released – Video Overview along with new options and features. View the video overview at: https://www.youtube.com/watch?v=ub1pwskt3Rc [Major Feature]
1450
- * Ticket #517 Added Upload field into Redux core [3rd party Compatiblity]
1451
- * Ticket#529 Controls for archive titles added [Improvement]
1452
- * Ticket #548 Jetpack photon code removed
1453
-
1454
- = 0.9.41 =
1455
- * View more details at https://ampforwp.com/disqus-comments-in-amp/
1456
- * Disqus Comments in AMP Support Added [New Feature] - This feature can be enabled from Dashboard > AMP Options > Disqus Comments
1457
- * AMP WooCommerce supported tag was missing after the last update. [Bug fix]
1458
- * Homepage & Related Posts was displaying private and protected posts, which is now fixed [Bug fix]
1459
- * Next previous links added in Design 1 [Enhancement]
1460
- * Invalid Post Time displaying in the homepage of Design 1 [Bug fix]
1461
- * Twitter share now includes the twitter handle of the author with setting in options [Enhancement]
1462
- * Emoji in comments leads to AMP errors was fixed [Bug fix]
1463
- * Date are now displayed on archives in Design 1 [Enhancement]
1464
- * When RTL enabled logo merges with nav bar was fixed [Bug fix]
1465
- * Jetpack Photon compatibility added [3rd Party Compatibility]
1466
-
1467
- = 0.9.40 =
1468
- * View more details at https://ampforwp.com/0-9-40-released-biggest-stability-update/
1469
- * Proper endpoints added [Improvement]
1470
- * Flush Rewrites properly [Improvement]
1471
- * REL Canonical properly getting added. [Improvement]
1472
- * Proper Frontpage Canonical added [Improvement]
1473
- * Added Base name support for categories and tags [Improvement]
1474
- * Redirection of excluded post solved. [Bug fix]
1475
- * Archives properly redirecting to the right URL [Bug fix]
1476
- * Homepage redirection solved [Bug fix]
1477
- * Plusone tag is stripped properly. [Validation Issue fixed]
1478
- * Archives are now clickable. [Improvements]
1479
- * WP_Query filter added for better customizability of Homepage loop. [Better Customizations]
1480
- * Social share boost plugin compatibility. [3rd party Customizations]
1481
- * Removed H1 from the frontpage even if it is not available. [Improvement]
1482
- * H3 instead of H1 for Site title. So there is only one H1 per page. [SEO Improvement]
1483
-
1484
- = 0.9.38 =
1485
- * View full details at https://ampforwp.com/google-tag-manager-for-amp/
1486
- * Google Tag manager included [New feature]
1487
- * Iframe max-width added [Improvement]
1488
- * Paginated pages have different titles now. [Bug fix]
1489
-
1490
- = 0.9.37 =
1491
- * View full details at https://ampforwp.com/category-tags-archive-support-added/
1492
- * Debug issues solved [Bug fix]
1493
- * Remove Extra styling added by other Themes/ Plugins [3rd party themes and plugin Support]
1494
- * Category, Tags & Archive Support with titles added [Enchancement]
1495
- * Archive Title support added [Enchancement]
1496
- * There were some issues with attachments [Bug fix]
1497
- * removed ? from amp url's [Improvement]
1498
- * Mobile redirection for Archives added and 404 redirections removed for archives [Improvement]
1499
- * View non-amp version now properly redirects to the normal version. #415 [Bug fix]
1500
- * Added an option to turn off AMP support for Homepage. [Enchancement]
1501
- * Too many redirects issue on homepage is fixed #435 [Improvement]
1502
- * Spell check and G tags are removed for thrive & Spell check compatibility [Better Validation]
1503
- * If image is not available in gravatar fixed, it was throwing an error #365 #327 [Improvement]
1504
- * Comment anchor link changed for simplecomment button files in both designs [Improvement]
1505
- * Redirection Loop issue fixed [Bug fix]
1506
- * Shortcodes were visible in excerpt, it's fixed now. [Improvement]
1507
- * Defer onload by other plugins was causing issues #431 [Better Validation & 3rd party support]
1508
- * Improved Sessions [Improvement]
1509
- * Advnaced Settings panel was created for better user experience. [Improvement]
1510
- * Spell check tag was causing validation issues. [Better Validation & 3rd party support]
1511
- * RTL issue fixed #454 [Bug fixed]
1512
-
1513
- = 0.9.36 =
1514
- * Full details at https://ampforwp.com/0-9-36-released-stability-update-43rd-update/
1515
- * Redux Core Update. Better compatibility with the Salient theme and Themeforest themes & plugins using redux framework in their core, which makes the plugin much stable. [Huge Improvements]
1516
- * Hide advertisement section if advance ads plugin is active. [Better User experience]
1517
- * Ultimate Social Media PLUS Plugin Compatibility (Link) [3rd Party plugin Compatibility & Better Validation]
1518
- * Launch Post Builder button added. One of the important feature called ‘Post Builder’, that is drag and drop post builder was somewhere hidden in the customizer, so positioned it for better visibility from users. [Better UX]
1519
-
1520
- = 0.9.35 =
1521
- * Full details at https://ampforwp.com/page-builder-realtime-preview-3rd-party-plugins-compatibility/
1522
- * Customizer page builder (Design Manager) was not showing real-time preview, we have fixed this issue properly [Bug fix]
1523
- * Attachment page was having the wrong endpoint. [Bug fix]
1524
- * Fb:like div has href, showfaces, send and action tag, which was against validation [Validation Improvement]
1525
- * A plugin (Spam Protection by CleanTalk, no Captcha Anti-Spam) was forcefully adding script into the AMP version. [3rd party Compatibility]
1526
- * Lang attributes were added [Enhancement]
1527
- * The tag like was disallowed in the AMP [Validation Improvement]
1528
- * We did some more testing with Visual Composer & AMP [3rd party Compatibility]
1529
- * AMP on Pages option was not working in some cases. [Bug fix]
1530
- * Disable comment button when comments were disabled. This was fixed by @lofesa and was sent as a pull request. Thank you Lofesa!
1531
- * g:plusone tag was not getting removed properly. [Validation Improvement]
1532
- * Thrive headline optimizer was having issues in AMP version. [Validation Improvement]
1533
- * Structured Data Image width issue solved [Enhancement]
1534
- * BJ Lazy Load was having issues, we have added a fix which will make this plugin compatible with the AMP. [3rd party Compatibility & Validation Improvement]
1535
- * imageanchor=”1″ was getting added by some 3rd party plugin, this was fixed.[Validation Improvement]
1536
-
1537
- = 0.9.34 =
1538
- * Newspaper theme by Tagdiv was having issues, we have fixed this one.
1539
-
1540
- = 0.9.33 [15th Jan 2017] =
1541
- * Full details at https://ampforwp.com/debug-errors-shortcodes/
1542
- * Mobile was not working with Newspaper theme by Tagdiv [Bugfix]
1543
- * Debug errors fixed, Code is now much cleaner.
1544
- * New rewrite rules for homepage pagination. It had some paginated URLs with wrong amphtml tag.
1545
- * Extra analytics file was loading. Better compatibility with Yoast & Monster analytics.
1546
- * Properly removes AMP if turned off from Post panel
1547
- * z-index position improved on Sticky Social bar
1548
- * Better compatibility with shortcodes.
1549
- * Divi Standard Layouts Compatibility
1550
- * Properly Hide AMP posts if excluded. #367
1551
- * Mobile redirection was causing loop issues which are now fixed.
1552
- * Some plugins were loading in core AMP js file, which was causing the issues, which is now fixed. [Better Validation]
1553
- * onclick was getting added in the links on AMP version. Issue fixed. [Better Validation]
1554
- * thrive_headline tag was getting added in the Title tag which was causing validation issues. Fixed. [Better Validation]
1555
- * Some interactive plugins were using place, state, city and imap tags which are now fixed. [Better Validation]
1556
-
1557
- = 0.9.32 [7th Jan 2017] =
1558
- * Full details at https://ampforwp.com/first-wave-of-polishing-in-2017/
1559
- * Rel=canonical issue fixed: AMP URL redirect to the normal URL #293 & #332.
1560
- * Paginated pages on homepage redirect to homepage URL #335
1561
- * Title of the page should be displayed on the FrontPage #358
1562
- * Thrive Builder AMP Validation Compatibility, so it will be validated properly in AMP.
1563
- * Twitter Sharing improved so it gets the data properly #341
1564
- * Option to change the number of Related Posts #290
1565
- * Validation errors due to rel="canonical" was missing on some pages
1566
- * Comment button displays even if the comments are not available
1567
- * Threaded comments were duplicating, so that issue is solved and added proper CSS for it.
1568
- * Minor issue with Jetpack Comments fixed.
1569
- * Missing amp-social-share.js on front page fixed #372
1570
- * Minor improvements to Title and description tags.
1571
- * Analytics Script was loading twice when Glue was active.
1572
- * Page specific class added for better customization compatibility #377
1573
- * Inline Style support added Fixed #356
1574
- * Bugs fixed in Email notification pointer
1575
-
1576
- = 0.9.31 [2nd Jan 2017] =
1577
- * Proper Details at https://ampforwp.com/amp-0-9-31-released-installation-user-experience/
1578
- * Proper Condition added for the scripts to load in Frontpage.php
1579
- * Rel canonical properly added for front pages
1580
- * 404 and Archive page Mobile redirection code refined
1581
- * User Experience Improvement: Installation process was improved
1582
-
1583
- = 0.9.3 [31th December 2016] =
1584
- * Proper Details at https://ampforwp.com/custom-amp-content-editor/
1585
- * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
1586
- * FrontPage had some validation issues. [Bug fix]
1587
- * Related posts in Design 1 we're redirecting to 404 fixed [Bug fix]
1588
-
1589
- = 0.9.2.2 [27th December 2016] =
1590
- * Proper Details at https://ampforwp.com/polishing-user-experience-improvements/
1591
- * Made the Options panel user-friendly
1592
- * Social Share on frontpage issue fixed.
1593
- * Readme.txt made user-friendly.
1594
- * Archive option removed and some UI improvements
1595
- * Single was not displaying the Title
1596
- * 'Type is not allowed' [Validation issue fixed]
1597
- * noshade tag Validation issue fixed
1598
-
1599
- = 0.9.2.1 [24th December 2016] =
1600
- * Proper Details at https://ampforwp.com/step-towards-fixing-amp-validation-errors/
1601
- * Disabled the Tags and Categories support for AMP for better validation until we find a better solution.
1602
- * Mobile redirection bug fixed, It was continuously redirecting to the same page [Bug fix]
1603
- * trailingslashit added to make sure we have proper url for Mobile redirection [Bug fix]
1604
- * In content AD overlapping the content issue fixed
1605
-
1606
- = 0.9.2 [23th December 2016] =
1607
- * Proper Details at https://ampforwp.com/mobile-redirection/
1608
- * AMP Mobile Redirection Feature added. It can be turned on from Dashboard > General and then Mobile Redirection. [New Feature]
1609
- * Archive title and description added [Improvement]
1610
- * Improved the Speed of the AMP version #321 [Improvement]
1611
- * Anchor link was not closing fixed #328 [Bug Fix]
1612
- * Typo in Trailingslashit function which resulted in some issues in the Homepage version [Bug Fix]
1613
-
1614
- = 0.9.1.2 [20th December 2016] =
1615
- * Proper Details at https://ampforwp.com/new/
1616
- * DoubleClick Support
1617
- * Custom Post Type Support
1618
- * Ratings Support
1619
- * Comments Gaping fix
1620
- * Custom Excerpt code
1621
- * Better Compatibility with Yoast SEO plugin
1622
- * AMP Validation error in Design 1 Fixed
1623
- * Proper Homepage title & Description with Yoast SEO plugin issue fixed
1624
- * Design -1 Excerpt too big for mobile devices, Fixed
1625
- * Advertisement support on Design 1
1626
- * Link to Tags & Categories were having some issues.
1627
- * AMP looking bad on big devices
1628
- * AMP validation Improvement: Lightbox plugins compatibility
1629
- * Huge Progress in AMP Validation Errors: Strip unwanted codes and tags from wp_footer for better compatibility with Plugins
1630
- * Page Performance: Removed default Google font loading
1631
- * Page Performance: DNS Prefetch tag added for faster DNS Handshake
1632
-
1633
- = 0.9.1 [16th December 2016] =
1634
- * Proper Details at https://ampforwp.com/new/
1635
- * PHP7 Compatibility
1636
- * Pagination URLs (Prev & Next) was going to 404 ( #244 | #251 )
1637
- * Custom CSS not working in Design one (#249)
1638
- * Enhanced the translation panel by adding Textarea from Redux, which means that we're able to allow HTML in footer like before (#260)
1639
- * How to remove “Powered by WordPress” from Design-1 of AMP ( #264 )
1640
- * Non-amp Homepage support added (#267)
1641
- * using get_avatar() (#259)
1642
- * Validation issue fixed: The attribute 'rel' may not appear in tag 'div' (#268)
1643
- * Validation Issue fixed: Script Tag removed from the content.
1644
- * Featured image in Design 1 in single #261
1645
- * After Fresh installation - a save is required Fixed
1646
- * Excerpt length controlled
1647
- * Design One has thumbnails on the Homepage
1648
- * Non-AMP link goes to the wrong page, issue fixed.
1649
- * Archive pages were broken, fixed.
1650
- * Option to Enable & Disable the Next/Previous links in Single
1651
- * WhatsApp sharing not working, issue fixed.
1652
- * Category Taxonomy has extra ':' in the word.
1653
- * The word 'Ago' is now translatable.
1654
- * Yoast SEO with AMP compatibility issue fixed.
1655
- * Several Minor Polishing in the code
1656
- * Footer Ad gets covered by Sticky Social Icons (#269)
1657
- * Smaller image size when “image caption” is used in Design-2 (#263)
1658
- * Footer ad with Sticky Social bar issue fix
1659
- * Checked with WordPress 4.7
1660
- * Ad #1 was messing up with the title, issue fixed.
1661
- * Compatibility improved with AMP WooCommerce.
1662
-
1663
- = 0.9 =
1664
- * Proper Details at https://ampforwp.com/amp-pagebuilder/
1665
- * Drag & Drop Page builder Added: You can easily modify the look of the AMP page using this feature
1666
- * 100% Yoast Compatible , Now no need to have additionally Glue Installed
1667
- * 100% completed Translation panel, Now absolutely anything on page is translated
1668
- * Added Option to turn on/off Page Support
1669
- * Styling for Tags was Corrected
1670
- * Made changes to these sections to reflect in the new Design manager : Related Posts, Footer
1671
- * Default Image alignment styling added
1672
- * Added Option to turn on/off Page Support
1673
- * Related Posts Now use Custom Excerpt if it Exists
1674
- * Now AMP pages wont have Validation errors because of 'rel' attribute in 'div' Tag or 'onclick' attribute in 'a' Tag
1675
- * <pre> Tag styling issue fixed for AMP pages
1676
- * Frontpage (Homepage) Compatibility with AMP which means better validation of front page.
1677
- * WooCommerce Support Added https://wordpress.org/plugins/amp-woocommerce/ (for E-Commerce)
1678
- * 2 New Designs added
1679
- * SEO Panel Added
1680
-
1681
- = 0.8.8 =
1682
- * Proper Details at https://ampforwp.com/amp-0-8-8-released-translation-panel/
1683
- * Translation Panel added. You can now easily translate the AMP version from the backend without any complications.
1684
- * Badge Tag was throwing Validation error
1685
- * Plusone tag validation error was fixed
1686
- * Time tag was validation error was fixed
1687
- * User experience for Mobile devices was improved
1688
- * Meta info was messing up in smaller devices, it was fixed as well.
1689
- * Internal AMP linking added for Categories and Tags
1690
- * Future errors for AMP ads was fixed
1691
- * Blockquote styling added
1692
- * “Please Activate parent Plugin settings” added for better User Experience.
1693
- * Related Post Ux improvement
1694
- * Plugin version added in Footer source code for better debugging
1695
- * Added Support for Default WordPress Image alignment
1696
- * New action hooks added in index page
1697
- * Featured Image Size options added
1698
-
1699
- = 0.8.7 =
1700
- * Proper Details at https://ampforwp.com/amp-0-8-7/
1701
- * added option to enable/disable AMP on Archive pages (Ticket #188)
1702
- * Solved 404 on Related Posts (Ticket #178 )
1703
- * Related posts by either categories or Tags(Ticket #179)
1704
- * added a link to menu Section from the AMP Options page(Ticket #190)
1705
- * Added Support for Piwik Analytics(Ticket #163)
1706
- * Added Support for Segment.com Analytics(Ticket #50)
1707
- * Added a switch for hiding Non-Amp page link from Footer.( Ticket #189)
1708
- * Added an Option that strips Users URL from Comments Section(Ticket #180)
1709
- * Fixed stripping <date> tags from the content , Since it was preventing validation – amp-img issues fixed
1710
- * UX Improved for every section of AMP Options page
1711
- * Added Settings button on plugin page
1712
- * Related posts switch added
1713
- * Removed carousel.js
1714
-
1715
-
1716
- = 0.8.6.1 =
1717
- * Date Tag fix
1718
- * Few validation issues after 0.8.6 were fixed (Frontpage amp-img strip issue fixed)
1719
-
1720
- = 0.8.6 =
1721
- * Proper Details at https://ampforwp.com/amp-0-8-6-released-related-posts-comments/
1722
- * Related Posts
1723
- * Post Comments
1724
- * WhatsApp sharing button Your visitors can now easily share the content over the whatsapp.
1725
- * Validation issue fixed by All In One Schema.org Rich Snippets plugin
1726
- * Removed Google Fonts loading for Performance
1727
- * New relic Support
1728
- * Class added to ‘View Non-AMP Version’ text
1729
- * Archives Structured Data issue fixed
1730
- * Some instances img tags converted into amp-img automatically.
1731
-
1732
-
1733
- = 0.8.5.3 =
1734
- * Canonical issue fixed for Post
1735
-
1736
- = 0.8.5.2 =
1737
- * Canonical issue fixed for FrontPage
1738
-
1739
- = 0.8.5.1 =
1740
- * Proper Details at https://ampforwp.com/new/
1741
- * Validation issue fixed: 'Value' tag
1742
- * Validation issue fixed: The attribute 'contenteditable' may not appear in tag 'a'.
1743
- * Validation issue fixed: Table markup
1744
- * Validation issue fixed: nowrap and misc tags
1745
- * New Relic Support
1746
- * Tags on off option
1747
- * Canonical and correct AMP html Redirect issues Solved
1748
- * NextGEN Gallery Validation Support Added
1749
-
1750
- = 0.8.5 =
1751
- * Proper Details at https://ampforwp.com/the-0-4-compatibility/
1752
- * AMP 0.4 Compatibility Check
1753
- * Even better Structured Data Validation, Once in for all!
1754
- * Structured Data Options to eliminate Validation errors
1755
- * AMP Page Exclude option
1756
-
1757
- = 0.8.4 =
1758
- * Proper Details at https://ampforwp.com/blog/structured-data-validation/
1759
- * Structured Data Validation
1760
- * Navigation Text Change
1761
- * Inline Style Validation
1762
- * Form Validation
1763
- * Frontpage shows the amphtml rel twice fixed
1764
- * Facebook Sharing not working
1765
-
1766
- = 0.8.3 =
1767
- * Prefix added in the Content filter
1768
- * Extra space after quote in Ads
1769
-
1770
- = 0.8.2 =
1771
- * Proper Details at https://ampforwp.com/blog/the-custom-frontpage/
1772
- * Custom AMP FrontPage
1773
- * Featured Image
1774
- * New Mobile Friendly Advertisement sizes
1775
- * Single Post Pagination Option
1776
- * RTL Support
1777
- * Notifications
1778
- * Gaping if the Meta was turned off.
1779
- * Analytics was not fetching the user id properly.
1780
- * Page was not using the post template along with the AD support.
1781
- * AMP Endpoint support for Paged when the front page is active.
1782
- * UI improvement of Admin panel
1783
- * Few Validation issues fixed
1784
-
1785
- = 0.8.1 =
1786
- * Warning: Cannot modify header information error fixed
1787
- * Validation issue fixed. KK Star Plugin compatible.
1788
- * Gaping in the smaller screens fixed
1789
-
1790
- = 0.8 =
1791
- * Proper Details at https://ampforwp.com/blog/the-change/
1792
- * Plugin was re-written from scratch and is now built on top of default AMP plugin by Automattic but giving you the same features of the original plugin.
1793
- * 99.5% Validation issues were fixed.
1794
- * Page builder & Shortcodes Compatibility Support Added
1795
- * Conflict with JSON API
1796
- * Carousel support for Gallery
1797
- * Better Image stretching and resizing
1798
- * Youtube Video Embed Support
1799
- * Vine Embed Support
1800
- * Twitter oembed Support
1801
- * Instagram Embed Support
1802
- * Facebook Video Embed Support
1803
- * Better Future Compatibility
1804
-
1805
- = 0.7.7 =
1806
- * Proper Details at https://ampforwp.com/blog/amp-0-7-7/
1807
- * Big Validation Error fix Update
1808
- * Disable AMP support on specific Pages and Posts
1809
- * Option to disable the Post meta from the Single
1810
- * Footer Credits and Copyright Text Option
1811
- * New options for Social Sharing Bar in Single
1812
- * Jetpack Social & Related Sharing Issue fixed
1813
- * Gaping in footer if the Sticky bar is enabled
1814
- * Text domain added on few strings
1815
-
1816
- = 0.7.6 =
1817
- * Google Adsense Support Added with AMP-Ad
1818
- * Wrong Homepage rel amphtml bug fixed
1819
-
1820
- = 0.7.5 =
1821
- * Google Analytics Support Added
1822
- * Logo Support Added. If the logo is disabled, then the Title should be activated.
1823
- * Color Scheme Feature Added
1824
- * User friendly Options Panel Added
1825
- * iFrame support Added
1826
- * Few Minor Bugs Fixed
1827
-
1828
- = 0.7.1 =
1829
- * Bug #24 (Github) fixed
1830
- * Strip Style tags for faster & better validation
1831
- * Bug #21 (Github) fixed
1832
-
1833
- = 0.7 =
1834
- * Canonical Improved
1835
- * Navigation Validation bug fixed
1836
- * Two more validation bugs fixed ('role' and 'tabindex' attribute)
1837
- * Featured image automatically hides if it is not present
1838
- * Validation issues in the images of the post's the_content
1839
-
1840
- = 0.6 =
1841
- * Improved Navigation Menu
1842
- * Search Console errors fixed
1843
- * Social Sharing option
1844
- * Pages support
1845
- * Force redirection for mobile users removed and many other bug fixes
1846
-
1847
- = 0.5 =
1848
- * Added AMP Markup for Google Structured data. This will fix the issues in Webmaster tools.
1849
-
1850
- = 0.4 =
1851
- * Support of Custom menu added for AMP enabled sites
1852
-
1853
- = 0.3 =
1854
- * Support of amp-img added in single posts
1855
- * minor css bug fixed
1856
-
1857
- = 0.2.5 =
1858
- * Minor bugs fixed
1859
- * ?mobile & ?nomobile is now ?amp & ?noamp
1860
-
1861
- = 0.2 =
1862
- * White Screen of death issue fixed
1863
- * Plugin URI updated
1864
-
1865
- = 0.1 =
1866
- * Initial version
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === AMP for WP - Accelerated Mobile Pages ===
2
+ Contributors: mohammed_kaludi, ahmedkaludi, ampforwp
3
+ Tags: AMP, accelerated mobile pages, mobile, amp project, google amp, amp wp, google, plugin, SEO
4
+ Donate link: https://www.paypal.me/Kaludi/25
5
+ Requires at least: 3.0
6
+ Tested up to: 4.9.8
7
+ Stable tag: 0.9.97.10
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ AMP for WP is the most recommended AMP plugin by the community. Automatically add Accelerated Mobile Pages (Google AMP Project) functionality on your WordPress site.
12
+
13
+ == Description ==
14
+ AMP for WP automatically adds Accelerated Mobile Pages (Google AMP Project) functionality to your WordPress site. AMP makes your website faster for Mobile visitors.
15
+
16
+ [What's New in this Version?](https://ampforwp.com/new/) | [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) | [View Demo](https://ampforwp.com/demo/) | [Screenshots](https://wordpress.org/plugins/accelerated-mobile-pages/screenshots/) | [Community](https://ampforwp.com/community/)
17
+
18
+ [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
19
+
20
+ [youtube https://www.youtube.com/watch?v=QTbkn2rHyqM]
21
+
22
+ <strong>Extensions</strong><br>
23
+ Some useful extensions to extend AMP features, check [AMP Adsense Support](https://ampforwp.com/advanced-amp-ads/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Contact Form 7 Support](https://ampforwp.com/contact-form-7/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin), [Email Opt-in Support](https://ampforwp.com/opt-in-forms/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) and [Call To Action Support](https://ampforwp.com/call-to-action/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin). To view more, go to our [Extensions page](https://ampforwp.com/extensions/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin).
24
+
25
+ <strong>Premium Support</strong><br>
26
+ We try our best to provide support on WordPress.org forums. However, One-on-one email support is available to people who bought the [Priority Support](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin) only.
27
+
28
+ <strong>Bug Reports</strong><br>
29
+ Bug reports for AMP for WP are [welcomed on GitHub](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages). Please note GitHub is _not_ a support forum, and issues that aren't properly qualified as bugs will be closed.
30
+
31
+
32
+ = Features: =
33
+
34
+ * NEW - GDPR Compliance
35
+ * NEW - Introducing Page Builder 3.0 for AMP! [Learn More & Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
36
+ * NEW Default Theme for AMP called Swift
37
+ * NEW - 3 Pre-built AMP Layouts for Business websites and landing pages
38
+ * NEW - Alexa Metrics Compatibility added
39
+ * NEW - OneSignal Push Notifications integration
40
+ * NEW - Advanced WooCommerce Support [More Info](https://ampforwp.com/woocommerce/)
41
+ * Gravity Forms Support [More Info](https://ampforwp.com/gravity-forms/)
42
+ * AMP Plugins Manager - Which allows you to disable a specific plugin functionality only in the AMP version
43
+ * Structured Data Options
44
+ * Page Break / NextPage (Pagination) Support
45
+ * Contact Form 7 Support [More Info](https://ampforwp.com/contact-form-7/)
46
+ * Facebook Comments Support
47
+ * Github Gist Support
48
+ * Email Opt-in Subscription form support in AMP added
49
+ * Call to Action boxes and notification bars
50
+ * 9 Advertisement sizes - 2 More AD slots added recently
51
+ * Comments Forms in AMP.
52
+ * Native AMP Search functionality.
53
+ * Design 3 [Watch the Video Overview](https://www.youtube.com/watch?v=ub1pwskt3Rc)
54
+ * Disqus Comments Support
55
+ * Google Tag Manager Support
56
+ * Page, Category & Tags Support Added
57
+ * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
58
+ * Mobile Redirection - More than 50% of your traffic is from mobile and you aren’t doing anything to improve their user experience, which means you are falling behind on SEO and it can result in lower SERPS. Lightning fast mobile version means faster User experience means more engagement which directly results in the lower bounce rate.
59
+ * Custom Post Type Support
60
+ * Star Ratings
61
+ * Drag & Drop Page builder Added
62
+ * 4 Designs for AMP
63
+ * Yoast SEO support on AMP pages and other SEO plugins
64
+ * AMP WooCommerce Support
65
+ * Switch on/off Support for Pages & Posts on AMP
66
+ * Translation Panel & RTL
67
+ * Internal AMP linking - You can browse AMP pages internally
68
+ * Related posts below the post
69
+ * Recent Comments list
70
+ * Automatically integrate AMP to your website.
71
+ * Google Adsense (AMP-AD) Support with 4 different Ad slots across the layout! The First Plugin to have this capability.
72
+ * Google Analytics Support.
73
+ * User Friendly Theme Options Panel.
74
+ * Unlimited Color Scheme.
75
+ * Image Logo Upload.
76
+ * Supports Posts and Pages.
77
+ * Proper rel canonical tags which means that Google know the original page.
78
+ * Overlay Navigation Menu bar.
79
+ * Social Sharing in the Single.
80
+ * Sexy Design.
81
+ * Separate WordPress Menu for AMP version.
82
+ * Page builder & Shortcodes Compatibility.
83
+ * Carousel support for Gallery.
84
+ * Better Image stretching and resizing.
85
+ * Youtube Video Embed Support.
86
+ * Vine Embed Support.
87
+ * Twitter oembed Support.
88
+ * Instagram Embed Support.
89
+ * Facebook Video Embed Support.
90
+ * RTL Support
91
+ * Custom AMP FrontPage
92
+ * Notifications
93
+ * Chartbeat, Hi-stats, Yandex Metrika, Piwik, Segment.com, StatCounter, Effective Measure and comScore Support
94
+ * Incontent & DoubleClick Support
95
+ * Great Support & Active Development.
96
+ * Widgets & WooCommerce
97
+ * Genesis SEO Support
98
+ * Breadcrumb Support added
99
+ * Facebook Instant Articles Support Added
100
+ * AMP Installation Wizard that makes it easy to setup for new users.
101
+ * Category base remover support
102
+ * Tag base remover support
103
+ * 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber)
104
+ * AMP Theme Framework Core Support Added. You can now create AMP templates of your own in just minutes. **[More](https://ampforwp.com/amp-theme-framework/)**
105
+ * NEW - Make AMP & Non-AMP Same with just one click!
106
+ * NEW - Allows you to use AMP as primary website!
107
+
108
+ **[JOIN CHAT GROUP COMMUNITY](https://ampforwp.com/community/)**: Purpose of this group is to get proper suggestions and feedback from plugin users and the community so that we can make the plugin even better.
109
+
110
+ = Getting Started: =
111
+ **[1. User Documentation:](https://ampforwp.com/help/)** The AMP for WordPress plugin is easy to setup but we have some tutorials and guides prepared for you which will help you dive deep with the plugin.
112
+
113
+ **[2. Developer Docs:](https://ampforwp.com/help/#extend)** We have created special documentations for developers and semi technical users who are willing to modify the plugin according to their own needs.
114
+
115
+ **[3. Fixing AMP Validation Errors:](https://ampforwp.com/priority-support/#utm_source=wp_org&utm_medium=description-tab-pro-box&utm_campaign=AMP%20Plugin)** We will personally take care that your website’s AMP version is perfectly validated. We will make sure that your AMP version gets approved and indexed by Google Webmaster Tools properly and we will even keep an eye on AMP updates from Google and implement them into your website.
116
+
117
+ **[4. Community Support Forum:](https://ampforwp.com/help/#support-forum)** We have a special community support forum where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means alot to us and so we try our best to reply each and every question that gets asked.
118
+
119
+ **[5. Frequently Asked Questions:](https://ampforwp.com/faq/)** Some of the Frequently Asked questions.
120
+
121
+
122
+ == Installation ==
123
+ **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
124
+
125
+ [youtube https://www.youtube.com/watch?v=Em1nsE_KaKw]
126
+
127
+ **[Visit Help area for the Documentation:](https://ampforwp.com/help/)**
128
+
129
+
130
+ == Frequently Asked Questions ==
131
+
132
+ = Can I add analytics? =
133
+
134
+ Yes, you easily can. In fact, we have support for 12 Analytics companies. Including Google Analytics, Facebook Pixel, StatCounter, QuantCast, Chartbeat, comScore to list a few. Also, we have Google Tag Manager (GTM) support as well.
135
+
136
+ = Can I add Ads in my AMP pages? =
137
+
138
+ Yes, you can. We have 6 ad placement slots that are built in and strategically placed to get maximum views. Also, we have [an extension](https://ampforwp.com/advanced-amp-ads/) from which you can insert ads between the content, will get more ad slots and also add custom banners to all the available slots.
139
+
140
+
141
+ = Can I extend/Change the AMP design, so it suits my needs? =
142
+
143
+ Yes, you easily can. We have created this plugin in such a way that it can easily be extended. Check out our [AMP Theme Framework](https://ampforwp.com/tutorials/article/getting-started-amp-framework/)
144
+
145
+
146
+ = Do you have any prebuilt designs? =
147
+
148
+ Yes, we have AMP themes section where we have free and paid designs available. We also update it regularly. You can check it out our [AMP Themes](https://ampforwp.com/themes)
149
+
150
+
151
+ = I'm a developer and I want to add custom functionality for a client, can I do that? =
152
+
153
+ Yes, of course. This plugin is very developer friendly, we have lots of hooks and filters that you can use to extend and customize according to the requirements. Also, we have [developer documentation](https://ampforwp.com/tutorials/article-categories/developer-documentation/) which we update regularly.
154
+
155
+
156
+ = How do I report bugs and suggest new features? =
157
+
158
+ You can report the bugs [here](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues)
159
+
160
+ = Will you Add New features to my request? =
161
+
162
+ Yes, Absolutely! We would suggest you send your feature request by creating an issue in [Github](https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues/new/) . It helps us organize the feedback easily.
163
+
164
+
165
+ = How do I get in touch? =
166
+
167
+ You can contact us from [here](https://ampforwp.com/contact/)
168
+
169
+
170
+ == Screenshots ==
171
+ 1. AMP Homepage
172
+ 2. AMP Single Post
173
+ 3. Post Navigation in Single
174
+ 4. Sticky Social sharing icons
175
+ 5. Overlay Navigation menu sidebar.
176
+ 6. Page builder of the Single article. You can drag and drop any element.
177
+ 7. Single post of Design One
178
+ 8. GTMetrix Performance Report
179
+ 9. Google PageSpeed Insight report for AMP
180
+ 10. Homepage of Design One
181
+ 11. Pingdom Speed Report for AMP
182
+
183
+
184
+ == Changelog ==
185
+
186
+ = 0.9.97.10 (18th August 2018) =
187
+ * Fixed: Homepage build with AMP PageBuilder is displaying only when the checkbox of the Custom AMP editor is enabled #2350
188
+ * Added: Created a new function to get the settings instead of calling it directly from global $redux_builder_amp everytime. `ampforwp_get_setting` created #2177
189
+ * Fixed: Comments and share not loading on pages only in swift #2401
190
+ * Fixed: Back to Top link not working in Swift Design #2404
191
+ * Added: Ads Below the Author Area in Swift theme #2455
192
+ * Fixed: AMP should remove spaces from GTM ID automatically #2413
193
+ * Fixed: Some Posts are not displaying in Blog page even when AMP is enabled from Post settings #2375
194
+ * Fixed: Wrong AMPHTML when using static page as blog using custom-code/pagebuilder from reading settings #2396
195
+ * Added: Add paginations meta tags #2343
196
+ * Fixed: Updated the code of AMP renders with ?q after the /amp #2361
197
+ * Added: Add support for Relevanssi search #2307
198
+ * Added: Show index/noindex label when enabling the options in SEO Settings #2290
199
+ * Added: Add AMP consent in AMP Theme Framework #2440
200
+ * Added: Created a component called `AMP-geo` so anyone can use it in thier AMP theme #2440
201
+
202
+ = 0.9.97.9 (1st August 2018) =
203
+ * Minor Improvements
204
+
205
+ = 0.9.97.8 (24th July 2018) =
206
+ * Fixed: AMP renders with ?q after the /amp #2361
207
+ * Fixed: iThemes Sync can not connect to the site. #2380
208
+ * Fixed: H1 to H6 styling is not reflecting in the Swift theme #2383
209
+ * Fixed: Underline on Links function is not working. #2372
210
+ * Fixed: WordPress Admin Color Scheme not applying #2390
211
+ * Fixed: Breadcrumbs are not disabling when the sidebar template is selected #2376
212
+ * Fixed: All the Images are Adding AMP at the End of their URL. #2391
213
+
214
+ = 0.9.97.7 (18th July 2018) =
215
+ * Fixed: PageBuilder not loading on frontpage #2360
216
+ * Fixed: 500 error on somepages due to open wp_query by other plugins
217
+ * Fixed: License key reupdating #2261
218
+ * Fixed: AMP renders with ?q after the /amp #2361
219
+
220
+ = 0.9.97.6 (14th July 2018) =
221
+ * Fixed: Error and Warning on Structured Data for Logo. #2360
222
+ * Fixed: Category Bulk tool breaking meta boxes #2335
223
+
224
+ = 0.9.97.5 (11th July 2018) =
225
+ * Fixed: Title disappearing in Design 1,2,3 when legacy pagebuilder is enabled #2341
226
+ * Fixed: ld+json getting a broken when special characters are added in the image. #2346
227
+ * Fixed: Hide by Category Breaking post metabox #2330
228
+ * Fixed: Hiding excerpt when global $redux_builder_amp is empty #2330
229
+ * Fixed: When Google Tag Manager is enabled, only Google Analytics should get disabled but not other analytics. #2340
230
+
231
+ = 0.9.97.4 (09th July 2018) =
232
+ * Fixed: Huge Performance upgrade in the way fetching the logo url #2317
233
+ * Fixed: Fatal Error due to unable to modify values in Structured Data Object #2327
234
+ * Fixed: Seperate option for Featured Image in pages in Swift theme #2328
235
+ * Fixed: `<p>` tags disabling where not wanted #2330
236
+ * Fixed: Fatal error in contact form module while ninja form or gravity form plugins are not activated #2310
237
+ * Fixed: Woo Commerce Category page not working properly #2333
238
+ * Fixed: Few issues related to amp-facebook-comments #2300
239
+ * Fixed: Limit number of Tags and Category to 500 in Hide AMP-Bulk tools #2336
240
+
241
+ = 0.9.97 (27th June 2018) =
242
+ * For more details check out [the blog post](https://ampforwp.com/0-9-97-released-strengthening-of-foundation-89th-update/)
243
+ * Fixed: Extraposition attribute left in CSS Design #2 #2119
244
+ * Fixed: Non-AMP header link not working #2109
245
+ * Added: Create an Ad Above the Post Content #2155
246
+ * Fixed: "AGO" text was not translatable #2158
247
+ * Added: Filter created `ampforwp_header_url` to modify logo url #2141
248
+ * Fixed: Removing the text "amp" in footer view non-amp-link #2158
249
+ * Added: Compatibility WP user Avatar plugin added #2011
250
+ * Fixed: Design 2 - meta info producing a block of empty HTML #1969 #1954
251
+ * Added: Pocket and Hatena Bookmark social share buttons Added #1652
252
+ * Fixed: External Links are appended with "amp" at the end of the url in content. #2174
253
+ * Fixed: Some Issues Found in Design #3 #2130
254
+ * Fixed: ScoopVersion: 1.4 By boostdevelopers theme displaying the error only in the category #1683
255
+ * Fixed: Page featured Image is not displaying in the Swift theme #2136
256
+ * Fixed: Dropcap breaking the youtube embed code #2157
257
+ * Fixed: Bulk hide by default option is requires Permalinks to be saved #2145
258
+ * Fixed: Fully compatibility with muffin page builder #2180
259
+ * Fixed: Incontent Related Post Issues #2078
260
+ * Fixed: Search page should not have AMP version of the page and not in search result #2191
261
+ * Added: Control added to modify Retina Images resolutions #2099
262
+ * Added: Created an option to duplicate a page builder element #1986
263
+ * Added: Image Caption is not displaying below the Image in design 1,2,3 #2101
264
+ * Fixed: Post pagination not working properly in D1, D2 and D3 #2168 #2243
265
+ * Fixed: Auto re-save permalink if the options in reading setting page get changed #2190
266
+ * Fixed: Leave a comment not looking good in Swift theme #2150
267
+ * Added: Social icons for pages. #2162
268
+ * Added: Create an option to pull canonical from Yoast #2118
269
+ * Added: Full Support for All in one SEO #1720
270
+ * Fixed: Single with sidebar CSS should only load if that layout type is selected #2091
271
+ * Fixed: Required Filed is not working in the Repeater in Page builder #2217
272
+ * Fixed: alt in `<div>` causing validation errors. #2093
273
+ * Added: Drop Down Menu Support in Swift Header Menu #2095
274
+ * Added: Parallax Setting Added in PageBuilder #2095
275
+ * Added: Multiple Layout Settings added in Feature Module in Page Builder #2095
276
+ * Added: Add the option changing the sliding speed of slider in "Slider module" of AMP Page Builder #2218
277
+ * Added: Created an option Related Post link in non amp #2201
278
+ * Fixed: Removed Jannah LazyLoad on AMP Mode #2224
279
+ * Fixed: Custom post types with custom taxonomy not working in AMP #2209
280
+ * Fixed: frontpage and homepage not working properly AMP take over #2153 #2277
281
+ * Added: Button field created in Feature module #2068
282
+ * Added: Excerpt should also work on homepage and categories page #2176
283
+ * Fixed: Options panel breaks in when RTL in WP Dashboard #2176
284
+ * Fixed: Featured image from Custom fields in page builder Category module #2237
285
+ * Added: Forms Module Support added in PageBuilder #2221
286
+ * Fixed: Paginated AMP URL on the category are opening to 404-page #2233
287
+ * Fixed: Ads not displaying properly in RTL #2227 #2138
288
+ * Fixed: single quotation (') in text module breaking AMP page builder #1940
289
+ * Added: Filter created to modify `ampforwp_loop_image_update` image arguments in components of AMP theme framework #2057
290
+ * Added: Option to change the locale of Facebook comments #2127
291
+ * Added: Search option in options panel #2088
292
+ * Fixed: Accordion not working when the user enters some data in Description with HTML Tags #2088 #2097
293
+ * Fixed: Internal links now working with ?amp=1 #2204
294
+ * Fixed: UTM Parameters not working properly with AMP #2223
295
+ * Fixed: Multiple Slider module of AMP Page builder not working #2090
296
+ * Fixed: Hide AMP by categories option should hide by default in the backend of that specific post #2112
297
+ * Added: IP Anonymization in Google analytics #2135
298
+ * Fixed: Improvement in the styling of AMP option panel #2102
299
+ * Added: Added new fonts control for Content in Single page #2122
300
+ * Fixed: Legacy page builder button styling is not loading properly #2036
301
+ * Added: Filter added so we can disable Comments on specific pages `ampforwp_comments_visibility` #2170
302
+ * Fixed: Improvement in Excerpt on small screen option #2034
303
+ * Added: Comments on Pages #2229
304
+ * Fixed: Pagination not working for some websites #2241
305
+ * Fixed: "Menu" option in Footer connected with Swift #2146
306
+ * Added: Wistia Support #1875
307
+ * Added: Add option in page builder to give the specific name to all modules #2251
308
+ * Added: Compatibility with Muffin Builder #2137
309
+ * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
310
+ * Fixed: AMPforWP Option panel styles are overriding other theme's options panel if both use Redux Framework #2121
311
+ * Added: Render all the AMP Components added in Post Editor #2216 #2228
312
+ * Fixed: "Gap" Module of ThemeCo breaking the AMP pages #2220
313
+ * Added: Search widget compatibility #2143
314
+ * Added: Advertisement Module created in AMP Pagebuilder #2131
315
+ * Fixed: Performance issue with the function `ampforwp_get_comments_gravatar` #2234
316
+ * Fixed: Empty the amp pages, when the Clearfy HTML compress is enabled #2110
317
+ * Fixed: The attribute 'value' appearing in tag 'a' throwing the validation error #2262
318
+ * Fixed: Versioning of Styles and Scripts of redux-core #2126
319
+ * Added: Related Posts based on X days #2132
320
+ * Fixed: Warning in custom-sanitizer.php #2173
321
+ * Added: vuukle comment support #2075
322
+ * Fixed: Facebook Comment should not appear on the Checkout page, Add to cart page, or shop page #2170
323
+ * Added: SpotIM comment support #2075
324
+ * Added: Additional Controls added in Design3 Featured slider #2222
325
+ * Fixed: Username in AMP Option panel color was too light #2266
326
+ * Added: Settings created to modify H1 to H6 #2059
327
+ * Fixed: AMP_QUERY_VAR debug issue #2265
328
+ * Added: Custom page template in AMP #1923
329
+ * Fixed: Comments Button is not displaying in Design #3 #2163
330
+ * Added: Ability to add Forms Shortcodes in footer Widgets #2226
331
+ * Added: Option to add rel="nofollow" in AMP page builder button module #2239
332
+ * Added: Background video option in amp page builder #2195
333
+ * Fixed: Drop Down Menu Support in Swift Header Menu #2095
334
+ * Fixed: Yoast Description not getting added in AMP #2159
335
+ * Fixed: Improvement in styling of AMP option panel #2102
336
+ * Fixed: Hide AMP Bulk Tools Improvements #1867
337
+ * Added: Compatibility with the Relevanssi Plugin #1503
338
+
339
+ = 0.9.96 (2nd June 2018) =
340
+ * Added: Fully GDPR Compliance
341
+ * Fixed: GTM not working
342
+
343
+ = 0.9.86.1 (8th May 2018) =
344
+ * A bug causing validation issues has been resolved.
345
+
346
+ = 0.9.86 (3rd May 2018) =
347
+ * For more detials check out [this blog post](https://ampforwp.com/0-9-86-released-getting-ready-for-future-87th-update/)
348
+ * Added: GDPR Compliancy #2040
349
+ * Added: Muffin Page Builder Compatibility #1455 #1893
350
+ * Added: Thrive leads compatibility #2067
351
+ * Fixed: Load structured markup json in Footer to improve performance #1945
352
+ * Added: Font Size and Font Family Controls added in Content Presentation Module #1962
353
+ * Added: Font Weight Control added in Text Module in PageBuilder #1962
354
+ * Added: Other necessary controls added in Content Presentation Module #1962
355
+ * Added: New Design called "Design 4" added in Content Presentation Module. #1962
356
+ * Fixed: License Activation process connected with AMP extensions #1981
357
+ * Added: Icon Selector control added in Button module in AMP Page Builder #1962
358
+ * Added: Filter called `ampforwp_get_comments_gravatar` to modify Author Avatar Images #1949
359
+ * Fixed: Validation error fixed by removing json+ld values to remove CDATA #1977
360
+ * Added: Icon Adjustment Option is added in the Button Module #1962
361
+ * Fixed: Debug Warnings fixed #1976
362
+ * Fixed: If AMP support on post and page is disabled then mobile redirection was not working #1979
363
+ * Fixed: Responsive element added in Image Module #1962
364
+ * Fixed: Custom Post and Custom Taxonomies Archives not working in AMP #1957
365
+ * Fixed: AMP take over is on and AMP support on the home page is disabled it was redirecting to some other pages #1994
366
+ * Fixed: Design 1 and Design 2 shouldn't show 'social' tab #1996
367
+ * Added: AMP WordPress Theme notice
368
+ * Added: Rewrite Rules Added for WooCommerece #1957
369
+ * Fixed: AMP Takeover blog search results giving blank page #1990
370
+ * Fixed: Swift pagination markup is present even the page has no pagination #2000
371
+ * Fixed: Pagination breaking on second page on Archives when Blog page is not set #1998
372
+ * Fixed: Added proper Google API jump link #1966
373
+ * Fixed: Advance Index and no-index controls did not had description #1978
374
+ * Added: Filter added `amp_blacklisted_tags` in blacklist-sanitizer file
375
+ * Added: Hyperlink for image module added #1989
376
+ * Added: `ampforwp_get_frontpage_id` a common fucntion created to get post id for AMP frontpage #2025
377
+ * Fixed: Comments controls were not working properly #1987
378
+ * Fixed: Fatal Error after updating the plugin from 0.9.73 to 0.9.83 version #2017
379
+ * Fixed: Filter created `ampforwp_modify_rel_url` to modify rel canonical URL #2012
380
+ * Fixed: Remove structured data json if removed from AMP options panel
381
+ * Fixed: amp widget appearing twice in design one #2008
382
+ * Fixed: Gif in content + Lightbox feature throws validation issue. #2032
383
+ * Added: New Features in the Page builder Modules #2029
384
+ * Fixed: License Key was not working properly #2026
385
+ * Fixed: Instagram comment view is getting cut off in Swift Theme #2002
386
+ * Added: Icon module support added in Desgin 1, 2 & 3 #1997
387
+ * Fixed: if GD or ImageMagick library is not present in the server then send the original image #2037 #2038
388
+ * Fixed: Swift theme homepage (Non-AMP) image resizing issues in Mobile version #1992
389
+ * Fixed: Header Element not working in Swift theme #1967
390
+ * Fixed: Stop Loading of Latest post scripts on Homepage and Frontpage #2041
391
+ * Added: Filter created `ampforwp_non_amp_links()` so users can have all the internal links non-amp #1973
392
+ * Fixed: Sanitize the archive description in loop component #1974
393
+ * Fixed: Double AMPHTML when FBIA Plugin is active #2043
394
+ * Fixed: Image Div is loading even if the image is not present in Swift #2033
395
+ * Fixed: Custom AMP editor is visible on pages (post type) even if the Page Support is off from amp options panel #2047
396
+ * Fixed: When 'Structure Data for WP' plugin active, Schema type in Structure section should hide #2049
397
+ * Fixed: Bugs in Video Module in AMP pagebuilder #2048
398
+ * Added: Autoplay feature added in Video Module #2048
399
+ * Fixed: Throwing error when Product Structured Data is selected #1975
400
+ * Fixed: Advanced CSS is not loading because the files are with hosting path #2046
401
+ * Fixed: Double Quotes breaking the html #2004
402
+ * Removed: Blog option is removed from AMP Options panel and it is connected with Pages option Under Reading Settings #2027
403
+ * Fixed: amphtml should not be created for 404 pages #2018
404
+ * Added: 404 Template added, useful for AMP Takeover #2042
405
+ * Fixed: Genesis meta titles are lost and not rendering correctly #2050
406
+ * Fixed: Search blank on AMP Takeover #1990
407
+ * Fixed: Remove Unused js files from Paginated Post Pages #2001
408
+ * Fixed: Extra Space adding in H1 and other SEO tags #2054
409
+ * Fixed: Undefined Index when called from robot #1960
410
+ * Fixed: amp facebook comment Js not loading to the custom front page of the swift theme. #2053
411
+ * Fixed: Tags label is not working properly when RTL Support on #1719
412
+ * Fixed: View Non-AMP Version In the footer link has an error #2066
413
+ * Fixed: Squirrly SEO is Adding the Javascript code in AMP #1696
414
+ * Fixed: Translation option issue when using POT file method #1941
415
+ * Fixed: amp-facebook-like extension is missing on Custom Frontpage #2061
416
+ * Fixed: GTM option repositioned #2056
417
+ * Fixed: Menu is appearing on left side instead of Right side when RTL support is ON for Design3 #1928
418
+ * Fixed: Sidebar Bugs #1972
419
+ * Added: Table Styling in Swift #1961
420
+ * Fixed: Genesis index, follow options not being rendered #2071
421
+ * Added: Filter created `ampforwp_robots_meta` to modify robots meta information #2071
422
+ * Fixed: PHP Notices #2065
423
+ * Added: Add a new hook `ampforwp_after_amp_menu` after the menu in all designs #2072
424
+ * Added: New Look to Options panel #1823
425
+ * Added: Retina Image Support added #1846
426
+ * Fixed: Pagebuilder hrefs were stripped in hebrew language #2089
427
+ * Fixed: Warning Fixed #2083
428
+ * Fixed: Gallery module images not loading in Firefox #1980
429
+ * Fixed: Pagebuilder Improvement #2024
430
+
431
+ = 0.9.85.5 (21st April 2018) =
432
+ * Added: Filter added to modify frontpage post id `ampforwp_modify_frontpage_id`
433
+ * Added: Filter added to modify amp template directory `ampforwp_template_locate` #1982
434
+ * Other minor bugs fixed
435
+
436
+ = 0.9.85.3 (12th April 2018) =
437
+ * Added: Custom Post type Archive Page support #1995
438
+ * Fixed: AMP TakeOver redirection issues #1994
439
+ * Fixed: Debug errors #1976
440
+ * Fixed: Social Profile pages were hidden for Design 1 to 3 #1996
441
+ * Fixed: Structured Data insertion was adding CData causing validation error #1999
442
+
443
+ = 0.9.85.2 =
444
+ * Minor Bugs fixed
445
+
446
+ = 0.9.85.1 =
447
+ * Minor Bugs fixed
448
+
449
+ = 0.9.85 (3rd April 2018) =
450
+ * For more detials check out [this blog post](https://ampforwp.com/0-9-85-released-stability-update-86th-update/)
451
+ * Fixed: Fatal error: Allowed memory size on FrontPage #1865
452
+ * Fixed: Proper Parameters for Pinterest Sharing #1853
453
+ * Added: Extra settings added in Button Module
454
+ * Added: Extra settings added in Text Module
455
+ * Fixed: Proper Parameters for Pinterest Sharing
456
+ * Fixed: Unwanted fields are removed form the Repeater in Button module
457
+ * Added: Enable/disable option added Related Posts #1829
458
+ * Fixed: Legacy PageBuilder option Repositioned #1851
459
+ * Fixed: Display the img tag only if source is present #1869
460
+ * Fixed: Huge design improvements in Swift theme #1818
461
+ * Added: Hook for Between Related Post is Added #1874
462
+ * Added: Blurb module text size and background color added
463
+ * Fixed: Comments Pagination issues #1816
464
+ * Added: Counter Module added
465
+ * Fixed: Date 48 years ago #1864 #1876
466
+ * Added: Ability to pass post id in amp_content() #1872
467
+ * Fixed: Changed the way images we fetched in WooWidget #1847
468
+ * Fixed: Changed the position of layout in Pagebuilder #1873
469
+ * Added: Pricing Module
470
+ * Fixed: Changed the position of layout in Pagebuilder #1873
471
+ * Fixed: amp_aq_resizer was not able to process the outside url #1881
472
+ * Fixed: Advanced Google Analytics improvements #1630 #1860
473
+ * Added: Field Added For ON & OFF in Page builder #1870
474
+ * Fixed: Two paginations in search pages in Swift theme #1855
475
+ * Fixed: Extra Div if categories not available #1856
476
+ * Fixed: removed debuged tags #1870
477
+ * Fixed: Published date connected with AMP options Panel #1888
478
+ * Added: Featured Image option in Swift #1889
479
+ * Added: Separate Blog settings #1887
480
+ * Fixed: single post ads should not load on pages #1896
481
+ * Fixed: Ads should not load on FrontPage if PageBuilder is enabled #1885
482
+ * Fixed: Background Image Support for the Columns #1871
483
+ * Added: Blockquotes design for Swift #1894
484
+ * Added: Co-Authors Plus compatibility #1895
485
+ * Added: pagebuilder for custom post types #1884
486
+ * Added: Border option is connected to options panel #1818
487
+ * Added: Responsive AD unit support #1852
488
+ * Added: Sub category arrow symbol is added in Swift theme #1818
489
+ * Added: Search text color is connected to options panel #1818
490
+ * Fixed: Removed notice when no posttype selected #1884
491
+ * Added: Ability to overwrite page template the WordPress way like front-page.php and page-{id}.php #1902
492
+ * Added: Ability to overwrite author page template the WordPress way like author.php and author author-name.php #1902
493
+ * Added: Lightbox Support for the images #1892
494
+ * Fixed: No mobile redirection when Dev mode is enabled #1907
495
+ * Added: Option to hide Author name in Swift #1890
496
+ * Fixed: Script facebook-comments should not load for Frontpage #1897
497
+ * Added: amp-facebook comments for AMP2WP #1911
498
+ * Added: Alt tag in all modules #1898
499
+ * Added: Sanitizers in Footer and sidebar widget in Swift #1835
500
+ * Added: Dropcap support #1900
501
+ * Added: Proper styling for iframes and videos in Swift theme #1909
502
+ * Fixed: Non-AMP link fixed for AMP Takeover #1916
503
+ * Fixed: Swift connected with Breadcrumb option #1915
504
+ * Added: Uninstall option created to completely remove AMPforWP data #1903
505
+ * Fixed: Recipe Structured Data requires name attribute #1917
506
+ * Fixed: No amphtml when It is hidden from Categories #1919
507
+ * Fixed: Content is breaking when Inline Related Post option is enabled #1912
508
+ * Fixed: Proper redirection setup for AMP Takeover #1913
509
+ * Added: Social media profiles added in menu #1901
510
+ * Fixed: No Ads should display on Frontpage or Posts if Pagebuilder is enabled #1885
511
+ * Added: #1899 Proper conditions for amp-analytics script
512
+ * Fixed: Turn off option not working by default fixed #1537
513
+ * Fixed: BreadCrumbs Should not load when PageBuilder is enabled #1925
514
+ * Fixed: Removed unwanted elements loading while pagebuilder is enabled #1929
515
+ * Fixed: amp-web-push should not load on Homepage and Blog #1930
516
+ * Added: SmartMag theme Compatibility #1905
517
+ * Fixed: Template overriding not working in child theme #1920
518
+ * Fixed: Horizontal scrolling in Swift #1844
519
+ * Fixed: Home page title should not be visible in AMP takeover #1921
520
+ * Added: Carousel Module Added #1937
521
+ * Fixed: Comments pagination not working #1816
522
+ * Fixed: Comments pagination not working #1816
523
+ * Added: Glue html css compatibility #1932
524
+ * Added: Data Caption Support on AMP Instagram Embed #1938
525
+ * Added: Ability to pass {author_name} and {author_id} added in Advance Analytics #1936
526
+ * Fixed: Scrollbar in Header area in Swift in firefox #1818
527
+ * Added: Disqus iframe height adjustment option #1935
528
+ * Fixed: Options panel conflict fixed with Mobius theme #1942
529
+ * Fixed: Problem with Button in Mobile view in Swift #1926
530
+ * Fixed: Removed canvas tag in AMP version causing validation errors #1880
531
+ * Fixed: Getting Conflict with Facebook Button by BestWebSoft #1740
532
+ * Added: Option to enter the "ID" on CTA button module #1931
533
+ * Added: Option for open same window in CTA module of page builder #1866
534
+ * Fixed: Logo fetch causing Huge performance issue #1679
535
+ * Fixed: Blurb module's default values were not set #1952
536
+ * Fixed: Allow script with application/ld+json #1958
537
+
538
+ = 0.9.84 (14th March 2018) =
539
+ * Added: Polylang Frontpage compatibility added #1779
540
+ * Fixed: Proper link for Linkedin added #1820
541
+ * Fixed: Incorrect function name was Added #1827
542
+ * Fixed: Thumbnail resizing issue in Swift #1828
543
+ * Fixed: Thumbnail issue in Loops of Design 3 #1714
544
+ * Fixed: Hide post builder for Swift #1824
545
+ * Fixed: To avoid warnings when there are no pages in WordPress #1810
546
+ * Fixed: Condition for the Thumbnail for Swift #1733
547
+ * Fixed: Proper Styling for footer for Swift #1733
548
+ * Fixed: Line height issue and CSS editor not working in Swift #1821
549
+ * Fixed: Renamed aq_resize to ampfrowp_aq_resize to avoid conflicts #1838
550
+ * Fixed: Add the prefix to avoid conflicts #1817
551
+ * Fixed: Added Custom format option in amp_date #1845
552
+ * Fixed: Removed amp-img tag where blank SRC in Page builder #1843
553
+ * Fixed: Pagebuilder modal max-height removed so it will become full width #1843
554
+ * Added: An option for select target type in Button Module #1822
555
+ * Fixed: Remove AMP category widget if swift is enabled #1790
556
+ * Fixed: Filter added change mode type #1833
557
+ * Added: Rewrite rule for .html blog page #1775
558
+ * Fixed: Filter added change mode type #1833
559
+ * Fixed: Swift Footer Widget Sanitizer Added #1800
560
+ * Fixed: No OneSignal widget when PageBuilder is enabled #1840
561
+ * Fixed: span tag added around the pagination text #1834
562
+ * Added: Page specific option to add script/html and styles in page builder #1831
563
+ * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
564
+ * Added: Jarida theme compatibility added #1842
565
+ * Fixed: noindex,nofollow in AMP when Dev mode is enabled #1839
566
+ * Fixed: Replace value attribute only from html tags. Otherwise it is removing value from * shortcodes which is breaking the whole page. #1738
567
+ * Added: Underline option for content links added #1808
568
+ * Added: Page specific option to add RTL in page builder #1858
569
+ * Added: Converts AMP ads to normal so ads show when takeover is enabled in Normal Mode #1724
570
+ * Added: Converts AMP Analytics to normal so Analytics works when takeover is enabled in Normal Mode #1724
571
+ * Fixed: Phone icon proper alignment in Design3 #1730
572
+ * Added: ADS for WP activation box in Extensions tab
573
+ * Added: New design field added #1861
574
+
575
+ = 0.9.83.1 (8th March 2018) =
576
+ * Fixed: Pagebuilder contents not shows on custom home page #1794
577
+ * Added: Header hook added `ampforwp_advance_header_layout_options`
578
+ * Fixed: Load admin files only in admin pages #1799
579
+ * Fixed: Conflict with WP bakery pagebuilder #1783
580
+ * Fixed: Slide in Menu break in RTL mode #1825
581
+ * Fixed: Validation issue in loops due to empty attributes #1795
582
+ * Fixed: Featrued Image connected Properly with Swift theme #1733
583
+ * Fixed: Changed the disqus.php to disqus.html to pass authentication #1788
584
+ * Added: CSS styling for Loop on shop page #1803
585
+ * Fixed: Facebook comments not work in swift #1789
586
+ * Fixed: Style AMP Category module in Footer swift #1790
587
+ * Fixed: Load aq_resizer only in AMP #1805
588
+ * Fixed: Proper markup for Pinterest in Design3 and Swift #1793
589
+ * Fixed: Proper url for vk
590
+
591
+ = 0.9.83 (03rd March 2018) =
592
+ * Added: Ability to add amp-carousel and amp-selector directly into WYSIWYG Editor #1588
593
+ * Fixed: Debug error caused by Playbuzz Sanitizer #1674
594
+ * Added: Show default gravatar for comments #1758
595
+ * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
596
+ * Fixed: To avoid debug error in swift
597
+ * Fixed: Translation improved for some strings #1678
598
+ * Fixed: Stop AMP takeover for Feed pages #1767
599
+ * Fixed: Menu issues In Design 1 & Design 2 after changing from AMP-Sidebar #1565
600
+ * Fixed: AMP Options panel Not Working After Update (0.9.82.1) version #1761
601
+ * Fixed: Move the label to the top [UX improvement] #1746
602
+ * Fixed: Error with Vue #1745
603
+ * Added: Video Module added in AMP Page Builder #1750
604
+ * Fixed: Sidebar menu is not scrollable swift theme #1769
605
+ * Fixed: View Non-AMP should be usertrailingslashit #1772
606
+ * Fixed: Proper structured data for Blogpage #1660
607
+ * Fixed: Legacy Page Builder not working after the update #1773
608
+ * Fixed: Content blank when only image in content #1778
609
+ * Fixed: Comment ID display issue fixed #1758
610
+ * Fixed: PHP Warning: A non-numeric value encountered in components/logo/logo.php on line 52 #1764
611
+ * Fixed: Yummly support added in Swift #1708
612
+ * Fixed: Demo Link updated #1781
613
+ * Fixed: CSS is not loading in Swift Theme #1780
614
+ * Added: Ability to add Advertisement or Sponsored label under ads #1710
615
+ * Fixed: Featured images distortion in related posts #1684
616
+ * Fixed: Implement Swift Thumbnail Regeneration in all the designs #1709
617
+ * Fixed: noarchive instead of nofollow in Archive pages #1693
618
+ * Fixed: Internal links of tags are showing “/amp” after changing the end point to “?amp” in design 2 #1752
619
+ * Fixed: line height is added for the logo in Swift design
620
+ * Added: Class for Custom Frontpage #1787
621
+ * Fixed: Recent post enable disable for Swift theme #1784
622
+ * Fixed: Connect Show/Hide AMP option with AMP takeover#1786
623
+ * Fixed: Added sanitizer to footer Widget #1756
624
+
625
+ = 0.9.82.1 (18th February 2018) =
626
+ * Selector code reverted due to it's effect on carousel
627
+
628
+ = 0.9.82 (18th February 2018) =
629
+ * View more details on https://ampforwp.com/0-9-82-released-stability-update-82nd-update/
630
+ * Logo Resizing calculation by Pixels and resizing bug solved.
631
+ * Update Notification in the Admin panel will only appear in the AMP options panel. So it will not annoy you anymore.
632
+ * Glue underline is applying for some reason
633
+ * Fatal error after 0.9.81 fixed
634
+ * Facebook comments loading twice on swift
635
+ * PHP Notice: Undefined variable: post_author_name
636
+ * Pagebuilder fix in version 0.9.81 Compatibility with Yoast and other plugins #1749
637
+ * Home loop modifier option added. Allows you to exclude the categories from the loop or include the Custom Post type in the homepage loop.
638
+ * amphtml Conflict with Instant Article for Facebook resolved
639
+ * /amp folder in the theme is applying changes in plugin, which causing a bug, but it’s been fixed
640
+ * Backward Compatibility for AMP Preview
641
+ * SEO Section Improvements
642
+ * Wrong comments count on AMP pages
643
+ * AMP Allow selector in the The Content. You can add tabs and AMP components directly into the loop.
644
+ * If we turn off the Homepage Support then Blog is turned off as well, solved.
645
+ * Post Pagination have two options like “Number of pages” and Previous & Next.
646
+ * Removed the dot from the one Signal Service worker URL if the subdomain isn’t added (Causes Validation issues.)
647
+ * Extra Space due to empty divs in Design 3
648
+ * Remove alt from a tag in the AMP version caused many validation issues.
649
+
650
+
651
+ = 0.9.81 (15th February 2018) =
652
+ * Edge case fatal error on features.php fixed
653
+ * Admin dashboard messup CSS fix #1731
654
+ * Custom CSS Output added in Swift
655
+
656
+ = 0.9.80 (15th February 2018) =
657
+ * View More details on the [blog post](https://ampforwp.com/introducing-swift/)
658
+ * AMP Page Builder 3.0: The AMP Page Builder is a lightweight and much stable than ever and works flawlessly! [Read More](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
659
+ * Swift: The New Default Theme, which you can select from the design section of the Page builder.
660
+ * A way to create a Child Theme for AMP [read more](https://ampforwp.com/tutorials/article/child-theme-amp/)
661
+ * Make AMP & Non-AMP Same: We have an amazing new option called AMP to WP which will generate the WordPress version of the AMP design which will be viewed on the canonical version of the website.
662
+ * AMP Takeover: You can deliver a fully AMP compatible website with this option. It will basically take over the non-amp version and deliver an AMP version to your desktop and mobile users, on WordPress & AMP version. That’s why it was called AMP Takeover
663
+ * Logo Resizing made easy
664
+ * Typography Options
665
+ * 3 Headers design in swift theme
666
+ * Error while sharing the image on Pinterest #1699
667
+ * Homepage support was not working ( when page support is off ) #1695
668
+ * Custom Permalinks rewrite issue solved #1689
669
+ * Custom post type was appearing two types #1688
670
+ * Theia Post Slider plugin incompatibility with post pagination fixed #1677
671
+ * Link to the categories in loop of Design 3 #1632
672
+ * amphtml was not working when plain permalink selected along with static page as homepage #1614
673
+ * AFS Analytics Integration added #1605
674
+ * Removed the blank spaces from analytics id field to deliver a good UX. #1599
675
+ * ?amp endpoint feature added #1561
676
+ * Ability to remove the excerpt and image from related post #1510
677
+ * Thumbnails on-the-fly generation added for better control over the design.
678
+
679
+
680
+ = 0.9.74 (23rd January 2018) =
681
+ * View More details on the [blog post](https://ampforwp.com/0-9-74-released-stability-update-79th-update/)
682
+ * Fixed: Push Notifications button alligned in center #1500
683
+ * Added: Meta robots tag support from Yoast #1563
684
+ * Added: Option to Disable wptexturize/smart-quotes Support #1458
685
+ * Fixed: Changed the label id to avoid conflict with Advanced AMP Ads #1591
686
+ * Fixed: esc_attr causing validation issues with single and double quotes #1616
687
+ * Fixed: Image stretching problem resolved when "Featured Image from the content" was set #1580 #1582
688
+ * Added: Create Template by Custom taxonomy name like product-jeans.php in AMP Theme FrameWork #1594
689
+ * Added: Custom Post type support added in the Core #1612
690
+ * Fixed: custom-amp-content.php cleaned with PHPCS #1497
691
+ * Added: Basic Product(WooCommerce) support added #992 #1276 for full WooCommerce Support please check this [Extension](https://ampforwp.com/woocommerce/#utm_source=readme-log&utm_medium=0.9.74-readme&utm_campaign=AMP%20Plugin)
692
+ * Added: Proper fallback support added if the current active AMP theme is not available #1624
693
+ * Fixed: Resolved debug errors #1622
694
+ * Added: All in One SEO compatibility #1557
695
+ * Fixed: Load AMP Styling only on AMP pages #1441
696
+ * Added: 7 New Social Media Integrations added (Reddit, Tumblr, Telegram, Digg, StumbleUpon, Wechat, Viber) #1265
697
+ * Fixed: itemprop="url" was adding in non-amp #1626
698
+ * Fixed: SiteOrigin Pagebuilder compatibility with Custom Frontpage #1592 #1593
699
+ * Added: MediaAce lazy load compatibility of Bibmer Theme #1472
700
+ * Fixed: Content Links plugin was causing validation errors #1569
701
+ * Added: Filter added called get_content_from_dom to modify the output in AMP function #1462
702
+ * Added: amp_breadcrumb component added in AMP Theme Framework #1636
703
+ * Fixed: Sidebar Styling and proper sanitizer updated
704
+ * Added: amp_author_meta component added in AMP Theme Framework #1641
705
+ * Fixed: amp_post_pagination component improvement in AMP Theme Framework
706
+ * Added: Ability to add link classes in amp_post_pagination in AMP Theme Framework
707
+ * Fixed: amp_author_meta image code improvement in AMP Theme Framework
708
+
709
+ = 0.9.73 (15th January 2018) =
710
+ * View More details on the [blog post](https://ampforwp.com/0-9-73-released-stability-update-78th-update/)
711
+ * Added: Instagram Sanitizer added to process Instagram Embeds inside the BlockQuotes #1581
712
+ * Added: Option Created to Enable/Disable rel="nofollow" for View Non-AMP link #1572
713
+ * Fixed: Custom AMP Content was not working with Elementor Pagbuilder #1495
714
+ * Fixed: ampforwp_is_front_page() is not working in the newspaper theme #1583
715
+ * Added: Allow people to use multiple Analytics on AMP #1124
716
+ * Fixed: 'https' error with PlayBuzz Embeds #1481
717
+ * Added: Option to show last modified date instead of Published date #1496
718
+ * Fixed: Add proper permission for ampforwptourinstaller page
719
+ * Fixed: Debug warnings #1586 and #1459
720
+ * Fixed: A lot of Security Fixes has been done #1497
721
+ * Fixed: Removed lot of unused code #1497
722
+ * Added: AMP skip for checkout page #1443
723
+ * Added: Show the list of Child pages at the end in Parent Page with on/off #1551
724
+ * Fixed: Properly strip shortcodes fom Structured data description #1512
725
+
726
+ = 0.9.72 (6th January 2018, Happy New Year) =
727
+ * View More details on https://ampforwp.com/0-9-72-released-stability-update-77th-update
728
+ * Related Posts Image stretching in Design 3 AMP theme Framework #1482
729
+ * RTL option must be integrated into AMP theme Framework #1562
730
+ * `DOMDocument::loadHTML():` Attribute itemprop redefined warning fixed #1539
731
+ * Created an option to add Author bio article in Facebook Instant Article #1521
732
+ * Options to add push notification button above and below the content #1571
733
+ * Copy the Content button for Custom Post types #1532
734
+ * Alexa Metrics Compatibility added #1536
735
+ * Logo styling added with amp_logo. So styling can work with AMP Theme Framework. #1520
736
+ * Content parsing login improved, so it will not through any warnings if the content has only 1 paragraph. #1523
737
+ * Debug Warnings removed #1564
738
+ * Caption in the Gallery creating validation errors Fixed. #1549
739
+ * Tables Link color should be as same as the link of the body #1559
740
+ * Separate options for In-Content related posts #1546
741
+ * WebPage Schema Type added in Structured Data options #1558
742
+ * Fatal Error fixed with `mb_detect_encoding()` after enabling the minify option #1494
743
+ * Content blank or fatal errors due to itemscope and itemtype, fixed. #1570
744
+ * Performance improved. Due to `_transient__redux_activation_redirect` transient. #1526
745
+
746
+ = 0.9.71 (1st December 2017) =
747
+ * Design 2 Post Titles issue fixed
748
+ * Instant Articles validation issue fixed.
749
+
750
+ = 0.9.70 (30th November 2017) =
751
+ * View More details on https://ampforwp.com/0-9-70-released-stability-update-76th-update/
752
+ * Image alt tags are empty which caused issues. #1154 (thanks to @liagua)
753
+ * ALT and IMG tags are in one line #1442
754
+ * Updated the permalink for post view in admin area #1318
755
+ * aria-current causing validation issues #1427
756
+ * Aligning Captions in the Bottom in Gallery #1428
757
+ * Logo’s height & width should dynamically come from the logo. This was a great UX improvement in my opinion. The logo would good regardless of the kind of image you upload. #1429
758
+ * After 0.9.69.1 update Call to undefined function mb_convert_encoding #1447
759
+ * Featured image options now also reflect the structured data #1430
760
+ * Blur & Stretching issues of Design 3 thumbnails are now fixed. They’re crisp and clear than ever! #1227
761
+ * Related posts are showing on single even when turned off #1434
762
+ * Show Related posts CSS only when it is selected #1356
763
+ * Author image now displays on author pages #1426
764
+ * Category base removal in AMP from url option is only working on the first page #1418
765
+ * Bug fixed: PHP Warning DOMDocument Empty string supplied as input #1449
766
+ * Video support added in Instant Articles #1300
767
+ * Read more tag in Instant articles issue fixed #1415
768
+ * Amp carousel issues fixed #1446 #1456
769
+ * Compatibilty with Envira Gallery Lazy Loading #1432
770
+ * Inline Related Posts in AMP Theme Framework #1457
771
+ * Different number of in-content related post and related posts at the footer #1448
772
+ * FooGallery update broke all the AMP compatibility, but we fixed it from our side so that user’s gallery work perfectly #1424
773
+ * WPBakery Page Builder Conflict solved #1419
774
+ * Goodlife theme Lazy Load compatibility added #1416
775
+ * AMP-Facebook-Like Was found but unused Validation Error fixed. #1463
776
+ * Playbuzz not displaying if added with https: #1466
777
+ * Options Panel labels renamed for better understanding.
778
+
779
+
780
+ = 0.9.69 (20th November 2017) =
781
+ * View More details on https://ampforwp.com/0-9-69-released-stability-update-75th-update/
782
+ * One Signal Push Notifications bug fixed! #1404
783
+ * AMP theme framework Related posts extended so that it can be used as a loop format #1406
784
+ * Facebook like Button improvements #1405
785
+ * Add layout responsive tag to image module in page builder #1373
786
+ * Strip the shortcodes from Structure data area #1389
787
+ * Test HTTP API Call From admin panel by redux #1391
788
+ * Meta description tag in normal site Unicode character is different from AMP site unicode character. #1369
789
+ * Updated the check for ampforwp_is_amp_endpoint this should fix the issue #1372
790
+ * Updated the URL for design 3 so it can work with plain permalink #1318
791
+ * Updated the option Featured Image from The Content #1367
792
+ * If “Featured Image From The Content is enabled and Duplicate Featured Image” is disable it will remove all the duplicate images from the content. #1375
793
+ * Date Format under Homepage improvements #1408
794
+ * Warnings due to inline related posts in Homepage #1413
795
+ * Plain Permalinks Support improved. #1318
796
+ * Allow Homepage title of Bread Crumbs feature to be changed from Translation Panel #1414
797
+ * Debug Errors in AMP Theme Framework #1403
798
+ * Unnecessary loading of Merriweather fixed, it will only load in the Design 1.
799
+ * Enter Phone Number is not Appearing when switch to Call now button #1425
800
+ * Need excerpt below the title, above the meta #1399
801
+ * Remove the Separator piple symbol from the footer when “Back to Top link” is off #1417
802
+ * Display Child or subcategories on Category pages. #1385
803
+ * Add Caption in the Gallery Image feature conflicting with Gallery widget #1407
804
+ * Youtube Shortcode embed with &rel=0 support #1378
805
+ * Filter for Excerpt custom text in the AMP options #1411
806
+ * WPML Multilingual CMS plugin flags compatibility #1270
807
+ * Compatibility with Tasty Recipes plugin and other page builders with amp page builder #1431
808
+
809
+
810
+ = 0.9.68 (12th November 2017) =
811
+ * View More details on https://ampforwp.com/0-9-68-released-stability-update-74th-update/
812
+ * ADs are Optimize For Viewability, meaning it will try to load faster than the original AMP AD loading strategy.
813
+ * Content was disappearing issue was resolved #1392
814
+ * Featured Image from The Content option is connected to related post #1339
815
+ * Fix amp-web-push helper iframe configuration URL #1387
816
+ * Facebook Like button added to AMP #1327
817
+ * WPML support for AMP Improvement #1285
818
+ * Debug Errors fixed #1366
819
+ * Setting ad density for Facebook Instant Articles ads #1287
820
+ * Showing the number of comments in Single #1341
821
+ * Styling added to the sitewide ads and made sure that they are in the center. #1343
822
+ * One Signal buttons Translation added #1383
823
+ * Article type added to Structured data #1344 #1354
824
+ * The issue with the amp-carousel when RTL was enabled #1358
825
+ * amp-carousel with images of different sizes #1358
826
+ * a bug where Img is getting converted to amp-img if there's no height or width. which causing validation issue and image is not visible fixed.
827
+ * Instant Article should have a default value for number of posts, it was causing the memory issue with alot of posts #1390
828
+ * Notice if a post has no author data #1338
829
+ * Added a new redux extension select field in redux framework #1349
830
+ * Issues with galleries as well as gallery captions #1363
831
+ * Added a hook for adding anything in between the loops #1396
832
+ * Hide meta boxes as per the user level types #1340
833
+ * A Switch between the Date formats #1384
834
+ * Fix: Jannah theme lazy load issue #1362
835
+ * Issues with galleries as well as gallery captions #1363
836
+ * Create Dynamic url of amp according to the permalink structure #1318
837
+ * Minor code performance improvement.
838
+ * Archive titles in Design 3 frontend issue
839
+
840
+ = 0.9.67.0 (6th November 2017) =
841
+ * View more details on https://ampforwp.com/one-signal-push-notifications-for-amp/
842
+ * OneSignal Push Notifications integrated #807
843
+ * Vimeo embed support added
844
+ * SoundCloud embed support added
845
+ * Pinterest embed support added
846
+ * PlayBuzz embed support added
847
+ * DailyMotion embed support added
848
+ * Fix: Handle issues with data uri images in CSS #1033
849
+ * Fix attribute when adding AMP Mustache lib #1033
850
+ * Fix: Output CSS for feature image #1033
851
+ * An option added for users who don't want to receive update notifications #1342
852
+ * Structured data nav improvement
853
+ * Sitenavigationelement has been implemented correctly for footer menu. #1345
854
+ * Style sanitization for Menu Items #1359
855
+ * Polylang flags support for menu  #1360
856
+ * Mobile Redirection issues fixed #1173
857
+ * Jetpack fatal error fixed #1355
858
+ * AMP Page Builder requires a button to be clicked, so the scripts are not running on the runtime making it easy on the edit screen page and avoid the possible script conflict.
859
+ * Needs proper CTA Bar's styling. #1361
860
+ * Debug errors on archive pages #1353
861
+ * Preview shall only be loaded on click rather than in background #1331
862
+ * ampforwp_is_home() function code improved
863
+ * making sure scripts and styling is properly adding when sanitizing the sidebar #868
864
+ * All the backend css and js should be versioned, so it's not cached. #1335
865
+
866
+ = 0.9.66.1 (30th October 2017) =
867
+ * Fatal error if has version less than WP 4.8 fixed
868
+ * More Minor Validation errors fixed
869
+ * Odnoklassniki sharing button is not working #1337
870
+
871
+ = 0.9.66.0 (29th October 2017) =
872
+ * View more details on https://ampforwp.com/0-9-66-released-bug-squashing-oct-2017-72nd-update/
873
+ * Design 3 & Design 1 are optimised with 90+ Google PageSpeed Score on Mobile and 95+ in desktop performance #1273
874
+ * Featured Image from the content for blog and homepage #1295
875
+ * Category Module for AMP Page builder added #888
876
+ * Don't load unused CSS selectors. All the CSS is conditionally loading, to decrease the number of CSS loaded per page and increased in performance #1292
877
+ * Twitter Video embed code support added in AMP #1307
878
+ * Video Posting Structured data #1293
879
+ * Navigation menus are now Schema compatible for better Structured data integration #1229
880
+ * Yoast checking conditions for Structured Data Improved #1293
881
+ * Added "back to Top" in design 3 #959
882
+ * Proper blog check and author for custom frontpage #1260 (Made some changes to check the blog properly and also added the author details for Custom Frontpage)
883
+ * AMP not working on password-protected pages #1192
884
+ * Debug errors reported by the user #1284 and few more we found internally
885
+ * Inline Style Sanitizer for Comments to avoid any validation issues #1193
886
+ * Next/Previous links removed from pages #1268 props @Frenchomatic
887
+ * WPML Multilingual CMS plugin flags compatibility added #1270
888
+ * Image sanitizer added for the Sidebar #1270
889
+ * Added AMP Components the correct way. Added amp-gist, amp-social-share. #336
890
+ * amp-video script added - Which decreases the non-critical validation issues #991
891
+ * Arrows in Design 3 pagination #1000
892
+ * Author page links in Single #1282
893
+ * Added previous open state of option panel and show again when search clean #1238
894
+ * Odnoklassniki Social Sharing Support for AMP (with target blank for better bounce rate) #1230
895
+ * GIF or animated images resize problem fixed #1281
896
+ * In Design1, Header Background & Link Color have same option #1249
897
+ * FB Pixel for AMP added #1231
898
+ * Structured Data Type option for AMPed Custom Post types only #1259
899
+ * Attribute ‘readability in the tag ‘div’ removed - this decreases the validation issues #1306
900
+ * AMP Theme Framework Improvements: loop, author, related_post, Add Author support #1311
901
+ * Commentator's Avatar in the comments section #1132
902
+ * Remove 'Welcome to AMP' from Dashboard sub-menu and moved to the options area to decrease the annoyance and increase the user happiness #902
903
+ * Option to Sort the Random Order of Related Posts to increase the audience engagement (Default is 'ID', on enabling the option it will change to 'rand') #1250
904
+ *  View AMP on Admin Bar for the respected page/post If enable. #1236
905
+ * google maps iframe link to larger map #1099
906
+ * Comments now jumping due to the slash at the end #1309
907
+ * Page Builder causes Incompatibility with the Divi theme (We restructured the Text Module for Page builder for better compatibility and UX) #1162
908
+ * Inline Style Sanitizer for Comments added. Less Critical Validation issues and Better Presentation #1193
909
+ * WPML amp-html error fixed #1285
910
+ * Radio button not working for Show View more Button" #1018
911
+ * Added registered handle for tinymcePointer localize data #1301
912
+ * Date in the Design 2 should not be hidden in mobile version #1315
913
+ * Page builder not working on homepage(Selected as front page) #1316
914
+ * Instant articles number of posts option #1271 (Removed some unused code as well, it will rendered all posts if none is enter in the options)
915
+ * Auto flush on save for FBIA to improve the UX.
916
+ * Plain Permalinks Support improved. #1318
917
+ * Tables support added to FB Instant Articles #1266
918
+ * Demo link added in the Theme selector option #1248
919
+ * Remove invalid attributes from multiple tags which reduces critical validation errors and validates pages.
920
+ * AMP makes a problem in archive page label, when it is active in non-amp version #1304
921
+ * placeholder-icon.png is 404 fixed #1310
922
+ * Category & Tags switches for Single added. #1055
923
+ * Copy Content (Custom AMP Editor) Option Not showing with Page Builder of SiteOrigin issue fixed #1280
924
+ * Improving UX with: when AMP support is off for a specific post type then all the AMP related metaboxes should be removed #1289
925
+ * Options Panel Options rearranged, labels rewritten, descriptions repositioned for better User interaction [commit]
926
+
927
+ = 0.9.65.2 (25th October 2017) =
928
+ * TypeWatch is not a function #1299
929
+ * Error with BackupBuddy fixed #1303
930
+
931
+ = 0.9.65.1 (24th October 2017) =
932
+ * AMP Minifcation Issues fixed
933
+
934
+ = 0.9.65 (22nd October 2017) =
935
+ * View more details on https://ampforwp.com/new/
936
+ * Favicon for AMP #1039
937
+ * AMP Minification option added with Performance Tab in Options #1286
938
+ * Post support is turned off then Meta box should also be removed #1253
939
+ * Excerpt Length feature in Design two and Three #1122
940
+ * Test Contact form plugins and their settings in the options panel #1121
941
+ * Mobile preview in Edit Screen #1082
942
+ * Search feature for Options Panel #1238
943
+ * WordPress Social Share Buttons Validation Issues #1272
944
+ * itemtype attribute is striping in the ul tag #1210
945
+ * Debug Error in Breadcrumb 0.9.64 #1267
946
+ * Disable AMP linking at Wordpress Search Page #969
947
+ * Featured Image is missing #1071
948
+ * Removed ampforwp_plugin_activation_notice #1034
949
+ * Add VK (Vkontakte) Sharing Button #1187
950
+ * Grab the first image instead of post thumbnail for featured image #1189
951
+ * AMP theme framework core changes #1274
952
+ * Grab the first image instead of post thumbnail for featured image #1189
953
+ * Create a Switch on Top of Page Builder #1279
954
+ * Inline Related Posts added that helps you with improving bounce rate #1078
955
+ * Caption Support in Image Gallery Carousel #1172 #1136
956
+ * Instant Articles feed shows sticky posts on top #945
957
+ * Added search check, to fix debug notice
958
+ * Option to hide date from Design 1 & Design 3 Homepage Loop #1264
959
+ * UI labels improvements in the Options panel
960
+ * Sorting out design #2 static front page #1175
961
+
962
+ = 0.9.64 (15th October 2017) =
963
+ * View more details on https://ampforwp.com/new/
964
+ * Structured Data Type option added. You can now change the structured data format for Posts, Pages and Custom post types #323
965
+ * When comments plugin activate, Comments section should remove. #1093
966
+ * Notification causes a validation error. #1147
967
+ * CSS !important need sanitization #1225 - This will help us to validate tens of thousands of pages.
968
+ * Strange spaces when using Sassy Social Share #1185
969
+ * Remote CDN use? Let's host it? #549
970
+ * Typo fix for Linkedin Profile Page URL section #905 [Thanks to Prayag @pra85]
971
+ * Replace fastimage with fasterimage for PHP 5.4+ #1191
972
+ * Debug Errors Post 0.9.63 #1219
973
+ * Ad5 code injected twice #1116
974
+ * Homepage Support must be Off when we turn Off Homepage Support. #738
975
+ * Add custom class in post pagination for styling #1100
976
+ * Removed the Lazy Loading issue of Schema Theme #1170
977
+ * H1 tag for archive titles (Commit) #1155
978
+ * Alt tag for the Logo #1155
979
+ * Design 3 Menu RTL issue fixed #1106
980
+ * Ability to add dynamic classes in body tag #1237
981
+ * Warnings fixed on 404 page #1243
982
+ * Properly structured data for Homepage, Custom Frontpage and Blog #1155 #1242
983
+ * Option added to Enable/Disable categories and Tags links from Single #1155
984
+ * Fatal error after 0.9.63 fixed #1220
985
+ * Debug Error due to vendor AMP #1213
986
+ * PHP warning on line 147 after 0.9.63 #1241
987
+
988
+ = 0.9.63 (8th October 2017) =
989
+ * View more details on https://ampforwp.com/new/
990
+ * Category and Tag Base Remover as core features #1079
991
+ * Hide AMP on Posts option added #935
992
+ * Installation Setup Screen Added for new users
993
+ * Validation for the session in PHP #1158. PR by Bryan Contreras @bryan3561
994
+ * All the amp pages should work perfect with Plain Permalink settings #488
995
+ * WYSIWYG TinyMCE editor added for the Text Module in AMP Page Builder #1205
996
+ * WPML Static Front Page Support for title and description with Yoast. #1143
997
+ * Row Settings area added for AMP Page Builder #1148
998
+ * xlink attribute causes Validation Issues #1149
999
+ * Posts with no images on Archive pages are squeezed to 65% #1058
1000
+ * Body Class to target specific pages #1123
1001
+ * Option to enable/disable Breadcrumb #1129
1002
+ * Debug errors due to Breadcrumbs fixed #1109 #1130 #966
1003
+ * Visit AMP option added below the View Site in Dashboard. #1076
1004
+ * Many Debug errors fixed #1109
1005
+ * Textarea for body tag which will help people add AMP Auto Ads #1064
1006
+ * Structured data improvements #1048 #1044 #1085 #1118
1007
+ * Twitter share URL based on users choice, you can allow people to share pretty links and short links. #1097
1008
+ * Author Avatar removed code fixed which has been displayed in the div "amp-wp-meta amp-wp-byline". #1087
1009
+ * Only one figure element is allowed in the article header FB Instant Articles #1127 & #1157
1010
+ * Image alt tags are empty and cause issues fixed. #1154
1011
+ * Button to copy the content into Custom AMP Editor #783
1012
+ * Rename AMP loop widget areas or add proper descriptions #1045
1013
+ * Trailing slash issue #1095
1014
+ * Related Posts by Post type featured added #1141
1015
+ * Ultimate Social Media Icons plugin causes validation issues fixed #1135
1016
+ * Adding proper path for functions.php, it was causing strange fatal errors and irregular white screen of death fixed  #1144
1017
+ * A smooth way to migrate from other AMP plugins to AMPforWP #1051
1018
+ * Alert added on AMP by Automattic installation. #1180
1019
+ * Insertion of strange spaces around H1 titles #1069
1020
+ * AMP Page Builder and HTTPS #1164
1021
+ * You can display comments from more than one vendor such as displaying WP & FB Comments #1150
1022
+ * Rename AMP loop widget areas or add proper descriptions #1045
1023
+ * FrontPage featured image with srcset #1063
1024
+ * An option for Showing featured image from custom field #1098
1025
+ * Added the Custom Front Page Title From Yoast SEO #1163
1026
+ * Commenting breaks SSI directives causes to display error #1179
1027
+ * rel canonical appears more than once in search pages #1195
1028
+ * Dev mode in AMP #1083
1029
+ * Social Sticky Icons Improvements #1061
1030
+ * Grand-Child support added in Design 3 #1152
1031
+ * amp-accordion non-critical error in Design 3 & CSS improvements fixed #1152
1032
+ * Incorrect @id for mainentity #1080
1033
+ * Hide AMP by specific Categories tweaked for performance. Thanks to Joshua Eichorn @jeichorn CTO at Page.ly #1133 - Huge Thanks!
1034
+ * amp-auto-ads for sites with RTL support ON #1176
1035
+ * Redirected the Google forms to our contact page so that we can take each and every query and answer every person. #1201
1036
+ * ui-state-highlight class was conflicting with ACF date picker fixed #1199
1037
+ * Responsify WP Lazy loading causes blank image (Compatibility) #1131
1038
+ * amp-carousel scripts loading on the second page fixed in Design 3
1039
+ * Show Design screenshot while selection of design #1209
1040
+ * Switches Redesigned for better UX #1211
1041
+ * Welcome Page UX Improved #1214
1042
+
1043
+ = 0.9.62 (25th September 2017) =
1044
+ * View more details on https://ampforwp.com/new/
1045
+ * INTRODUCING Page Builder 2.0 for AMP! [Learn More & Watch the Video](https://ampforwp.com/tutorials/article/amp-page-builder-installation/)
1046
+ * Documentation & Help links improved
1047
+ * Post type specific classes for targetting
1048
+ * Design name restored in Options panel (It was recently renamed to Appearance)
1049
+ * Minor Bug fixes as well
1050
+
1051
+ = 0.9.61 (10th September 2017) =
1052
+ * View more details on https://ampforwp.com/options-restructured/
1053
+ * Options Panel Restructured Options were dividing into two parts: Settings and Appearance.
1054
+ * AMP Theme Framework Core Support Added. You can now create themes of your own in just minutes.
1055
+ * WPML Static Front Page Support #1111
1056
+ * Notification message disables when CF7 & gravity form is activated. #1107
1057
+ * Space after On in Design 3 #1114
1058
+
1059
+ = 0.9.60 (4th September 2017) =
1060
+ * View more details on https://ampforwp.com/0-9-60-released-improved-redirection-66th-update/
1061
+ * Class added to View non-amp anchor tag
1062
+ * Params added properly to get rid of a warning #1077
1063
+ * rel=attachment noopener generating validation errors #1090
1064
+ * Breadcrumbs Support Added #701
1065
+ * Enable / Disable button added for Navigation Menu #735
1066
+ * Move the ad code for Instant Article down after the article #964
1067
+ * Add analytics code of FB instant articles properly #1096
1068
+ * datetime Tag not stripping properly #1043
1069
+ * Mobile redirection on custom post types #1028 #1052
1070
+ * Mobile Redirection causing extra redirect #879 #933
1071
+ * Proper mobile redirection on Homepage #1052
1072
+ * View non-amp on blog will redirect to blog
1073
+ * Blog will redirect to blog irrespective of AMP Homepage option #871
1074
+ * Dont redirect if archive support is disabled #1052
1075
+ * non-amp category pages should redirect to non-amp pages if turned off from Hide AMP #999
1076
+ * Disable amp for forum plugin (wpforo) #592
1077
+
1078
+ = 0.9.59 (23th August 2017) =
1079
+ * Design 3 Images were not aligned properly. Fixed. #1040
1080
+ * Caption in the design 3 improved
1081
+ * Jetpack File not loading throwing fatal error #1038
1082
+ * If the mobile redirection is ON and the category is excluded to display the AMP then it should redirect properly
1083
+ * Custom Editor Compatibility issue with SiteOrigin PageBuilder fixed #997
1084
+ * Native Twitter Embed support
1085
+ * Added a hook after the body tag: ampforwp_body_beginning (commit)
1086
+ * GTM in AMP Improved #958
1087
+ * WP User Avatar compatibility Added #975
1088
+ * Alt tag on frontpage featured image added #1050
1089
+ * Blurred Images on the frontpage fixed #1050
1090
+ * Need to escape alt tag #1049
1091
+ * Debug errors & PHP warnings were fixed #859 #811 #830 #810
1092
+ * Proper rel canonicals for inner pages #1047
1093
+ * Added Video sanitizer for comments #1053
1094
+ * When activating the AMP plugin, display a notification in the popup. #1036
1095
+ * Video Sanitizer added for Comments
1096
+
1097
+ = 0.9.58.1 (9th August 2017) =
1098
+ * Jetpack conflict issue solved #1038
1099
+ * Genesis SEO Support added #1013
1100
+ * Fixed Wrong SEO title issue #1013 and #836
1101
+ * Design 3 Carousel script loading method improved #990
1102
+
1103
+ = 0.9.58 (9th August 2017) =
1104
+ * View more details on https://ampforwp.com/new/
1105
+ * Genesis SEO for AMP support added
1106
+ * AMP 0.4.2 Vendor Bundled for making it crash proof
1107
+ * Archive desc only on 1st page #1029
1108
+ * Ads are not working after 0.9.6 #1030
1109
+ * Fixed the Post 0.9.57 Update Bugs #1025
1110
+ * All Images are aligned on left side in design 3 #1031
1111
+ * Custom frontpage title issue in Design 3 fixed
1112
+
1113
+ = 0.9.57 (5th August 2017) =
1114
+ * See the Full changelog https://ampforwp.com/0-9-57-released-compatibility-issue-fixed-62nd-update/
1115
+
1116
+ = 0.9.56 (31st July 2017) =
1117
+ * View more details on https://ampforwp.com/page-break-in-amp/
1118
+ * Page Break / NextPage (Pagination) Support Added #834 #857 (Improvement)
1119
+ * Show/Hide AMP for Categories of Posts or All posts #872 (Improvement)
1120
+ * Adding analytics capabilities to Instant Articles #978
1121
+ * JetPack Plugin Conflict Solved #971
1122
+ * Social sharing code improved. amp-social-share js is getting added for line and WhatsApp social share #981
1123
+ * Code improvement for rel canonicals(home and archive)
1124
+ * Perfect SEO URL + Yoast SEO Compatibility #982
1125
+ * Some styling for tags to show up properly
1126
+ * Undefined index notices #960
1127
+ * Non-amp category pages should redirect to non-amp pages if turned off from Hiding AMP #999
1128
+ * Page builder text and button module issues #972
1129
+ * Documentation links updated in the Options panel
1130
+
1131
+ = 0.9.55 (13th July 2017) =
1132
+ * View more details on https://ampforwp.com/0-9-55-released-improvement-update-61st-update/
1133
+ * Disqus Comments show up even when disabled per post #931
1134
+ * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
1135
+ * H3 inside OL in Related-Posts.php #930
1136
+ * Advertisement Options in Instant Articles #943
1137
+ * Incompatible with bootstrap plugin #525
1138
+ * Error in tag and category links #934
1139
+ * Pagebuilder Button module link had issues #951
1140
+ * Unnecessary: Adding the Markup for AMP Woocommerce latest Products #929
1141
+ * WPtouch Pro Compatibility Issues #927
1142
+ * Better scripts compatibility in Single of post types #757
1143
+ * Instant Articles Error: "The HTML element does not contain any text" #949
1144
+ * added a filter in all the dates so a user can change the date format and modify #962
1145
+ * Design3 Menu Arrows are clickable along with the links #952
1146
+
1147
+
1148
+ = 0.9.54.2 (4th July 2017) =
1149
+ * Minor bug post 0.9.54 bug fixed
1150
+
1151
+ = 0.9.54 (4th July 2017) =
1152
+ * View more details on https://ampforwp.com/new/
1153
+ * Facebook Instant Articles Support #862
1154
+ * Exclude Some Pages from Mobile Redirection #914
1155
+ * After 0.9.53 update amp-social-share js missing (critical issue) #924
1156
+ * Hooks added in Header (above and below)
1157
+ * View non AMP[Code improvement] #928
1158
+ * Pages are not supposed to show meta like this, especially Categories #894
1159
+ * Monarch plugin having design issues #925
1160
+ * Show AMP Hide AMP Check Box Fixes #794
1161
+
1162
+ = 0.9.53 (19th June 2017) =
1163
+ * View more details on https://ampforwp.com/stability-validation-issues-59th-update/
1164
+ * Compatibility Issue with Rocket Lazy Load plugin #907
1165
+ * Link color issue with UX of Color Pickers in Design 3 #731
1166
+ * amp-analytics js appears more than once when Google tag manager is used #885
1167
+ * SEO by SQUIRRLY is adding analytics twice #678
1168
+ * Fatal error when WPSEO is activated #900
1169
+ * Design 3 Sticky header should have an option #625
1170
+ * Search form was enhanced, it can now be used on the websites without https certificate. That will certainly fix a lot of validation issues. #912
1171
+ * Yandex Metrika support in AMP #585
1172
+ * Histats Analytics Support #880
1173
+ * Chartbeat Analytics Support #882
1174
+ * Do not strip Rel from anchor tags #790
1175
+ * Design close Resulting Blank Screen in AMP Site #642
1176
+ * Logo size is not applying #817
1177
+ * AMP Publisher logo guidelines #162
1178
+ * Remove amp-social-share extension .js from Custom Frontpage #899
1179
+ * Add compatibility with Sassy Social Share #679
1180
+ * Remove Disallowed ‘like’ tag from Facebook Like button by Ultimate Facebook plugin
1181
+
1182
+ = 0.9.51.1 (12th June 2017) =
1183
+ * Redirection issue after 0.9.51 Update.
1184
+ * Improved compatibility with plugins.
1185
+
1186
+ = 0.9.51 (8th June 2017) =
1187
+ * View more details on https://ampforwp.com/page-builder-released-in-amp/
1188
+ * Page Builder Support added ( See Tutorial at https://ampforwp.com/tutorials/page-builder/ )
1189
+ * Comments are not showing properly when words are long #861
1190
+ * Remove amp-social-share extension .js from Pages #853
1191
+ * The tag ‘amp-sidebar extension .js script’ appears more than once in the document #828
1192
+ * Remove Advertisement tab #839
1193
+ * Compatibility with Slide-in Plugin by WPMU dev #866
1194
+ * Mobile redirection issue with bbpress #867
1195
+ * All the data must be properly sanitize in the sidebar #849
1196
+ * AMP html should not be added on the second page of comments
1197
+ * Author page’s support #456
1198
+ * URLs in comments should be clickable(links) #869
1199
+ * Featured image should be centered in desktop mode #870
1200
+ * Added More Hooks #721 (Documentation on this coming soon!)
1201
+ * Page 2 goes to the wrong URL #865
1202
+ * Proper Title and meta for homepage and posts #850
1203
+ * Gist Support added #608 – Just add a shortcode and enjoy Devs (Ex: amp-gist id="b9bb35bc68df68259af94430f012425f )
1204
+ * /blog/amp pagination not working #875
1205
+ * separate the Text and Date format in design 2 #876
1206
+ * Comments show in AMP w/o breaks between paragraphs #873
1207
+ * If no featured image below hooks are not working #877
1208
+ * Change meta name Viewport and its value #878
1209
+ * Bolt icon in option #474
1210
+ * Code restructuring and code quality improvements.
1211
+ * Create a seperate function for comment code in frontpage.php #682
1212
+ * Remove all the duplicate code from frontpage.php of all the designs and use hooks to add the code instead of static code #889
1213
+ * Few Debug errors removed.
1214
+
1215
+ = 0.9.50 (24 May 2017) =
1216
+ * View more details on https://ampforwp.com/facebook-comments-in-amp/
1217
+ * Design 3 Social Icons issue #832
1218
+ * View non AMP leads to /?nonamp=1 #814
1219
+ * Youtube shortcode compatibility improved #557
1220
+ * welcome.php should be shown only if user is “administrator” #696
1221
+ * Facebook comments support added in AMP #825
1222
+ * WP Like Button Compatibility #841
1223
+ * Custom Taxonomy Support added with Custom Post Type Extension.
1224
+ * Front page comments not found as expected #837
1225
+ * Fixed xml:lang tag issue #848
1226
+ * Sanitize Iframe in the archive description Fixed #845
1227
+ * Compatibility with Newspaper Theme by TagDiv #842 and #796
1228
+ * Some debug problems (blog page, style.php) #838
1229
+ * Featured Image hooks added
1230
+ * Twitter is misspelled #854
1231
+ * The core concept of the AMP Content builder has been built.
1232
+
1233
+
1234
+ = 0.9.49 (12 May 2017) =
1235
+ * View more details on https://ampforwp.com/0-9-49-released-small-important-bugs-fixed-56th-update/
1236
+ * Option added to display the excerpt in Single #806
1237
+ * Ability to add new invalid tags to filter out from AMP pages #809
1238
+ * In frontpage, comment button is pointing to wrong URL #812
1239
+ * Call now button and search is overlapping in Design-1 #784
1240
+ * Sticky Social Icons should be off if the CTA notification bar is on #788
1241
+ * Author bio in Design 1 and 2 #732
1242
+ * Styling in Taxonomy description causing validation issues #798
1243
+ * Twitter share(handle, url positions fixed) #815
1244
+ * Tables responsiveness in ALL Designs #726
1245
+ * Output all the categories and tags with their own ID’s in the div classes #750
1246
+ * Social Share Icons Overlap with Leave A Comment in Design 3 #716
1247
+ * Effective Measure Support on AMP #297
1248
+ * Custom AMP editor on pages should only be shown when page support is ON #756
1249
+ * AMP on website.com/blog without need of separate installation #775
1250
+ * GTranslate Compatible #819
1251
+ * Images and amp-anim styling added #725
1252
+ * Filter to make the title in a post to a link #727
1253
+ * Author Bio and Social Share button must not come in Pages #770
1254
+ * StatCounter is now compatible with AMP #361
1255
+ * Line Social media support #500
1256
+ * Footer menus for Design 1 & Design 2 #623
1257
+ * Strip out src=”about:blank” When Gravity Forms used #804
1258
+ * Add Compatibility with Crazy Lazy load plugin #751
1259
+ * Meta Titles and Description issues fixed with Yoast, All in one SEO and The SEO Framework #813
1260
+ * Double quotes in the Excerpt of the meta description is making AMP Invalidated #818
1261
+ * Missing featured image on static front page #824
1262
+ * Fatal error while activation: see the video 0.9.49 Beta #827
1263
+ * Review this code in archive.php in all 3 designs. #826
1264
+
1265
+
1266
+ = 0.9.48 (28 April 2017) =
1267
+ * View more details on: https://ampforwp.com/0-9-48-released-step-towards-multilingual-support-55th-update/
1268
+ * The default translation method of WordPress added. (Option in Translation panel to switch between * Translation panel and POT file #540)
1269
+ * A new Advertisement slot added above the related posts in the Single. It not only gives better options for people to display ads but this ad slot is also very handy if you are using ad companies like Taboola and RevContent.
1270
+ * Another Advertisement slot added below the post title in the Single post.
1271
+ * Fatal error: require_once report-bugs.php #747 fixed
1272
+ * Add / for codes in Meta Description #766 fixed
1273
+ * Controls re-adjusted & Renamed title of yoast description control in Options panel
1274
+ * Design-3 Slider URL redirecting to non-AMP page #758
1275
+ * Added new sanitizer For HTML to AMP-HTML conversion
1276
+ * Sanitized Archive descriptions so that it would convert to AMP
1277
+ * Comments sanitized with new sanitizer so that HTML tags automatically become AMP compatible.
1278
+ * 301 redirects on non-pretty internal links #767
1279
+ * Create a filter to modify the value of rel="amphtml" #778
1280
+ * Max-width added for images in comments
1281
+ * If in WooCommerce ?amp endpoint set then update href.
1282
+ * Undefined Variable (Debug) #733 and many other debug issues were fixed
1283
+ * Show last updated Post instead of published date #575
1284
+ * WooCommerce Widget added to display latest products on homepage. #763
1285
+ * add amp_post_template_above_footer hook global in all the designs #779
1286
+ * Excerpt on top of the content in Single #665
1287
+ * Subscribe box has been improved for the UX needs #712
1288
+ * Notice warnings since 0.4.2 update #740
1289
+ * AMP Comments Form Integration with the extension
1290
+ * Filter added on the loop in Homepage of the Design 3 so that it can be modified with an external plugin.
1291
+ * 404 on paged home page #781
1292
+ * Twitter handle should be at the end of the tweet not in the beginning #787
1293
+ * Wrong Rel Canonical for AMP Custom Frontpage #799
1294
+ * Merged a pull request #761 that will improve the title and description output that is much more stable and flexible for future enhancement and use. It was contributed by Sybre Waaijer - Thanks mate for the contribution, we (our team and users) really appreciate your hard work done on this code.
1295
+ * Extension page user experienced improved.
1296
+ * Removed old Youtube installation video and replaced with new one.
1297
+
1298
+ = 0.9.47.2 (12 April 2017) =
1299
+ * Design-3 Slider URL redirecting to non-AMP page #758
1300
+ * Ads showing in comments #768
1301
+
1302
+ = 0.9.47.1 (11 April 2017) =
1303
+ * Meta description option improved in SEO section #766
1304
+ * Fatal error: require_once report-bugs.php #747
1305
+
1306
+ = 0.9.47 (10 April 2017) =
1307
+ * View more details at https://ampforwp.com/0-9-47-released-54th-update/
1308
+ * Meta saving method updated for customAMP content editor checkbox was causing some conflict.
1309
+ * Wrong Yoast title and structured data in Custom Frontpage fixed
1310
+ * CSS minification all 3 designs
1311
+ * Polylang flags in menu was causing validation issue, is now resolved
1312
+ * WPML flags in menu was causing validation issue, is now resolved
1313
+ * Standardized function created for content sanitization.
1314
+ * Archive description now displays AMP compatible markup
1315
+ * Comments markup sanitized for AMP
1316
+ * Design 3 images not aligned properly, fixed
1317
+ * Images are aligned to center in Design 1.
1318
+ * carousel ending with //amp instead of /amp – fixed #753
1319
+ * Title of the Post along with Post link when shared in twitter #683
1320
+ * Ads were cutting in half in RTL, fixed
1321
+ * Add / at the end of AMP links with in the AMP pages (Internal links) #668
1322
+ * Rendering the wrong URLs in front page if paged #742
1323
+ * Option to turn off AMP on all pages, so people can turn on only for specific pages #746
1324
+ * Need Meta Description on amp pages #741
1325
+ * Woocommerce Loop shortcode updated
1326
+ * Call Now Button added in header #563
1327
+ * Post images are not centered in Design 3 #695
1328
+ * UX of GTM settings done, since users were getting confused #700
1329
+ * Front page amphtml fixed for paginated pages
1330
+
1331
+ = 0.9.45.6 (31 March 2017) =
1332
+ * Installation Process from welcome page was not working after WP Plugin DIR API change was fixed.
1333
+ * WP Rocket Minifcation and Concatenation was not working, its fixed now.
1334
+ * WP Rocket was tested properly to make sure everything is working fine.
1335
+
1336
+ = 0.9.45.5 (25 March 2017) =
1337
+ * WP rocket conflict solved
1338
+ * Cannot set property ‘innerHTML’ of null issue fixed
1339
+
1340
+ = 0.9.45.3 (21 March 2017) =
1341
+ * Post 0.9.45 bugs fixed and released as an urgent update.
1342
+
1343
+ = 0.9.45.1 (19 March 2017) =
1344
+ * Post 0.9.45 bugs fixed and released as an urgent update.
1345
+
1346
+ = 0.9.45 (18 March 2017) =
1347
+ * View more details at https://ampforwp.com/0-9-45-released-compatibility-rtl-53rd-update/
1348
+ * W3Total cache compatibility added
1349
+ * RTL Support added for Right-to-Left language websites.
1350
+ * Comments Pagination feature added
1351
+ * WP-Rocket Compatibility added
1352
+ * WPML Compatibility added
1353
+ * Quantcast analytics support added
1354
+ * ComScore support added
1355
+ * Custom Yoast title support added #685
1356
+ * WooCommerce Shortcode: Allows you to display WooCommerce Products. [amp-woocommerce num=6] will display the 6 products from WooCommerce. [amp-woocommerce num=6 link=noamp] will display 6 products but they will go to non-amp website, if you want to link to AMP version of the page then use [amp-woocommerce num=6 link=amp]
1357
+ * Admin area UX improvements
1358
+ * Adding notifications script in the correct way
1359
+ * Comments now display on frontpage as well.
1360
+ * Re-positioned non-amp Header link control to the right section.
1361
+ * ?nonamp=1 only displays when the Mobile redirection is on
1362
+ * Properly adding iFrame js.
1363
+ * Custom Post type incompatibility fixed
1364
+ * Widgets added to the Custom Frontpage.
1365
+ * Stripping shortcodes from excerpts.
1366
+ * Custom content on static frontpage had over riding issue #687
1367
+ * Option added for controlling number of comments
1368
+ * Welcome page should be shown only if user is “administrator” #696
1369
+ * Digg Digg social share compatibility #694
1370
+ * Removed unnecessary lines from Design 3
1371
+ * Sanitized Archive Description to amp Compatible #659
1372
+ * Author box now displays HTML properly #645
1373
+ * Date added Design-3 in meta #583
1374
+ * Options link was removed from wp-admin tool bar after a feedback from a user.
1375
+ * Footer sub menus layout compatibility.
1376
+
1377
+
1378
+ = 0.9.44 (5 March 2017) =
1379
+ * View more details at https://ampforwp.com/user-experience-52nd-update/
1380
+ * Added Welcome Screen for better User experience. [Enhancement]
1381
+ * Undefined Index debug error resolved [Bug fix]
1382
+ * All in one SEO Support support tested [3rd party compatibility]
1383
+ * Frontpage title in Design 3 is out of the container #644 [Bug fix]
1384
+ * Default Table markup in AMP #643 [Enhancement]
1385
+ * AMP carousel is not working on Frontpage #641 [Bug fix]
1386
+ * Social share .js was getting added even when it was not required #638 [Bug fix]
1387
+ * Search Feature added for Design 1 & Design 2 [Major Improvement]
1388
+ * Accordion script loading issue in Design 3 #634 [Bug fix]
1389
+ * ?nonamp=1 links should be nofollow #622 [Bug fix]
1390
+ * Same Header and Color Scheme are making header elements invisible #629 [Enhancement]
1391
+ * In Search AMP rel canonical was different #631 [Bug fix]
1392
+ * Non-AMP link in Design 3 was not working when mobile redirection was enabled #632 [Bug fix]
1393
+ * Search form text strings are now added in the translation panel #607 [Bug fix]
1394
+ * Load AMP-ads conditionally only if ads are available #609 [Bug fix]
1395
+ * Added compatibility with Custom post type extension. Option to hide/show AMP on all custom post types #587 [Bug fix]
1396
+ * Report a Bug & Request feature links added [Enhancement]
1397
+ * If there was no menu set in Design 3 then all pages were getting displayed. #613 [Bug fix]
1398
+ * The tag Font is disallowed #616 [Validation Improved]
1399
+ * index/noindex separately added for Tags and also for Categories #606 [Enhancement]
1400
+ * Use of undefined constant AMP_QUERY_VAR #596 [Bug fixed]
1401
+ * Logo is not centered in Design 3 #586 [Bug fixed]
1402
+ * Remove defer, a very rare type of defer was getting added #589 [Validation Improved]
1403
+ * Disqus comments iframe had scrolling issues #566 [Bug fixed]
1404
+ * Left side blank gap in the RTL in design 2 #541 [Bug fixed]
1405
+ * Inline Styles not working correctly in Custom AMP Editor #533 [Bug fixed]
1406
+ * Re-save permalinks issues. Flushing rewrites with options saved. #511 [Improvement]
1407
+ * Code review and cleaning of the customizer #404 [Code Cleaning]
1408
+ * Google Search iframe had some header alignment issues in Design 3. #624 - Thank you Leo Osa @leoosa for the contribution! [Bug fixed]
1409
+ * AMP Frontpage + Override AMP Content = Blank page #604 [Bug fixed]
1410
+ * Widget area added on the homepage with an 'AMP Category Blocks' widget. It means you can display multiple category blocks the homepage. This allows you to display complex layouts, even on AMP. [Major Improvement]
1411
+ * Auto-append /amp at the end of internal links in Menu with an option in the Menu section of the options panel #531 [Major Improvement]
1412
+ Reformatting and Minifying of stylesheet [Code Cleaning]
1413
+ * Created a new section for Homepage and moved some controls from other areas to the home section for the better user experience. [User Experience]
1414
+ * Override Homepage Thumbnail size option added. It will give you more control over your thumbnails. [Major Improvement]
1415
+ * New color picker added to change the color of the header elements in the Design 3 to give you better control over the design. [Enhancement]
1416
+ * Extra amp-carousel script loading is now fixed. [Bug fixed]
1417
+ * Crafting of layout code in design 2 and design 3, especially with social icons area. [Code Cleaning]
1418
+ * Design of search form was not clickable in iOS devices #621 [Bug fixed]
1419
+ * Disqus iframe was loading even when there was no disqus name was added in the option. We found that many users might be enabling it without knowing the output and then they seem to forget, which was causing them validation warnings. [Bug fixed]
1420
+
1421
+ = 0.9.43.6 =
1422
+ * View more details at https://ampforwp.com/stability-sprint-3-51st-update/
1423
+ * Typo in the is_home() function fixed
1424
+ * Option to hide/show AMP on all custom post types #587
1425
+ * False detection by Windows defender tool fixed
1426
+ * Conditional tags were not compatible with Advanced AMP ads which were causing some conflicts but is now fixed.
1427
+
1428
+ = 0.9.43.5 =
1429
+ * View more details at https://ampforwp.com/stability-sprint-2-50th-update/
1430
+ * Fixed shortcodes issue in related posts #543
1431
+ * Iframe Scripts Added properly
1432
+ * Proper conditions added for the social section of Design 3
1433
+ * Featured Image issue stretched in Design 2 & 3
1434
+ * Removed extra global $redux_builder_amp;
1435
+ * Custom Logo Dimensions option added #479
1436
+ * Index & NoIndex options added for SEO section. #558
1437
+ * Added URL for rewrite flushing rules in Options
1438
+ * Option to enable and disable the Author area in Design 3#577
1439
+ * Rel Nofollow added in credit link
1440
+ * debug issue solved: fn_offset not defined
1441
+ * debug issue solved: global $post not declared
1442
+ * The word 'ago' is now translatable in design 3
1443
+ * The word 'read next' is translatable now
1444
+ * Tablepress compatibility added #392
1445
+ * Secure API server is now serving through Google Cloud Manager.
1446
+ * Thrive Content builder was displaying twice when the Custom AMP content was on. It was a complex issue which has been solved now.
1447
+ * amp-ad extension.js script was loading if the Ads are not enabled. #598
1448
+ * Social Share Extension Included on Homepage even if we didn't have social icons #599
1449
+ * Installation UX improvement #593
1450
+ * Removed duplicate global variable
1451
+ * Proper OG tags added #588
1452
+ * Proper instructions added for Custom AMP content #471
1453
+
1454
+
1455
+ = 0.9.43.1 =
1456
+ * View more details at https://ampforwp.com/0-9-43-1-released-stability-sprint-1-49th-update/
1457
+ * Emoji in comments leads to AMP errors
1458
+ * Design 1 showing time on archives
1459
+ * Added some space between the archive label.
1460
+ * Lazy loading plugins compatibility #544
1461
+ * Custom header and footer areas
1462
+ * Sticky posts now come on top #564
1463
+ * Footer non-amplink added in design 3 #562
1464
+ * HTML Paragraph tag is shown in the title in category! #518
1465
+
1466
+ = 0.9.42 =
1467
+ * View more details at https://ampforwp.com/design-three-update/
1468
+ * Design 3 was released – Video Overview along with new options and features. View the video overview at: https://www.youtube.com/watch?v=ub1pwskt3Rc [Major Feature]
1469
+ * Ticket #517 Added Upload field into Redux core [3rd party Compatiblity]
1470
+ * Ticket#529 Controls for archive titles added [Improvement]
1471
+ * Ticket #548 Jetpack photon code removed
1472
+
1473
+ = 0.9.41 =
1474
+ * View more details at https://ampforwp.com/disqus-comments-in-amp/
1475
+ * Disqus Comments in AMP Support Added [New Feature] - This feature can be enabled from Dashboard > AMP Options > Disqus Comments
1476
+ * AMP WooCommerce supported tag was missing after the last update. [Bug fix]
1477
+ * Homepage & Related Posts was displaying private and protected posts, which is now fixed [Bug fix]
1478
+ * Next previous links added in Design 1 [Enhancement]
1479
+ * Invalid Post Time displaying in the homepage of Design 1 [Bug fix]
1480
+ * Twitter share now includes the twitter handle of the author with setting in options [Enhancement]
1481
+ * Emoji in comments leads to AMP errors was fixed [Bug fix]
1482
+ * Date are now displayed on archives in Design 1 [Enhancement]
1483
+ * When RTL enabled logo merges with nav bar was fixed [Bug fix]
1484
+ * Jetpack Photon compatibility added [3rd Party Compatibility]
1485
+
1486
+ = 0.9.40 =
1487
+ * View more details at https://ampforwp.com/0-9-40-released-biggest-stability-update/
1488
+ * Proper endpoints added [Improvement]
1489
+ * Flush Rewrites properly [Improvement]
1490
+ * REL Canonical properly getting added. [Improvement]
1491
+ * Proper Frontpage Canonical added [Improvement]
1492
+ * Added Base name support for categories and tags [Improvement]
1493
+ * Redirection of excluded post solved. [Bug fix]
1494
+ * Archives properly redirecting to the right URL [Bug fix]
1495
+ * Homepage redirection solved [Bug fix]
1496
+ * Plusone tag is stripped properly. [Validation Issue fixed]
1497
+ * Archives are now clickable. [Improvements]
1498
+ * WP_Query filter added for better customizability of Homepage loop. [Better Customizations]
1499
+ * Social share boost plugin compatibility. [3rd party Customizations]
1500
+ * Removed H1 from the frontpage even if it is not available. [Improvement]
1501
+ * H3 instead of H1 for Site title. So there is only one H1 per page. [SEO Improvement]
1502
+
1503
+ = 0.9.38 =
1504
+ * View full details at https://ampforwp.com/google-tag-manager-for-amp/
1505
+ * Google Tag manager included [New feature]
1506
+ * Iframe max-width added [Improvement]
1507
+ * Paginated pages have different titles now. [Bug fix]
1508
+
1509
+ = 0.9.37 =
1510
+ * View full details at https://ampforwp.com/category-tags-archive-support-added/
1511
+ * Debug issues solved [Bug fix]
1512
+ * Remove Extra styling added by other Themes/ Plugins [3rd party themes and plugin Support]
1513
+ * Category, Tags & Archive Support with titles added [Enchancement]
1514
+ * Archive Title support added [Enchancement]
1515
+ * There were some issues with attachments [Bug fix]
1516
+ * removed ? from amp url's [Improvement]
1517
+ * Mobile redirection for Archives added and 404 redirections removed for archives [Improvement]
1518
+ * View non-amp version now properly redirects to the normal version. #415 [Bug fix]
1519
+ * Added an option to turn off AMP support for Homepage. [Enchancement]
1520
+ * Too many redirects issue on homepage is fixed #435 [Improvement]
1521
+ * Spell check and G tags are removed for thrive & Spell check compatibility [Better Validation]
1522
+ * If image is not available in gravatar fixed, it was throwing an error #365 #327 [Improvement]
1523
+ * Comment anchor link changed for simplecomment button files in both designs [Improvement]
1524
+ * Redirection Loop issue fixed [Bug fix]
1525
+ * Shortcodes were visible in excerpt, it's fixed now. [Improvement]
1526
+ * Defer onload by other plugins was causing issues #431 [Better Validation & 3rd party support]
1527
+ * Improved Sessions [Improvement]
1528
+ * Advnaced Settings panel was created for better user experience. [Improvement]
1529
+ * Spell check tag was causing validation issues. [Better Validation & 3rd party support]
1530
+ * RTL issue fixed #454 [Bug fixed]
1531
+
1532
+ = 0.9.36 =
1533
+ * Full details at https://ampforwp.com/0-9-36-released-stability-update-43rd-update/
1534
+ * Redux Core Update. Better compatibility with the Salient theme and Themeforest themes & plugins using redux framework in their core, which makes the plugin much stable. [Huge Improvements]
1535
+ * Hide advertisement section if advance ads plugin is active. [Better User experience]
1536
+ * Ultimate Social Media PLUS Plugin Compatibility (Link) [3rd Party plugin Compatibility & Better Validation]
1537
+ * Launch Post Builder button added. One of the important feature called ‘Post Builder’, that is drag and drop post builder was somewhere hidden in the customizer, so positioned it for better visibility from users. [Better UX]
1538
+
1539
+ = 0.9.35 =
1540
+ * Full details at https://ampforwp.com/page-builder-realtime-preview-3rd-party-plugins-compatibility/
1541
+ * Customizer page builder (Design Manager) was not showing real-time preview, we have fixed this issue properly [Bug fix]
1542
+ * Attachment page was having the wrong endpoint. [Bug fix]
1543
+ * Fb:like div has href, showfaces, send and action tag, which was against validation [Validation Improvement]
1544
+ * A plugin (Spam Protection by CleanTalk, no Captcha Anti-Spam) was forcefully adding script into the AMP version. [3rd party Compatibility]
1545
+ * Lang attributes were added [Enhancement]
1546
+ * The tag like was disallowed in the AMP [Validation Improvement]
1547
+ * We did some more testing with Visual Composer & AMP [3rd party Compatibility]
1548
+ * AMP on Pages option was not working in some cases. [Bug fix]
1549
+ * Disable comment button when comments were disabled. This was fixed by @lofesa and was sent as a pull request. Thank you Lofesa!
1550
+ * g:plusone tag was not getting removed properly. [Validation Improvement]
1551
+ * Thrive headline optimizer was having issues in AMP version. [Validation Improvement]
1552
+ * Structured Data Image width issue solved [Enhancement]
1553
+ * BJ Lazy Load was having issues, we have added a fix which will make this plugin compatible with the AMP. [3rd party Compatibility & Validation Improvement]
1554
+ * imageanchor=”1″ was getting added by some 3rd party plugin, this was fixed.[Validation Improvement]
1555
+
1556
+ = 0.9.34 =
1557
+ * Newspaper theme by Tagdiv was having issues, we have fixed this one.
1558
+
1559
+ = 0.9.33 [15th Jan 2017] =
1560
+ * Full details at https://ampforwp.com/debug-errors-shortcodes/
1561
+ * Mobile was not working with Newspaper theme by Tagdiv [Bugfix]
1562
+ * Debug errors fixed, Code is now much cleaner.
1563
+ * New rewrite rules for homepage pagination. It had some paginated URLs with wrong amphtml tag.
1564
+ * Extra analytics file was loading. Better compatibility with Yoast & Monster analytics.
1565
+ * Properly removes AMP if turned off from Post panel
1566
+ * z-index position improved on Sticky Social bar
1567
+ * Better compatibility with shortcodes.
1568
+ * Divi Standard Layouts Compatibility
1569
+ * Properly Hide AMP posts if excluded. #367
1570
+ * Mobile redirection was causing loop issues which are now fixed.
1571
+ * Some plugins were loading in core AMP js file, which was causing the issues, which is now fixed. [Better Validation]
1572
+ * onclick was getting added in the links on AMP version. Issue fixed. [Better Validation]
1573
+ * thrive_headline tag was getting added in the Title tag which was causing validation issues. Fixed. [Better Validation]
1574
+ * Some interactive plugins were using place, state, city and imap tags which are now fixed. [Better Validation]
1575
+
1576
+ = 0.9.32 [7th Jan 2017] =
1577
+ * Full details at https://ampforwp.com/first-wave-of-polishing-in-2017/
1578
+ * Rel=canonical issue fixed: AMP URL redirect to the normal URL #293 & #332.
1579
+ * Paginated pages on homepage redirect to homepage URL #335
1580
+ * Title of the page should be displayed on the FrontPage #358
1581
+ * Thrive Builder AMP Validation Compatibility, so it will be validated properly in AMP.
1582
+ * Twitter Sharing improved so it gets the data properly #341
1583
+ * Option to change the number of Related Posts #290
1584
+ * Validation errors due to rel="canonical" was missing on some pages
1585
+ * Comment button displays even if the comments are not available
1586
+ * Threaded comments were duplicating, so that issue is solved and added proper CSS for it.
1587
+ * Minor issue with Jetpack Comments fixed.
1588
+ * Missing amp-social-share.js on front page fixed #372
1589
+ * Minor improvements to Title and description tags.
1590
+ * Analytics Script was loading twice when Glue was active.
1591
+ * Page specific class added for better customization compatibility #377
1592
+ * Inline Style support added Fixed #356
1593
+ * Bugs fixed in Email notification pointer
1594
+
1595
+ = 0.9.31 [2nd Jan 2017] =
1596
+ * Proper Details at https://ampforwp.com/amp-0-9-31-released-installation-user-experience/
1597
+ * Proper Condition added for the scripts to load in Frontpage.php
1598
+ * Rel canonical properly added for front pages
1599
+ * 404 and Archive page Mobile redirection code refined
1600
+ * User Experience Improvement: Installation process was improved
1601
+
1602
+ = 0.9.3 [31th December 2016] =
1603
+ * Proper Details at https://ampforwp.com/custom-amp-content-editor/
1604
+ * Custom AMP Editor - Which allows you to override your Content that you had written in Post or page, so you can add the different content just for AMP.
1605
+ * FrontPage had some validation issues. [Bug fix]
1606
+ * Related posts in Design 1 we're redirecting to 404 fixed [Bug fix]
1607
+
1608
+ = 0.9.2.2 [27th December 2016] =
1609
+ * Proper Details at https://ampforwp.com/polishing-user-experience-improvements/
1610
+ * Made the Options panel user-friendly
1611
+ * Social Share on frontpage issue fixed.
1612
+ * Readme.txt made user-friendly.
1613
+ * Archive option removed and some UI improvements
1614
+ * Single was not displaying the Title
1615
+ * 'Type is not allowed' [Validation issue fixed]
1616
+ * noshade tag Validation issue fixed
1617
+
1618
+ = 0.9.2.1 [24th December 2016] =
1619
+ * Proper Details at https://ampforwp.com/step-towards-fixing-amp-validation-errors/
1620
+ * Disabled the Tags and Categories support for AMP for better validation until we find a better solution.
1621
+ * Mobile redirection bug fixed, It was continuously redirecting to the same page [Bug fix]
1622
+ * trailingslashit added to make sure we have proper url for Mobile redirection [Bug fix]
1623
+ * In content AD overlapping the content issue fixed
1624
+
1625
+ = 0.9.2 [23th December 2016] =
1626
+ * Proper Details at https://ampforwp.com/mobile-redirection/
1627
+ * AMP Mobile Redirection Feature added. It can be turned on from Dashboard > General and then Mobile Redirection. [New Feature]
1628
+ * Archive title and description added [Improvement]
1629
+ * Improved the Speed of the AMP version #321 [Improvement]
1630
+ * Anchor link was not closing fixed #328 [Bug Fix]
1631
+ * Typo in Trailingslashit function which resulted in some issues in the Homepage version [Bug Fix]
1632
+
1633
+ = 0.9.1.2 [20th December 2016] =
1634
+ * Proper Details at https://ampforwp.com/new/
1635
+ * DoubleClick Support
1636
+ * Custom Post Type Support
1637
+ * Ratings Support
1638
+ * Comments Gaping fix
1639
+ * Custom Excerpt code
1640
+ * Better Compatibility with Yoast SEO plugin
1641
+ * AMP Validation error in Design 1 Fixed
1642
+ * Proper Homepage title & Description with Yoast SEO plugin issue fixed
1643
+ * Design -1 Excerpt too big for mobile devices, Fixed
1644
+ * Advertisement support on Design 1
1645
+ * Link to Tags & Categories were having some issues.
1646
+ * AMP looking bad on big devices
1647
+ * AMP validation Improvement: Lightbox plugins compatibility
1648
+ * Huge Progress in AMP Validation Errors: Strip unwanted codes and tags from wp_footer for better compatibility with Plugins
1649
+ * Page Performance: Removed default Google font loading
1650
+ * Page Performance: DNS Prefetch tag added for faster DNS Handshake
1651
+
1652
+ = 0.9.1 [16th December 2016] =
1653
+ * Proper Details at https://ampforwp.com/new/
1654
+ * PHP7 Compatibility
1655
+ * Pagination URLs (Prev & Next) was going to 404 ( #244 | #251 )
1656
+ * Custom CSS not working in Design one (#249)
1657
+ * Enhanced the translation panel by adding Textarea from Redux, which means that we're able to allow HTML in footer like before (#260)
1658
+ * How to remove “Powered by WordPress” from Design-1 of AMP ( #264 )
1659
+ * Non-amp Homepage support added (#267)
1660
+ * using get_avatar() (#259)
1661
+ * Validation issue fixed: The attribute 'rel' may not appear in tag 'div' (#268)
1662
+ * Validation Issue fixed: Script Tag removed from the content.
1663
+ * Featured image in Design 1 in single #261
1664
+ * After Fresh installation - a save is required Fixed
1665
+ * Excerpt length controlled
1666
+ * Design One has thumbnails on the Homepage
1667
+ * Non-AMP link goes to the wrong page, issue fixed.
1668
+ * Archive pages were broken, fixed.
1669
+ * Option to Enable & Disable the Next/Previous links in Single
1670
+ * WhatsApp sharing not working, issue fixed.
1671
+ * Category Taxonomy has extra ':' in the word.
1672
+ * The word 'Ago' is now translatable.
1673
+ * Yoast SEO with AMP compatibility issue fixed.
1674
+ * Several Minor Polishing in the code
1675
+ * Footer Ad gets covered by Sticky Social Icons (#269)
1676
+ * Smaller image size when “image caption” is used in Design-2 (#263)
1677
+ * Footer ad with Sticky Social bar issue fix
1678
+ * Checked with WordPress 4.7
1679
+ * Ad #1 was messing up with the title, issue fixed.
1680
+ * Compatibility improved with AMP WooCommerce.
1681
+
1682
+ = 0.9 =
1683
+ * Proper Details at https://ampforwp.com/amp-pagebuilder/
1684
+ * Drag & Drop Page builder Added: You can easily modify the look of the AMP page using this feature
1685
+ * 100% Yoast Compatible , Now no need to have additionally Glue Installed
1686
+ * 100% completed Translation panel, Now absolutely anything on page is translated
1687
+ * Added Option to turn on/off Page Support
1688
+ * Styling for Tags was Corrected
1689
+ * Made changes to these sections to reflect in the new Design manager : Related Posts, Footer
1690
+ * Default Image alignment styling added
1691
+ * Added Option to turn on/off Page Support
1692
+ * Related Posts Now use Custom Excerpt if it Exists
1693
+ * Now AMP pages wont have Validation errors because of 'rel' attribute in 'div' Tag or 'onclick' attribute in 'a' Tag
1694
+ * <pre> Tag styling issue fixed for AMP pages
1695
+ * Frontpage (Homepage) Compatibility with AMP which means better validation of front page.
1696
+ * WooCommerce Support Added https://wordpress.org/plugins/amp-woocommerce/ (for E-Commerce)
1697
+ * 2 New Designs added
1698
+ * SEO Panel Added
1699
+
1700
+ = 0.8.8 =
1701
+ * Proper Details at https://ampforwp.com/amp-0-8-8-released-translation-panel/
1702
+ * Translation Panel added. You can now easily translate the AMP version from the backend without any complications.
1703
+ * Badge Tag was throwing Validation error
1704
+ * Plusone tag validation error was fixed
1705
+ * Time tag was validation error was fixed
1706
+ * User experience for Mobile devices was improved
1707
+ * Meta info was messing up in smaller devices, it was fixed as well.
1708
+ * Internal AMP linking added for Categories and Tags
1709
+ * Future errors for AMP ads was fixed
1710
+ * Blockquote styling added
1711
+ * “Please Activate parent Plugin settings” added for better User Experience.
1712
+ * Related Post Ux improvement
1713
+ * Plugin version added in Footer source code for better debugging
1714
+ * Added Support for Default WordPress Image alignment
1715
+ * New action hooks added in index page
1716
+ * Featured Image Size options added
1717
+
1718
+ = 0.8.7 =
1719
+ * Proper Details at https://ampforwp.com/amp-0-8-7/
1720
+ * added option to enable/disable AMP on Archive pages (Ticket #188)
1721
+ * Solved 404 on Related Posts (Ticket #178 )
1722
+ * Related posts by either categories or Tags(Ticket #179)
1723
+ * added a link to menu Section from the AMP Options page(Ticket #190)
1724
+ * Added Support for Piwik Analytics(Ticket #163)
1725
+ * Added Support for Segment.com Analytics(Ticket #50)
1726
+ * Added a switch for hiding Non-Amp page link from Footer.( Ticket #189)
1727
+ * Added an Option that strips Users URL from Comments Section(Ticket #180)
1728
+ * Fixed stripping <date> tags from the content , Since it was preventing validation – amp-img issues fixed
1729
+ * UX Improved for every section of AMP Options page
1730
+ * Added Settings button on plugin page
1731
+ * Related posts switch added
1732
+ * Removed carousel.js
1733
+
1734
+
1735
+ = 0.8.6.1 =
1736
+ * Date Tag fix
1737
+ * Few validation issues after 0.8.6 were fixed (Frontpage amp-img strip issue fixed)
1738
+
1739
+ = 0.8.6 =
1740
+ * Proper Details at https://ampforwp.com/amp-0-8-6-released-related-posts-comments/
1741
+ * Related Posts
1742
+ * Post Comments
1743
+ * WhatsApp sharing button Your visitors can now easily share the content over the whatsapp.
1744
+ * Validation issue fixed by All In One Schema.org Rich Snippets plugin
1745
+ * Removed Google Fonts loading for Performance
1746
+ * New relic Support
1747
+ * Class added to ‘View Non-AMP Version’ text
1748
+ * Archives Structured Data issue fixed
1749
+ * Some instances img tags converted into amp-img automatically.
1750
+
1751
+
1752
+ = 0.8.5.3 =
1753
+ * Canonical issue fixed for Post
1754
+
1755
+ = 0.8.5.2 =
1756
+ * Canonical issue fixed for FrontPage
1757
+
1758
+ = 0.8.5.1 =
1759
+ * Proper Details at https://ampforwp.com/new/
1760
+ * Validation issue fixed: 'Value' tag
1761
+ * Validation issue fixed: The attribute 'contenteditable' may not appear in tag 'a'.
1762
+ * Validation issue fixed: Table markup
1763
+ * Validation issue fixed: nowrap and misc tags
1764
+ * New Relic Support
1765
+ * Tags on off option
1766
+ * Canonical and correct AMP html Redirect issues Solved
1767
+ * NextGEN Gallery Validation Support Added
1768
+
1769
+ = 0.8.5 =
1770
+ * Proper Details at https://ampforwp.com/the-0-4-compatibility/
1771
+ * AMP 0.4 Compatibility Check
1772
+ * Even better Structured Data Validation, Once in for all!
1773
+ * Structured Data Options to eliminate Validation errors
1774
+ * AMP Page Exclude option
1775
+
1776
+ = 0.8.4 =
1777
+ * Proper Details at https://ampforwp.com/blog/structured-data-validation/
1778
+ * Structured Data Validation
1779
+ * Navigation Text Change
1780
+ * Inline Style Validation
1781
+ * Form Validation
1782
+ * Frontpage shows the amphtml rel twice fixed
1783
+ * Facebook Sharing not working
1784
+
1785
+ = 0.8.3 =
1786
+ * Prefix added in the Content filter
1787
+ * Extra space after quote in Ads
1788
+
1789
+ = 0.8.2 =
1790
+ * Proper Details at https://ampforwp.com/blog/the-custom-frontpage/
1791
+ * Custom AMP FrontPage
1792
+ * Featured Image
1793
+ * New Mobile Friendly Advertisement sizes
1794
+ * Single Post Pagination Option
1795
+ * RTL Support
1796
+ * Notifications
1797
+ * Gaping if the Meta was turned off.
1798
+ * Analytics was not fetching the user id properly.
1799
+ * Page was not using the post template along with the AD support.
1800
+ * AMP Endpoint support for Paged when the front page is active.
1801
+ * UI improvement of Admin panel
1802
+ * Few Validation issues fixed
1803
+
1804
+ = 0.8.1 =
1805
+ * Warning: Cannot modify header information error fixed
1806
+ * Validation issue fixed. KK Star Plugin compatible.
1807
+ * Gaping in the smaller screens fixed
1808
+
1809
+ = 0.8 =
1810
+ * Proper Details at https://ampforwp.com/blog/the-change/
1811
+ * Plugin was re-written from scratch and is now built on top of default AMP plugin by Automattic but giving you the same features of the original plugin.
1812
+ * 99.5% Validation issues were fixed.
1813
+ * Page builder & Shortcodes Compatibility Support Added
1814
+ * Conflict with JSON API
1815
+ * Carousel support for Gallery
1816
+ * Better Image stretching and resizing
1817
+ * Youtube Video Embed Support
1818
+ * Vine Embed Support
1819
+ * Twitter oembed Support
1820
+ * Instagram Embed Support
1821
+ * Facebook Video Embed Support
1822
+ * Better Future Compatibility
1823
+
1824
+ = 0.7.7 =
1825
+ * Proper Details at https://ampforwp.com/blog/amp-0-7-7/
1826
+ * Big Validation Error fix Update
1827
+ * Disable AMP support on specific Pages and Posts
1828
+ * Option to disable the Post meta from the Single
1829
+ * Footer Credits and Copyright Text Option
1830
+ * New options for Social Sharing Bar in Single
1831
+ * Jetpack Social & Related Sharing Issue fixed
1832
+ * Gaping in footer if the Sticky bar is enabled
1833
+ * Text domain added on few strings
1834
+
1835
+ = 0.7.6 =
1836
+ * Google Adsense Support Added with AMP-Ad
1837
+ * Wrong Homepage rel amphtml bug fixed
1838
+
1839
+ = 0.7.5 =
1840
+ * Google Analytics Support Added
1841
+ * Logo Support Added. If the logo is disabled, then the Title should be activated.
1842
+ * Color Scheme Feature Added
1843
+ * User friendly Options Panel Added
1844
+ * iFrame support Added
1845
+ * Few Minor Bugs Fixed
1846
+
1847
+ = 0.7.1 =
1848
+ * Bug #24 (Github) fixed
1849
+ * Strip Style tags for faster & better validation
1850
+ * Bug #21 (Github) fixed
1851
+
1852
+ = 0.7 =
1853
+ * Canonical Improved
1854
+ * Navigation Validation bug fixed
1855
+ * Two more validation bugs fixed ('role' and 'tabindex' attribute)
1856
+ * Featured image automatically hides if it is not present
1857
+ * Validation issues in the images of the post's the_content
1858
+
1859
+ = 0.6 =
1860
+ * Improved Navigation Menu
1861
+ * Search Console errors fixed
1862
+ * Social Sharing option
1863
+ * Pages support
1864
+ * Force redirection for mobile users removed and many other bug fixes
1865
+
1866
+ = 0.5 =
1867
+ * Added AMP Markup for Google Structured data. This will fix the issues in Webmaster tools.
1868
+
1869
+ = 0.4 =
1870
+ * Support of Custom menu added for AMP enabled sites
1871
+
1872
+ = 0.3 =
1873
+ * Support of amp-img added in single posts
1874
+ * minor css bug fixed
1875
+
1876
+ = 0.2.5 =
1877
+ * Minor bugs fixed
1878
+ * ?mobile & ?nomobile is now ?amp & ?noamp
1879
+
1880
+ = 0.2 =
1881
+ * White Screen of death issue fixed
1882
+ * Plugin URI updated
1883
+
1884
+ = 0.1 =
1885
+ * Initial version
accelerated-moblie-pages.php CHANGED
@@ -1,755 +1,774 @@
1
- <?php
2
- /*
3
- Plugin Name: Accelerated Mobile Pages
4
- Plugin URI: https://wordpress.org/plugins/accelerated-mobile-pages/
5
- Description: AMP for WP - Accelerated Mobile Pages for WordPress
6
- Version: 0.9.97.9
7
- Author: Ahmed Kaludi, Mohammed Kaludi
8
- Author URI: https://ampforwp.com/
9
- Donate link: https://www.paypal.me/Kaludi/25
10
- License: GPL2+
11
- Text Domain: accelerated-mobile-pages
12
- */
13
-
14
- // Exit if accessed directly.
15
- if ( ! defined( 'ABSPATH' ) ) exit;
16
-
17
- define('AMPFORWP_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
18
- define('AMPFORWP_PLUGIN_DIR_URI', plugin_dir_url(__FILE__));
19
- define('AMPFORWP_DISQUS_URL',plugin_dir_url(__FILE__).'includes/disqus.html');
20
- define('AMPFORWP_IMAGE_DIR',plugin_dir_url(__FILE__).'images');
21
- define('AMPFORWP_MAIN_PLUGIN_DIR', plugin_dir_path( __DIR__ ) );
22
- define('AMPFORWP_VERSION','0.9.97.9');
23
- // any changes to AMP_QUERY_VAR should be refelected here
24
- function ampforwp_generate_endpoint(){
25
- $ampforwp_slug = '';
26
- $get_permalink_structure = '';
27
-
28
- $ampforwp_slug = "amp";
29
-
30
- return $ampforwp_slug;
31
- }
32
-
33
- define('AMPFORWP_AMP_QUERY_VAR', apply_filters( 'amp_query_var', ampforwp_generate_endpoint() ) );
34
-
35
- load_plugin_textdomain( 'accelerated-mobile-pages', false, trailingslashit(AMPFORWP_PLUGIN_DIR) . 'languages' );
36
-
37
- // Rewrite the Endpoints after the plugin is activate, as priority is set to 11
38
- function ampforwp_add_custom_post_support() {
39
- global $redux_builder_amp;
40
- add_rewrite_endpoint( AMPFORWP_AMP_QUERY_VAR, EP_PAGES | EP_PERMALINK | EP_AUTHORS | EP_ALL_ARCHIVES | EP_ROOT );
41
- // Pages
42
- if ( isset($redux_builder_amp['amp-on-off-for-all-pages']) && $redux_builder_amp['amp-on-off-for-all-pages'] ) {
43
- add_post_type_support( 'page', AMPFORWP_AMP_QUERY_VAR );
44
- }
45
- // Custom Post Types
46
- if ( isset($redux_builder_amp['ampforwp-custom-type'] ) && $redux_builder_amp['ampforwp-custom-type'] ) {
47
- foreach ( $redux_builder_amp['ampforwp-custom-type'] as $custom_post ) {
48
- add_post_type_support( $custom_post, AMP_QUERY_VAR );
49
- }
50
- }
51
- }
52
- add_action( 'init', 'ampforwp_add_custom_post_support',11);
53
-
54
- // Frontpage and Blog page check from reading settings.
55
- function ampforwp_name_blog_page() {
56
- if ( ! $page_for_posts = get_option('page_for_posts')) return;
57
- $page_for_posts = get_option( 'page_for_posts' );
58
- $post = get_post($page_for_posts);
59
- if ( $post ) {
60
- $slug = $post->post_name;
61
- return $slug;
62
- }
63
- }
64
- function ampforwp_custom_post_page() {
65
- $front_page_type = get_option( 'show_on_front' );
66
- if ( $front_page_type ) {
67
- return $front_page_type;
68
- }
69
- }
70
-
71
- function ampforwp_get_the_page_id_blog_page(){
72
- $page = "";
73
- $output = "";
74
- if ( ampforwp_name_blog_page() ) {
75
- $page = get_page_by_path( ampforwp_name_blog_page() );
76
- $output = $page->ID;
77
- }
78
-
79
- return $output;
80
- }
81
-
82
- // Add Custom Rewrite Rule to make sure pagination & redirection is working correctly
83
- function ampforwp_add_custom_rewrite_rules() {
84
- global $redux_builder_amp;
85
- // For Homepage
86
- add_rewrite_rule(
87
- 'amp/?$',
88
- 'index.php?amp',
89
- 'top'
90
- );
91
- // For Homepage with Pagination
92
- add_rewrite_rule(
93
- 'amp/page/([0-9]{1,})/?$',
94
- 'index.php?amp=1&paged=$matches[1]',
95
- 'top'
96
- );
97
-
98
- // For /Blog page with Pagination
99
- if( ampforwp_name_blog_page() ) {
100
- add_rewrite_rule(
101
- ampforwp_name_blog_page(). '/amp/page/([0-9]{1,})/?$',
102
- 'index.php?amp=1&paged=$matches[1]&page_id=' .ampforwp_get_the_page_id_blog_page(),
103
- 'top'
104
- );
105
- // Pagination to work with Extensions like.hml
106
- add_rewrite_rule(
107
- ampforwp_name_blog_page(). '(.+?)/amp/page/([0-9]{1,})/?$',
108
- 'index.php?amp=1&paged=$matches[2]&page_id=' .ampforwp_get_the_page_id_blog_page(),
109
- 'top'
110
- );
111
- }
112
-
113
- // For Author pages
114
- add_rewrite_rule(
115
- 'author\/([^/]+)\/amp\/?$',
116
- 'index.php?amp=1&author_name=$matches[1]',
117
- 'top'
118
- );
119
- add_rewrite_rule(
120
- 'author\/([^/]+)\/amp\/page\/?([0-9]{1,})\/?$',
121
- 'index.php?amp=1&author_name=$matches[1]&paged=$matches[2]',
122
- 'top'
123
- );
124
-
125
- // For category pages
126
- $rewrite_category = get_option('category_base');
127
- if ( ! empty($rewrite_category) ) {
128
- $rewrite_category = get_option('category_base');
129
- } else {
130
- $rewrite_category = 'category';
131
- }
132
-
133
- add_rewrite_rule(
134
- $rewrite_category.'\/(.+?)\/amp/?$',
135
- 'index.php?amp=1&category_name=$matches[1]',
136
- 'top'
137
- );
138
- // For category pages with Pagination
139
- add_rewrite_rule(
140
- $rewrite_category.'/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
141
- 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
142
- 'top'
143
- );
144
-
145
- // For category pages with Pagination (Custom Permalink Structure)
146
- $permalink_structure = get_option('permalink_structure');
147
- $permalink_structure = preg_replace('/(%.*%)/', '', $permalink_structure);
148
- $permalink_structure = preg_replace('/\//', '', $permalink_structure);
149
- if ( $permalink_structure ) {
150
- add_rewrite_rule(
151
- $permalink_structure.'\/'.$rewrite_category.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
152
- 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
153
- 'top'
154
- );
155
- }
156
-
157
- // For tag pages
158
- $rewrite_tag = get_option('tag_base');
159
- if ( ! empty($rewrite_tag) ) {
160
- $rewrite_tag = get_option('tag_base');
161
- } else {
162
- $rewrite_tag = 'tag';
163
- }
164
- add_rewrite_rule(
165
- $rewrite_tag.'\/(.+?)\/amp/?$',
166
- 'index.php?amp=1&tag=$matches[1]',
167
- 'top'
168
- );
169
- // For tag pages with Pagination
170
- add_rewrite_rule(
171
- $rewrite_tag.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
172
- 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
173
- 'top'
174
- );
175
- // For tag pages with Pagination (Custom Permalink Structure)
176
- if ( $permalink_structure ) {
177
- add_rewrite_rule(
178
- $permalink_structure.'\/'.$rewrite_tag.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
179
- 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
180
- 'top'
181
- );
182
- }
183
-
184
- //Rewrite rule for custom Taxonomies
185
- $args = array(
186
- 'public' => true,
187
- '_builtin' => false,
188
- );
189
- $output = 'names'; // or objects
190
- $operator = 'and'; // 'and' or 'or'
191
- $taxonomies = get_taxonomies( $args, $output, $operator );
192
-
193
-
194
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
195
- if(!is_plugin_active('amp-woocommerce-pro/amp-woocommerce.php' )) {
196
- if( class_exists( 'WooCommerce' ) ) {
197
- $wc_permalinks = get_option( 'woocommerce_permalinks' );
198
-
199
- if ( $wc_permalinks ) {
200
- $taxonomies = array_merge($taxonomies, $wc_permalinks);
201
- }
202
- }
203
- }
204
-
205
- $taxonomies = apply_filters( 'ampforwp_modify_rewrite_tax', $taxonomies );
206
- if ( $taxonomies ) {
207
- foreach ( $taxonomies as $key => $taxonomy ) {
208
- if ( ! empty( $taxonomy ) ) {
209
- add_rewrite_rule(
210
- $taxonomy.'\/(.+?)\/amp/?$',
211
- 'index.php?amp&'.$key.'=$matches[1]',
212
- 'top'
213
- );
214
- // For Custom Taxonomies with pages
215
- add_rewrite_rule(
216
- $taxonomy.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
217
- 'index.php?amp&'.$taxonomy.'=$matches[1]&paged=$matches[2]',
218
- 'top'
219
- );
220
- }
221
- }
222
- }
223
- }
224
- add_action( 'init', 'ampforwp_add_custom_rewrite_rules' );
225
- // add re-write rule for Products
226
- add_action( 'init', 'ampforwp_custom_rewrite_rules_for_product_category' );
227
- if ( ! function_exists('ampforwp_custom_rewrite_rules_for_product_category') ) {
228
- function ampforwp_custom_rewrite_rules_for_product_category(){
229
- if ( class_exists('WooCommerce') ) {
230
- $permalinks = wp_parse_args( (array) get_option( 'woocommerce_permalinks', array() ), array(
231
- 'product_base' => '',
232
- 'category_base' => '',
233
- 'tag_base' => '',
234
- 'attribute_base' => '',
235
- 'use_verbose_page_rules' => false,
236
- ) );
237
- // Ensure rewrite slugs are set.
238
- $permalinks['product_rewrite_slug'] = untrailingslashit( empty( $permalinks['product_base'] ) ? _x( 'product', 'slug', 'woocommerce' ) : $permalinks['product_base'] );
239
- $permalinks['category_rewrite_slug'] = untrailingslashit( empty( $permalinks['category_base'] ) ? _x( 'product-category', 'slug', 'woocommerce' ) : $permalinks['category_base'] );
240
- $permalinks['tag_rewrite_slug'] = untrailingslashit( empty( $permalinks['tag_base'] ) ? _x( 'product-tag', 'slug', 'woocommerce' ) : $permalinks['tag_base'] );
241
- $permalinks['attribute_rewrite_slug'] = untrailingslashit( empty( $permalinks['attribute_base'] ) ? '' : $permalinks['attribute_base'] );
242
-
243
-
244
-
245
- add_rewrite_rule(
246
- $permalinks['product_rewrite_slug']."\/amp\/page\/([0-9]{1,})/?$",
247
- 'index.php?post_type=product&paged=$matches[1]&amp=1',
248
- 'top'
249
- );
250
- add_rewrite_rule(
251
- $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
252
- 'index.php?product_cat=$matches[1]&paged=$matches[2]&amp=1',
253
- 'top'
254
- );
255
- add_rewrite_rule(
256
- $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/?$',
257
- 'index.php?amp&product_cat=$matches[1]',
258
- 'top'
259
- );
260
-
261
-
262
- add_rewrite_rule(
263
- $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
264
- 'index.php?product_tag=$matches[1]&paged=$matches[2]&amp=1',
265
- 'top'
266
- );
267
- add_rewrite_rule(
268
- $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/?$',
269
- 'index.php?amp&product_tag=$matches[1]',
270
- 'top'
271
- );
272
- }
273
- }
274
- }
275
-
276
- register_activation_hook( __FILE__, 'ampforwp_rewrite_activation', 20 );
277
- function ampforwp_rewrite_activation() {
278
-
279
- // Run AMP deactivation code while activation
280
- ampforwp_deactivate_amp_plugin();
281
-
282
- if ( ! did_action( 'ampforwp_init' ) ) {
283
- ampforwp_init();
284
- }
285
-
286
- flush_rewrite_rules();
287
-
288
- ampforwp_add_custom_post_support();
289
- ampforwp_add_custom_rewrite_rules();
290
-
291
- // Flushing rewrite urls ONLY on activation
292
- global $wp_rewrite;
293
- $wp_rewrite->flush_rules();
294
-
295
- delete_option('ampforwp_rewrite_flush_option');
296
-
297
- // Set transient for Welcome page
298
- set_transient( 'ampforwp_welcome_screen_activation_redirect', true, 30 );
299
-
300
- }
301
-
302
- add_action( 'admin_init', 'ampforwp_flush_after_update');
303
- function ampforwp_flush_after_update() {
304
- // Flushing rewrite urls ONLY on after Update is installed
305
- $older_version = "";
306
- $older_version = get_transient('ampforwp_current_version_check');
307
- if ( empty($older_version) || ( $older_version < AMPFORWP_VERSION ) ) {
308
- flush_rewrite_rules();
309
- global $wp_rewrite;
310
- $wp_rewrite->flush_rules();
311
- set_transient('ampforwp_current_version_check', AMPFORWP_VERSION);
312
- }
313
- }
314
-
315
-
316
- add_action('init', 'ampforwp_flush_rewrite_by_option', 20);
317
-
318
- function ampforwp_flush_rewrite_by_option(){
319
-
320
- global $wp_rewrite;
321
- $get_current_permalink_settings = "";
322
-
323
- $get_current_permalink_settings = get_option('ampforwp_rewrite_flush_option');
324
-
325
- if ( $get_current_permalink_settings ) {
326
- return;
327
- }
328
- // Adding double check to make sure, we are not updating and calling database unnecessarily
329
- if ( empty( $get_current_permalink_settings ) ) {
330
- $wp_rewrite->flush_rules();
331
- update_option('ampforwp_rewrite_flush_option', 'true');
332
- }
333
-
334
- }
335
-
336
- register_deactivation_hook( __FILE__, 'ampforwp_rewrite_deactivate', 20 );
337
- function ampforwp_rewrite_deactivate() {
338
- // Flushing rewrite urls ONLY on deactivation
339
- global $wp_rewrite;
340
-
341
- foreach ( $wp_rewrite->endpoints as $index => $endpoint ) {
342
- if ( AMP_QUERY_VAR === $endpoint[1] ) {
343
- unset( $wp_rewrite->endpoints[ $index ] );
344
- break;
345
- }
346
- }
347
-
348
- flush_rewrite_rules();
349
-
350
- $wp_rewrite->flush_rules();
351
-
352
- // Remove transient for Welcome page
353
- delete_transient( 'ampforwp_welcome_screen_activation_redirect');
354
- }
355
-
356
- add_action( 'admin_init','ampforwp_parent_plugin_check');
357
- function ampforwp_parent_plugin_check() {
358
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
359
- $amp_plugin_activation_check = is_plugin_active( 'amp/amp.php' );
360
- if ( $amp_plugin_activation_check ) {
361
- // set_transient( 'ampforwp_parent_plugin_check', true, 30 );
362
- } else {
363
- delete_option( 'ampforwp_parent_plugin_check');
364
- }
365
- }
366
- if( !function_exists('ampforwp_upcomming_layouts_demo') ){
367
- function ampforwp_upcomming_layouts_demo(){
368
- return array(
369
- array(
370
- "name"=>'Creative Services',
371
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-9.png',
372
- "link"=>'https://ampforwp.com/layouts-9/',
373
- ),
374
- array(
375
- "name"=>'App',
376
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-8.png',
377
- "link"=>'https://ampforwp.com/layouts-8/',
378
- ),
379
- array(
380
- "name"=>'Business Blog',
381
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-7.png',
382
- "link"=>'https://ampforwp.com/layouts-7/',
383
- ),
384
- array(
385
- "name"=>'Journal',
386
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-6.png',
387
- "link"=>'https://ampforwp.com/layouts-6/',
388
- ),
389
- array(
390
- "name"=>'Studio',
391
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-5.png',
392
- "link"=>'https://ampforwp.com/layouts-5/',
393
- ),
394
- array(
395
- "name"=>'Agency',
396
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-4.png',
397
- "link"=>'https://ampforwp.com/layouts-4/',
398
- ),
399
- array(
400
- "name"=>'Elegance',
401
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-3.png',
402
- "link"=>'https://ampforwp.com/layouts-3/',
403
- ),
404
- array(
405
- "name"=>'Weekly Magazine',
406
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-2.png',
407
- "link"=>'https://ampforwp.com/layouts-2/',
408
- ),
409
- array(
410
- "name"=>'News',
411
- "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-1.png',
412
- "link"=>'https://ampforwp.com/layouts-1/',
413
- ),
414
-
415
- );
416
- }
417
- }
418
- // Redux panel inclusion code
419
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
420
- $amp_plugin_manager_version = array();
421
- $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
422
- $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
423
- if ( $plugin_manager_active) {
424
- $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
425
- $amp_plugin_manager_version = $amp_plugin_manager['Version'];
426
- }
427
-
428
- if ( $amp_plugin_manager_active) {
429
- $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
430
- $amp_plugin_manager_version = $plugin_manager['Version'];
431
- }
432
- if ( $plugin_manager_active || $amp_plugin_manager_active ) {
433
- if ( (! class_exists( 'ReduxFramework' ) && $GLOBALS['pagenow']=='admin.php' && $_GET['page']=='amp_options') || is_plugin_active('redux-framework/redux-framework.php') || '1.0' == $amp_plugin_manager_version ) {
434
- require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
435
- require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
436
- }
437
- }
438
- add_action('after_setup_theme', 'ampforwp_load_amp_options');
439
- function ampforwp_load_amp_options(){
440
- if ( ! class_exists( 'ReduxFramework' ) ) {
441
- require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
442
- require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
443
- }
444
- if ( is_admin() ) {
445
- // Register all the main options
446
- require_once dirname( __FILE__ ).'/includes/options/admin-config.php';
447
- require_once dirname( __FILE__ ).'/templates/report-bugs.php';
448
- }
449
- }
450
-
451
-
452
- // Modules
453
- add_action('after_setup_theme','ampforwp_add_module_files');
454
- function ampforwp_add_module_files() {
455
-
456
- global $redux_builder_amp;
457
- if ( isset($redux_builder_amp['ampforwp-content-builder']) && $redux_builder_amp['ampforwp-content-builder'] ) {
458
- if ( ! function_exists( 'bstw' ) ) {
459
- require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/tinymce-widget/tinymce-widget.php';
460
- }
461
- require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-blurb.php';
462
- require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-button.php';
463
- }
464
- }
465
-
466
- /*
467
- * Load Files only in the backend
468
- * As we don't need plugin activation code to run everytime the site loads
469
- */
470
- if ( is_admin() ) {
471
-
472
- // Include Welcome page only on Admin pages
473
- require AMPFORWP_PLUGIN_DIR .'/includes/welcome.php';
474
-
475
- // Add Settings Button in Plugin backend
476
- if ( ! function_exists( 'ampforwp_plugin_settings_link' ) ) {
477
-
478
- // Deactivate Parent Plugin notice
479
- add_filter( 'plugin_action_links', 'ampforwp_plugin_settings_link', 10, 5 );
480
-
481
- function ampforwp_plugin_settings_link( $actions, $plugin_file ) {
482
- static $plugin;
483
- if ( ! isset($plugin))
484
- $plugin = plugin_basename(__FILE__);
485
- if ( $plugin === $plugin_file ) {
486
- $settings = array( 'settings' => '<a href="admin.php?page=amp_options&tab=8">' . __('Settings', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/extensions/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=features">' . __('Premium Features', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/membership/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=pro">' . __('Pro', 'accelerated-mobile-pages') . '</a>' );
487
-
488
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
489
- $actions = array_merge( $actions, $settings );
490
- }
491
- return $actions;
492
- }
493
- }
494
- } // is_admin() closing
495
-
496
- // AMP endpoint Verifier
497
- function ampforwp_is_amp_endpoint() {
498
- if ( ampforwp_is_non_amp() && ! is_admin()) {
499
- return ampforwp_is_non_amp();
500
- }
501
- else {
502
- return false !== get_query_var( 'amp', false );
503
- }
504
- }
505
-
506
- if ( ! class_exists( 'Ampforwp_Init', false ) ) {
507
- class Ampforwp_Init {
508
-
509
- public function __construct(){
510
-
511
- // Load Files required for the plugin to run
512
- require AMPFORWP_PLUGIN_DIR .'/includes/includes.php';
513
-
514
- // Redirection Code added
515
- require AMPFORWP_PLUGIN_DIR.'/includes/redirect.php';
516
-
517
- require AMPFORWP_PLUGIN_DIR .'/classes/class-init.php';
518
- new Ampforwp_Loader();
519
-
520
- }
521
- }
522
- }
523
- /*
524
- * Start the plugin.
525
- * Gentlemen start your engines
526
- */
527
- function ampforwp_plugin_init() {
528
-
529
- if ( defined( 'AMP__FILE__' ) && defined('AMPFORWP_PLUGIN_DIR') ) {
530
- new Ampforwp_Init();
531
- }
532
- }
533
- add_action('init','ampforwp_plugin_init',9);
534
-
535
- /*
536
- * customized output widget
537
- * to be used be used in before or after Loop
538
- */
539
- require AMPFORWP_PLUGIN_DIR.'/templates/category-widget.php';
540
- require AMPFORWP_PLUGIN_DIR.'/templates/woo-widget.php';
541
-
542
-
543
- /*
544
- * Including core AMP plugin files and removing any other things if necessary
545
- */
546
- function ampforwp_bundle_core_amp_files(){
547
- // Bundling Default plugin
548
- require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/amp/amp.php';
549
-
550
- define( 'AMP__FILE__', __FILE__ );
551
- if ( ! defined('AMP__DIR__') ) {
552
- define( 'AMP__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
553
- }
554
- if ( ! defined('AMP_QUERY_VAR') ){
555
- define('AMP_QUERY_VAR', 'amp');
556
- }
557
- define( 'AMP__VERSION', '0.4.2' );
558
-
559
- require_once( AMP__DIR__ . '/back-compat/back-compat.php' );
560
- require_once( AMP__DIR__ . '/includes/amp-helper-functions.php' );
561
- require_once( AMP__DIR__ . '/includes/admin/functions.php' );
562
- require_once( AMP__DIR__ . '/includes/settings/class-amp-customizer-settings.php' );
563
- require_once( AMP__DIR__ . '/includes/settings/class-amp-customizer-design-settings.php' );
564
- }
565
- add_action('plugins_loaded','ampforwp_bundle_core_amp_files', 8);
566
-
567
- function ampforwp_deactivate_amp_plugin() {
568
-
569
- if ( version_compare( floatval( get_bloginfo( 'version' ) ), '3.5', '>=' ) ) {
570
-
571
- if ( current_user_can( 'activate_plugins' ) ) {
572
-
573
- add_action( 'admin_init', 'ampforwp_deactivate_amp' );
574
-
575
- function ampforwp_deactivate_amp() {
576
- deactivate_plugins( AMPFORWP_MAIN_PLUGIN_DIR . 'amp/amp.php' );
577
- }
578
- }
579
- }
580
- }
581
- add_action( 'plugins_loaded', 'ampforwp_deactivate_amp_plugin' );
582
-
583
- function ampforwp_modify_amp_activatation_link( $actions, $plugin_file ) {
584
- $plugin = '';
585
-
586
- $plugin = 'amp/amp.php';
587
- if ( $plugin == $plugin_file ) {
588
- add_thickbox();
589
- unset($actions['activate']);
590
- $amp_activate = '<span style="cursor:pointer;color:#0089c8" class="warning_activate_amp" onclick="alert(\'AMP is already bundled with AMPforWP. Please do not install this plugin with AMPforWP to avoid conflicts. \')">Activate</span>';
591
- array_unshift ($actions,$amp_activate);
592
- }
593
- return $actions;
594
- }
595
- add_filter( 'plugin_action_links', 'ampforwp_modify_amp_activatation_link', 10, 2 );
596
-
597
- if ( ! function_exists('ampforwp_init') ) {
598
- add_action( 'init', 'ampforwp_init' );
599
- function ampforwp_init() {
600
- if ( false === apply_filters( 'amp_is_enabled', true ) ) {
601
- return;
602
- }
603
- if( ! defined('AMP_QUERY_VAR')){
604
- define( 'AMP_QUERY_VAR', apply_filters( 'amp_query_var', 'amp' ) );
605
- }
606
-
607
- if ( ! defined('AMP__DIR__') ) {
608
- define( 'AMP__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
609
- }
610
-
611
- do_action( 'amp_init' );
612
-
613
- load_plugin_textdomain( 'amp', false, plugin_basename( AMP__DIR__ ) . '/languages' );
614
-
615
- add_rewrite_endpoint( AMP_QUERY_VAR, EP_PERMALINK );
616
- add_post_type_support( 'post', AMP_QUERY_VAR );
617
-
618
- add_filter( 'request', 'amp_force_query_var_value' );
619
- add_action( 'wp', 'amp_maybe_add_actions' );
620
-
621
- // Redirect the old url of amp page to the updated url. #1033 (Vendor Update)
622
- add_filter( 'old_slug_redirect_url', 'ampforwp_redirect_old_slug_to_new_url' );
623
-
624
- if ( class_exists( 'Jetpack' ) && ! (defined( 'IS_WPCOM' ) && IS_WPCOM) ) {
625
- require_once( AMP__DIR__ . '/jetpack-helper.php' );
626
- }
627
- }
628
- }
629
-
630
-
631
- function amp_update_db_check() {
632
- global $redux_builder_amp;
633
- $ampforwp_current_version = AMPFORWP_VERSION;
634
- if ( isset( $_GET['ampforwp-dismiss-theme'] ) && trim( $_GET['ampforwp-dismiss-theme']) === "ampforwp_dismiss_admin_notices" ) {
635
- update_option( 'ampforwp_theme_notice', true );
636
- wp_redirect("admin.php?page=amp_options");
637
- }
638
- if ( get_option( 'AMPforwp_db_version' ) !== $ampforwp_current_version ) {
639
-
640
- if ( isset( $_GET['ampforwp-dismiss'] ) && trim( $_GET['ampforwp-dismiss']) === "ampforwp_dismiss_admin_notices" ) {
641
- update_option( 'AMPforwp_db_version', $ampforwp_current_version );
642
- wp_redirect(remove_query_arg('ampforwp-dismiss'), 301);
643
- }
644
- if ( isset($redux_builder_amp['ampforwp-update-notification-bar'] ) && $redux_builder_amp['ampforwp-update-notification-bar'] && current_user_can( 'manage_options' ) ) {
645
-
646
- add_action('admin_notices', 'ampforwp_update_notice');
647
- }
648
- }
649
- }
650
- add_action( 'plugins_loaded', 'amp_update_db_check' );
651
-
652
- // Admin notice for AMP WordPress Theme
653
- add_action('admin_notices', 'ampforwp_ampwptheme_notice');
654
- function ampforwp_ampwptheme_notice() {
655
- $theme = '';
656
- $theme = wp_get_theme(); // gets the current theme
657
-
658
- if ( ('AMP WordPress Theme' == $theme->name || 'AMP WordPress Theme' == $theme->parent_theme) && true != get_option('ampforwp_theme_notice') ) {
659
- add_thickbox(); ?>
660
- <div id="some" class="notice-warning settings-error notice is-dismissible">
661
- <span style="margin: 0.5em 0.5em 0 0">AMP WordPress Theme is installed</span><br>
662
- <span style="margin: 0.5em 0.5em 0 0">One Last Step Required: <a href="#TB_inline?width=600&height=550&inlineId=my-content-id" class="thickbox">Finish Setup</a></span><br>
663
- </div>
664
- <div id="my-content-id" style="display:none;">
665
- <p>
666
- <iframe width="100%" height="480" src="https://www.youtube.com/embed/" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
667
- <a href="<?php echo esc_url(add_query_arg( 'ampforwp-dismiss-theme', 'ampforwp_dismiss_admin_notices' )) ?>">Take me to the Options Panel</a>
668
- </p>
669
- </div>
670
- <?php }
671
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
672
-
673
- $amp_plugin_manager_version = array();
674
-
675
- $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
676
- $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
677
-
678
- if ( $plugin_manager_active) {
679
- $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
680
- $amp_plugin_manager_version = $amp_plugin_manager['Version'];
681
- }
682
- if ( $amp_plugin_manager_active) {
683
- $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
684
- $amp_plugin_manager_version = $plugin_manager['Version'];
685
- }
686
-
687
- if ( $plugin_manager_active || $amp_plugin_manager_active ) {
688
- $screen = get_current_screen();
689
- if ( '1.0' == $amp_plugin_manager_version && 'plugins' === $screen->base) { ?>
690
- <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b>Attention:</b> AMPforWP Plugin Manager requires an upgrade. Please <b><a href="https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice" target="_blank">Download &amp; install the latest version</a></b> for free.
691
- </p>
692
- </div>
693
- <?php }
694
- }
695
- }
696
-
697
- function ampforwp_update_notice() {
698
- $screen = '';
699
- $screen = get_current_screen();
700
- $ampforwp_current_version = AMPFORWP_VERSION;
701
- if ( 'toplevel_page_amp_options' == $screen->base ) { ?>
702
- <div class="notice-success notice is-dismissible amp-update-notice">
703
- <div class="amp-update-notice-text-box">
704
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAn1BMVEUAAADuHCXwHiTuHSTtHST/IjjuHSXuHCTvHSXvHCXwHi3/JyfuHSTuHCTvHSTvHCTxHSb/NDTyHyj0IyruHSTvHSXvHSbuHST1ICftHCXuHCXuHSXwHiXvHyfuHSTuHSTvHSXuHCTuHCTuHCTuHCTvHSXyHibuHCTuHCXuHCXuHCXuHibwICjuHCTuHCTuHSTwHSbuHCXuHCTuHCTtHCSisK2PAAAANHRSTlMA+1T35wiIxm9kEQzu4Yx/NgQlFZV6PrAa16RpUi7MhE3y3LmYXynrz5FYSSC9q55EddGypVN9ggAABlxJREFUeNrVm+mymkAQhQfZBVQEFNz3fbtm3v/ZYqUqyWww0603Vfn+mcr1wMz06QUk/yfZIPRua79KYst2Vgd/fS9aU5f8E6JFx4+pktWPryn5VtKH51u0kXgY9Mk30cv31IhZkH1e/VJU1BzrR+uzJ2I6sigQ5yv63NoPKYa42/6M/JpiWXrvr0I7p+/gnN7U3+7pm1x3BM/Op+9je+iACO2mI+aPcq8ItmHQ7WyGVVOUHHDWFI1qN3Y0HmSiSfYX3atddxhPmNCv1As6HNdvqvuYP6mSDXgbTsq78cdt7YV3HOU2lDD9QBnVZnuZnlXOkYAOwlzjaxjv3PfMs+5dvvsiAh6hofwdD1P9GxUZlQTMeSXlyAkxQrr/6kEwuF1bDKEBav87aCfrH8SDNIWf/3hB8Lgb0cMu2vgXI/9C3uK0FArXTHN4hW27p+RNdomQHZv9vxK2Hyf6ODIfSuE7u6QBIf984fQnNuc5bSGpN4RCSDlCnH7L2ghH8cofxKx2u2z+/rH6SSTu7IyyrEkN/if2f2JROXAz3hW3NfUff/7R+iNVX+Nwm6DMa+09F/8pVn+v3OIeV7PlRAFnWvEFq09PJg7bU1wiZVmg9YekBi4/z4jEmjuAaP24rG1xOEtsNS5A5eL0m73jwdWIjQv0QOtfjX32LCQhrv5B69uNZ7dcsmFWf3HLEqtPA0CtMeB8go3SAuW/8l3JpFWdIResBURYfZvpmfRma7ELXbH5GqNv+JdpIiY7OQaXbaz+08C9x4zS8+8/s1MQD6tvmXQ+LpuUpn8Whk1Dfbg+5Mo93m9li/Kx+isz99yx/arqqsZgfS6s9bDF0UWuhOw2Uj8HNP5i0RkxLjRE6ifG5pHJnr9A70DLklKLHqZfdMgvOvQvO5g+Jn3Jcj5zSTh9B3JyFlJ5HDObgtKnLQKAPXKeeCrGEH3syZ0JZ37A5mi4vroMNCyMKrEhzAD66BayYFJyyvtgjNHfp1DzFDLPjUkEAH18ATMVStO1HAR6fZbVpvPi+CJ/sXlxPzaNdF22PeBtIAfoa0garsDmz08lhCVeX+7+1DDlR/D6mGjqYZy+U1ce8Ipd3giDt/SNu9snv+aWaM14fRNvEE6dcCQ+pT829eLj66Oj2YIP6/PHfv76uOKOBF7f/D4Svjk5mM4lBjh9mSWzVvyR2DS2Vas6Reh4VahI1oYlad9MvwCVpRP+AUnV2FXNPqAvFSBSem7AnXS9X8xfdF/kPhPCZq21VIBI6RlGeeD158CyOBbTs2yg+uUEd9Y/hALEfWc4UcL1SSIOpFfs8xQgZ4i+HE2FuCQ2dEK5BuuTUNryL/yIcgLV52tQ2pYmRHOQftuB6xNHHlnH7OAIwh124dLtdhRz4ilA/4FZuFwxLw5wg/ooAenLAzErUgyOHPM+54hxj4lyIDaTl0VPDzVbvikLp0CaIetxK4x+31IOxDJL7Cj0zIH68pOxG5cfoIOyqYXRL+2azNeiwEhMZ6jHu0da09a7DnAJCpR+adcG/BcFBULfZupfXAjYJW8qjB0bzJ19lP656eltF1LZjVH6LlvXWxcxsS3Z5WmuDS9LjD6ZNz+c9yjDoXET1rr+T99YWfItRg6lZj3SFqWfcd9/1L5BdKr/phiqLz8cd5STtStlWO6aYikE63eF29O/w5KUNfkUpR8avczkUZaqrS4DMfoLi5oEmcs3Wr4qFO4Y/YFtOEDoL/mVilRl4BauH1OWofm7dLNMKgMR+gtbM0PlCwaOlWCYR4R+yOy/8IRXfwyo0+NfBjq9GX96By8TymExf+A+wfrZWtDP9al+T3mGf/asAOsPHMpzMym3l5Qnefy+Nmj+nVOBq2vUcVma14rRLxbPItM3IqnAMkih8uWNSvoZwDlEqm0Kkj8yNyH5mp6pQyWSsWvc/2xkeXoDTV8uKyrjeDuTlmFxs6hMDg3gK+hnZPIP0iQ7QVqYzKGziGpWPhw5VEnCGCrcRWSs2Yj/gWM2CDs/WA9VexneR9XY+9XTn1VJrPlvAUGzdejbXHcf/KkZ/sdmeHozisc6RuR9Wges/L1PPsPZR8jb+YV8jsHagsnvOyX5LOXX0/zmb4uUfAPTTmKy8wY/SMNzEdxW9ulzRL6bXegpfuAY+/diAb51PGn/3AqDrpcf58V4Oxlk5H/lJxdt5e+wtfWRAAAAAElFTkSuQmCC" width="128" height="128" />
705
- <div class="amp-update-notice-text"> <?php echo esc_attr('AMP has been updated to '.$ampforwp_current_version, 'accelerated-mobile-pages' ); ?></div>
706
- <a href="https://ampforwp.com/new/" target="_blank" href="admin.php?page=acmforwp_update">What's New?</a>
707
- </div>
708
- <div class="amp-update-notice-dismiss">
709
- <a title="Close this Notification" href="<?php echo esc_url(add_query_arg( 'ampforwp-dismiss', 'ampforwp_dismiss_admin_notices' )) ?>">X</a>
710
- </div>
711
- <div class="amp-update-notice-review-box">
712
- <a class="star_icon" href="https://wordpress.org/support/view/plugin-reviews/accelerated-mobile-pages?rate=5#new-post" target="_blank"> Appreciate it? <br> <span title="Give Us 5 Star">Leave a Review →</span></a>
713
- </div>
714
- </div>
715
- <?php }
716
- }
717
- if ( ! defined('AMP_FRAMEWORK_COMOPNENT_DIR_PATH') ) {
718
- define('AMP_FRAMEWORK_COMOPNENT_DIR_PATH', plugin_dir_path( __FILE__ )."/components");
719
- }
720
- require_once( AMP_FRAMEWORK_COMOPNENT_DIR_PATH . '/components-core.php' );
721
- require_once( AMPFORWP_PLUGIN_DIR. 'pagebuilder/amp-page-builder.php' );
722
- require_once( AMPFORWP_PLUGIN_DIR. 'base_remover/base_remover.php' );
723
- require_once( AMPFORWP_PLUGIN_DIR. 'includes/thirdparty-compatibility.php' );
724
- require ( AMPFORWP_PLUGIN_DIR.'/install/index.php' );
725
-
726
- /**
727
- * Redirects the old AMP URL to the new AMP URL.
728
- * If post slug is updated the amp page with old post slug will be redirected to the updated url.
729
- *
730
- * @param string $link New URL of the post.
731
- *
732
- * @return string $link URL to be redirected.
733
- */
734
- if ( ! function_exists( 'ampforwp_redirect_old_slug_to_new_url' ) ) {
735
- function ampforwp_redirect_old_slug_to_new_url( $link ) {
736
-
737
- if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
738
- $link = trailingslashit( trailingslashit( $link ) . AMPFORWP_AMP_QUERY_VAR );
739
- }
740
-
741
- return $link;
742
- }
743
- }
744
-
745
- // Hide Post Builder if Swift is enabled
746
- add_filter('amp_customizer_is_enabled', 'ampforwp_customizer_is_enabled');
747
- if ( ! function_exists('ampforwp_customizer_is_enabled') ) {
748
- function ampforwp_customizer_is_enabled($value){
749
- global $redux_builder_amp;
750
- if ( 4 == $redux_builder_amp['amp-design-selector'] ) {
751
- $value = false;
752
- }
753
- return $value;
754
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  }
1
+ <?php
2
+ /*
3
+ Plugin Name: Accelerated Mobile Pages
4
+ Plugin URI: https://wordpress.org/plugins/accelerated-mobile-pages/
5
+ Description: AMP for WP - Accelerated Mobile Pages for WordPress
6
+ Version: 0.9.97.10
7
+ Author: Ahmed Kaludi, Mohammed Kaludi
8
+ Author URI: https://ampforwp.com/
9
+ Donate link: https://www.paypal.me/Kaludi/25
10
+ License: GPL2+
11
+ Text Domain: accelerated-mobile-pages
12
+ */
13
+
14
+ // Exit if accessed directly.
15
+ if ( ! defined( 'ABSPATH' ) ) exit;
16
+
17
+ define('AMPFORWP_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
18
+ define('AMPFORWP_PLUGIN_DIR_URI', plugin_dir_url(__FILE__));
19
+ define('AMPFORWP_DISQUS_URL',plugin_dir_url(__FILE__).'includes/disqus.html');
20
+ define('AMPFORWP_IMAGE_DIR',plugin_dir_url(__FILE__).'images');
21
+ define('AMPFORWP_MAIN_PLUGIN_DIR', plugin_dir_path( __DIR__ ) );
22
+ define('AMPFORWP_VERSION','0.9.97.10');
23
+ // any changes to AMP_QUERY_VAR should be refelected here
24
+ function ampforwp_generate_endpoint(){
25
+ $ampforwp_slug = '';
26
+ $get_permalink_structure = '';
27
+
28
+ $ampforwp_slug = "amp";
29
+
30
+ return $ampforwp_slug;
31
+ }
32
+
33
+ define('AMPFORWP_AMP_QUERY_VAR', apply_filters( 'amp_query_var', ampforwp_generate_endpoint() ) );
34
+
35
+ load_plugin_textdomain( 'accelerated-mobile-pages', false, trailingslashit(AMPFORWP_PLUGIN_DIR) . 'languages' );
36
+
37
+ // Rewrite the Endpoints after the plugin is activate, as priority is set to 11
38
+ function ampforwp_add_custom_post_support() {
39
+ global $redux_builder_amp;
40
+ add_rewrite_endpoint( AMPFORWP_AMP_QUERY_VAR, EP_PAGES | EP_PERMALINK | EP_AUTHORS | EP_ALL_ARCHIVES | EP_ROOT );
41
+ // Pages
42
+ if ( isset($redux_builder_amp['amp-on-off-for-all-pages']) && $redux_builder_amp['amp-on-off-for-all-pages'] ) {
43
+ add_post_type_support( 'page', AMPFORWP_AMP_QUERY_VAR );
44
+ }
45
+ // Custom Post Types
46
+ if ( isset($redux_builder_amp['ampforwp-custom-type'] ) && $redux_builder_amp['ampforwp-custom-type'] ) {
47
+ foreach ( $redux_builder_amp['ampforwp-custom-type'] as $custom_post ) {
48
+ add_post_type_support( $custom_post, AMP_QUERY_VAR );
49
+ }
50
+ }
51
+ }
52
+ add_action( 'init', 'ampforwp_add_custom_post_support',11);
53
+
54
+ // Frontpage and Blog page check from reading settings.
55
+ function ampforwp_name_blog_page() {
56
+ if ( ! $page_for_posts = get_option('page_for_posts')) return;
57
+ $page_for_posts = get_option( 'page_for_posts' );
58
+ $post = get_post($page_for_posts);
59
+ if ( $post ) {
60
+ $slug = $post->post_name;
61
+ return $slug;
62
+ }
63
+ }
64
+ function ampforwp_custom_post_page() {
65
+ $front_page_type = get_option( 'show_on_front' );
66
+ if ( $front_page_type ) {
67
+ return $front_page_type;
68
+ }
69
+ }
70
+
71
+ function ampforwp_get_the_page_id_blog_page(){
72
+ $page = "";
73
+ $output = "";
74
+ if ( ampforwp_name_blog_page() ) {
75
+ $page = get_page_by_path( ampforwp_name_blog_page() );
76
+ $output = $page->ID;
77
+ }
78
+
79
+ return $output;
80
+ }
81
+
82
+ // Add Custom Rewrite Rule to make sure pagination & redirection is working correctly
83
+ function ampforwp_add_custom_rewrite_rules() {
84
+ global $redux_builder_amp;
85
+ // For Homepage
86
+ add_rewrite_rule(
87
+ 'amp/?$',
88
+ 'index.php?amp',
89
+ 'top'
90
+ );
91
+ // For Homepage with Pagination
92
+ add_rewrite_rule(
93
+ 'amp/page/([0-9]{1,})/?$',
94
+ 'index.php?amp=1&paged=$matches[1]',
95
+ 'top'
96
+ );
97
+
98
+ // For /Blog page with Pagination
99
+ if( ampforwp_name_blog_page() ) {
100
+ add_rewrite_rule(
101
+ ampforwp_name_blog_page(). '/amp/page/([0-9]{1,})/?$',
102
+ 'index.php?amp=1&paged=$matches[1]&page_id=' .ampforwp_get_the_page_id_blog_page(),
103
+ 'top'
104
+ );
105
+ // Pagination to work with Extensions like.hml
106
+ add_rewrite_rule(
107
+ ampforwp_name_blog_page(). '(.+?)/amp/page/([0-9]{1,})/?$',
108
+ 'index.php?amp=1&paged=$matches[2]&page_id=' .ampforwp_get_the_page_id_blog_page(),
109
+ 'top'
110
+ );
111
+ }
112
+
113
+ // For Author pages
114
+ add_rewrite_rule(
115
+ 'author\/([^/]+)\/amp\/?$',
116
+ 'index.php?amp=1&author_name=$matches[1]',
117
+ 'top'
118
+ );
119
+ add_rewrite_rule(
120
+ 'author\/([^/]+)\/amp\/page\/?([0-9]{1,})\/?$',
121
+ 'index.php?amp=1&author_name=$matches[1]&paged=$matches[2]',
122
+ 'top'
123
+ );
124
+
125
+ // For category pages
126
+ $rewrite_category = get_option('category_base');
127
+ if ( ! empty($rewrite_category) ) {
128
+ $rewrite_category = get_option('category_base');
129
+ } else {
130
+ $rewrite_category = 'category';
131
+ }
132
+
133
+ add_rewrite_rule(
134
+ $rewrite_category.'\/(.+?)\/amp/?$',
135
+ 'index.php?amp=1&category_name=$matches[1]',
136
+ 'top'
137
+ );
138
+ // For category pages with Pagination
139
+ add_rewrite_rule(
140
+ $rewrite_category.'/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
141
+ 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
142
+ 'top'
143
+ );
144
+
145
+ // For category pages with Pagination (Custom Permalink Structure)
146
+ $permalink_structure = get_option('permalink_structure');
147
+ $permalink_structure = preg_replace('/(%.*%)/', '', $permalink_structure);
148
+ $permalink_structure = preg_replace('/\//', '', $permalink_structure);
149
+ if ( $permalink_structure ) {
150
+ add_rewrite_rule(
151
+ $permalink_structure.'\/'.$rewrite_category.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
152
+ 'index.php?amp=1&category_name=$matches[1]&paged=$matches[2]',
153
+ 'top'
154
+ );
155
+ }
156
+
157
+ // For tag pages
158
+ $rewrite_tag = get_option('tag_base');
159
+ if ( ! empty($rewrite_tag) ) {
160
+ $rewrite_tag = get_option('tag_base');
161
+ } else {
162
+ $rewrite_tag = 'tag';
163
+ }
164
+ add_rewrite_rule(
165
+ $rewrite_tag.'\/(.+?)\/amp/?$',
166
+ 'index.php?amp=1&tag=$matches[1]',
167
+ 'top'
168
+ );
169
+ // For tag pages with Pagination
170
+ add_rewrite_rule(
171
+ $rewrite_tag.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
172
+ 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
173
+ 'top'
174
+ );
175
+ // For tag pages with Pagination (Custom Permalink Structure)
176
+ if ( $permalink_structure ) {
177
+ add_rewrite_rule(
178
+ $permalink_structure.'\/'.$rewrite_tag.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
179
+ 'index.php?amp=1&tag=$matches[1]&paged=$matches[2]',
180
+ 'top'
181
+ );
182
+ }
183
+
184
+ //Rewrite rule for custom Taxonomies
185
+ $args = array(
186
+ 'public' => true,
187
+ '_builtin' => false,
188
+ );
189
+ $output = 'names'; // or objects
190
+ $operator = 'and'; // 'and' or 'or'
191
+ $taxonomies = get_taxonomies( $args, $output, $operator );
192
+
193
+
194
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
195
+ if(!is_plugin_active('amp-woocommerce-pro/amp-woocommerce.php' )) {
196
+ if( class_exists( 'WooCommerce' ) ) {
197
+ $wc_permalinks = get_option( 'woocommerce_permalinks' );
198
+
199
+ if ( $wc_permalinks ) {
200
+ $taxonomies = array_merge($taxonomies, $wc_permalinks);
201
+ }
202
+ }
203
+ }
204
+
205
+ $taxonomies = apply_filters( 'ampforwp_modify_rewrite_tax', $taxonomies );
206
+ if ( $taxonomies ) {
207
+ foreach ( $taxonomies as $key => $taxonomy ) {
208
+ if ( ! empty( $taxonomy ) ) {
209
+ add_rewrite_rule(
210
+ $taxonomy.'\/(.+?)\/amp/?$',
211
+ 'index.php?amp&'.$key.'=$matches[1]',
212
+ 'top'
213
+ );
214
+ // For Custom Taxonomies with pages
215
+ add_rewrite_rule(
216
+ $taxonomy.'\/(.+?)\/amp\/page\/?([0-9]{1,})\/?$',
217
+ 'index.php?amp&'.$taxonomy.'=$matches[1]&paged=$matches[2]',
218
+ 'top'
219
+ );
220
+ }
221
+ }
222
+ }
223
+ }
224
+ add_action( 'init', 'ampforwp_add_custom_rewrite_rules' );
225
+ // add re-write rule for Products
226
+ add_action( 'init', 'ampforwp_custom_rewrite_rules_for_product_category' );
227
+ if ( ! function_exists('ampforwp_custom_rewrite_rules_for_product_category') ) {
228
+ function ampforwp_custom_rewrite_rules_for_product_category(){
229
+ if ( class_exists('WooCommerce') ) {
230
+ $permalinks = wp_parse_args( (array) get_option( 'woocommerce_permalinks', array() ), array(
231
+ 'product_base' => '',
232
+ 'category_base' => '',
233
+ 'tag_base' => '',
234
+ 'attribute_base' => '',
235
+ 'use_verbose_page_rules' => false,
236
+ ) );
237
+ // Ensure rewrite slugs are set.
238
+ $permalinks['product_rewrite_slug'] = untrailingslashit( empty( $permalinks['product_base'] ) ? _x( 'product', 'slug', 'woocommerce' ) : $permalinks['product_base'] );
239
+ $permalinks['category_rewrite_slug'] = untrailingslashit( empty( $permalinks['category_base'] ) ? _x( 'product-category', 'slug', 'woocommerce' ) : $permalinks['category_base'] );
240
+ $permalinks['tag_rewrite_slug'] = untrailingslashit( empty( $permalinks['tag_base'] ) ? _x( 'product-tag', 'slug', 'woocommerce' ) : $permalinks['tag_base'] );
241
+ $permalinks['attribute_rewrite_slug'] = untrailingslashit( empty( $permalinks['attribute_base'] ) ? '' : $permalinks['attribute_base'] );
242
+
243
+
244
+
245
+ add_rewrite_rule(
246
+ $permalinks['product_rewrite_slug']."\/amp\/page\/([0-9]{1,})/?$",
247
+ 'index.php?post_type=product&paged=$matches[1]&amp=1',
248
+ 'top'
249
+ );
250
+ add_rewrite_rule(
251
+ $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
252
+ 'index.php?product_cat=$matches[1]&paged=$matches[2]&amp=1',
253
+ 'top'
254
+ );
255
+ add_rewrite_rule(
256
+ $permalinks['category_rewrite_slug'].'\/(.+?)\/amp\/?$',
257
+ 'index.php?amp&product_cat=$matches[1]',
258
+ 'top'
259
+ );
260
+
261
+
262
+ add_rewrite_rule(
263
+ $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/page\/?([0-9]{1,})/?$',
264
+ 'index.php?product_tag=$matches[1]&paged=$matches[2]&amp=1',
265
+ 'top'
266
+ );
267
+ add_rewrite_rule(
268
+ $permalinks['tag_rewrite_slug'].'\/(.+?)\/amp\/?$',
269
+ 'index.php?amp&product_tag=$matches[1]',
270
+ 'top'
271
+ );
272
+ }
273
+ }
274
+ }
275
+
276
+ function ampforwp_plugin_info(){
277
+ $data = array();
278
+ $date = new DateTime();
279
+ $data = array('activation_data' => $date->getTimestamp() );
280
+ add_option( 'ampforwp_plugin_info', $data );
281
+ }
282
+ add_action('upgrader_process_complete','ampforwp_plugin_info' );
283
+
284
+ register_activation_hook( __FILE__, 'ampforwp_rewrite_activation', 20 );
285
+ function ampforwp_rewrite_activation() {
286
+
287
+ // Run AMP deactivation code while activation
288
+ ampforwp_deactivate_amp_plugin();
289
+
290
+ if ( ! did_action( 'ampforwp_init' ) ) {
291
+ ampforwp_init();
292
+ }
293
+
294
+ flush_rewrite_rules();
295
+
296
+ ampforwp_add_custom_post_support();
297
+ ampforwp_add_custom_rewrite_rules();
298
+ ampforwp_plugin_info();
299
+
300
+ // Flushing rewrite urls ONLY on activation
301
+ global $wp_rewrite;
302
+ $wp_rewrite->flush_rules();
303
+
304
+ delete_option('ampforwp_rewrite_flush_option');
305
+
306
+ // Set transient for Welcome page
307
+ set_transient( 'ampforwp_welcome_screen_activation_redirect', true, 30 );
308
+
309
+ }
310
+
311
+ add_action( 'admin_init', 'ampforwp_flush_after_update');
312
+ function ampforwp_flush_after_update() {
313
+ // Flushing rewrite urls ONLY on after Update is installed
314
+ $older_version = "";
315
+ $older_version = get_transient('ampforwp_current_version_check');
316
+ if ( empty($older_version) || ( $older_version < AMPFORWP_VERSION ) ) {
317
+ flush_rewrite_rules();
318
+ global $wp_rewrite;
319
+ $wp_rewrite->flush_rules();
320
+ set_transient('ampforwp_current_version_check', AMPFORWP_VERSION);
321
+ }
322
+ }
323
+
324
+
325
+ add_action('init', 'ampforwp_flush_rewrite_by_option', 20);
326
+
327
+ function ampforwp_flush_rewrite_by_option(){
328
+
329
+ global $wp_rewrite;
330
+ $get_current_permalink_settings = "";
331
+
332
+ $get_current_permalink_settings = get_option('ampforwp_rewrite_flush_option');
333
+
334
+ if ( $get_current_permalink_settings ) {
335
+ return;
336
+ }
337
+ // Adding double check to make sure, we are not updating and calling database unnecessarily
338
+ if ( empty( $get_current_permalink_settings ) ) {
339
+ $wp_rewrite->flush_rules();
340
+ update_option('ampforwp_rewrite_flush_option', 'true');
341
+ }
342
+
343
+ }
344
+
345
+ register_deactivation_hook( __FILE__, 'ampforwp_rewrite_deactivate', 20 );
346
+ function ampforwp_rewrite_deactivate() {
347
+ // Flushing rewrite urls ONLY on deactivation
348
+ global $wp_rewrite;
349
+
350
+ foreach ( $wp_rewrite->endpoints as $index => $endpoint ) {
351
+ if ( AMP_QUERY_VAR === $endpoint[1] ) {
352
+ unset( $wp_rewrite->endpoints[ $index ] );
353
+ break;
354
+ }
355
+ }
356
+
357
+ flush_rewrite_rules();
358
+
359
+ $wp_rewrite->flush_rules();
360
+
361
+ // Remove transient for Welcome page
362
+ delete_transient( 'ampforwp_welcome_screen_activation_redirect');
363
+ }
364
+
365
+ add_action( 'admin_init','ampforwp_parent_plugin_check');
366
+ function ampforwp_parent_plugin_check() {
367
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
368
+ $amp_plugin_activation_check = is_plugin_active( 'amp/amp.php' );
369
+ if ( $amp_plugin_activation_check ) {
370
+ // set_transient( 'ampforwp_parent_plugin_check', true, 30 );
371
+ } else {
372
+ delete_option( 'ampforwp_parent_plugin_check');
373
+ }
374
+ }
375
+ if( !function_exists('ampforwp_upcomming_layouts_demo') ){
376
+ function ampforwp_upcomming_layouts_demo(){
377
+ return array(
378
+ array(
379
+ "name"=>'Creative Services',
380
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-9.png',
381
+ "link"=>'https://ampforwp.com/layouts-9/',
382
+ ),
383
+ array(
384
+ "name"=>'App',
385
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-8.png',
386
+ "link"=>'https://ampforwp.com/layouts-8/',
387
+ ),
388
+ array(
389
+ "name"=>'Business Blog',
390
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-7.png',
391
+ "link"=>'https://ampforwp.com/layouts-7/',
392
+ ),
393
+ array(
394
+ "name"=>'Journal',
395
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-6.png',
396
+ "link"=>'https://ampforwp.com/layouts-6/',
397
+ ),
398
+ array(
399
+ "name"=>'Studio',
400
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-5.png',
401
+ "link"=>'https://ampforwp.com/layouts-5/',
402
+ ),
403
+ array(
404
+ "name"=>'Agency',
405
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-4.png',
406
+ "link"=>'https://ampforwp.com/layouts-4/',
407
+ ),
408
+ array(
409
+ "name"=>'Elegance',
410
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-3.png',
411
+ "link"=>'https://ampforwp.com/layouts-3/',
412
+ ),
413
+ array(
414
+ "name"=>'Weekly Magazine',
415
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-2.png',
416
+ "link"=>'https://ampforwp.com/layouts-2/',
417
+ ),
418
+ array(
419
+ "name"=>'News',
420
+ "image"=>''.AMPFORWP_IMAGE_DIR . '/layouts-1.png',
421
+ "link"=>'https://ampforwp.com/layouts-1/',
422
+ ),
423
+
424
+ );
425
+ }
426
+ }
427
+ // Redux panel inclusion code
428
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
429
+ $amp_plugin_manager_version = array();
430
+ $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
431
+ $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
432
+ if ( $plugin_manager_active) {
433
+ $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
434
+ $amp_plugin_manager_version = $amp_plugin_manager['Version'];
435
+ }
436
+
437
+ if ( $amp_plugin_manager_active) {
438
+ $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
439
+ $amp_plugin_manager_version = $plugin_manager['Version'];
440
+ }
441
+ if ( $plugin_manager_active || $amp_plugin_manager_active ) {
442
+ if ( (! class_exists( 'ReduxFramework' ) && $GLOBALS['pagenow']=='admin.php' && $_GET['page']=='amp_options') || is_plugin_active('redux-framework/redux-framework.php') || '1.0' == $amp_plugin_manager_version ) {
443
+ require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
444
+ require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
445
+ }
446
+ }
447
+ add_action('after_setup_theme', 'ampforwp_load_amp_options');
448
+ function ampforwp_load_amp_options(){
449
+ if ( ! class_exists( 'ReduxFramework' ) ) {
450
+ require_once dirname( __FILE__ ).'/includes/options/extensions/loader.php';
451
+ require_once dirname( __FILE__ ).'/includes/options/redux-core/framework.php';
452
+ }
453
+ if ( is_admin() ) {
454
+ // Register all the main options
455
+ require_once dirname( __FILE__ ).'/includes/options/admin-config.php';
456
+ require_once dirname( __FILE__ ).'/templates/report-bugs.php';
457
+ }
458
+ }
459
+
460
+
461
+ // Modules
462
+ add_action('after_setup_theme','ampforwp_add_module_files');
463
+ function ampforwp_add_module_files() {
464
+
465
+ global $redux_builder_amp;
466
+ if ( isset($redux_builder_amp['ampforwp-content-builder']) && $redux_builder_amp['ampforwp-content-builder'] ) {
467
+ if ( ! function_exists( 'bstw' ) ) {
468
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/tinymce-widget/tinymce-widget.php';
469
+ }
470
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-blurb.php';
471
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/modules/ampforwp-button.php';
472
+ }
473
+ }
474
+
475
+ /*
476
+ * Load Files only in the backend
477
+ * As we don't need plugin activation code to run everytime the site loads
478
+ */
479
+ if ( is_admin() ) {
480
+
481
+ // Include Welcome page only on Admin pages
482
+ require AMPFORWP_PLUGIN_DIR .'/includes/welcome.php';
483
+
484
+ // Add Settings Button in Plugin backend
485
+ if ( ! function_exists( 'ampforwp_plugin_settings_link' ) ) {
486
+
487
+ // Deactivate Parent Plugin notice
488
+ add_filter( 'plugin_action_links', 'ampforwp_plugin_settings_link', 10, 5 );
489
+
490
+ function ampforwp_plugin_settings_link( $actions, $plugin_file ) {
491
+ static $plugin;
492
+ if ( ! isset($plugin))
493
+ $plugin = plugin_basename(__FILE__);
494
+ if ( $plugin === $plugin_file ) {
495
+ $settings = array( 'settings' => '<a href="admin.php?page=amp_options&tab=8">' . __('Settings', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/extensions/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=features">' . __('Premium Features', 'accelerated-mobile-pages') . '</a> | <a href="https://ampforwp.com/membership/#utm_source=plugin-panel&utm_medium=plugin-extension&utm_campaign=pro">' . __('Pro', 'accelerated-mobile-pages') . '</a>' );
496
+
497
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
498
+ $actions = array_merge( $actions, $settings );
499
+ }
500
+ return $actions;
501
+ }
502
+ }
503
+ } // is_admin() closing
504
+
505
+ // AMP endpoint Verifier
506
+ function ampforwp_is_amp_endpoint() {
507
+ if ( ampforwp_is_non_amp() && ! is_admin()) {
508
+ return ampforwp_is_non_amp();
509
+ }
510
+ else {
511
+ return false !== get_query_var( 'amp', false );
512
+ }
513
+ }
514
+
515
+ if ( ! class_exists( 'Ampforwp_Init', false ) ) {
516
+ class Ampforwp_Init {
517
+
518
+ public function __construct(){
519
+
520
+ // Load Files required for the plugin to run
521
+ require AMPFORWP_PLUGIN_DIR .'/includes/includes.php';
522
+
523
+ // Redirection Code added
524
+ require AMPFORWP_PLUGIN_DIR.'/includes/redirect.php';
525
+
526
+ require AMPFORWP_PLUGIN_DIR .'/classes/class-init.php';
527
+ new Ampforwp_Loader();
528
+
529
+ }
530
+ }
531
+ }
532
+ /*
533
+ * Start the plugin.
534
+ * Gentlemen start your engines
535
+ */
536
+ function ampforwp_plugin_init() {
537
+
538
+ if ( defined( 'AMP__FILE__' ) && defined('AMPFORWP_PLUGIN_DIR') ) {
539
+ new Ampforwp_Init();
540
+ }
541
+ }
542
+ add_action('init','ampforwp_plugin_init',9);
543
+
544
+ /*
545
+ * customized output widget
546
+ * to be used be used in before or after Loop
547
+ */
548
+ require AMPFORWP_PLUGIN_DIR.'/templates/category-widget.php';
549
+ require AMPFORWP_PLUGIN_DIR.'/templates/woo-widget.php';
550
+
551
+
552
+ /*
553
+ * Including core AMP plugin files and removing any other things if necessary
554
+ */
555
+ function ampforwp_bundle_core_amp_files(){
556
+ // Bundling Default plugin
557
+ require_once AMPFORWP_PLUGIN_DIR .'/includes/vendor/amp/amp.php';
558
+
559
+ define( 'AMP__FILE__', __FILE__ );
560
+ if ( ! defined('AMP__DIR__') ) {
561
+ define( 'AMP__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
562
+ }
563
+ if ( ! defined('AMP_QUERY_VAR') ){
564
+ define('AMP_QUERY_VAR', 'amp');
565
+ }
566
+ define( 'AMP__VERSION', '0.4.2' );
567
+
568
+ require_once( AMP__DIR__ . '/back-compat/back-compat.php' );
569
+ require_once( AMP__DIR__ . '/includes/amp-helper-functions.php' );
570
+ require_once( AMP__DIR__ . '/includes/admin/functions.php' );
571
+ require_once( AMP__DIR__ . '/includes/settings/class-amp-customizer-settings.php' );
572
+ require_once( AMP__DIR__ . '/includes/settings/class-amp-customizer-design-settings.php' );
573
+ }
574
+ add_action('plugins_loaded','ampforwp_bundle_core_amp_files', 8);
575
+
576
+ function ampforwp_deactivate_amp_plugin() {
577
+
578
+ if ( version_compare( floatval( get_bloginfo( 'version' ) ), '3.5', '>=' ) ) {
579
+
580
+ if ( current_user_can( 'activate_plugins' ) ) {
581
+
582
+ add_action( 'admin_init', 'ampforwp_deactivate_amp' );
583
+
584
+ function ampforwp_deactivate_amp() {
585
+ deactivate_plugins( AMPFORWP_MAIN_PLUGIN_DIR . 'amp/amp.php' );
586
+ }
587
+ }
588
+ }
589
+ }
590
+ add_action( 'plugins_loaded', 'ampforwp_deactivate_amp_plugin' );
591
+
592
+ function ampforwp_modify_amp_activatation_link( $actions, $plugin_file ) {
593
+ $plugin = '';
594
+
595
+ $plugin = 'amp/amp.php';
596
+ if ( $plugin == $plugin_file ) {
597
+ add_thickbox();
598
+ unset($actions['activate']);
599
+ $amp_activate = '<span style="cursor:pointer;color:#0089c8" class="warning_activate_amp" onclick="alert(\'AMP is already bundled with AMPforWP. Please do not install this plugin with AMPforWP to avoid conflicts. \')">Activate</span>';
600
+ array_unshift ($actions,$amp_activate);
601
+ }
602
+ return $actions;
603
+ }
604
+ add_filter( 'plugin_action_links', 'ampforwp_modify_amp_activatation_link', 10, 2 );
605
+
606
+ if ( ! function_exists('ampforwp_init') ) {
607
+ add_action( 'init', 'ampforwp_init' );
608
+ function ampforwp_init() {
609
+ if ( false === apply_filters( 'amp_is_enabled', true ) ) {
610
+ return;
611
+ }
612
+ if( ! defined('AMP_QUERY_VAR')){
613
+ define( 'AMP_QUERY_VAR', apply_filters( 'amp_query_var', 'amp' ) );
614
+ }
615
+
616
+ if ( ! defined('AMP__DIR__') ) {
617
+ define( 'AMP__DIR__', plugin_dir_path(__FILE__) . 'includes/vendor/amp/' );
618
+ }
619
+
620
+ do_action( 'amp_init' );
621
+
622
+ load_plugin_textdomain( 'amp', false, plugin_basename( AMP__DIR__ ) . '/languages' );
623
+
624
+ add_rewrite_endpoint( AMP_QUERY_VAR, EP_PERMALINK );
625
+ add_post_type_support( 'post', AMP_QUERY_VAR );
626
+
627
+ add_filter( 'request', 'amp_force_query_var_value' );
628
+ add_action( 'wp', 'amp_maybe_add_actions' );
629
+
630
+ // Redirect the old url of amp page to the updated url. #1033 (Vendor Update)
631
+ add_filter( 'old_slug_redirect_url', 'ampforwp_redirect_old_slug_to_new_url' );
632
+
633
+ if ( class_exists( 'Jetpack' ) && ! (defined( 'IS_WPCOM' ) && IS_WPCOM) ) {
634
+ require_once( AMP__DIR__ . '/jetpack-helper.php' );
635
+ }
636
+ }
637
+ }
638
+
639
+
640
+ function amp_update_db_check() {
641
+ global $redux_builder_amp;
642
+ $ampforwp_current_version = AMPFORWP_VERSION;
643
+ if ( isset( $_GET['ampforwp-dismiss-theme'] ) && trim( $_GET['ampforwp-dismiss-theme']) === "ampforwp_dismiss_admin_notices" ) {
644
+ update_option( 'ampforwp_theme_notice', true );
645
+ wp_redirect("admin.php?page=amp_options");
646
+ }
647
+ if ( get_option( 'AMPforwp_db_version' ) !== $ampforwp_current_version ) {
648
+
649
+ if ( isset( $_GET['ampforwp-dismiss'] ) && trim( $_GET['ampforwp-dismiss']) === "ampforwp_dismiss_admin_notices" ) {
650
+ update_option( 'AMPforwp_db_version', $ampforwp_current_version );
651
+ wp_redirect(remove_query_arg('ampforwp-dismiss'), 301);
652
+ }
653
+ if ( isset($redux_builder_amp['ampforwp-update-notification-bar'] ) && $redux_builder_amp['ampforwp-update-notification-bar'] && current_user_can( 'manage_options' ) ) {
654
+
655
+ add_action('admin_notices', 'ampforwp_update_notice');
656
+ }
657
+ }
658
+ }
659
+ add_action( 'plugins_loaded', 'amp_update_db_check' );
660
+
661
+ // Admin notice for AMP WordPress Theme
662
+ add_action('admin_notices', 'ampforwp_ampwptheme_notice');
663
+ function ampforwp_ampwptheme_notice() {
664
+ $theme = '';
665
+ $theme = wp_get_theme(); // gets the current theme
666
+
667
+ if ( ('AMP WordPress Theme' == $theme->name || 'AMP WordPress Theme' == $theme->parent_theme) && true != get_option('ampforwp_theme_notice') ) {
668
+ add_thickbox(); ?>
669
+ <div id="some" class="notice-warning settings-error notice is-dismissible">
670
+ <span style="margin: 0.5em 0.5em 0 0">AMP WordPress Theme is installed</span><br>
671
+ <span style="margin: 0.5em 0.5em 0 0">One Last Step Required: <a href="#TB_inline?width=600&height=550&inlineId=my-content-id" class="thickbox">Finish Setup</a></span><br>
672
+ </div>
673
+ <div id="my-content-id" style="display:none;">
674
+ <p>
675
+ <iframe width="100%" height="480" src="https://www.youtube.com/embed/" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
676
+ <a href="<?php echo esc_url(add_query_arg( 'ampforwp-dismiss-theme', 'ampforwp_dismiss_admin_notices' )) ?>">Take me to the Options Panel</a>
677
+ </p>
678
+ </div>
679
+ <?php }
680
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
681
+
682
+ $amp_plugin_manager_version = array();
683
+
684
+ $plugin_manager_active = is_plugin_active('amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
685
+ $amp_plugin_manager_active = is_plugin_active('plugin-manager/ampforwp-3rd-party-plugin-creator.php');
686
+
687
+ if ( $plugin_manager_active) {
688
+ $amp_plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/amp-plugin-manager/ampforwp-3rd-party-plugin-creator.php');
689
+ $amp_plugin_manager_version = $amp_plugin_manager['Version'];
690
+ }
691
+ if ( $amp_plugin_manager_active) {
692
+ $plugin_manager = get_plugin_data(AMPFORWP_MAIN_PLUGIN_DIR.'/plugin-manager/ampforwp-3rd-party-plugin-creator.php');
693
+ $amp_plugin_manager_version = $plugin_manager['Version'];
694
+ }
695
+
696
+ if ( $plugin_manager_active || $amp_plugin_manager_active ) {
697
+ $screen = get_current_screen();
698
+ if ( '1.0' == $amp_plugin_manager_version && 'plugins' === $screen->base) { ?>
699
+ <div id="ampforwp_pluginmanager" class="notice-warning settings-error notice is-dismissible"><p><b>Attention:</b> AMPforWP Plugin Manager requires an upgrade. Please <b><a href="https://ampforwp.com/plugins-manager/?update=plugins-manager#utm_source=plugin-page&utm_medium=plugin-manager-update&utm_campaign=update-notice" target="_blank">Download &amp; install the latest version</a></b> for free.
700
+ </p>
701
+ </div>
702
+ <?php }
703
+ }
704
+ }
705
+
706
+ function ampforwp_update_notice() {
707
+ $screen = '';
708
+ $screen = get_current_screen();
709
+ $ampforwp_current_version = AMPFORWP_VERSION;
710
+ if ( 'toplevel_page_amp_options' == $screen->base ) { ?>
711
+ <div class="notice-success notice is-dismissible amp-update-notice">
712
+ <div class="amp-update-notice-text-box">
713
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAn1BMVEUAAADuHCXwHiTuHSTtHST/IjjuHSXuHCTvHSXvHCXwHi3/JyfuHSTuHCTvHSTvHCTxHSb/NDTyHyj0IyruHSTvHSXvHSbuHST1ICftHCXuHCXuHSXwHiXvHyfuHSTuHSTvHSXuHCTuHCTuHCTuHCTvHSXyHibuHCTuHCXuHCXuHCXuHibwICjuHCTuHCTuHSTwHSbuHCXuHCTuHCTtHCSisK2PAAAANHRSTlMA+1T35wiIxm9kEQzu4Yx/NgQlFZV6PrAa16RpUi7MhE3y3LmYXynrz5FYSSC9q55EddGypVN9ggAABlxJREFUeNrVm+mymkAQhQfZBVQEFNz3fbtm3v/ZYqUqyWww0603Vfn+mcr1wMz06QUk/yfZIPRua79KYst2Vgd/fS9aU5f8E6JFx4+pktWPryn5VtKH51u0kXgY9Mk30cv31IhZkH1e/VJU1BzrR+uzJ2I6sigQ5yv63NoPKYa42/6M/JpiWXrvr0I7p+/gnN7U3+7pm1x3BM/Op+9je+iACO2mI+aPcq8ItmHQ7WyGVVOUHHDWFI1qN3Y0HmSiSfYX3atddxhPmNCv1As6HNdvqvuYP6mSDXgbTsq78cdt7YV3HOU2lDD9QBnVZnuZnlXOkYAOwlzjaxjv3PfMs+5dvvsiAh6hofwdD1P9GxUZlQTMeSXlyAkxQrr/6kEwuF1bDKEBav87aCfrH8SDNIWf/3hB8Lgb0cMu2vgXI/9C3uK0FArXTHN4hW27p+RNdomQHZv9vxK2Hyf6ODIfSuE7u6QBIf984fQnNuc5bSGpN4RCSDlCnH7L2ghH8cofxKx2u2z+/rH6SSTu7IyyrEkN/if2f2JROXAz3hW3NfUff/7R+iNVX+Nwm6DMa+09F/8pVn+v3OIeV7PlRAFnWvEFq09PJg7bU1wiZVmg9YekBi4/z4jEmjuAaP24rG1xOEtsNS5A5eL0m73jwdWIjQv0QOtfjX32LCQhrv5B69uNZ7dcsmFWf3HLEqtPA0CtMeB8go3SAuW/8l3JpFWdIResBURYfZvpmfRma7ELXbH5GqNv+JdpIiY7OQaXbaz+08C9x4zS8+8/s1MQD6tvmXQ+LpuUpn8Whk1Dfbg+5Mo93m9li/Kx+isz99yx/arqqsZgfS6s9bDF0UWuhOw2Uj8HNP5i0RkxLjRE6ifG5pHJnr9A70DLklKLHqZfdMgvOvQvO5g+Jn3Jcj5zSTh9B3JyFlJ5HDObgtKnLQKAPXKeeCrGEH3syZ0JZ37A5mi4vroMNCyMKrEhzAD66BayYFJyyvtgjNHfp1DzFDLPjUkEAH18ATMVStO1HAR6fZbVpvPi+CJ/sXlxPzaNdF22PeBtIAfoa0garsDmz08lhCVeX+7+1DDlR/D6mGjqYZy+U1ce8Ipd3giDt/SNu9snv+aWaM14fRNvEE6dcCQ+pT829eLj66Oj2YIP6/PHfv76uOKOBF7f/D4Svjk5mM4lBjh9mSWzVvyR2DS2Vas6Reh4VahI1oYlad9MvwCVpRP+AUnV2FXNPqAvFSBSem7AnXS9X8xfdF/kPhPCZq21VIBI6RlGeeD158CyOBbTs2yg+uUEd9Y/hALEfWc4UcL1SSIOpFfs8xQgZ4i+HE2FuCQ2dEK5BuuTUNryL/yIcgLV52tQ2pYmRHOQftuB6xNHHlnH7OAIwh124dLtdhRz4ilA/4FZuFwxLw5wg/ooAenLAzErUgyOHPM+54hxj4lyIDaTl0VPDzVbvikLp0CaIetxK4x+31IOxDJL7Cj0zIH68pOxG5cfoIOyqYXRL+2azNeiwEhMZ6jHu0da09a7DnAJCpR+adcG/BcFBULfZupfXAjYJW8qjB0bzJ19lP656eltF1LZjVH6LlvXWxcxsS3Z5WmuDS9LjD6ZNz+c9yjDoXET1rr+T99YWfItRg6lZj3SFqWfcd9/1L5BdKr/phiqLz8cd5STtStlWO6aYikE63eF29O/w5KUNfkUpR8avczkUZaqrS4DMfoLi5oEmcs3Wr4qFO4Y/YFtOEDoL/mVilRl4BauH1OWofm7dLNMKgMR+gtbM0PlCwaOlWCYR4R+yOy/8IRXfwyo0+NfBjq9GX96By8TymExf+A+wfrZWtDP9al+T3mGf/asAOsPHMpzMym3l5Qnefy+Nmj+nVOBq2vUcVma14rRLxbPItM3IqnAMkih8uWNSvoZwDlEqm0Kkj8yNyH5mp6pQyWSsWvc/2xkeXoDTV8uKyrjeDuTlmFxs6hMDg3gK+hnZPIP0iQ7QVqYzKGziGpWPhw5VEnCGCrcRWSs2Yj/gWM2CDs/WA9VexneR9XY+9XTn1VJrPlvAUGzdejbXHcf/KkZ/sdmeHozisc6RuR9Wges/L1PPsPZR8jb+YV8jsHagsnvOyX5LOXX0/zmb4uUfAPTTmKy8wY/SMNzEdxW9ulzRL6bXegpfuAY+/diAb51PGn/3AqDrpcf58V4Oxlk5H/lJxdt5e+wtfWRAAAAAElFTkSuQmCC" width="128" height="128" />
714
+ <div class="amp-update-notice-text"> <?php echo esc_attr('AMP has been updated to '.$ampforwp_current_version, 'accelerated-mobile-pages' ); ?></div>
715
+ <a href="https://ampforwp.com/new/" target="_blank" href="admin.php?page=acmforwp_update">What's New?</a>
716
+ </div>
717
+ <div class="amp-update-notice-dismiss">
718
+ <a title="Close this Notification" href="<?php echo esc_url(add_query_arg( 'ampforwp-dismiss', 'ampforwp_dismiss_admin_notices' )) ?>">X</a>
719
+ </div>
720
+ <div class="amp-update-notice-review-box">
721
+ <a class="star_icon" href="https://wordpress.org/support/view/plugin-reviews/accelerated-mobile-pages?rate=5#new-post" target="_blank"> Appreciate it? <br> <span title="Give Us 5 Star">Leave a Review →</span></a>
722
+ </div>
723
+ </div>
724
+ <?php }
725
+ }
726
+ if ( ! defined('AMP_FRAMEWORK_COMOPNENT_DIR_PATH') ) {
727
+ define('AMP_FRAMEWORK_COMOPNENT_DIR_PATH', plugin_dir_path( __FILE__ )."/components");
728
+ }
729
+ require_once( AMP_FRAMEWORK_COMOPNENT_DIR_PATH . '/components-core.php' );
730
+ require_once( AMPFORWP_PLUGIN_DIR. 'pagebuilder/amp-page-builder.php' );
731
+ require_once( AMPFORWP_PLUGIN_DIR. 'base_remover/base_remover.php' );
732
+ require_once( AMPFORWP_PLUGIN_DIR. 'includes/thirdparty-compatibility.php' );
733
+ require ( AMPFORWP_PLUGIN_DIR.'/install/index.php' );
734
+
735
+ /**
736
+ * Redirects the old AMP URL to the new AMP URL.
737
+ * If post slug is updated the amp page with old post slug will be redirected to the updated url.
738
+ *
739
+ * @param string $link New URL of the post.
740
+ *
741
+ * @return string $link URL to be redirected.
742
+ */
743
+ if ( ! function_exists( 'ampforwp_redirect_old_slug_to_new_url' ) ) {
744
+ function ampforwp_redirect_old_slug_to_new_url( $link ) {
745
+
746
+ if ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) {
747
+ $link = trailingslashit( trailingslashit( $link ) . AMPFORWP_AMP_QUERY_VAR );
748
+ }
749
+
750
+ return $link;
751
+ }
752
+ }
753
+
754
+ // Hide Post Builder if Swift is enabled
755
+ add_filter('amp_customizer_is_enabled', 'ampforwp_customizer_is_enabled');
756
+ if ( ! function_exists('ampforwp_customizer_is_enabled') ) {
757
+ function ampforwp_customizer_is_enabled($value){
758
+ global $redux_builder_amp;
759
+ if ( 4 == $redux_builder_amp['amp-design-selector'] ) {
760
+ $value = false;
761
+ }
762
+ return $value;
763
+ }
764
+ }
765
+
766
+ // Get Settings from Redux #2177
767
+ function ampforwp_get_setting( $opt_name='' ){
768
+ global $redux_builder_amp;
769
+ $opt_value = '';
770
+ if ( isset($redux_builder_amp[$opt_name]) ) {
771
+ $opt_value = $redux_builder_amp[$opt_name];
772
+ }
773
+ return $opt_value;
774
  }
base_remover/base_remover.php CHANGED
@@ -1,127 +1,127 @@
1
- <?php
2
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
3
-
4
- // check for plugin using plugin name
5
- $old_plugin = AMPFORWP_MAIN_PLUGIN_DIR.'amp-category-base-remover/amp-category-base-remover.php';
6
- if ( is_plugin_active( $old_plugin ) ) {
7
- //plugin is activated
8
- deactivate_plugins($old_plugin);
9
- add_action( 'admin_notices', 'plugin_catagory_base_removed_admin_notice__success' );
10
- }
11
-
12
- function plugin_catagory_base_removed_admin_notice__success(){
13
- ?>
14
- <div class="notice notice-success is-dismissible">
15
- <p><?php esc_html_e( 'AMP Category Base URL Remover plugin has De-activated, <br> Category removal option is added in our core plugin <a href="#">Click here to view details</a>', 'amp-for-plugin' ); ?></p>
16
- </div>
17
- <?php
18
- }
19
-
20
-
21
- add_action( 'current_screen', 'this_screen_own' );
22
- function this_screen_own(){
23
- $current_screen = get_current_screen();
24
- if( $current_screen->id === "plugin-install" ) {
25
-
26
- function amp_enqueue_function_dependancies() {
27
- wp_enqueue_script( 'AMPScriptDependanciesremove', plugins_url('dependencyScript.js', __FILE__), array( 'jquery' ) );
28
- }
29
- add_action( 'admin_enqueue_scripts', 'amp_enqueue_function_dependancies' );
30
- }
31
- }
32
-
33
-
34
-
35
- add_filter( 'init', 'ampforwp_url_base_rewrite_rules', 100 );
36
- function ampforwp_url_base_rewrite_rules(){
37
- global $redux_builder_amp;
38
- global $wp_rewrite;
39
- $categoryBaseRewrite = 0;
40
- $tagBaseRewrite = 0;
41
-
42
- if( isset($redux_builder_amp['ampforwp-category-base-removel-link']) ) {
43
- $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
44
- }
45
- if( isset($redux_builder_amp['ampforwp-tag-base-removal-link']) ) {
46
- $tagBaseRewrite = $redux_builder_amp['ampforwp-tag-base-removal-link'];
47
- }
48
- /* $catagoryStatusChanges = get_option('AMP-category-base-removal-status');
49
- if($catagoryStatusChanges==$categoryBaseRewrite){
50
- update_option('AMP-category-base-removal-status',$categoryBaseRewrite);
51
- $wp_rerite->flush_rules( $hard );
52
- } */
53
- if($categoryBaseRewrite === '1'){
54
- add_action( 'created_category', 'amp_flush_rewrite_rules', 999 );
55
- add_action( 'edited_category', 'amp_flush_rewrite_rules', 999 );
56
- add_action( 'delete_category', 'amp_flush_rewrite_rules', 999 );
57
- add_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
58
- }elseif($categoryBaseRewrite === '0'){
59
- remove_action( 'created_category', 'amp_flush_rewrite_rules' , 999 );
60
- remove_action( 'edited_category', 'amp_flush_rewrite_rules' , 999 );
61
- remove_action( 'delete_category', 'amp_flush_rewrite_rules' , 999 );
62
- remove_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
63
-
64
- }
65
- if( $tagBaseRewrite === '1'){
66
- add_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
67
- add_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
68
- add_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
69
- add_filter( 'tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
70
- }elseif( $tagBaseRewrite === '0' ) {
71
- remove_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
72
- remove_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
73
- remove_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
74
- remove_filter( 'tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
75
- }
76
- }
77
-
78
-
79
-
80
-
81
- function amp_flush_rewrite_rules( $hard=true ) {
82
- global $wp_rewrite;
83
- $wp_rewrite->flush_rules( $hard );
84
- }
85
-
86
- function ampforwp_category_url_rewrite_rules( $rewrite ) {
87
- global $redux_builder_amp, $wp_rewrite;
88
- $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
89
- $categories = get_categories( array( 'hide_empty' => false ) );
90
- if(is_array( $categories ) && ! empty( $categories ) ) {
91
-
92
-
93
- foreach ( $categories as $category ) {
94
- $category_nicename = $category->slug;
95
- if ( $category->parent === $category->cat_ID ) {
96
- $category->parent = 0;
97
- } elseif ( 0 !== $category->parent ) {
98
- $category_nicename = get_category_parents( $category->parent, false, '/', true ) . $category_nicename;
99
- }
100
- $category_nicename = trim($category_nicename);
101
-
102
- $rewrite[ '('.$category_nicename.')'.'/amp/?$' ] = 'index.php?amp&category_name=$matches[1]';
103
- $rewrite[ '('.$category_nicename.')'.'/amp/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?amp&category_name=$matches[1]&paged=$matches[2]';
104
-
105
- // Redirect support from Old Category Base
106
- $old_category_base = get_option( 'category_base' ) ? get_option( 'category_base' ) : 'category';
107
- $old_category_base = trim( $old_category_base, '/' );
108
- $rewrite[ $old_category_base . '/(.*)$' ] = 'index.php?category_redirect=$matches[1]';
109
-
110
- }
111
- }
112
- return $rewrite;
113
- }
114
-
115
-
116
- function ampforwp_tag_url_rewrite_rules( $rewrite ) {
117
- $terms = get_terms( 'post_tag', array( 'hide_empty' => false ) );
118
- foreach ( $terms as $term ) {
119
- $term_nicename = trim($term->slug);
120
-
121
- $rewrite[ '('.$term_nicename.')'.'/amp/?$' ] = 'index.php?amp&tag=$matches[1]';
122
- $rewrite[ '('.$term_nicename.')'.'/amp/page/?([0-9]{1,})/?$' ] =
123
- 'index.php?amp&tag=$matches[1]&paged=$matches[2]';
124
- }
125
-
126
- return $rewrite;
127
  }
1
+ <?php
2
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
3
+
4
+ // check for plugin using plugin name
5
+ $old_plugin = AMPFORWP_MAIN_PLUGIN_DIR.'amp-category-base-remover/amp-category-base-remover.php';
6
+ if ( is_plugin_active( $old_plugin ) ) {
7
+ //plugin is activated
8
+ deactivate_plugins($old_plugin);
9
+ add_action( 'admin_notices', 'plugin_catagory_base_removed_admin_notice__success' );
10
+ }
11
+
12
+ function plugin_catagory_base_removed_admin_notice__success(){
13
+ ?>
14
+ <div class="notice notice-success is-dismissible">
15
+ <p><?php esc_html_e( 'AMP Category Base URL Remover plugin has De-activated, <br> Category removal option is added in our core plugin <a href="#">Click here to view details</a>', 'amp-for-plugin' ); ?></p>
16
+ </div>
17
+ <?php
18
+ }
19
+
20
+
21
+ add_action( 'current_screen', 'this_screen_own' );
22
+ function this_screen_own(){
23
+ $current_screen = get_current_screen();
24
+ if( $current_screen->id === "plugin-install" ) {
25
+
26
+ function amp_enqueue_function_dependancies() {
27
+ wp_enqueue_script( 'AMPScriptDependanciesremove', plugins_url('dependencyScript.js', __FILE__), array( 'jquery' ) );
28
+ }
29
+ add_action( 'admin_enqueue_scripts', 'amp_enqueue_function_dependancies' );
30
+ }
31
+ }
32
+
33
+
34
+
35
+ add_filter( 'init', 'ampforwp_url_base_rewrite_rules', 100 );
36
+ function ampforwp_url_base_rewrite_rules(){
37
+ global $redux_builder_amp;
38
+ global $wp_rewrite;
39
+ $categoryBaseRewrite = 0;
40
+ $tagBaseRewrite = 0;
41
+
42
+ if( isset($redux_builder_amp['ampforwp-category-base-removel-link']) ) {
43
+ $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
44
+ }
45
+ if( isset($redux_builder_amp['ampforwp-tag-base-removal-link']) ) {
46
+ $tagBaseRewrite = $redux_builder_amp['ampforwp-tag-base-removal-link'];
47
+ }
48
+ /* $catagoryStatusChanges = get_option('AMP-category-base-removal-status');
49
+ if($catagoryStatusChanges==$categoryBaseRewrite){
50
+ update_option('AMP-category-base-removal-status',$categoryBaseRewrite);
51
+ $wp_rerite->flush_rules( $hard );
52
+ } */
53
+ if($categoryBaseRewrite === '1'){
54
+ add_action( 'created_category', 'amp_flush_rewrite_rules', 999 );
55
+ add_action( 'edited_category', 'amp_flush_rewrite_rules', 999 );
56
+ add_action( 'delete_category', 'amp_flush_rewrite_rules', 999 );
57
+ add_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
58
+ }elseif($categoryBaseRewrite === '0'){
59
+ remove_action( 'created_category', 'amp_flush_rewrite_rules' , 999 );
60
+ remove_action( 'edited_category', 'amp_flush_rewrite_rules' , 999 );
61
+ remove_action( 'delete_category', 'amp_flush_rewrite_rules' , 999 );
62
+ remove_filter( 'category_rewrite_rules', 'ampforwp_category_url_rewrite_rules');
63
+
64
+ }
65
+ if( $tagBaseRewrite === '1'){
66
+ add_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
67
+ add_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
68
+ add_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
69
+ add_filter( 'tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
70
+ }elseif( $tagBaseRewrite === '0' ) {
71
+ remove_action( 'created_post_tag', 'amp_flush_rewrite_rules' , 999 );
72
+ remove_action( 'edited_post_tag', 'amp_flush_rewrite_rules', 999 );
73
+ remove_action( 'delete_post_tag', 'amp_flush_rewrite_rules', 999 );
74
+ remove_filter( 'tag_rewrite_rules', 'ampforwp_tag_url_rewrite_rules' );
75
+ }
76
+ }
77
+
78
+
79
+
80
+
81
+ function amp_flush_rewrite_rules( $hard=true ) {
82
+ global $wp_rewrite;
83
+ $wp_rewrite->flush_rules( $hard );
84
+ }
85
+
86
+ function ampforwp_category_url_rewrite_rules( $rewrite ) {
87
+ global $redux_builder_amp, $wp_rewrite;
88
+ $categoryBaseRewrite = $redux_builder_amp['ampforwp-category-base-removel-link'];
89
+ $categories = get_categories( array( 'hide_empty' => false ) );
90
+ if(is_array( $categories ) && ! empty( $categories ) ) {
91
+
92
+
93
+ foreach ( $categories as $category ) {
94
+ $category_nicename = $category->slug;
95
+ if ( $category->parent === $category->cat_ID ) {
96
+ $category->parent = 0;
97
+ } elseif ( 0 !== $category->parent ) {
98
+ $category_nicename = get_category_parents( $category->parent, false, '/', true ) . $category_nicename;
99
+ }
100
+ $category_nicename = trim($category_nicename);
101
+
102
+ $rewrite[ '('.$category_nicename.')'.'/amp/?$' ] = 'index.php?amp&category_name=$matches[1]';
103
+ $rewrite[ '('.$category_nicename.')'.'/amp/' . $wp_rewrite->pagination_base . '/?([0-9]{1,})/?$' ] = 'index.php?amp&category_name=$matches[1]&paged=$matches[2]';
104
+
105
+ // Redirect support from Old Category Base
106
+ $old_category_base = get_option( 'category_base' ) ? get_option( 'category_base' ) : 'category';
107
+ $old_category_base = trim( $old_category_base, '/' );
108
+ $rewrite[ $old_category_base . '/(.*)$' ] = 'index.php?category_redirect=$matches[1]';
109
+
110
+ }
111
+ }
112
+ return $rewrite;
113
+ }
114
+
115
+
116
+ function ampforwp_tag_url_rewrite_rules( $rewrite ) {
117
+ $terms = get_terms( 'post_tag', array( 'hide_empty' => false ) );
118
+ foreach ( $terms as $term ) {
119
+ $term_nicename = trim($term->slug);
120
+
121
+ $rewrite[ '('.$term_nicename.')'.'/amp/?$' ] = 'index.php?amp&tag=$matches[1]';
122
+ $rewrite[ '('.$term_nicename.')'.'/amp/page/?([0-9]{1,})/?$' ] =
123
+ 'index.php?amp&tag=$matches[1]&paged=$matches[2]';
124
+ }
125
+
126
+ return $rewrite;
127
  }
base_remover/dependencyScript.js CHANGED
@@ -1,21 +1,21 @@
1
- jQuery(document).ready(function($){
2
-
3
- var myElement = document.getElementById("plugin-filter");
4
- //if( myElement.innerHtml!=''){
5
- if(window.addEventListener) {
6
- // Normal browsers
7
- myElement.addEventListener('DOMSubtreeModified', contentChanged, false);
8
- } else
9
- if(window.attachEvent) {
10
- myElement.attachEvent('DOMSubtreeModified', contentChanged,false);
11
- }
12
- //}
13
-
14
-
15
- function contentChanged() {
16
- if($('.plugin-card-amp').length>0){
17
- $('.plugin-card-amp').find('.plugin-action-buttons').find('li:first a').attr("href","#").attr('onclick','alert(\'AMP is already bundled with AMPforWP. Please do not install this plugin with AMPforWP to avoid conflicts.\')');
18
- }
19
- }
20
- contentChanged();
21
  });
1
+ jQuery(document).ready(function($){
2
+
3
+ var myElement = document.getElementById("plugin-filter");
4
+ //if( myElement.innerHtml!=''){
5
+ if(window.addEventListener) {
6
+ // Normal browsers
7
+ myElement.addEventListener('DOMSubtreeModified', contentChanged, false);
8
+ } else
9
+ if(window.attachEvent) {
10
+ myElement.attachEvent('DOMSubtreeModified', contentChanged,false);
11
+ }
12
+ //}
13
+
14
+
15
+ function contentChanged() {
16
+ if($('.plugin-card-amp').length>0){
17
+ $('.plugin-card-amp').find('.plugin-action-buttons').find('li:first a').attr("href","#").attr('onclick','alert(\'AMP is already bundled with AMPforWP. Please do not install this plugin with AMPforWP to avoid conflicts.\')');
18
+ }
19
+ }
20
+ contentChanged();
21
  });
classes/class-ampforwp-instagram-sanitizer.php CHANGED
@@ -1,50 +1,50 @@
1
- <?php
2
- /**
3
- * Converts Instagram embeds to <amp-instagram>
4
- */
5
- class AMPFORWP_Instagram_Embed_Sanitizer extends AMP_Base_Sanitizer {
6
- private $instagram_medias = array();
7
- private static $script_slug = 'amp-instagram';
8
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-instagram-0.1.js';
9
- public function sanitize() {
10
- $body = $this->get_body_node();
11
- $xpath = new \DOMXPath($this->dom);
12
- $class_name = 'instagram-media';
13
- $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
14
- foreach($blockquotes as $instagram_media){
15
- $this->replace_with_amp_instagram($instagram_media);
16
- }
17
- if(count($this->instagram_medias) > 0){
18
- $this->did_convert_elements = true;
19
- }
20
- }
21
- function replace_with_amp_instagram ($instagram_media){
22
- $medias = $instagram_media->getElementsByTagName('a');
23
- if($medias->length > 0){
24
- $media = $medias->item(0);
25
- $href = $media->getAttribute('href');
26
- $explode = explode('/', rtrim($href, '/'));
27
- $sourcecode = end($explode);
28
- $tag = $this->create_instagram_tag($sourcecode);
29
- $this->instagram_medias[] = $tag; // add it to array
30
- $instagram_media->parentNode->replaceChild( $tag, $instagram_media);
31
- }
32
- }
33
- function create_instagram_tag($sourcecode){
34
- $attrs = array(
35
- 'data-shortcode' => $sourcecode,
36
- 'width' => 400,
37
- 'height'=> 400,
38
- 'layout' => 'responsive',
39
- 'data-captioned' => '',
40
- );
41
- $attrs = ampforwp_amp_consent_check( $attrs );
42
- return AMP_DOM_Utils::create_node($this->dom, 'amp-instagram', $attrs);
43
- }
44
- public function get_scripts() {
45
- if ( ! $this->did_convert_elements ) {
46
- return array();
47
- }
48
- return array( self::$script_slug => self::$script_src );
49
- }
50
  }
1
+ <?php
2
+ /**
3
+ * Converts Instagram embeds to <amp-instagram>
4
+ */
5
+ class AMPFORWP_Instagram_Embed_Sanitizer extends AMP_Base_Sanitizer {
6
+ private $instagram_medias = array();
7
+ private static $script_slug = 'amp-instagram';
8
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-instagram-0.1.js';
9
+ public function sanitize() {
10
+ $body = $this->get_body_node();
11
+ $xpath = new \DOMXPath($this->dom);
12
+ $class_name = 'instagram-media';
13
+ $blockquotes = $xpath->query("//*[contains(@class,'$class_name')]");
14
+ foreach($blockquotes as $instagram_media){
15
+ $this->replace_with_amp_instagram($instagram_media);
16
+ }
17
+ if(count($this->instagram_medias) > 0){
18
+ $this->did_convert_elements = true;
19
+ }
20
+ }
21
+ function replace_with_amp_instagram ($instagram_media){
22
+ $medias = $instagram_media->getElementsByTagName('a');
23
+ if($medias->length > 0){
24
+ $media = $medias->item(0);
25
+ $href = $media->getAttribute('href');
26
+ $explode = explode('/', rtrim($href, '/'));
27
+ $sourcecode = end($explode);
28
+ $tag = $this->create_instagram_tag($sourcecode);
29
+ $this->instagram_medias[] = $tag; // add it to array
30
+ $instagram_media->parentNode->replaceChild( $tag, $instagram_media);
31
+ }
32
+ }
33
+ function create_instagram_tag($sourcecode){
34
+ $attrs = array(
35
+ 'data-shortcode' => $sourcecode,
36
+ 'width' => 400,
37
+ 'height'=> 400,
38
+ 'layout' => 'responsive',
39
+ 'data-captioned' => '',
40
+ );
41
+ $attrs = ampforwp_amp_consent_check( $attrs );
42
+ return AMP_DOM_Utils::create_node($this->dom, 'amp-instagram', $attrs);
43
+ }
44
+ public function get_scripts() {
45
+ if ( ! $this->did_convert_elements ) {
46
+ return array();
47
+ }
48
+ return array( self::$script_slug => self::$script_src );
49
+ }
50
  }
classes/class-ampforwp-youtube-embed.php CHANGED
@@ -1,132 +1,132 @@
1
- <?php require_once AMP__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php';
2
-
3
- // Much of this class is borrowed from Jetpack embeds
4
- class AMPforWP_YouTube_Embed_Handler extends AMP_Base_Embed_Handler {
5
- const SHORT_URL_HOST = 'youtu.be';
6
- // Only handling single videos. Playlists are handled elsewhere.
7
- const URL_PATTERN = '#https?://(?:www\.)?(?:youtube.com/(?:v/|e/|embed/|watch[/\#?])|youtu\.be/).*#i';
8
- const RATIO = 0.5625;
9
-
10
- protected $DEFAULT_WIDTH = 600;
11
- protected $DEFAULT_HEIGHT = 338;
12
-
13
- private static $script_slug = 'amp-youtube';
14
- private static $script_src = 'https://cdn.ampproject.org/v0/amp-youtube-0.1.js';
15
-
16
- function __construct( $args = array() ) {
17
- parent::__construct( $args );
18
-
19
- if ( isset( $this->args['content_max_width'] ) ) {
20
- $max_width = $this->args['content_max_width'];
21
- $this->args['width'] = $max_width;
22
- $this->args['height'] = round( $max_width * self::RATIO );
23
- }
24
- }
25
-
26
- function register_embed() {
27
- wp_embed_register_handler( 'amp-youtube', self::URL_PATTERN, array( $this, 'oembed' ), -1 );
28
- add_shortcode( 'youtube', array( $this, 'shortcode' ) );
29
- }
30
-
31
- public function unregister_embed() {
32
- wp_embed_unregister_handler( 'amp-youtube', -1 );
33
- remove_shortcode( 'youtube' );
34
- }
35
-
36
- public function get_scripts() {
37
- if ( ! $this->did_convert_elements ) {
38
- return array();
39
- }
40
-
41
- return array( self::$script_slug => self::$script_src );
42
- }
43
-
44
- public function shortcode( $attr ) {
45
- $url = false;
46
- $video_id = false;
47
- if ( isset( $attr[0] ) ) {
48
- $url = ltrim( $attr[0] , '=' );
49
- } elseif ( function_exists ( 'ampforwp_youtube_shortcode' ) ) {
50
- $url = ampforwp_youtube_shortcode( $attr );
51
- }
52
-
53
- if ( empty( $url ) ) {
54
- return '';
55
- }
56
-
57
- $video_id = $this->get_video_id_from_url( $url );
58
-
59
- return $this->render( array(
60
- 'url' => $url,
61
- 'video_id' => $video_id,
62
- ) );
63
- }
64
-
65
-
66
- public function oembed( $matches, $attr, $url, $rawattr ) {
67
- return $this->shortcode( array( $url ) );
68
- }
69
-
70
- public function render( $args ) {
71
- $args = wp_parse_args( $args, array(
72
- 'video_id' => false,
73
- ) );
74
-
75
- if ( empty( $args['video_id'] ) ) {
76
- return AMP_HTML_Utils::build_tag( 'a', array( 'href' => esc_url( $args['url'] ), 'class' => 'amp-wp-embed-fallback' ), esc_html( $args['url'] ) );
77
- }
78
-
79
- $this->did_convert_elements = true;
80
- // Return it with a filter for the modification purpose #1378
81
- $attrs = array(
82
- 'data-videoid' => $args['video_id'],
83
- 'layout' => 'responsive',
84
- 'width' => $this->args['width'],
85
- 'height' => $this->args['height'],
86
- );
87
- $attrs = ampforwp_amp_consent_check( $attrs );
88
- return AMP_HTML_Utils::build_tag('amp-youtube',apply_filters('amp_youtube_params', $attrs) );
89
- }
90
-
91
- private function get_video_id_from_url( $url ) {
92
- $video_id = false;
93
- $parsed_url = parse_url( $url );
94
- if(!isset($parsed_url['host'])){
95
- $parsed_url['host'] = '';
96
- }
97
- if ( self::SHORT_URL_HOST === substr( $parsed_url['host'], -strlen( self::SHORT_URL_HOST ) ) ) {
98
- // youtu.be/{id}
99
- $parts = explode( '/', $parsed_url['path'] );
100
- if ( ! empty( $parts ) ) {
101
- $video_id = $parts[1];
102
- }
103
- } else {
104
- // ?v={id} or ?list={id}
105
- parse_str( $parsed_url['query'], $query_args );
106
-
107
- if ( isset( $query_args['v'] ) ) {
108
- $video_id = $this->sanitize_v_arg( $query_args['v'] );
109
- }
110
- }
111
-
112
- if ( empty( $video_id ) ) {
113
- // /(v|e|embed)/{id}
114
- $parts = explode( '/', $parsed_url['path'] );
115
-
116
- if ( in_array( $parts[1], array( 'v', 'e', 'embed' ) ) ) {
117
- $video_id = $parts[2];
118
- }
119
- }
120
-
121
- return $video_id;
122
- }
123
-
124
- private function sanitize_v_arg( $value ) {
125
- // Deal with broken params like `?v=123?rel=0`
126
- if ( false !== strpos( $value, '?' ) ) {
127
- $value = strtok( $value, '?' );
128
- }
129
-
130
- return $value;
131
- }
132
  }
1
+ <?php require_once AMP__DIR__ . '/includes/embeds/class-amp-base-embed-handler.php';
2
+
3
+ // Much of this class is borrowed from Jetpack embeds
4
+ class AMPforWP_YouTube_Embed_Handler extends AMP_Base_Embed_Handler {
5
+ const SHORT_URL_HOST = 'youtu.be';
6
+ // Only handling single videos. Playlists are handled elsewhere.
7
+ const URL_PATTERN = '#https?://(?:www\.)?(?:youtube.com/(?:v/|e/|embed/|watch[/\#?])|youtu\.be/).*#i';
8
+ const RATIO = 0.5625;
9
+
10
+ protected $DEFAULT_WIDTH = 600;
11
+ protected $DEFAULT_HEIGHT = 338;
12
+
13
+ private static $script_slug = 'amp-youtube';
14
+ private static $script_src = 'https://cdn.ampproject.org/v0/amp-youtube-0.1.js';
15
+
16
+ function __construct( $args = array() ) {
17
+ parent::__construct( $args );
18
+
19
+ if ( isset( $this->args['content_max_width'] ) ) {
20
+ $max_width = $this->args['content_max_width'];
21
+ $this->args['width'] = $max_width;
22
+ $this->args['height'] = round( $max_width * self::RATIO );
23
+ }
24
+ }
25
+
26
+ function register_embed() {
27
+ wp_embed_register_handler( 'amp-youtube', self::URL_PATTERN, array( $this, 'oembed' ), -1 );
28
+ add_shortcode( 'youtube', array( $this, 'shortcode' ) );
29
+ }
30
+
31
+ public function unregister_embed() {
32
+ wp_embed_unregister_handler( 'amp-youtube', -1 );
33
+ remove_shortcode( 'youtube' );
34
+ }
35
+
36
+ public function get_scripts() {
37
+ if ( ! $this->did_convert_elements ) {
38
+ return array();
39
+ }
40
+
41
+ return array( self::$script_slug => self::$script_src );
42
+ }
43
+
44
+ public function shortcode( $attr ) {
45
+ $url = false;
46
+ $video_id = false;
47
+ if ( isset( $attr[0] ) ) {
48
+ $url = ltrim( $attr[0] , '=' );
49
+ } elseif ( function_exists ( 'ampforwp_youtube_shortcode' ) ) {
50
+ $url = ampforwp_youtube_shortcode( $attr );
51
+ }
52
+
53
+ if ( empty( $url ) ) {
54
+ return '';
55
+ }
56
+
57
+ $video_id = $this->get_video_id_from_url( $url );
58
+
59
+ return $this->render( array(
60
+ 'url' => $url,
61
+ 'video_id' => $video_id,
62
+ ) );
63
+ }
64
+
65
+
66
+ public function oembed( $matches, $attr, $url, $rawattr ) {
67
+ return $this->shortcode( array( $url ) );
68
+ }
69
+
70
+ public function render( $args ) {
71
+ $args = wp_parse_args( $args, array(
72
+ 'video_id' => false,
73
+ ) );
74
+
75
+ if ( empty( $args['video_id'] ) ) {
76
+ return AMP_HTML_Utils::build_tag( 'a', array( 'href' => esc_url( $args['url'] ), 'class' => 'amp-wp-embed-fallback' ), esc_html( $args['url'] ) );
77
+ }
78
+
79
+ $this->did_convert_elements = true;
80
+ // Return it with a filter for the modification purpose #1378
81
+ $attrs = array(
82
+ 'data-videoid' => $args['video_id'],
83
+ 'layout' => 'responsive',
84
+ 'width' => $this->args['width'],
85
+ 'height' => $this->args['height'],
86
+ );
87
+ $attrs = ampforwp_amp_consent_check( $attrs );
88
+ return AMP_HTML_Utils::build_tag('amp-youtube',apply_filters('amp_youtube_params', $attrs) );
89
+ }
90
+
91
+ private function get_video_id_from_url( $url ) {
92
+ $video_id = false;
93
+ $parsed_url = parse_url( $url );
94
+ if(!isset($parsed_url['host'])){
95
+ $parsed_url['host'] = '';
96
+ }
97
+ if ( self::SHORT_URL_HOST === substr( $parsed_url['host'], -strlen( self::SHORT_URL_HOST ) ) ) {
98
+ // youtu.be/{id}
99
+ $parts = explode( '/', $parsed_url['path'] );
100
+ if ( ! empty( $parts ) ) {
101
+ $video_id = $parts[1];
102
+ }
103
+ } else {
104
+ // ?v={id} or ?list={id}
105
+ parse_str( $parsed_url['query'], $query_args );
106
+
107
+ if ( isset( $query_args['v'] ) ) {
108
+ $video_id = $this->sanitize_v_arg( $query_args['v'] );
109
+ }
110
+ }
111
+
112
+ if ( empty( $video_id ) ) {
113
+ // /(v|e|embed)/{id}
114
+ $parts = explode( '/', $parsed_url['path'] );
115
+
116
+ if ( in_array( $parts[1], array( 'v', 'e', 'embed' ) ) ) {
117
+ $video_id = $parts[2];
118
+ }
119
+ }
120
+
121
+ return $video_id;
122
+ }
123
+
124
+ private function sanitize_v_arg( $value ) {
125
+ // Deal with broken params like `?v=123?rel=0`
126
+ if ( false !== strpos( $value, '?' ) ) {
127
+ $value = strtok( $value, '?' );
128
+ }
129
+
130
+ return $value;
131
+ }
132
  }
classes/class-init.php CHANGED
@@ -1,11 +1,11 @@
1
- <?php if ( ! class_exists( 'Ampforwp_Loader', false ) ) {
2
- class Ampforwp_Loader {
3
- public function __construct() {
4
- $this->load_required_files();
5
- }
6
- public function load_required_files() {
7
- require AMPFORWP_PLUGIN_DIR . '/templates/features.php';
8
- require AMPFORWP_PLUGIN_DIR . '/templates/instant-articles/instant-article-sanitizer.php';
9
- }
10
- }
11
  } ?>
1
+ <?php if ( ! class_exists( 'Ampforwp_Loader', false ) ) {
2
+ class Ampforwp_Loader {
3
+ public function __construct() {
4
+ $this->load_required_files();
5
+ }
6
+ public function load_required_files() {
7
+ require AMPFORWP_PLUGIN_DIR . '/templates/features.php';
8
+ require AMPFORWP_PLUGIN_DIR . '/templates/instant-articles/instant-article-sanitizer.php';
9
+ }
10
+ }
11
  } ?>
components/author-box/author-box.php CHANGED
@@ -1,103 +1,107 @@
1
- <?php
2
- function ampforwp_framework_get_author_box( $args=array() ) {
3
- global $post, $redux_builder_amp;
4
- $post_author = get_userdata($post->post_author);
5
- if ( ! is_array($args) ) {
6
- $args = array();
7
- }
8
-
9
- $avatar = false; //To show author Avater
10
- $avatar_size = 40;
11
- $author_description = false;
12
- $class = $author_prefix = $author_wrapper_class = '';
13
- $show_date = false;
14
- $show_time = false;
15
- $author_name = $post_author->display_name;
16
- $and_text = '';
17
- $and_text = ampforwp_translation($redux_builder_amp['amp-translator-and-text'], 'and' );
18
- if ( function_exists('coauthors') ) {
19
- $author_name = coauthors($and_text,$and_text,null,null,false);
20
- }
21
- $author_link = get_author_posts_url($post_author->ID);
22
- if ( function_exists('coauthors_posts_links') ) {
23
- $author_link = coauthors_posts_links($and_text,$and_text,null,null,false);
24
- }
25
- //var_dump($and);die;
26
- $author_image_wrapper = '';
27
-
28
- if ( isset($args['avatar']) ) {
29
- $avatar = $args['avatar'];
30
- }
31
- if ( isset($args['avatar_size']) ) {
32
- $avatar_size = $args['avatar_size'];
33
- }
34
- if ( isset($args['class']) ) {
35
- $class = $args['class'];
36
- }
37
- if ( isset($args['author_description']) ) {
38
- $author_description = $args['author_description'];
39
- }
40
-
41
-
42
- if ( isset( $args['author_prefix']) ) {
43
- $author_prefix = $args['author_prefix'];
44
- }
45
- //$author_prefix = ampforwp_translation($redux_builder_amp['amp-translator-by-text'] , $author_prefix );
46
-
47
- if ( isset( $args['author_link']) ) {
48
- $author_link = $args['author_link'];
49
- }
50
- if ( isset( $args['author_wrapper_class']) ) {
51
- $author_wrapper_class = $args['author_wrapper_class'];
52
- }
53
-
54
- if ( isset($args['author_image_wrapper']) ) {
55
- $author_image_wrapper = $args['author_image_wrapper'];
56
- }
57
- if ( isset($args['show_date']) ) {
58
- $show_date = $args['show_date'];
59
- }
60
- if ( isset($args['show_time']) ) {
61
- $show_time = $args['show_time'];
62
- }
63
-
64
- ?>
65
- <div class="amp-author <?php echo $class; ?>">
66
- <?php if ( $avatar ) {
67
- $author_avatar_url = ampforwp_get_wp_user_avatar();
68
- if( null == $author_avatar_url ){
69
- $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
70
- } ?>
71
- <div class="amp-author-image <?php echo $author_image_wrapper; ?>">
72
- <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>src="<?php echo esc_url($author_avatar_url); ?>" width="<?php echo $avatar_size; ?>" height="<?php echo $avatar_size; ?>" layout="fixed"></amp-img>
73
- </div>
74
- <?php } ?>
75
- <?php echo '<div class="author-details '. $author_wrapper_class .'">';
76
- if ( true == $redux_builder_amp['ampforwp-author-page-url'] ){
77
- if ( function_exists('coauthors_posts_links') ) {
78
- echo '<span class="author-name">' .$author_prefix . $author_link . ' </span>';
79
- }
80
- else {
81
- echo '<span class="author-name">' .$author_prefix . ' <a href="'. esc_url(ampforwp_url_controller($author_link)).'"> ' .esc_html( $author_name ).'</a></span>';
82
- }
83
- }
84
- else
85
- echo '<span class="author-name">' . $author_prefix . esc_html( $author_name ) . '</span>';
86
-
87
- //to show date and time
88
- if ( $show_date || $show_time ) {
89
- echo '<span class="posted-time"> ';
90
- if ( $show_date ) {
91
- echo esc_html( get_the_date() ) . ' ';
92
- }
93
- if ( $show_time ) {
94
- echo esc_html( get_the_time());
95
- }
96
- echo '</span>';
97
- }
98
- if ( $author_description ) {
99
- echo "<p>".$post_author->description."</p>";
100
- } ?>
101
- </div>
102
- </div>
103
- <?php }
 
 
 
 
1
+ <?php
2
+ function ampforwp_framework_get_author_box( $args=array() ) {
3
+ global $post, $redux_builder_amp;
4
+ $post_author = get_userdata($post->post_author);
5
+ if ( ! is_array($args) ) {
6
+ $args = array();
7
+ }
8
+
9
+ $avatar = false; //To show author Avater
10
+ $avatar_size = 40;
11
+ $author_description = false;
12
+ $class = $author_prefix = $author_wrapper_class = '';
13
+ $show_date = false;
14
+ $show_time = false;
15
+ $author_name = $post_author->display_name;
16
+ $and_text = '';
17
+ $and_text = ampforwp_translation($redux_builder_amp['amp-translator-and-text'], 'and' );
18
+ if ( function_exists('coauthors') ) {
19
+ $author_name = coauthors($and_text,$and_text,null,null,false);
20
+ }
21
+ $author_link = get_author_posts_url($post_author->ID);
22
+ if ( function_exists('coauthors_posts_links') ) {
23
+ $author_link = coauthors_posts_links($and_text,$and_text,null,null,false);
24
+ }
25
+ //var_dump($and);die;
26
+ $author_image_wrapper = '';
27
+
28
+ if ( isset($args['avatar']) ) {
29
+ $avatar = $args['avatar'];
30
+ }
31
+ if ( isset($args['avatar_size']) ) {
32
+ $avatar_size = $args['avatar_size'];
33
+ }
34
+ if ( isset($args['class']) ) {
35
+ $class = $args['class'];
36
+ }
37
+ if ( isset($args['author_description']) ) {
38
+ $author_description = $args['author_description'];
39
+ }
40
+
41
+
42
+ if ( isset( $args['author_prefix']) ) {
43
+ $author_prefix = $args['author_prefix'];
44
+ }
45
+ //$author_prefix = ampforwp_translation($redux_builder_amp['amp-translator-by-text'] , $author_prefix );
46
+
47
+ if ( isset( $args['author_link']) ) {
48
+ $author_link = $args['author_link'];
49
+ }
50
+ if ( isset( $args['author_wrapper_class']) ) {
51
+ $author_wrapper_class = $args['author_wrapper_class'];
52
+ }
53
+
54
+ if ( isset($args['author_image_wrapper']) ) {
55
+ $author_image_wrapper = $args['author_image_wrapper'];
56
+ }
57
+ if ( isset($args['show_date']) ) {
58
+ $show_date = $args['show_date'];
59
+ }
60
+ if ( isset($args['show_time']) ) {
61
+ $show_time = $args['show_time'];
62
+ }
63
+
64
+ ?>
65
+ <div class="amp-author <?php echo $class; ?>">
66
+ <?php if ( $avatar ) {
67
+ $author_avatar_url = ampforwp_get_wp_user_avatar();
68
+ if( null == $author_avatar_url ){
69
+ $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
70
+ } ?>
71
+ <div class="amp-author-image <?php echo $author_image_wrapper; ?>">
72
+ <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>src="<?php echo esc_url($author_avatar_url); ?>" width="<?php echo $avatar_size; ?>" height="<?php echo $avatar_size; ?>" layout="fixed"></amp-img>
73
+ </div>
74
+ <?php } ?>
75
+ <?php echo '<div class="author-details '. $author_wrapper_class .'">';
76
+ if ( true == $redux_builder_amp['ampforwp-author-page-url'] ){
77
+ if ( function_exists('coauthors_posts_links') ) {
78
+ echo '<span class="author-name">' .$author_prefix . $author_link . ' </span>';
79
+ }
80
+ else {
81
+ echo '<span class="author-name">' .$author_prefix . ' <a href="'. esc_url(ampforwp_url_controller($author_link)).'"> ' .esc_html( $author_name ).'</a></span>';
82
+ }
83
+ }
84
+ else
85
+ echo '<span class="author-name">' . $author_prefix . esc_html( $author_name ) . '</span>';
86
+
87
+ //to show date and time
88
+ if ( $show_date || $show_time ) {
89
+ echo '<span class="posted-time"> ';
90
+ if ( $show_date ) {
91
+ echo esc_html( get_the_date() ) . ' ';
92
+ }
93
+ if ( $show_time ) {
94
+ echo esc_html( get_the_time());
95
+ }
96
+ echo '</span>';
97
+ }
98
+ if ( $author_description ) {
99
+ echo "<p>".$post_author->description."</p>";
100
+ } ?>
101
+ </div>
102
+ </div>
103
+ <?php
104
+ if(is_singular() && ( isset($args['ads_below_the_author']) && true == $args['ads_below_the_author'] ) && 1 == ampforwp_get_setting('ampforwp-standard-ads-7')){
105
+ do_action('ampforwp_below_author_box');
106
+ }
107
+ }
components/breadcrumb/breadcrumb.php CHANGED
@@ -1,219 +1,219 @@
1
- <?php function amp_breadcrumb_output(){
2
- global $redux_builder_amp;
3
- $home_non_amp = $archive_non_amp = '';
4
- if ( false == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) {
5
- $home_non_amp = 'nonamp';
6
- }
7
- if ( false == $redux_builder_amp['ampforwp-archive-support'] ) {
8
- $archive_non_amp = 'nonamp';
9
- } ?>
10
- <div class="amp-wp-content breadcrumb"> <?php
11
- // Settings
12
- $breadcrums_id = 'breadcrumbs';
13
- $breadcrums_class = 'breadcrumbs';
14
- $home_title = ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-homepage-text'] , 'Homepage' );
15
-
16
- // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
17
- $custom_taxonomy = 'product_cat';
18
-
19
- // Get the query & post information
20
- global $post,$wp_query;
21
- // Do not display on the homepage
22
- if ( !ampforwp_polylang_front_page() && !is_front_page() ) {
23
-
24
- // Build the breadcrums
25
- echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
26
-
27
- // Home page
28
- echo '<li class="item-home"><a class="bread-link bread-home" href="' . esc_url(ampforwp_url_controller( get_home_url('', '/'), $home_non_amp )) . '" title="' . $home_title . '">' . $home_title . '</a></li>';
29
-
30
- if ( is_archive() && !is_tax() && !is_category() && !is_tag() && !is_author() ) {
31
-
32
-
33
- echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
34
- } else if ( is_author() ) {
35
- global $author;
36
-
37
- $userdata = get_userdata( $author );
38
- $author_url= get_author_posts_url($userdata->ID);
39
- $author_url = trailingslashit($author_url);
40
- // Display author name
41
- echo '<li class="item-current item-current-' . $userdata->user_nicename . '"><a class="bread-current bread-current-' . $userdata->user_nicename . '" title="' . $userdata->display_name . '" href="'. esc_url(ampforwp_url_controller( $author_url, $archive_non_amp )). '">' . 'Author: ' . $userdata->display_name . '</a></li>';
42
-
43
- } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
44
-
45
- // If post is a custom post type
46
- $post_type = get_post_type();
47
-
48
- // If it is a custom post type display name and link
49
- if($post_type != 'post') {
50
-
51
- $post_type_object = get_post_type_object($post_type);
52
- $post_type_archive = get_post_type_archive_link($post_type);
53
- if ( false != $post_type_archive){
54
- echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' .esc_url(ampforwp_url_controller( $post_type_archive, $archive_non_amp )) . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
55
- }
56
- else {
57
- echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><span class="bread-cat bread-custom-post-type-' . $post_type . '">' . $post_type_object->labels->name . '</span></li>';
58
- }
59
- }
60
-
61
- $custom_tax_name = get_queried_object()->name;
62
- echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
63
- } else if ( is_single() ) {
64
-
65
- // If post is a custom post type
66
- $post_type = get_post_type();
67
-
68
- // If it is a custom post type display name and link
69
- if($post_type != 'post') {
70
-
71
- $post_type_object = get_post_type_object($post_type);
72
- $post_type_archive = get_post_type_archive_link($post_type);
73
- if ( false != $post_type_archive){
74
- echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' .esc_url(ampforwp_url_controller( $post_type_archive, $archive_non_amp )) . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
75
- }
76
- else {
77
- echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><span class="bread-cat bread-custom-post-type-' . $post_type . '">' . $post_type_object->labels->name . '</span></li>';
78
- }
79
- }
80
-
81
- // Get post category info
82
- $category = get_the_category();
83
-
84
- if(!empty($category)) {
85
-
86
- // Get last category post is in
87
- $last_category = array_values($category);
88
- $last_category = end($last_category);
89
- $category_name = get_category($last_category);
90
- // Get parent any categories and create array
91
- $get_cat_parents = rtrim(get_category_parents($last_category->term_id, false, ','),',');
92
- $cat_parents = explode(',',$get_cat_parents);
93
-
94
- // Loop through parent categories and store in variable $cat_display
95
- $cat_display = '';
96
- foreach($cat_parents as $parents) {
97
- $cat_id = get_cat_ID( $parents);
98
- $cat_link = get_category_link($cat_id);
99
- $cat_display .= '<li class="item-cat item-cat-' . $cat_id . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $parents. '" href="'. esc_url(ampforwp_url_controller( $cat_link, $archive_non_amp )).'" title="' . $parents . '">' . $parents . '</a></li>';
100
- }
101
- }
102
-
103
- // If it's a custom post type within a custom taxonomy
104
- $taxonomy_exists = taxonomy_exists($custom_taxonomy);
105
- if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
106
-
107
- $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
108
- if ( $taxonomy_terms ) {
109
- $cat_id = $taxonomy_terms[0]->term_id;
110
- $cat_nicename = $taxonomy_terms[0]->slug;
111
- $cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
112
- $cat_link = trailingslashit($cat_link);
113
- $cat_name = $taxonomy_terms[0]->name;
114
- }
115
- }
116
-
117
- // Check if the post is in a category
118
- if(!empty($last_category)) {
119
- echo $cat_display;
120
-
121
- // Else if post is in a custom taxonomy
122
- } else if(!empty($cat_id)) {
123
-
124
- echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . esc_url(ampforwp_url_controller( $cat_link, $archive_non_amp )) . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
125
- }
126
-
127
- } else if ( is_category() ) {
128
-
129
- // Category page
130
- echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
131
- } else if ( is_page() ) {
132
-
133
- // Standard page
134
- if( $post->post_parent ){
135
-
136
- // If child page, get parents
137
- $anc = get_post_ancestors( $post->ID );
138
-
139
- // Get parents in the right order
140
- $anc = array_reverse($anc);
141
-
142
- // Parent page loop
143
- if ( !isset( $parents ) ) $parents = null;
144
- foreach ( $anc as $ancestor ) {
145
- $parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . esc_url(ampforwp_url_controller( get_permalink( $ancestor ), $archive_non_amp )) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
146
- }
147
-
148
- // Display parent pages
149
- echo $parents;
150
-
151
- // Current page
152
-
153
- }
154
-
155
- } else if ( is_tag() ) {
156
-
157
- // Tag page
158
-
159
- // Get tag information
160
- $term_id = get_query_var('tag_id');
161
- $taxonomy = 'post_tag';
162
- $args = 'include=' . $term_id;
163
- $terms = get_terms( $taxonomy, $args );
164
- $get_term_id = $terms[0]->term_id;
165
- $get_term_slug = $terms[0]->slug;
166
- $get_term_name = $terms[0]->name;
167
-
168
- // Display the tag name
169
- echo '<li class="item-current item-tag-' . $get_term_id . ' item-tag-' . $get_term_slug . '"><strong class="bread-current bread-tag-' . $get_term_id . ' bread-tag-' . $get_term_slug . '">' . $get_term_name . '</strong></li>';
170
- } elseif ( is_day() ) {
171
-
172
- // Day archive
173
-
174
- // Year link
175
- echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . '</a></li>';
176
-
177
- // Month link
178
- echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </a></li>';
179
-
180
-
181
- // Day display
182
- echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </strong></li>';
183
-
184
- } else if ( is_month() ) {
185
-
186
- // Month Archive
187
-
188
- // Year link
189
- echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </a></li>';
190
-
191
- // Month display
192
- echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </strong></li>';
193
-
194
- } else if ( is_year() ) {
195
-
196
- // Display year archive
197
- echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives'). ' </strong></li>';
198
-
199
- } else if ( get_query_var('paged') ) {
200
-
201
- // Paginated archives
202
- echo '<li class="item-current item-current-' . get_query_var('paged') . '"><strong class="bread-current bread-current-' . get_query_var('paged') . '" title="Page ' . get_query_var('paged') . '">'. ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page') . ' ' . get_query_var('paged') . '</strong></li>';
203
-
204
- } else if ( is_search() ) {
205
-
206
- // Search results page
207
- echo '<li class="item-current item-current-' . get_search_query() . '"><strong class="bread-current bread-current-' . get_search_query() . '" title="Search results for: ' . get_search_query() . '">
208
- ' . ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-search-text'], 'Search results for') . ': ' . get_search_query() . '</strong></li>';
209
-
210
- } elseif ( is_404() ) {
211
-
212
- // 404 page
213
- echo '<li>' . ampforwp_translation($redux_builder_amp['amp-translator-error-404-text'], 'Error 404') . '</li>';
214
- }
215
- echo '</ul>';
216
-
217
- }?>
218
- </div>
219
  <?php }
1
+ <?php function amp_breadcrumb_output(){
2
+ global $redux_builder_amp;
3
+ $home_non_amp = $archive_non_amp = '';
4
+ if ( false == $redux_builder_amp['ampforwp-homepage-on-off-support'] ) {
5
+ $home_non_amp = 'nonamp';
6
+ }
7
+ if ( false == $redux_builder_amp['ampforwp-archive-support'] ) {
8
+ $archive_non_amp = 'nonamp';
9
+ } ?>
10
+ <div class="amp-wp-content breadcrumb"> <?php
11
+ // Settings
12
+ $breadcrums_id = 'breadcrumbs';
13
+ $breadcrums_class = 'breadcrumbs';
14
+ $home_title = ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-homepage-text'] , 'Homepage' );
15
+
16
+ // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
17
+ $custom_taxonomy = 'product_cat';
18
+
19
+ // Get the query & post information
20
+ global $post,$wp_query;
21
+ // Do not display on the homepage
22
+ if ( !ampforwp_polylang_front_page() && !is_front_page() ) {
23
+
24
+ // Build the breadcrums
25
+ echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
26
+
27
+ // Home page
28
+ echo '<li class="item-home"><a class="bread-link bread-home" href="' . esc_url(ampforwp_url_controller( get_home_url('', '/'), $home_non_amp )) . '" title="' . $home_title . '">' . $home_title . '</a></li>';
29
+
30
+ if ( is_archive() && !is_tax() && !is_category() && !is_tag() && !is_author() ) {
31
+
32
+
33
+ echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
34
+ } else if ( is_author() ) {
35
+ global $author;
36
+
37
+ $userdata = get_userdata( $author );
38
+ $author_url= get_author_posts_url($userdata->ID);
39
+ $author_url = trailingslashit($author_url);
40
+ // Display author name
41
+ echo '<li class="item-current item-current-' . $userdata->user_nicename . '"><a class="bread-current bread-current-' . $userdata->user_nicename . '" title="' . $userdata->display_name . '" href="'. esc_url(ampforwp_url_controller( $author_url, $archive_non_amp )). '">' . 'Author: ' . $userdata->display_name . '</a></li>';
42
+
43
+ } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
44
+
45
+ // If post is a custom post type
46
+ $post_type = get_post_type();
47
+
48
+ // If it is a custom post type display name and link
49
+ if($post_type != 'post') {
50
+
51
+ $post_type_object = get_post_type_object($post_type);
52
+ $post_type_archive = get_post_type_archive_link($post_type);
53
+ if ( false != $post_type_archive){
54
+ echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' .esc_url(ampforwp_url_controller( $post_type_archive, $archive_non_amp )) . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
55
+ }
56
+ else {
57
+ echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><span class="bread-cat bread-custom-post-type-' . $post_type . '">' . $post_type_object->labels->name . '</span></li>';
58
+ }
59
+ }
60
+
61
+ $custom_tax_name = get_queried_object()->name;
62
+ echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
63
+ } else if ( is_single() ) {
64
+
65
+ // If post is a custom post type
66
+ $post_type = get_post_type();
67
+
68
+ // If it is a custom post type display name and link
69
+ if($post_type != 'post') {
70
+
71
+ $post_type_object = get_post_type_object($post_type);
72
+ $post_type_archive = get_post_type_archive_link($post_type);
73
+ if ( false != $post_type_archive){
74
+ echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' .esc_url(ampforwp_url_controller( $post_type_archive, $archive_non_amp )) . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
75
+ }
76
+ else {
77
+ echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><span class="bread-cat bread-custom-post-type-' . $post_type . '">' . $post_type_object->labels->name . '</span></li>';
78
+ }
79
+ }
80
+
81
+ // Get post category info
82
+ $category = get_the_category();
83
+
84
+ if(!empty($category)) {
85
+
86
+ // Get last category post is in
87
+ $last_category = array_values($category);
88
+ $last_category = end($last_category);
89
+ $category_name = get_category($last_category);
90
+ // Get parent any categories and create array
91
+ $get_cat_parents = rtrim(get_category_parents($last_category->term_id, false, ','),',');
92
+ $cat_parents = explode(',',$get_cat_parents);
93
+
94
+ // Loop through parent categories and store in variable $cat_display
95
+ $cat_display = '';
96
+ foreach($cat_parents as $parents) {
97
+ $cat_id = get_cat_ID( $parents);
98
+ $cat_link = get_category_link($cat_id);
99
+ $cat_display .= '<li class="item-cat item-cat-' . $cat_id . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $parents. '" href="'. esc_url(ampforwp_url_controller( $cat_link, $archive_non_amp )).'" title="' . $parents . '">' . $parents . '</a></li>';
100
+ }
101
+ }
102
+
103
+ // If it's a custom post type within a custom taxonomy
104
+ $taxonomy_exists = taxonomy_exists($custom_taxonomy);
105
+ if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
106
+
107
+ $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
108
+ if ( $taxonomy_terms ) {
109
+ $cat_id = $taxonomy_terms[0]->term_id;
110
+ $cat_nicename = $taxonomy_terms[0]->slug;
111
+ $cat_link = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
112
+ $cat_link = trailingslashit($cat_link);
113
+ $cat_name = $taxonomy_terms[0]->name;
114
+ }
115
+ }
116
+
117
+ // Check if the post is in a category
118
+ if(!empty($last_category)) {
119
+ echo $cat_display;
120
+
121
+ // Else if post is in a custom taxonomy
122
+ } else if(!empty($cat_id)) {
123
+
124
+ echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . esc_url(ampforwp_url_controller( $cat_link, $archive_non_amp )) . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
125
+ }
126
+
127
+ } else if ( is_category() ) {
128
+
129
+ // Category page
130
+ echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
131
+ } else if ( is_page() ) {
132
+
133
+ // Standard page
134
+ if( $post->post_parent ){
135
+
136
+ // If child page, get parents
137
+ $anc = get_post_ancestors( $post->ID );
138
+
139
+ // Get parents in the right order
140
+ $anc = array_reverse($anc);
141
+
142
+ // Parent page loop
143
+ if ( !isset( $parents ) ) $parents = null;
144
+ foreach ( $anc as $ancestor ) {
145
+ $parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . esc_url(ampforwp_url_controller( get_permalink( $ancestor ), $archive_non_amp )) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
146
+ }
147
+
148
+ // Display parent pages
149
+ echo $parents;
150
+
151
+ // Current page
152
+
153
+ }
154
+
155
+ } else if ( is_tag() ) {
156
+
157
+ // Tag page
158
+
159
+ // Get tag information
160
+ $term_id = get_query_var('tag_id');
161
+ $taxonomy = 'post_tag';
162
+ $args = 'include=' . $term_id;
163
+ $terms = get_terms( $taxonomy, $args );
164
+ $get_term_id = $terms[0]->term_id;
165
+ $get_term_slug = $terms[0]->slug;
166
+ $get_term_name = $terms[0]->name;
167
+
168
+ // Display the tag name
169
+ echo '<li class="item-current item-tag-' . $get_term_id . ' item-tag-' . $get_term_slug . '"><strong class="bread-current bread-tag-' . $get_term_id . ' bread-tag-' . $get_term_slug . '">' . $get_term_name . '</strong></li>';
170
+ } elseif ( is_day() ) {
171
+
172
+ // Day archive
173
+
174
+ // Year link
175
+ echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . '</a></li>';
176
+
177
+ // Month link
178
+ echo '<li class="item-month item-month-' . get_the_time('m') . '"><a class="bread-month bread-month-' . get_the_time('m') . '" href="' . get_month_link( get_the_time('Y'), get_the_time('m') ) . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </a></li>';
179
+
180
+
181
+ // Day display
182
+ echo '<li class="item-current item-' . get_the_time('j') . '"><strong class="bread-current bread-' . get_the_time('j') . '"> ' . get_the_time('jS') . ' ' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </strong></li>';
183
+
184
+ } else if ( is_month() ) {
185
+
186
+ // Month Archive
187
+
188
+ // Year link
189
+ echo '<li class="item-year item-year-' . get_the_time('Y') . '"><a class="bread-year bread-year-' . get_the_time('Y') . '" href="' . get_year_link( get_the_time('Y') ) . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </a></li>';
190
+
191
+ // Month display
192
+ echo '<li class="item-month item-month-' . get_the_time('m') . '"><strong class="bread-month bread-month-' . get_the_time('m') . '" title="' . get_the_time('M') . '">' . get_the_time('M') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives') . ' </strong></li>';
193
+
194
+ } else if ( is_year() ) {
195
+
196
+ // Display year archive
197
+ echo '<li class="item-current item-current-' . get_the_time('Y') . '"><strong class="bread-current bread-current-' . get_the_time('Y') . '" title="' . get_the_time('Y') . '">' . get_the_time('Y') . ampforwp_translation($redux_builder_amp['amp-translator-archives-text'], 'Archives'). ' </strong></li>';
198
+
199
+ } else if ( get_query_var('paged') ) {
200
+
201
+ // Paginated archives
202
+ echo '<li class="item-current item-current-' . get_query_var('paged') . '"><strong class="bread-current bread-current-' . get_query_var('paged') . '" title="Page ' . get_query_var('paged') . '">'. ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page') . ' ' . get_query_var('paged') . '</strong></li>';
203
+
204
+ } else if ( is_search() ) {
205
+
206
+ // Search results page
207
+ echo '<li class="item-current item-current-' . get_search_query() . '"><strong class="bread-current bread-current-' . get_search_query() . '" title="Search results for: ' . get_search_query() . '">
208
+ ' . ampforwp_translation($redux_builder_amp['amp-translator-breadcrumbs-search-text'], 'Search results for') . ': ' . get_search_query() . '</strong></li>';
209
+
210
+ } elseif ( is_404() ) {
211
+
212
+ // 404 page
213
+ echo '<li>' . ampforwp_translation($redux_builder_amp['amp-translator-error-404-text'], 'Error 404') . '</li>';
214
+ }
215
+ echo '</ul>';
216
+
217
+ }?>
218
+ </div>
219
  <?php }
components/call-now/call-now.php CHANGED
@@ -1,16 +1,16 @@
1
- <?php
2
- add_action('amp_call_button','amp_call_button_html_output');
3
- function amp_call_button_html_output(){
4
- global $redux_builder_amp;
5
- if ( $redux_builder_amp['ampforwp-callnow-button'] ) { ?>
6
- <div class="amp-phone">
7
- <a href="tel:<?php echo $redux_builder_amp['enable-amp-call-numberfield']; ?>"></a>
8
- </div> <?php
9
- }
10
- }
11
- add_action('amp_post_template_css','amp_callnow_styles',11);
12
- function amp_callnow_styles(){
13
- global $redux_builder_amp; if ($redux_builder_amp['ampforwp-callnow-button']) { ?>
14
- .amp-phone{ position:relative }
15
- .amp-phone a:before { content: ""; display:inline-block; width: 4px; height: 8px; border-width: 6px 0 6px 3px; border-style: solid; border-color:<?php echo $redux_builder_amp['amp-opt-color-rgba-colorscheme-call']['color']; ?>; background: transparent; transform: rotate(-30deg); box-sizing: initial; border-top-left-radius: 3px 5px; border-bottom-left-radius: 3px 5px; }
16
  <?php }} ?>
1
+ <?php
2
+ add_action('amp_call_button','amp_call_button_html_output');
3
+ function amp_call_button_html_output(){
4
+ global $redux_builder_amp;
5
+ if ( $redux_builder_amp['ampforwp-callnow-button'] ) { ?>
6
+ <div class="amp-phone">
7
+ <a href="tel:<?php echo $redux_builder_amp['enable-amp-call-numberfield']; ?>"></a>
8
+ </div> <?php
9
+ }
10
+ }
11
+ add_action('amp_post_template_css','amp_callnow_styles',11);
12
+ function amp_callnow_styles(){
13
+ global $redux_builder_amp; if ($redux_builder_amp['ampforwp-callnow-button']) { ?>
14
+ .amp-phone{ position:relative }
15
+ .amp-phone a:before { content: ""; display:inline-block; width: 4px; height: 8px; border-width: 6px 0 6px 3px; border-style: solid; border-color:<?php echo $redux_builder_amp['amp-opt-color-rgba-colorscheme-call']['color']; ?>; background: transparent; transform: rotate(-30deg); box-sizing: initial; border-top-left-radius: 3px 5px; border-bottom-left-radius: 3px 5px; }
16
  <?php }} ?>
components/categories-tags/categories-tags.php CHANGED
@@ -1,45 +1,45 @@
1
- <?php
2
- /*
3
- TODO: 1: Connect with options panel(archive support and translational panel)
4
- 2: Do we have to change the classes names as well?
5
- */
6
- global $post;
7
- function ampforwp_framework_get_categories_list(){
8
- global $post, $redux_builder_amp;
9
- $ampforwp_categories = get_the_terms( $post->ID, 'category' );
10
- if ( $ampforwp_categories ) : ?>
11
- <div class="amp-category">
12
- <span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-categories-text'], 'Categories' ); ?></span>
13
- <?php foreach ($ampforwp_categories as $cat ) {
14
- if( true == $redux_builder_amp['ampforwp-archive-support'] && true == $redux_builder_amp['ampforwp-cats-tags-links-single']) {
15
- echo ('<span class="amp-cat amp-cat-'.$cat->term_id.'"><a href="'. ampforwp_url_controller( get_category_link( $cat->term_id ) ) .'" > '. $cat->name .'</a></span>');//#934
16
- } else {
17
- echo '<span class="amp-cat">'. $cat->name .'</span>';
18
- }
19
- } ?>
20
- </div>
21
- <?php endif;
22
- }
23
- function ampforwp_framework_get_tags_list(){
24
- global $post, $redux_builder_amp;
25
- $ampforwp_tags = get_the_terms( $post->ID, 'post_tag' );
26
- if ( $ampforwp_tags && ! is_wp_error( $ampforwp_tags ) ) :?>
27
- <div class="amp-tags">
28
- <?php /* if($redux_builder_amp['amp-rtl-select-option']==0) {
29
- global $redux_builder_amp; printf( ampforwp_translation($redux_builder_amp['amp-translator-tags-text'] .' ', 'accelerated-mobile-pages' ));
30
- }*/
31
- ?>
32
- <span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-tags-text'], 'Tags' ); ?></span>
33
- <?php foreach ( $ampforwp_tags as $tag ) {
34
- if( true == $redux_builder_amp['ampforwp-archive-support'] && true == $redux_builder_amp['ampforwp-cats-tags-links-single'] ) {
35
- echo ('<span class="amp-tag amp-tag-'.$tag->term_id.'"><a href="'. ampforwp_url_controller( get_tag_link( $tag->term_id ) ).'" >'.$tag->name .'</a></span>');//#934
36
- } else {
37
- echo ('<span class="amp-tag">'.$tag->name.'</span>');
38
- }
39
- }
40
- /* if($redux_builder_amp['amp-rtl-select-option']) {
41
- global $redux_builder_amp; printf( ampforwp_translation($redux_builder_amp['amp-translator-tags-text'] .' ', 'accelerated-mobile-pages' ));
42
- }*/ ?>
43
- </div>
44
- <?php endif;
45
  }
1
+ <?php
2
+ /*
3
+ TODO: 1: Connect with options panel(archive support and translational panel)
4
+ 2: Do we have to change the classes names as well?
5
+ */
6
+ global $post;
7
+ function ampforwp_framework_get_categories_list(){
8
+ global $post, $redux_builder_amp;
9
+ $ampforwp_categories = get_the_terms( $post->ID, 'category' );
10
+ if ( $ampforwp_categories ) : ?>
11
+ <div class="amp-category">
12
+ <span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-categories-text'], 'Categories' ); ?></span>
13
+ <?php foreach ($ampforwp_categories as $cat ) {
14
+ if( true == $redux_builder_amp['ampforwp-archive-support'] && true == $redux_builder_amp['ampforwp-cats-tags-links-single']) {
15
+ echo ('<span class="amp-cat amp-cat-'.$cat->term_id.'"><a href="'. ampforwp_url_controller( get_category_link( $cat->term_id ) ) .'" > '. $cat->name .'</a></span>');//#934
16
+ } else {
17
+ echo '<span class="amp-cat">'. $cat->name .'</span>';
18
+ }
19
+ } ?>
20
+ </div>
21
+ <?php endif;
22
+ }
23
+ function ampforwp_framework_get_tags_list(){
24
+ global $post, $redux_builder_amp;
25
+ $ampforwp_tags = get_the_terms( $post->ID, 'post_tag' );
26
+ if ( $ampforwp_tags && ! is_wp_error( $ampforwp_tags ) ) :?>
27
+ <div class="amp-tags">
28
+ <?php /* if($redux_builder_amp['amp-rtl-select-option']==0) {
29
+ global $redux_builder_amp; printf( ampforwp_translation($redux_builder_amp['amp-translator-tags-text'] .' ', 'accelerated-mobile-pages' ));
30
+ }*/
31
+ ?>
32
+ <span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-tags-text'], 'Tags' ); ?></span>
33
+ <?php foreach ( $ampforwp_tags as $tag ) {
34
+ if( true == $redux_builder_amp['ampforwp-archive-support'] && true == $redux_builder_amp['ampforwp-cats-tags-links-single'] ) {
35
+ echo ('<span class="amp-tag amp-tag-'.$tag->term_id.'"><a href="'. ampforwp_url_controller( get_tag_link( $tag->term_id ) ).'" >'.$tag->name .'</a></span>');//#934
36
+ } else {
37
+ echo ('<span class="amp-tag">'.$tag->name.'</span>');
38
+ }
39
+ }
40
+ /* if($redux_builder_amp['amp-rtl-select-option']) {
41
+ global $redux_builder_amp; printf( ampforwp_translation($redux_builder_amp['amp-translator-tags-text'] .' ', 'accelerated-mobile-pages' ));
42
+ }*/ ?>
43
+ </div>
44
+ <?php endif;
45
  }
components/comments/comments.php CHANGED
@@ -1,268 +1,268 @@
1
- <?php
2
- function ampforwp_framework_get_comments(){
3
- global $redux_builder_amp;
4
- $display_comments_on = "";
5
- $display_comments_on = ampforwp_get_comments_status();
6
- if ( $display_comments_on ) {
7
- if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
8
- echo ampforwp_framework_get_facebook_comments();
9
- }
10
-
11
- if ( $redux_builder_amp['ampforwp-disqus-comments-support'] ) {
12
- ampforwp_framework_get_disqus_comments();
13
- }
14
- if ( $redux_builder_amp['ampforwp-vuukle-comments-support'] ) {
15
- ampforwp_framework_get_vuukle_comments();
16
- }
17
- if ( $redux_builder_amp['ampforwp-spotim-comments-support'] ) {
18
- ampforwp_framework_get_spotim_comments();
19
- }
20
-
21
- if ( isset($redux_builder_amp['wordpress-comments-support']) && true == $redux_builder_amp['wordpress-comments-support'] ) {
22
- do_action('ampforwp_before_comment_hook'); ?>
23
- <div class="amp-comments">
24
- <?php
25
- // Gather comments for a specific page/post
26
- $postID = $comments = $max_page = "";
27
- $postID = get_the_ID();
28
- $comments = get_comments(array(
29
- 'post_id' => $postID,
30
- 'status' => 'approve' //Change this to the type of comments to be displayed
31
- ));
32
-
33
- if ( $comments ) { ?>
34
- <div id="comments" class="amp-comments-wrapper">
35
- <h3><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-view-comments-text'], 'View Comments' )?></span></h3>
36
- <ul><?php
37
- // Display the list of comments
38
- function ampforwp_custom_translated_comment($comment, $args, $depth){
39
- $GLOBALS['comment'] = $comment;
40
- global $redux_builder_amp;
41
- $comment_author_img_url = "";
42
- $comment_author_img_url = ampforwp_get_comments_gravatar( $comment );
43
-
44
- ?>
45
- <li id="li-comment-<?php comment_ID() ?>"
46
- <?php comment_class(); ?> >
47
- <article id="comment-<?php comment_ID(); ?>" class="comment-body">
48
- <footer class="comment-meta">
49
- <?php if($comment_author_img_url){ ?>
50
- <amp-img src="<?php echo esc_url($comment_author_img_url); ?>" width="40" height="40" layout="fixed" class="comment-author-img"></amp-img>
51
- <?php } ?>
52
- <div class="comment-author vcard">
53
- <?php
54
- printf(__('<b class="fn">%s</b> <span class="says">'.ampforwp_translation($redux_builder_amp['amp-translator-says-text'],'says').':</span>'), get_comment_author_link()) ?>
55
- </div>
56
- <div class="comment-metadata">
57
- <a href="<?php echo htmlspecialchars( trailingslashit( get_comment_link( $comment->comment_ID ) ) ) ?>">
58
- <?php printf( ampforwp_translation( ('%1$s '. ampforwp_translation($redux_builder_amp['amp-translator-at-text'],'at').' %2$s'), '%1$s at %2$s') , get_comment_date(), get_comment_time())?>
59
- </a>
60
- <?php edit_comment_link( ampforwp_translation( $redux_builder_amp['amp-translator-Edit-text'], 'Edit' ) ) ?>
61
- </div>
62
- </footer>
63
- <div class="comment-content">
64
- <?php
65
- $comment_content = get_comment_text();
66
- $comment_content = wpautop( $comment_content );
67
- $sanitizer = new AMPFORWP_Content( $comment_content, array(), apply_filters( 'ampforwp_content_sanitizers', array(
68
- 'AMP_Img_Sanitizer' => array(),
69
- 'AMP_Video_Sanitizer' => array(),
70
- 'AMP_Style_Sanitizer' => array() ) ) );
71
- $sanitized_comment_content = $sanitizer->get_amp_content();
72
- echo make_clickable( $sanitized_comment_content ); ?>
73
- </div>
74
- <?php do_action('ampforwp_reply_comment_form', $comment, $args, $depth); ?>
75
- </article>
76
- </li>
77
- <?php
78
- }
79
- wp_list_comments( array(
80
- //Allow comment pagination
81
- 'per_page' => AMPFORWP_COMMENTS_PER_PAGE ,
82
- 'style' => 'li',
83
- 'type' => 'comment',
84
- 'max_depth' => 5,
85
- 'avatar_size' => 0,
86
- 'callback' => 'ampforwp_custom_translated_comment',
87
- 'reverse_top_level' => true //Show the latest comments at the top of the list
88
- ), $comments); ?>
89
- </ul> <?php
90
- $max_page = get_comment_pages_count($comments, AMPFORWP_COMMENTS_PER_PAGE);
91
- $args = array(
92
- 'base' => add_query_arg( array('cpage' => '%#%', 'amp' => '1'), get_permalink() ),
93
- 'format' => '',
94
- 'total' => $max_page,
95
- 'echo' => false,
96
- 'add_fragment' => '#comments',
97
- );
98
- if ( paginate_comments_links($args) ) { ?>
99
- <div class="cmts-wrap">
100
- <?php echo paginate_comments_links( $args ); ?>
101
- </div>
102
- <?php } ?>
103
- </div> <!-- .amp-comments-wrapper -->
104
- <?php // if amp-comments extension is enabled then hide this button
105
- } // if ( $comments )
106
- if ( ! defined( 'AMP_COMMENTS_VERSION' ) ) { ?>
107
- <div class="amp-comment-button">
108
- <?php if ( comments_open() ) { ?>
109
- <a href="<?php echo ampforwp_comment_button_url(); ?>" rel="nofollow"><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-leave-a-comment-text'], 'Leave a Comment' ); ?></a> <?php
110
- } else {
111
- echo "<p class='nocomments'>". ampforwp_translation( $redux_builder_amp['amp-translator-comments-closed'], 'Comments are closed' ) ." </p>";
112
- }?>
113
- </div> <?php
114
- }?>
115
- </div>
116
- <?php do_action('ampforwp_after_comment_hook');
117
- }
118
- } // end $display_comments_on
119
- }
120
-
121
- //Facebook Comments
122
- function ampforwp_framework_get_facebook_comments(){
123
- global $redux_builder_amp;
124
- $facebook_comments_markup = $lang = $locale = '';
125
- $lang = $redux_builder_amp['ampforwp-fb-comments-lang'];
126
- $locale = 'data-locale = "'.$lang.'"';
127
- if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
128
- if( ampforwp_is_non_amp() && isset($redux_builder_amp['ampforwp-amp-convert-to-wp']) && $redux_builder_amp['ampforwp-amp-convert-to-wp']) {
129
- $facebook_comments_markup = '<div class="fb-comments" data-href="' . get_permalink() . '" data-width="800px" data-numposts="'.$redux_builder_amp['ampforwp-number-of-fb-no-of-comments'].'"></div>';
130
- }
131
- else {
132
- $facebook_comments_markup = '<section class="amp-facebook-comments">';
133
- $facebook_comments_markup .= '<amp-facebook-comments width=486 height=357
134
- layout="responsive" '.$locale.' data-numposts=';
135
- $facebook_comments_markup .= '"'. $redux_builder_amp['ampforwp-number-of-fb-no-of-comments']. '"';
136
- if(ampforwp_get_data_consent()){
137
- $facebook_comments_markup .= ' data-block-on-consent ';
138
- }
139
- $facebook_comments_markup .= 'data-href="' . get_permalink() . '"';
140
- $facebook_comments_markup .= '></amp-facebook-comments></section>';
141
- }
142
- return $facebook_comments_markup;
143
- }
144
- }
145
-
146
- //Disqus Comments
147
- function ampforwp_framework_get_disqus_comments(){
148
- global $redux_builder_amp;
149
- $width = $height = 420;
150
-
151
- $layout = "";
152
- $layout = 'responsive';
153
- if ( isset($redux_builder_amp['ampforwp-disqus-layout']) && 'fixed' == $redux_builder_amp['ampforwp-disqus-layout'] ) {
154
- $layout = 'fixed';
155
-
156
- if ( isset($redux_builder_amp['ampforwp-disqus-height']) && $redux_builder_amp['ampforwp-disqus-height'] ) {
157
- $height = $redux_builder_amp['ampforwp-disqus-height'];
158
- }
159
- }
160
-
161
- if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
162
- global $post; $post_slug=$post->post_name;
163
-
164
- $disqus_script_host_url = "https://ampforwp.appspot.com/?api=". AMPFORWP_DISQUS_URL;
165
-
166
- if( $redux_builder_amp['ampforwp-disqus-host-position'] == 0 ) {
167
- $disqus_script_host_url = esc_url( $redux_builder_amp['ampforwp-disqus-host-file'] );
168
- }
169
-
170
- $disqus_url = $disqus_script_host_url.'?disqus_title='.$post_slug.'&url='.get_permalink().'&disqus_name='. esc_url( $redux_builder_amp['ampforwp-disqus-comments-name'] ) ."/embed.js" ;
171
- ?>
172
- <section class="amp-disqus-comments">
173
- <amp-iframe
174
- height=<?php echo $height ?>
175
- width=<?php echo $width ?>
176
- layout="<?php echo $layout ?>"
177
- sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
178
- frameborder="0"
179
- <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>
180
- src="<?php echo $disqus_url ?>" >
181
- <div overflow tabindex="0" role="button" aria-label="Read more"><?php echo __('Disqus Comments Loading...','accelerated-mobile-pages') ?></div>
182
- </amp-iframe>
183
- </section>
184
- <?php
185
- }
186
- }
187
-
188
- function ampforwp_framework_get_vuukle_comments(){
189
- global $post, $redux_builder_amp;
190
- $apiKey ='';
191
- if( isset($redux_builder_amp['ampforwp-vuukle-comments-apiKey']) && $redux_builder_amp['ampforwp-vuukle-comments-apiKey'] !== ""){
192
- $apiKey = $redux_builder_amp['ampforwp-vuukle-comments-apiKey'];
193
- }
194
- $srcUrl = 'https://cdn.vuukle.com/amp.html?';
195
- $srcUrl = add_query_arg('url' ,get_permalink(), $srcUrl);
196
- $srcUrl = add_query_arg('host' ,site_url(), $srcUrl);
197
- $srcUrl = add_query_arg('id' , $post->ID, $srcUrl);
198
- $srcUrl = add_query_arg('apiKey' , $apiKey, $srcUrl);
199
- $srcUrl = add_query_arg('title' , $post->post_title, $srcUrl);
200
- $vuukle_html = '<amp-iframe width="600" height="350" layout="responsive" sandbox="allow-scripts allow-same-origin allow-modals allow-popups allow-forms" resizable frameborder="0" src="'.$srcUrl.'">
201
-
202
- <div overflow tabindex="0" role="button" aria-label="Show comments">Show comments</div>';
203
- echo $vuukle_html;
204
- }
205
-
206
- function ampforwp_framework_get_spotim_comments(){
207
- global $post, $redux_builder_amp;
208
- $spotId ='';
209
- if( isset($redux_builder_amp['ampforwp-spotim-comments-apiKey']) && $redux_builder_amp['ampforwp-spotim-comments-apiKey'] !== ""){
210
- $spotId = $redux_builder_amp['ampforwp-spotim-comments-apiKey'];
211
- }
212
- $srcUrl = 'https://amp.spot.im/production.html?';
213
- $srcUrl = add_query_arg('spotId' ,get_permalink(), $srcUrl);
214
- $srcUrl = add_query_arg('postId' , $post->ID, $srcUrl);
215
- $spotim_html = '<amp-iframe width="375" height="815" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-top-navigation" layout="responsive"
216
- frameborder="0" src="'.$srcUrl.'">
217
- <amp-img placeholder height="815" layout="fill" src="//amp.spot.im/loader.png"></amp-img>
218
- <div overflow class="spot-im-amp-overflow" tabindex="0" role="button" aria-label="Read more">Load more...</div>
219
- </amp-iframe>';
220
- echo $spotim_html;
221
- }
222
-
223
- // Comments Scripts
224
- add_filter( 'amp_post_template_data', 'ampforwp_framework_comments_scripts' );
225
- function ampforwp_framework_comments_scripts( $data ) {
226
-
227
- $facebook_comments_check = ampforwp_framework_get_facebook_comments();
228
- global $redux_builder_amp;
229
- $is_pb_enabled = '';
230
- $is_pb_enabled = checkAMPforPageBuilderStatus(get_the_ID());
231
- $display_comments_on = "";
232
- $display_comments_on = ampforwp_get_comments_status();
233
-
234
- if ( $facebook_comments_check && $redux_builder_amp['ampforwp-facebook-comments-support'] && $display_comments_on && !is_front_page() && !$is_pb_enabled ) {
235
- if ( empty( $data['amp_component_scripts']['amp-facebook-comments'] ) ) {
236
- $data['amp_component_scripts']['amp-facebook-comments'] = 'https://cdn.ampproject.org/v0/amp-facebook-comments-0.1.js';
237
- }
238
- }
239
- if ( $redux_builder_amp['ampforwp-disqus-comments-support'] && $display_comments_on && comments_open() && !$is_pb_enabled ) {
240
- if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
241
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
242
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
243
- }
244
- }
245
- }
246
- if ( isset($redux_builder_amp['ampforwp-vuukle-comments-support'])
247
- && $redux_builder_amp['ampforwp-vuukle-comments-support']
248
- && $display_comments_on && comments_open() && !$is_pb_enabled
249
- ) {
250
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
251
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
252
- }
253
- if ($redux_builder_amp['ampforwp-vuukle-Ads-before-comments']==1
254
- && empty( $data['amp_component_scripts']['amp-ad'] ) ) {
255
- $data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-0.1.js';
256
- }
257
- }
258
- //spotim
259
- if ( isset($redux_builder_amp['ampforwp-spotim-comments-support'])
260
- && $redux_builder_amp['ampforwp-spotim-comments-support']
261
- && $display_comments_on && comments_open() ) {
262
- if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
263
- $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
264
- }
265
-
266
- }
267
- return $data;
268
  }
1
+ <?php
2
+ function ampforwp_framework_get_comments(){
3
+ global $redux_builder_amp;
4
+ $display_comments_on = "";
5
+ $display_comments_on = ampforwp_get_comments_status();
6
+ if ( $display_comments_on ) {
7
+ if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
8
+ echo ampforwp_framework_get_facebook_comments();
9
+ }
10
+
11
+ if ( $redux_builder_amp['ampforwp-disqus-comments-support'] ) {
12
+ ampforwp_framework_get_disqus_comments();
13
+ }
14
+ if ( $redux_builder_amp['ampforwp-vuukle-comments-support'] ) {
15
+ ampforwp_framework_get_vuukle_comments();
16
+ }
17
+ if ( $redux_builder_amp['ampforwp-spotim-comments-support'] ) {
18
+ ampforwp_framework_get_spotim_comments();
19
+ }
20
+
21
+ if ( isset($redux_builder_amp['wordpress-comments-support']) && true == $redux_builder_amp['wordpress-comments-support'] ) {
22
+ do_action('ampforwp_before_comment_hook'); ?>
23
+ <div class="amp-comments">
24
+ <?php
25
+ // Gather comments for a specific page/post
26
+ $postID = $comments = $max_page = "";
27
+ $postID = get_the_ID();
28
+ $comments = get_comments(array(
29
+ 'post_id' => $postID,
30
+ 'status' => 'approve' //Change this to the type of comments to be displayed
31
+ ));
32
+
33
+ if ( $comments ) { ?>
34
+ <div id="comments" class="amp-comments-wrapper">
35
+ <h3><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-view-comments-text'], 'View Comments' )?></span></h3>
36
+ <ul><?php
37
+ // Display the list of comments
38
+ function ampforwp_custom_translated_comment($comment, $args, $depth){
39
+ $GLOBALS['comment'] = $comment;
40
+ global $redux_builder_amp;
41
+ $comment_author_img_url = "";
42
+ $comment_author_img_url = ampforwp_get_comments_gravatar( $comment );
43
+
44
+ ?>
45
+ <li id="li-comment-<?php comment_ID() ?>"
46
+ <?php comment_class(); ?> >
47
+ <article id="comment-<?php comment_ID(); ?>" class="comment-body">
48
+ <footer class="comment-meta">
49
+ <?php if($comment_author_img_url){ ?>
50
+ <amp-img src="<?php echo esc_url($comment_author_img_url); ?>" width="40" height="40" layout="fixed" class="comment-author-img"></amp-img>
51
+ <?php } ?>
52
+ <div class="comment-author vcard">
53
+ <?php
54
+ printf(__('<b class="fn">%s</b> <span class="says">'.ampforwp_translation($redux_builder_amp['amp-translator-says-text'],'says').':</span>'), get_comment_author_link()) ?>
55
+ </div>
56
+ <div class="comment-metadata">
57
+ <a href="<?php echo htmlspecialchars( trailingslashit( get_comment_link( $comment->comment_ID ) ) ) ?>">
58
+ <?php printf( ampforwp_translation( ('%1$s '. ampforwp_translation($redux_builder_amp['amp-translator-at-text'],'at').' %2$s'), '%1$s at %2$s') , get_comment_date(), get_comment_time())?>
59
+ </a>
60
+ <?php edit_comment_link( ampforwp_translation( $redux_builder_amp['amp-translator-Edit-text'], 'Edit' ) ) ?>
61
+ </div>
62
+ </footer>
63
+ <div class="comment-content">
64
+ <?php
65
+ $comment_content = get_comment_text();
66
+ $comment_content = wpautop( $comment_content );
67
+ $sanitizer = new AMPFORWP_Content( $comment_content, array(), apply_filters( 'ampforwp_content_sanitizers', array(
68
+ 'AMP_Img_Sanitizer' => array(),
69
+ 'AMP_Video_Sanitizer' => array(),
70
+ 'AMP_Style_Sanitizer' => array() ) ) );
71
+ $sanitized_comment_content = $sanitizer->get_amp_content();
72
+ echo make_clickable( $sanitized_comment_content ); ?>
73
+ </div>
74
+ <?php do_action('ampforwp_reply_comment_form', $comment, $args, $depth); ?>
75
+ </article>
76
+ </li>
77
+ <?php
78
+ }
79
+ wp_list_comments( array(
80
+ //Allow comment pagination
81
+ 'per_page' => AMPFORWP_COMMENTS_PER_PAGE ,
82
+ 'style' => 'li',
83
+ 'type' => 'comment',
84
+ 'max_depth' => 5,
85
+ 'avatar_size' => 0,
86
+ 'callback' => 'ampforwp_custom_translated_comment',
87
+ 'reverse_top_level' => true //Show the latest comments at the top of the list
88
+ ), $comments); ?>
89
+ </ul> <?php
90
+ $max_page = get_comment_pages_count($comments, AMPFORWP_COMMENTS_PER_PAGE);
91
+ $args = array(
92
+ 'base' => add_query_arg( array('cpage' => '%#%', 'amp' => '1'), get_permalink() ),
93
+ 'format' => '',
94
+ 'total' => $max_page,
95
+ 'echo' => false,
96
+ 'add_fragment' => '#comments',
97
+ );
98
+ if ( paginate_comments_links($args) ) { ?>
99
+ <div class="cmts-wrap">
100
+ <?php echo paginate_comments_links( $args ); ?>
101
+ </div>
102
+ <?php } ?>
103
+ </div> <!-- .amp-comments-wrapper -->
104
+ <?php // if amp-comments extension is enabled then hide this button
105
+ } // if ( $comments )
106
+ if ( ! defined( 'AMP_COMMENTS_VERSION' ) ) { ?>
107
+ <div class="amp-comment-button">
108
+ <?php if ( comments_open() ) { ?>
109
+ <a href="<?php echo ampforwp_comment_button_url(); ?>" rel="nofollow"><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-leave-a-comment-text'], 'Leave a Comment' ); ?></a> <?php
110
+ } else {
111
+ echo "<p class='nocomments'>". ampforwp_translation( $redux_builder_amp['amp-translator-comments-closed'], 'Comments are closed' ) ." </p>";
112
+ }?>
113
+ </div> <?php
114
+ }?>
115
+ </div>
116
+ <?php do_action('ampforwp_after_comment_hook');
117
+ }
118
+ } // end $display_comments_on
119
+ }
120
+
121
+ //Facebook Comments
122
+ function ampforwp_framework_get_facebook_comments(){
123
+ global $redux_builder_amp;
124
+ $facebook_comments_markup = $lang = $locale = '';
125
+ $lang = $redux_builder_amp['ampforwp-fb-comments-lang'];
126
+ $locale = 'data-locale = "'.$lang.'"';
127
+ if ( $redux_builder_amp['ampforwp-facebook-comments-support'] ) {
128
+ if( ampforwp_is_non_amp() && isset($redux_builder_amp['ampforwp-amp-convert-to-wp']) && $redux_builder_amp['ampforwp-amp-convert-to-wp']) {
129
+ $facebook_comments_markup = '<div class="fb-comments" data-href="' . get_permalink() . '" data-width="800px" data-numposts="'.$redux_builder_amp['ampforwp-number-of-fb-no-of-comments'].'"></div>';
130
+ }
131
+ else {
132
+ $facebook_comments_markup = '<section class="amp-facebook-comments">';
133
+ $facebook_comments_markup .= '<amp-facebook-comments width=486 height=357
134
+ layout="responsive" '.$locale.' data-numposts=';
135
+ $facebook_comments_markup .= '"'. $redux_builder_amp['ampforwp-number-of-fb-no-of-comments']. '"';
136
+ if(ampforwp_get_data_consent()){
137
+ $facebook_comments_markup .= ' data-block-on-consent ';
138
+ }
139
+ $facebook_comments_markup .= 'data-href="' . get_permalink() . '"';
140
+ $facebook_comments_markup .= '></amp-facebook-comments></section>';
141
+ }
142
+ return $facebook_comments_markup;
143
+ }
144
+ }
145
+
146
+ //Disqus Comments
147
+ function ampforwp_framework_get_disqus_comments(){
148
+ global $redux_builder_amp;
149
+ $width = $height = 420;
150
+
151
+ $layout = "";
152
+ $layout = 'responsive';
153
+ if ( isset($redux_builder_amp['ampforwp-disqus-layout']) && 'fixed' == $redux_builder_amp['ampforwp-disqus-layout'] ) {
154
+ $layout = 'fixed';
155
+
156
+ if ( isset($redux_builder_amp['ampforwp-disqus-height']) && $redux_builder_amp['ampforwp-disqus-height'] ) {
157
+ $height = $redux_builder_amp['ampforwp-disqus-height'];
158
+ }
159
+ }
160
+
161
+ if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
162
+ global $post; $post_slug=$post->post_name;
163
+
164
+ $disqus_script_host_url = "https://ampforwp.appspot.com/?api=". AMPFORWP_DISQUS_URL;
165
+
166
+ if( $redux_builder_amp['ampforwp-disqus-host-position'] == 0 ) {
167
+ $disqus_script_host_url = esc_url( $redux_builder_amp['ampforwp-disqus-host-file'] );
168
+ }
169
+
170
+ $disqus_url = $disqus_script_host_url.'?disqus_title='.$post_slug.'&url='.get_permalink().'&disqus_name='. esc_url( $redux_builder_amp['ampforwp-disqus-comments-name'] ) ."/embed.js" ;
171
+ ?>
172
+ <section class="amp-disqus-comments">
173
+ <amp-iframe
174
+ height=<?php echo $height ?>
175
+ width=<?php echo $width ?>
176
+ layout="<?php echo $layout ?>"
177
+ sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
178
+ frameborder="0"
179
+ <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?>
180
+ src="<?php echo $disqus_url ?>" >
181
+ <div overflow tabindex="0" role="button" aria-label="Read more"><?php echo __('Disqus Comments Loading...','accelerated-mobile-pages') ?></div>
182
+ </amp-iframe>
183
+ </section>
184
+ <?php
185
+ }
186
+ }
187
+
188
+ function ampforwp_framework_get_vuukle_comments(){
189
+ global $post, $redux_builder_amp;
190
+ $apiKey ='';
191
+ if( isset($redux_builder_amp['ampforwp-vuukle-comments-apiKey']) && $redux_builder_amp['ampforwp-vuukle-comments-apiKey'] !== ""){
192
+ $apiKey = $redux_builder_amp['ampforwp-vuukle-comments-apiKey'];
193
+ }
194
+ $srcUrl = 'https://cdn.vuukle.com/amp.html?';
195
+ $srcUrl = add_query_arg('url' ,get_permalink(), $srcUrl);
196
+ $srcUrl = add_query_arg('host' ,site_url(), $srcUrl);
197
+ $srcUrl = add_query_arg('id' , $post->ID, $srcUrl);
198
+ $srcUrl = add_query_arg('apiKey' , $apiKey, $srcUrl);
199
+ $srcUrl = add_query_arg('title' , $post->post_title, $srcUrl);
200
+ $vuukle_html = '<amp-iframe width="600" height="350" layout="responsive" sandbox="allow-scripts allow-same-origin allow-modals allow-popups allow-forms" resizable frameborder="0" src="'.$srcUrl.'">
201
+
202
+ <div overflow tabindex="0" role="button" aria-label="Show comments">Show comments</div>';
203
+ echo $vuukle_html;
204
+ }
205
+
206
+ function ampforwp_framework_get_spotim_comments(){
207
+ global $post, $redux_builder_amp;
208
+ $spotId ='';
209
+ if( isset($redux_builder_amp['ampforwp-spotim-comments-apiKey']) && $redux_builder_amp['ampforwp-spotim-comments-apiKey'] !== ""){
210
+ $spotId = $redux_builder_amp['ampforwp-spotim-comments-apiKey'];
211
+ }
212
+ $srcUrl = 'https://amp.spot.im/production.html?';
213
+ $srcUrl = add_query_arg('spotId' ,get_permalink(), $srcUrl);
214
+ $srcUrl = add_query_arg('postId' , $post->ID, $srcUrl);
215
+ $spotim_html = '<amp-iframe width="375" height="815" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-top-navigation" layout="responsive"
216
+ frameborder="0" src="'.$srcUrl.'">
217
+ <amp-img placeholder height="815" layout="fill" src="//amp.spot.im/loader.png"></amp-img>
218
+ <div overflow class="spot-im-amp-overflow" tabindex="0" role="button" aria-label="Read more">Load more...</div>
219
+ </amp-iframe>';
220
+ echo $spotim_html;
221
+ }
222
+
223
+ // Comments Scripts
224
+ add_filter( 'amp_post_template_data', 'ampforwp_framework_comments_scripts' );
225
+ function ampforwp_framework_comments_scripts( $data ) {
226
+
227
+ $facebook_comments_check = ampforwp_framework_get_facebook_comments();
228
+ global $redux_builder_amp;
229
+ $is_pb_enabled = '';
230
+ $is_pb_enabled = checkAMPforPageBuilderStatus(get_the_ID());
231
+ $display_comments_on = "";
232
+ $display_comments_on = ampforwp_get_comments_status();
233
+
234
+ if ( $facebook_comments_check && $redux_builder_amp['ampforwp-facebook-comments-support'] && $display_comments_on && !is_front_page() && !$is_pb_enabled ) {
235
+ if ( empty( $data['amp_component_scripts']['amp-facebook-comments'] ) ) {
236
+ $data['amp_component_scripts']['amp-facebook-comments'] = 'https://cdn.ampproject.org/v0/amp-facebook-comments-0.1.js';
237
+ }
238
+ }
239
+ if ( $redux_builder_amp['ampforwp-disqus-comments-support'] && $display_comments_on && comments_open() && !$is_pb_enabled ) {
240
+ if( $redux_builder_amp['ampforwp-disqus-comments-name'] !== '' ) {
241
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
242
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
243
+ }
244
+ }
245
+ }
246
+ if ( isset($redux_builder_amp['ampforwp-vuukle-comments-support'])
247
+ && $redux_builder_amp['ampforwp-vuukle-comments-support']
248
+ && $display_comments_on && comments_open() && !$is_pb_enabled
249
+ ) {
250
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
251
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
252
+ }
253
+ if ($redux_builder_amp['ampforwp-vuukle-Ads-before-comments']==1
254
+ && empty( $data['amp_component_scripts']['amp-ad'] ) ) {
255
+ $data['amp_component_scripts']['amp-ad'] = 'https://cdn.ampproject.org/v0/amp-ad-0.1.js';
256
+ }
257
+ }
258
+ //spotim
259
+ if ( isset($redux_builder_amp['ampforwp-spotim-comments-support'])
260
+ && $redux_builder_amp['ampforwp-spotim-comments-support']
261
+ && $display_comments_on && comments_open() ) {
262
+ if ( empty( $data['amp_component_scripts']['amp-iframe'] ) ) {
263
+ $data['amp_component_scripts']['amp-iframe'] = 'https://cdn.ampproject.org/v0/amp-iframe-0.1.js';
264
+ }
265
+
266
+ }
267
+ return $data;
268
  }
components/components-core.php CHANGED
@@ -1,568 +1,576 @@
1
- <?php
2
- global $redux_builder_amp;
3
- $loadComponent = array();
4
- $scriptComponent = array();
5
- $supportComponent = array('AMP-search','AMP-menu','AMP-logo','AMP-social-icons','AMP-sidebar','AMP-featured-image','AMP-author-box','AMP-loop','AMP-categories-tags','AMP-comments','AMP-post-navigation','AMP-related-posts','AMP-post-pagination','AMP-call-now', 'AMP-breadcrumb');
6
- //$removeScriptComponent = array('amp-carousel');'
7
- add_filter( 'amp_post_template_data', 'ampforwp_framework_add_and_form_scripts',20);
8
- function ampforwp_framework_add_and_form_scripts($data) {
9
- global $scriptComponent, $loadComponent; //$removeScriptComponent;
10
-
11
- if(count($scriptComponent)>0){
12
- foreach ($scriptComponent as $key => $value) {
13
- if ( empty( $data['amp_component_scripts'][$key] ) ) {
14
- $data['amp_component_scripts'][$key] = $value;
15
- }
16
- }
17
- }
18
- /*if(count($removeScriptComponent)>0){
19
- foreach ($removeScriptComponent as $key => $value) {
20
- if ( empty( $data['amp_component_scripts'][$key] ) ) {
21
- unset($data['amp_component_scripts']['$key']);
22
- }
23
- }
24
- }*/
25
- return $data;
26
- }
27
-
28
- //Component Loader
29
- function add_amp_theme_support($componentName){
30
- global $wpdb;
31
- global $loadComponent,$supportComponent;
32
- if($supportComponent){
33
- if(in_array($componentName, $supportComponent)){
34
- $loadComponent[$componentName] = true;
35
- loadComponents($componentName);
36
- return true;
37
- }
38
- }
39
- return false;
40
- }
41
- //Include the Component file
42
- function loadComponents($componentName){
43
- global $wpdb;
44
- if(empty($componentName)) return '';
45
- $componentName = str_replace("AMP-", "", $componentName);
46
-
47
- $file = AMP_FRAMEWORK_COMOPNENT_DIR_PATH.'/'.$componentName.'/'.$componentName.".php";
48
- if(!file_exists($file)){
49
- return '';
50
- }
51
- include_once($file);
52
- }
53
-
54
- // Icons
55
- $amp_icons_css = array();
56
- function add_amp_icon($args=array()){
57
- global $amp_icons_css, $redux_builder_amp;
58
- $amp_icons_css_array = include AMPFORWP_PLUGIN_DIR .'includes/icons/amp-icons.php';
59
- foreach ($args as $key ) {
60
- if(isset($amp_icons_css_array[$key]))
61
- $amp_icons_css[$key] = $amp_icons_css_array[$key];
62
- }
63
- // Design-1,2,3
64
- if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) {
65
- add_action('amp_post_template_css', 'amp_icon_css',999);
66
-
67
- }
68
- else
69
- add_action('amp_css', 'amp_icon_css');
70
-
71
- }
72
- function amp_icon_css(){
73
- global $amp_icons_css, $redux_builder_amp;
74
- foreach ($amp_icons_css as $key => $value) {
75
- echo $value;
76
- }
77
-
78
- // Add @font-face for Design-1,2,3
79
- if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) { ?>
80
- @font-face {font-family: 'icomoon';font-style: normal;font-weight: normal;src: local('icomoon'), local('icomoon'), url('<?php echo plugin_dir_url(__FILE__) ?>icomoon/icomoon.ttf');}
81
- [class^="icon-"], [class*=" icon-"] {font-family: 'icomoon';speak: none;font-style: normal;font-weight: normal;font-variant: normal;text-transform: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
82
- <?php }
83
- }
84
-
85
- /**
86
- * Component Functions
87
- **/
88
-
89
- //Search Component Utilities
90
- function amp_search(){
91
- global $loadComponent;
92
- if(isset($loadComponent['AMP-search']) && $loadComponent['AMP-search']==true){
93
- ampforwp_framework_get_search_form();
94
- }
95
- }
96
-
97
- // Logo Component Utilitis
98
- function amp_logo(){
99
- global $loadComponent;
100
- if(isset($loadComponent['AMP-logo']) && $loadComponent['AMP-logo']==true){
101
- ampforwp_framework_get_logo();
102
- }
103
- }
104
-
105
- // Title
106
- function amp_title(){
107
- global $redux_builder_amp, $post;
108
- $ID = '';
109
- if( ampforwp_is_front_page() && ampforwp_get_frontpage_id() ){
110
- if( $redux_builder_amp['ampforwp-title-on-front-page'] ) {
111
- $ID = ampforwp_get_frontpage_id();
112
- }
113
- }
114
- elseif ( ampforwp_polylang_front_page() ) {
115
- $ID = pll_get_post(get_option('page_on_front'));
116
- }
117
- else
118
- $ID = $post->ID;
119
- if( $ID!=null ){
120
- do_action('ampforwp_above_the_title'); ?>
121
- <h1 class="amp-post-title"> <?php
122
- $ampforwp_title = get_the_title($ID);
123
- $ampforwp_title = apply_filters('ampforwp_filter_single_title', $ampforwp_title);
124
- echo wp_kses_data( $ampforwp_title ); ?>
125
- </h1>
126
- <?php do_action('ampforwp_below_the_title'); ?>
127
- <?php
128
- }
129
- }
130
-
131
- // Excerpt
132
- function amp_excerpt( $no_of_words=15 ) {
133
- global $redux_builder_amp, $post;
134
- $post_id = '';
135
-
136
- if ( ampforwp_is_front_page() ) {
137
- $post_id = ampforwp_get_frontpage_id();
138
- }
139
- else
140
- $post_id = $post->ID;
141
- if ( $post_id != null && true == $redux_builder_amp['enable-excerpt-single'] ) { ?>
142
- <p><?php
143
- if ( has_excerpt() ) {
144
- $content = get_the_excerpt();
145
- } else {
146
- $content = get_the_content();
147
- }
148
- echo wp_trim_words( strip_shortcodes( $content ) , $no_of_words );
149
- ?></p>
150
- <?php
151
- }
152
- }
153
-
154
-
155
- //Menus
156
- function amp_menu($echo=true){
157
- global $loadComponent;
158
- if(isset($loadComponent['AMP-menu']) && $loadComponent['AMP-menu']==true){
159
- if ( false == $echo ) {
160
- return amp_menu_html($echo);
161
- }
162
- else
163
- echo amp_menu_html($echo);
164
- }
165
- }
166
-
167
- // Social Icons component
168
- function amp_social( $social_icons="" ) {
169
- global $loadComponent;
170
- $amp_social = array();
171
- //Supported social icons
172
- $amp_social = array( 'twitter', 'facebook', 'pinterest', 'google-plus', 'linkedin', 'youtube', 'instagram', 'reddit', 'VKontakte', 'Odnoklassniki', 'snapchat', 'tumblr' );
173
- if ( isset($loadComponent['AMP-social-icons']) && true == $loadComponent['AMP-social-icons'] ) {
174
- if ( null != $social_icons ) {
175
- ampforwp_framework_get_social_icons($social_icons);
176
- }
177
- else
178
- ampforwp_framework_get_social_icons($amp_social);
179
- }
180
- }
181
-
182
- //Sidebar
183
- function amp_sidebar($tag='start',$data=array()){
184
- global $loadComponent;
185
- if(isset($loadComponent['AMP-sidebar']) && $loadComponent['AMP-sidebar']==true){
186
- ampforwp_framework_get_sideabr($tag,$data);
187
- }
188
- }
189
-
190
- //Featured Image
191
- function amp_featured_image( ){
192
- global $loadComponent;
193
- if(isset($loadComponent['AMP-featured-image']) && $loadComponent['AMP-featured-image']==true){
194
- ampforwp_framework_get_featured_image( );
195
- }
196
- }
197
-
198
- // Author Box
199
- function amp_author_box($args=array() ){
200
- global $loadComponent;
201
- if(isset($loadComponent['AMP-author-box']) && $loadComponent['AMP-author-box']==true){
202
- ampforwp_framework_get_author_box($args);
203
- }
204
- }
205
-
206
- // Categories List
207
- function amp_categories_list( ){
208
- global $loadComponent;
209
- if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
210
- ampforwp_framework_get_categories_list( );
211
- }
212
- }
213
- // Tags List
214
- function amp_tags_list( ){
215
- global $loadComponent;
216
- if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
217
- ampforwp_framework_get_tags_list( );
218
- }
219
- }
220
-
221
- // Comments
222
- function amp_comments( ){
223
- global $loadComponent;
224
- if(isset($loadComponent['AMP-comments']) && $loadComponent['AMP-comments']==true){
225
- ampforwp_framework_get_comments( );
226
- }
227
- }
228
-
229
- // Post Navigation
230
- function amp_post_navigation( ){
231
- global $loadComponent;
232
- if(isset($loadComponent['AMP-post-navigation']) && $loadComponent['AMP-post-navigation']==true){
233
- echo ampforwp_framework_get_post_navigation( );
234
- }
235
- }
236
-
237
- // Related Posts
238
- function amp_related_posts($argsdata = array()){
239
- global $loadComponent;
240
- if(isset($loadComponent['AMP-related-posts']) && $loadComponent['AMP-related-posts']==true){
241
- echo ampforwp_framework_get_related_posts( $argsdata);
242
- }
243
- }
244
-
245
- // Post Pagination
246
- function amp_post_pagination($args='' ){
247
- global $loadComponent;
248
- if(isset($loadComponent['AMP-post-pagination']) && $loadComponent['AMP-post-pagination']==true){
249
- ampforwp_framework_get_post_pagination($args);
250
- }
251
- }
252
-
253
- // Call Now
254
- function amp_call_now(){
255
- global $loadComponent;
256
- if(isset($loadComponent['AMP-call-now']) && $loadComponent['AMP-call-now']==true){
257
- amp_call_button_html_output();
258
- }
259
- }
260
-
261
- // Breadcrumb
262
- function amp_breadcrumb(){
263
- global $loadComponent;
264
- if ( isset($loadComponent['AMP-breadcrumb']) && true == $loadComponent['AMP-breadcrumb'] ) {
265
- echo amp_breadcrumb_output();
266
- }
267
- }
268
-
269
- //Get Core of AMP HTML
270
- function amp_header_core(){
271
- $post_id = get_queried_object_id();
272
- if ( ampforwp_polylang_front_page() ) {
273
- $post_id = pll_get_post(get_option('page_on_front'));
274
- }
275
- $thisTemplate = new AMP_Post_Template($post_id);
276
- global $redux_builder_amp;
277
- $html_tag_attributes = AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) );
278
-
279
- $bodyClass = '';
280
- if ( is_single() || is_page() ) {
281
- $bodyClass = 'single-post';
282
- $bodyClass .= ( is_page()? ' amp-single-page ' : ' amp-single ');
283
-
284
- }
285
- // Archive
286
- if ( is_archive() ) {
287
- $bodyClass = 'amp-archive';
288
- }
289
- $ampforwp_custom_post_page = ampforwp_custom_post_page();
290
- // Homepage
291
- if ( is_home() ) {
292
-
293
- $bodyClass = 'amp-index amp-home'.esc_attr( $thisTemplate->get( 'body_class' ) );
294
- if ($redux_builder_amp['amp-frontpage-select-option'] == 1) {
295
- $bodyClass = 'single-post design_3_wrapper';
296
- }
297
- if ( $ampforwp_custom_post_page == "page" && ampforwp_name_blog_page() ) {
298
- $current_url = home_url( $GLOBALS['wp']->request );
299
- $current_url_in_pieces = explode( '/', $current_url );
300
-
301
- if( in_array( ampforwp_name_blog_page() , $current_url_in_pieces ) ) {
302
- $bodyClass = 'amp-index' .esc_attr( $thisTemplate->get( 'body_class' ) );
303
- }
304
- }
305
-
306
- }
307
- // is_search
308
- if ( is_search() ) {
309
- $bodyClass = 'amp_home_body archives_body design_3_wrapper';
310
- }
311
- if( true == $redux_builder_amp['amp-rtl-select-option'] ){
312
- $bodyClass .= ' rtl ';
313
- }
314
- ?><!doctype html>
315
- <html <?php echo ampforwp_amp_nonamp_convert('amp '); ?><?php echo AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) ); ?>>
316
- <head>
317
- <meta charset="utf-8">
318
-
319
- <link rel="dns-prefetch" href="https://cdn.ampproject.org">
320
- <?php do_action( 'amp_meta', $thisTemplate ); ?>
321
- <?php
322
- if(ampforwp_amp_nonamp_convert("", "check")){
323
- echo '<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">';
324
- wp_head();
325
-
326
- }else{
327
- if(is_search()){?>
328
- <meta name="robots" content="noindex,nofollow"/>
329
- <?php }
330
- do_action( 'amp_post_template_head', $thisTemplate );
331
- } ?>
332
- <style amp-custom>
333
- <?php $thisTemplate->load_parts( array( 'style' ) ); ?>
334
- <?php do_action( 'amp_post_template_css', $thisTemplate ); ?>
335
- <?php do_action( 'amp_css', $thisTemplate ); ?>
336
- <?php echo $redux_builder_amp['css_editor']; ?>
337
- </style>
338
-
339
- </head>
340
- <body <?php ampforwp_body_class($bodyClass); ?>>
341
- <?php do_action('amp_start', $thisTemplate); ?>
342
- <?php do_action('ampforwp_body_beginning', $thisTemplate);
343
- }
344
-
345
- function amp_header(){
346
- $post_id = get_queried_object_id();
347
- if ( ampforwp_polylang_front_page() ) {
348
- $post_id = pll_get_post(get_option('page_on_front'));
349
- }
350
- $thisTemplate = new AMP_Post_Template($post_id);
351
- $thisTemplate->load_parts( array( 'header' ) );
352
- do_action( 'amp_after_header', $thisTemplate );
353
- do_action( 'ampforwp_after_header', $thisTemplate );
354
- do_action('ampforwp_post_before_design_elements') ?>
355
- <?php }
356
-
357
- function amp_footer(){
358
- $post_id = get_queried_object_id();
359
- if ( ampforwp_polylang_front_page() ) {
360
- $post_id = pll_get_post(get_option('page_on_front'));
361
- }
362
- $thisTemplate = new AMP_Post_Template($post_id);
363
- do_action( 'amp_before_footer', $thisTemplate );
364
- do_action( 'amp_post_template_above_footer', $thisTemplate );
365
-
366
- $thisTemplate->load_parts( array( 'footer' ) );
367
-
368
- }
369
-
370
- function amp_footer_core(){
371
- $post_id = get_queried_object_id();
372
- if ( ampforwp_polylang_front_page() ) {
373
- $post_id = pll_get_post(get_option('page_on_front'));
374
- }
375
- $thisTemplate = new AMP_Post_Template($post_id);
376
- if(ampforwp_amp_nonamp_convert("", "check")){
377
- wp_footer();
378
- }
379
- else {
380
- do_action( 'amp_post_template_footer', $thisTemplate );
381
- do_action('ampforwp_global_after_footer');
382
- do_action('amp_end',$thisTemplate);
383
- }
384
- // Close the body and Html tags ?>
385
- </body>
386
- </html><?php
387
- }
388
-
389
- function amp_non_amp_link(){
390
- global $allowed_html;
391
- global $redux_builder_amp;
392
- echo '<span>' . wp_kses($redux_builder_amp['amp-translator-footer-text'],$allowed_html) . '</span>' ;
393
- if($redux_builder_amp['amp-footer-link-non-amp-page']=='1') { ampforwp_view_nonamp(); }
394
- }
395
-
396
- // Back to Top
397
- function amp_back_to_top_link(){
398
- global $redux_builder_amp;
399
- if( '1' == $redux_builder_amp['ampforwp-footer-top'] ) { ?>
400
- <a href="#top"><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-top-text'], 'Top'); ?> </a>
401
- <?php }
402
- }
403
-
404
- function amp_loop_template(){
405
- $post_id = get_queried_object_id();
406
- $thisTemplate = new AMP_Post_Template($post_id);
407
- do_action('amp_before_loop',$thisTemplate);
408
- $thisTemplate->load_parts( array( 'loop' ) );
409
- do_action('amp_after_loop',$thisTemplate);
410
- }
411
-
412
- // The Content
413
- function amp_content($post_id= ''){
414
- global $redux_builder_amp, $post;
415
-
416
-
417
- if ( empty( $post_id )) {
418
-
419
- $post_id = get_queried_object_id();
420
- if ( ampforwp_is_front_page() ) {
421
- $post_id = ampforwp_get_frontpage_id();
422
- }
423
- elseif ( ampforwp_polylang_front_page() ) {
424
- $post_id = pll_get_post(get_option('page_on_front'));
425
- }
426
- }
427
-
428
- $thisTemplate = new AMP_Post_Template($post_id); ?>
429
- <?php do_action('ampforwp_before_post_content',$thisTemplate);
430
- $amp_custom_content_enable = get_post_meta( $thisTemplate->get( 'post_id' ) , 'ampforwp_custom_content_editor_checkbox', true);
431
- // Normal Content
432
- if ( ! $amp_custom_content_enable ) {
433
- $ampforwp_the_content = $thisTemplate->get( 'post_amp_content' ); // amphtml content; no kses
434
- } else {
435
- // Custom/Alternative AMP content added through post meta
436
- $ampforwp_the_content = $thisTemplate->get( 'ampforwp_amp_content' );
437
- }
438
- // Muffin Builder Compatibility #1455 #1893
439
- if ( function_exists('mfn_builder_print') && ! $amp_custom_content_enable ) {
440
- ob_start();
441
- mfn_builder_print( $thisTemplate->get( 'post_id' ) );
442
- $content = ob_get_contents();
443
- ob_end_clean();
444
- $sanitizer_obj = new AMPFORWP_Content( $content,
445
- array(),
446
- apply_filters( 'ampforwp_content_sanitizers',
447
- array( 'AMP_Img_Sanitizer' => array(),
448
- 'AMP_Blacklist_Sanitizer' => array(),
449
- 'AMP_Style_Sanitizer' => array(),
450
- 'AMP_Video_Sanitizer' => array(),
451
- 'AMP_Audio_Sanitizer' => array(),
452
- 'AMP_Iframe_Sanitizer' => array(
453
- 'add_placeholder' => true,
454
- ),
455
- )
456
- )
457
- );
458
- if ( ! get_post_meta( $post_id, 'mfn-post-hide-content', true ) && ampforwp_is_front_page() ) {
459
- $ampforwp_custom_amp_editor_content = '';
460
- $ampforwp_custom_amp_editor_content = $ampforwp_the_content;
461
- $ampforwp_the_content = $sanitizer_obj->get_amp_content();
462
- $ampforwp_the_content .= $ampforwp_custom_amp_editor_content;
463
- }
464
- else{
465
- $ampforwp_the_content = $sanitizer_obj->get_amp_content();
466
- }
467
- }
468
- $ampforwp_the_content = apply_filters('ampforwp_modify_the_content',$ampforwp_the_content);
469
- echo $ampforwp_the_content;
470
- do_action('ampforwp_after_post_content',$thisTemplate); ?>
471
- <?php }
472
-
473
- function amp_date( $args=array() ) {
474
-
475
- global $redux_builder_amp;
476
- if ( 2 == $redux_builder_amp['ampforwp-post-date-format'] ) {
477
- $args = array('format' => 'traditional');
478
- }
479
- if ( (isset($args['format']) && $args['format'] == 'traditional') || 'time' == $args ) {
480
- $post_date = esc_html( get_the_date() ) . ' '.esc_html( get_the_time());
481
- } else {
482
- $post_date = human_time_diff(
483
- get_the_time('U', get_the_ID() ),
484
- current_time('timestamp') ) .' '. ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],
485
- 'ago');
486
- }
487
- $post_date = apply_filters('ampforwp_modify_post_date', $post_date);
488
- if(isset($args['custom_format']) && $args['custom_format']!=""){
489
- $post_date = date($args['custom_format'],get_the_time('U', get_the_ID() ));
490
- }
491
- if ( 'date' == $args || 'time' == $args ) {
492
- echo $post_date .' ';
493
- }
494
- else
495
- echo '<div class="loop-date">'.$post_date.'</div>';
496
- }
497
-
498
- //Load font Compoment
499
- $fontComponent = array();
500
- function amp_post_load_custom_fonts(){
501
- global $fontComponent;
502
- if(count($fontComponent)){
503
- $fontComponent = array_unique($fontComponent);
504
- foreach ($fontComponent as $key => $value) {
505
- ?>
506
- <link rel="stylesheet" href="<?php echo esc_url( $value ); ?>">
507
- <?php
508
- }
509
- }
510
-
511
- }
512
- add_action( 'amp_meta', 'amp_post_load_custom_fonts');
513
- function amp_font($fontName){
514
- global $fontComponent;
515
- $fontComponent[] = $fontName;
516
- }
517
-
518
- // RTL Styling
519
- add_action('amp_css', 'amp_theme_framework_rtl_styles');
520
- if( ! function_exists('amp_theme_framework_rtl_styles') ){
521
- function amp_theme_framework_rtl_styles(){
522
- global $redux_builder_amp;
523
- if( true === $redux_builder_amp['amp-rtl-select-option'] ){ ?>
524
- body.rtl {direction: rtl;}
525
- body amp-carousel{ direction: ltr;}
526
- <?php }
527
- }
528
- }
529
-
530
- // Author Meta
531
- function amp_author_meta( $args ) {
532
- global $post;
533
- $author_name = false;
534
- $avatar = false;
535
- $avatar_size = 40;
536
- if ( isset($args['name']) ) {
537
- $author_name = $args['name'];
538
- }
539
- if ( 'name' === $args ) {
540
- $author_name = true;
541
- }
542
- if ( 'avatar' === $args || 'image' === $args ) {
543
- $avatar = true;
544
- }
545
- if ( isset($args['image']) ) {
546
- $avatar = $args['image'];
547
- }
548
- if ( isset($args['image_size']) ) {
549
- $avatar_size = $args['image_size'];
550
- }
551
- $post_author = get_userdata($post->post_author);
552
- $author_link = get_author_posts_url($post_author->ID);
553
- if ( $author_name ) {
554
- echo ' <a href="'. esc_url(ampforwp_url_controller($author_link)).'"> ' .esc_html( $post_author->display_name ).'</a>';
555
- }
556
- if ( $avatar && true == ampforwp_gravatar_checker($post_author->user_email) ) {
557
- $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
558
- ?>
559
- <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?> src="<?php echo esc_url($author_avatar_url); ?>" width="<?php echo $avatar_size; ?>" height="<?php echo $avatar_size; ?>" layout="fixed"></amp-img>
560
- <?php }
561
- elseif ( $avatar && false == ampforwp_gravatar_checker($post_author->user_email ) ) {
562
- $avatar_img = get_avatar( $post_author->user_email, $avatar_size );
563
- $amp_html_sanitizer = new AMPFORWP_Content( $avatar_img, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array() ) ) );
564
- $amp_html = $amp_html_sanitizer->get_amp_content();
565
- echo $amp_html;
566
- }
567
-
 
 
 
 
 
 
 
 
568
  }
1
+ <?php
2
+ global $redux_builder_amp;
3
+ $loadComponent = array();
4
+ $scriptComponent = array();
5
+ $supportComponent = array('AMP-search','AMP-menu','AMP-logo','AMP-social-icons','AMP-sidebar','AMP-featured-image','AMP-author-box','AMP-loop','AMP-categories-tags','AMP-comments','AMP-post-navigation','AMP-related-posts','AMP-post-pagination','AMP-call-now', 'AMP-breadcrumb','AMP-gdpr');
6
+ //$removeScriptComponent = array('amp-carousel');'
7
+ add_filter( 'amp_post_template_data', 'ampforwp_framework_add_and_form_scripts',20);
8
+ function ampforwp_framework_add_and_form_scripts($data) {
9
+ global $scriptComponent, $loadComponent; //$removeScriptComponent;
10
+
11
+ if(count($scriptComponent)>0){
12
+ foreach ($scriptComponent as $key => $value) {
13
+ if ( empty( $data['amp_component_scripts'][$key] ) ) {
14
+ $data['amp_component_scripts'][$key] = $value;
15
+ }
16
+ }
17
+ }
18
+ /*if(count($removeScriptComponent)>0){
19
+ foreach ($removeScriptComponent as $key => $value) {
20
+ if ( empty( $data['amp_component_scripts'][$key] ) ) {
21
+ unset($data['amp_component_scripts']['$key']);
22
+ }
23
+ }
24
+ }*/
25
+ return $data;
26
+ }
27
+
28
+ //Component Loader
29
+ function add_amp_theme_support($componentName){
30
+ global $wpdb;
31
+ global $loadComponent,$supportComponent;
32
+ if($supportComponent){
33
+ if(in_array($componentName, $supportComponent)){
34
+ $loadComponent[$componentName] = true;
35
+ loadComponents($componentName);
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+ //Include the Component file
42
+ function loadComponents($componentName){
43
+ global $wpdb;
44
+ if(empty($componentName)) return '';
45
+ $componentName = str_replace("AMP-", "", $componentName);
46
+
47
+ $file = AMP_FRAMEWORK_COMOPNENT_DIR_PATH.'/'.$componentName.'/'.$componentName.".php";
48
+ if(!file_exists($file)){
49
+ return '';
50
+ }
51
+ include_once($file);
52
+ }
53
+
54
+ // Icons
55
+ $amp_icons_css = array();
56
+ function add_amp_icon($args=array()){
57
+ global $amp_icons_css, $redux_builder_amp;
58
+ $amp_icons_css_array = include AMPFORWP_PLUGIN_DIR .'includes/icons/amp-icons.php';
59
+ foreach ($args as $key ) {
60
+ if(isset($amp_icons_css_array[$key]))
61
+ $amp_icons_css[$key] = $amp_icons_css_array[$key];
62
+ }
63
+ // Design-1,2,3
64
+ if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) {
65
+ add_action('amp_post_template_css', 'amp_icon_css',999);
66
+
67
+ }
68
+ else
69
+ add_action('amp_css', 'amp_icon_css');
70
+
71
+ }
72
+ function amp_icon_css(){
73
+ global $amp_icons_css, $redux_builder_amp;
74
+ foreach ($amp_icons_css as $key => $value) {
75
+ echo $value;
76
+ }
77
+
78
+ // Add @font-face for Design-1,2,3
79
+ if ( 1 == $redux_builder_amp['amp-design-selector'] || 2 == $redux_builder_amp['amp-design-selector'] || 3 == $redux_builder_amp['amp-design-selector'] ) { ?>
80
+ @font-face {font-family: 'icomoon';font-style: normal;font-weight: normal;src: local('icomoon'), local('icomoon'), url('<?php echo plugin_dir_url(__FILE__) ?>icomoon/icomoon.ttf');}
81
+ [class^="icon-"], [class*=" icon-"] {font-family: 'icomoon';speak: none;font-style: normal;font-weight: normal;font-variant: normal;text-transform: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
82
+ <?php }
83
+ }
84
+
85
+ /**
86
+ * Component Functions
87
+ **/
88
+
89
+ //Search Component Utilities
90
+ function amp_search(){
91
+ global $loadComponent;
92
+ if(isset($loadComponent['AMP-search']) && $loadComponent['AMP-search']==true){
93
+ ampforwp_framework_get_search_form();
94
+ }
95
+ }
96
+
97
+ // Logo Component Utilitis
98
+ function amp_logo(){
99
+ global $loadComponent;
100
+ if(isset($loadComponent['AMP-logo']) && $loadComponent['AMP-logo']==true){
101
+ ampforwp_framework_get_logo();
102
+ }
103
+ }
104
+
105
+ // Title
106
+ function amp_title(){
107
+ global $redux_builder_amp, $post;
108
+ $ID = '';
109
+ if( ampforwp_is_front_page() && ampforwp_get_frontpage_id() ){
110
+ if( $redux_builder_amp['ampforwp-title-on-front-page'] ) {
111
+ $ID = ampforwp_get_frontpage_id();
112
+ }
113
+ }
114
+ elseif ( ampforwp_polylang_front_page() ) {
115
+ $ID = pll_get_post(get_option('page_on_front'));
116
+ }
117
+ else
118
+ $ID = $post->ID;
119
+ if( $ID!=null ){
120
+ do_action('ampforwp_above_the_title'); ?>
121
+ <h1 class="amp-post-title"> <?php
122
+ $ampforwp_title = get_the_title($ID);
123
+ $ampforwp_title = apply_filters('ampforwp_filter_single_title', $ampforwp_title);
124
+ echo wp_kses_data( $ampforwp_title ); ?>
125
+ </h1>
126
+ <?php do_action('ampforwp_below_the_title'); ?>
127
+ <?php
128
+ }
129
+ }
130
+
131
+ // Excerpt
132
+ function amp_excerpt( $no_of_words=15 ) {
133
+ global $redux_builder_amp, $post;
134
+ $post_id = '';
135
+
136
+ if ( ampforwp_is_front_page() ) {
137
+ $post_id = ampforwp_get_frontpage_id();
138
+ }
139
+ else
140
+ $post_id = $post->ID;
141
+ if ( $post_id != null && true == $redux_builder_amp['enable-excerpt-single'] ) { ?>
142
+ <p><?php
143
+ if ( has_excerpt() ) {
144
+ $content = get_the_excerpt();
145
+ } else {
146
+ $content = get_the_content();
147
+ }
148
+ echo wp_trim_words( strip_shortcodes( $content ) , $no_of_words );
149
+ ?></p>
150
+ <?php
151
+ }
152
+ }
153
+
154
+
155
+ //Menus
156
+ function amp_menu($echo=true){
157
+ global $loadComponent;
158
+ if(isset($loadComponent['AMP-menu']) && $loadComponent['AMP-menu']==true){
159
+ if ( false == $echo ) {
160
+ return amp_menu_html($echo);
161
+ }
162
+ else
163
+ echo amp_menu_html($echo);
164
+ }
165
+ }
166
+
167
+ // Social Icons component
168
+ function amp_social( $social_icons="" ) {
169
+ global $loadComponent;
170
+ $amp_social = array();
171
+ //Supported social icons
172
+ $amp_social = array( 'twitter', 'facebook', 'pinterest', 'google-plus', 'linkedin', 'youtube', 'instagram', 'reddit', 'VKontakte', 'Odnoklassniki', 'snapchat', 'tumblr' );
173
+ if ( isset($loadComponent['AMP-social-icons']) && true == $loadComponent['AMP-social-icons'] ) {
174
+ if ( null != $social_icons ) {
175
+ ampforwp_framework_get_social_icons($social_icons);
176
+ }
177
+ else
178
+ ampforwp_framework_get_social_icons($amp_social);
179
+ }
180
+ }
181
+
182
+ //Sidebar
183
+ function amp_sidebar($tag='start',$data=array()){
184
+ global $loadComponent;
185
+ if(isset($loadComponent['AMP-sidebar']) && $loadComponent['AMP-sidebar']==true){
186
+ ampforwp_framework_get_sideabr($tag,$data);
187
+ }
188
+ }
189
+
190
+ //Featured Image
191
+ function amp_featured_image( ){
192
+ global $loadComponent;
193
+ if(isset($loadComponent['AMP-featured-image']) && $loadComponent['AMP-featured-image']==true){
194
+ ampforwp_framework_get_featured_image( );
195
+ }
196
+ }
197
+
198
+ // Author Box
199
+ function amp_author_box($args=array() ){
200
+ global $loadComponent;
201
+ if(isset($loadComponent['AMP-author-box']) && $loadComponent['AMP-author-box']==true){
202
+ ampforwp_framework_get_author_box($args);
203
+ }
204
+ }
205
+
206
+ // Categories List
207
+ function amp_categories_list( ){
208
+ global $loadComponent;
209
+ if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
210
+ ampforwp_framework_get_categories_list( );
211
+ }
212
+ }
213
+ // Tags List
214
+ function amp_tags_list( ){
215
+ global $loadComponent;
216
+ if(isset($loadComponent['AMP-categories-tags']) && $loadComponent['AMP-categories-tags']==true){
217
+ ampforwp_framework_get_tags_list( );
218
+ }
219
+ }
220
+
221
+ // Comments
222
+ function amp_comments( ){
223
+ global $loadComponent;
224
+ if(isset($loadComponent['AMP-comments']) && $loadComponent['AMP-comments']==true){
225
+ ampforwp_framework_get_comments( );
226
+ }
227
+ }
228
+
229
+ // Post Navigation
230
+ function amp_post_navigation( ){
231
+ global $loadComponent;
232
+ if(isset($loadComponent['AMP-post-navigation']) && $loadComponent['AMP-post-navigation']==true){
233
+ echo ampforwp_framework_get_post_navigation( );
234
+ }
235
+ }
236
+
237
+ // Related Posts
238
+ function amp_related_posts($argsdata = array()){
239
+ global $loadComponent;
240
+ if(isset($loadComponent['AMP-related-posts']) && $loadComponent['AMP-related-posts']==true){
241
+ echo ampforwp_framework_get_related_posts( $argsdata);
242
+ }
243
+ }
244
+
245
+ // Post Pagination
246
+ function amp_post_pagination($args='' ){
247
+ global $loadComponent;
248
+ if(isset($loadComponent['AMP-post-pagination']) && $loadComponent['AMP-post-pagination']==true){
249
+ ampforwp_framework_get_post_pagination($args);
250
+ }
251
+ }
252
+
253
+ // Call Now
254
+ function amp_call_now(){
255
+ global $loadComponent;
256
+ if(isset($loadComponent['AMP-call-now']) && $loadComponent['AMP-call-now']==true){
257
+ amp_call_button_html_output();
258
+ }
259
+ }
260
+
261
+ // Breadcrumb
262
+ function amp_breadcrumb(){
263
+ global $loadComponent;
264
+ if ( isset($loadComponent['AMP-breadcrumb']) && true == $loadComponent['AMP-breadcrumb'] ) {
265
+ echo amp_breadcrumb_output();
266
+ }
267
+ }
268
+
269
+ // GDPR component
270
+ function amp_gdpr(){
271
+ global $loadComponent;
272
+ if ( isset($loadComponent['AMP-gdpr']) && true == $loadComponent['AMP-gdpr'] ) {
273
+ echo amp_gdpr_output();
274
+ }
275
+ }
276
+
277
+ //Get Core of AMP HTML
278
+ function amp_header_core(){
279
+ $post_id = get_queried_object_id();
280
+ if ( ampforwp_polylang_front_page() ) {
281
+ $post_id = pll_get_post(get_option('page_on_front'));
282
+ }
283
+ $thisTemplate = new AMP_Post_Template($post_id);
284
+ global $redux_builder_amp;
285
+ $html_tag_attributes = AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) );
286
+
287
+ $bodyClass = '';
288
+ if ( is_single() || is_page() ) {
289
+ $bodyClass = 'single-post';
290
+ $bodyClass .= ( is_page()? ' amp-single-page ' : ' amp-single ');
291
+
292
+ }
293
+ // Archive
294
+ if ( is_archive() ) {
295
+ $bodyClass = 'amp-archive';
296
+ }
297
+ $ampforwp_custom_post_page = ampforwp_custom_post_page();
298
+ // Homepage
299
+ if ( is_home() ) {
300
+
301
+ $bodyClass = 'amp-index amp-home'.esc_attr( $thisTemplate->get( 'body_class' ) );
302
+ if ($redux_builder_amp['amp-frontpage-select-option'] == 1) {
303
+ $bodyClass = 'single-post design_3_wrapper';
304
+ }
305
+ if ( $ampforwp_custom_post_page == "page" && ampforwp_name_blog_page() ) {
306
+ $current_url = home_url( $GLOBALS['wp']->request );
307
+ $current_url_in_pieces = explode( '/', $current_url );
308
+
309
+ if( in_array( ampforwp_name_blog_page() , $current_url_in_pieces ) ) {
310
+ $bodyClass = 'amp-index' .esc_attr( $thisTemplate->get( 'body_class' ) );
311
+ }
312
+ }
313
+
314
+ }
315
+ // is_search
316
+ if ( is_search() ) {
317
+ $bodyClass = 'amp_home_body archives_body design_3_wrapper';
318
+ }
319
+ if( true == $redux_builder_amp['amp-rtl-select-option'] ){
320
+ $bodyClass .= ' rtl ';
321
+ }
322
+ ?><!doctype html>
323
+ <html <?php echo ampforwp_amp_nonamp_convert('amp '); ?><?php echo AMP_HTML_Utils::build_attributes_string( $thisTemplate->get( 'html_tag_attributes' ) ); ?>>
324
+ <head>
325
+ <meta charset="utf-8">
326
+
327
+ <link rel="dns-prefetch" href="https://cdn.ampproject.org">
328
+ <?php do_action( 'amp_meta', $thisTemplate ); ?>
329
+ <?php
330
+ if(ampforwp_amp_nonamp_convert("", "check")){
331
+ echo '<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">';
332
+ wp_head();
333
+
334
+ }else{
335
+ if(is_search()){?>
336
+ <meta name="robots" content="noindex,nofollow"/>
337
+ <?php }
338
+ do_action( 'amp_post_template_head', $thisTemplate );
339
+ } ?>
340
+ <style amp-custom>
341
+ <?php $thisTemplate->load_parts( array( 'style' ) ); ?>
342
+ <?php do_action( 'amp_post_template_css', $thisTemplate ); ?>
343
+ <?php do_action( 'amp_css', $thisTemplate ); ?>
344
+ <?php echo $redux_builder_amp['css_editor']; ?>
345
+ </style>
346
+
347
+ </head>
348
+ <body <?php ampforwp_body_class($bodyClass); ?>>
349
+ <?php do_action('amp_start', $thisTemplate); ?>
350
+ <?php do_action('ampforwp_body_beginning', $thisTemplate);
351
+ }
352
+
353
+ function amp_header(){
354
+ $post_id = get_queried_object_id();
355
+ if ( ampforwp_polylang_front_page() ) {
356
+ $post_id = pll_get_post(get_option('page_on_front'));
357
+ }
358
+ $thisTemplate = new AMP_Post_Template($post_id);
359
+ $thisTemplate->load_parts( array( 'header' ) );
360
+ do_action( 'amp_after_header', $thisTemplate );
361
+ do_action( 'ampforwp_after_header', $thisTemplate );
362
+ do_action('ampforwp_post_before_design_elements') ?>
363
+ <?php }
364
+
365
+ function amp_footer(){
366
+ $post_id = get_queried_object_id();
367
+ if ( ampforwp_polylang_front_page() ) {
368
+ $post_id = pll_get_post(get_option('page_on_front'));
369
+ }
370
+ $thisTemplate = new AMP_Post_Template($post_id);
371
+ do_action( 'amp_before_footer', $thisTemplate );
372
+ do_action( 'amp_post_template_above_footer', $thisTemplate );
373
+
374
+ $thisTemplate->load_parts( array( 'footer' ) );
375
+
376
+ }
377
+
378
+ function amp_footer_core(){
379
+ $post_id = get_queried_object_id();
380
+ if ( ampforwp_polylang_front_page() ) {
381
+ $post_id = pll_get_post(get_option('page_on_front'));
382
+ }
383
+ $thisTemplate = new AMP_Post_Template($post_id);
384
+ if(ampforwp_amp_nonamp_convert("", "check")){
385
+ wp_footer();
386
+ }
387
+ else {
388
+ do_action( 'amp_post_template_footer', $thisTemplate );
389
+ do_action('ampforwp_global_after_footer');
390
+ do_action('amp_end',$thisTemplate);
391
+ }
392
+ // Close the body and Html tags ?>
393
+ </body>
394
+ </html><?php
395
+ }
396
+
397
+ function amp_non_amp_link(){
398
+ global $allowed_html;
399
+ global $redux_builder_amp;
400
+ echo '<span>' . wp_kses($redux_builder_amp['amp-translator-footer-text'],$allowed_html) . '</span>' ;
401
+ if($redux_builder_amp['amp-footer-link-non-amp-page']=='1') { ampforwp_view_nonamp(); }
402
+ }
403
+
404
+ // Back to Top
405
+ function amp_back_to_top_link(){
406
+ global $redux_builder_amp;
407
+ if( '1' == $redux_builder_amp['ampforwp-footer-top'] ) { ?>
408
+ <a title="back to top" on="tap:backtotop.scrollTo(duration=500)" class="btt" ><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-top-text'], 'Top'); ?></a>
409
+ <?php }
410
+ }
411
+
412
+ function amp_loop_template(){
413
+ $post_id = get_queried_object_id();
414
+ $thisTemplate = new AMP_Post_Template($post_id);
415
+ do_action('amp_before_loop',$thisTemplate);
416
+ $thisTemplate->load_parts( array( 'loop' ) );
417
+ do_action('amp_after_loop',$thisTemplate);
418
+ }
419
+
420
+ // The Content
421
+ function amp_content($post_id= ''){
422
+ global $redux_builder_amp, $post;
423
+
424
+
425
+ if ( empty( $post_id )) {
426
+
427
+ $post_id = get_queried_object_id();
428
+ if ( ampforwp_is_front_page() ) {
429
+ $post_id = ampforwp_get_frontpage_id();
430
+ }
431
+ elseif ( ampforwp_polylang_front_page() ) {
432
+ $post_id = pll_get_post(get_option('page_on_front'));
433
+ }
434
+ }
435
+
436
+ $thisTemplate = new AMP_Post_Template($post_id); ?>
437
+ <?php do_action('ampforwp_before_post_content',$thisTemplate);
438
+ $amp_custom_content_enable = get_post_meta( $thisTemplate->get( 'post_id' ) , 'ampforwp_custom_content_editor_checkbox', true);
439
+ // Normal Content
440
+ if ( ! $amp_custom_content_enable ) {
441
+ $ampforwp_the_content = $thisTemplate->get( 'post_amp_content' ); // amphtml content; no kses
442
+ } else {
443
+ // Custom/Alternative AMP content added through post meta
444
+ $ampforwp_the_content = $thisTemplate->get( 'ampforwp_amp_content' );
445
+ }
446
+ // Muffin Builder Compatibility #1455 #1893
447
+ if ( function_exists('mfn_builder_print') && ! $amp_custom_content_enable ) {
448
+ ob_start();
449
+ mfn_builder_print( $thisTemplate->get( 'post_id' ) );
450
+ $content = ob_get_contents();
451
+ ob_end_clean();
452
+ $sanitizer_obj = new AMPFORWP_Content( $content,
453
+ array(),
454
+ apply_filters( 'ampforwp_content_sanitizers',
455
+ array( 'AMP_Img_Sanitizer' => array(),
456
+ 'AMP_Blacklist_Sanitizer' => array(),
457
+ 'AMP_Style_Sanitizer' => array(),
458
+ 'AMP_Video_Sanitizer' => array(),
459
+ 'AMP_Audio_Sanitizer' => array(),
460
+ 'AMP_Iframe_Sanitizer' => array(
461
+ 'add_placeholder' => true,
462
+ ),
463
+ )
464
+ )
465
+ );
466
+ if ( ! get_post_meta( $post_id, 'mfn-post-hide-content', true ) && ampforwp_is_front_page() ) {
467
+ $ampforwp_custom_amp_editor_content = '';
468
+ $ampforwp_custom_amp_editor_content = $ampforwp_the_content;
469
+ $ampforwp_the_content = $sanitizer_obj->get_amp_content();
470
+ $ampforwp_the_content .= $ampforwp_custom_amp_editor_content;
471
+ }
472
+ else{
473
+ $ampforwp_the_content = $sanitizer_obj->get_amp_content();
474
+ }
475
+ }
476
+ $ampforwp_the_content = apply_filters('ampforwp_modify_the_content',$ampforwp_the_content);
477
+ echo $ampforwp_the_content;
478
+ do_action('ampforwp_after_post_content',$thisTemplate); ?>
479
+ <?php }
480
+
481
+ function amp_date( $args=array() ) {
482
+
483
+ global $redux_builder_amp;
484
+ if ( 2 == $redux_builder_amp['ampforwp-post-date-format'] ) {
485
+ $args = array('format' => 'traditional');
486
+ }
487
+ if ( (isset($args['format']) && $args['format'] == 'traditional') || 'time' == $args ) {
488
+ $post_date = esc_html( get_the_date() ) . ' '.esc_html( get_the_time());
489
+ } else {
490
+ $post_date = human_time_diff(
491
+ get_the_time('U', get_the_ID() ),
492
+ current_time('timestamp') ) .' '. ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],
493
+ 'ago');
494
+ }
495
+ $post_date = apply_filters('ampforwp_modify_post_date', $post_date);
496
+ if(isset($args['custom_format']) && $args['custom_format']!=""){
497
+ $post_date = date($args['custom_format'],get_the_time('U', get_the_ID() ));
498
+ }
499
+ if ( 'date' == $args || 'time' == $args ) {
500
+ echo $post_date .' ';
501
+ }
502
+ else
503
+ echo '<div class="loop-date">'.$post_date.'</div>';
504
+ }
505
+
506
+ //Load font Compoment
507
+ $fontComponent = array();
508
+ function amp_post_load_custom_fonts(){
509
+ global $fontComponent;
510
+ if(count($fontComponent)){
511
+ $fontComponent = array_unique($fontComponent);
512
+ foreach ($fontComponent as $key => $value) {
513
+ ?>
514
+ <link rel="stylesheet" href="<?php echo esc_url( $value ); ?>">
515
+ <?php
516
+ }
517
+ }
518
+
519
+ }
520
+ add_action( 'amp_meta', 'amp_post_load_custom_fonts');
521
+ function amp_font($fontName){
522
+ global $fontComponent;
523
+ $fontComponent[] = $fontName;
524
+ }
525
+
526
+ // RTL Styling
527
+ add_action('amp_css', 'amp_theme_framework_rtl_styles');
528
+ if( ! function_exists('amp_theme_framework_rtl_styles') ){
529
+ function amp_theme_framework_rtl_styles(){
530
+ global $redux_builder_amp;
531
+ if( true === $redux_builder_amp['amp-rtl-select-option'] ){ ?>
532
+ body.rtl {direction: rtl;}
533
+ body amp-carousel{ direction: ltr;}
534
+ <?php }
535
+ }
536
+ }
537
+
538
+ // Author Meta
539
+ function amp_author_meta( $args ) {
540
+ global $post;
541
+ $author_name = false;
542
+ $avatar = false;
543
+ $avatar_size = 40;
544
+ if ( isset($args['name']) ) {
545
+ $author_name = $args['name'];
546
+ }
547
+ if ( 'name' === $args ) {
548
+ $author_name = true;
549
+ }
550
+ if ( 'avatar' === $args || 'image' === $args ) {
551
+ $avatar = true;
552
+ }
553
+ if ( isset($args['image']) ) {
554
+ $avatar = $args['image'];
555
+ }
556
+ if ( isset($args['image_size']) ) {
557
+ $avatar_size = $args['image_size'];
558
+ }
559
+ $post_author = get_userdata($post->post_author);
560
+ $author_link = get_author_posts_url($post_author->ID);
561
+ if ( $author_name ) {
562
+ echo ' <a href="'. esc_url(ampforwp_url_controller($author_link)).'"> ' .esc_html( $post_author->display_name ).'</a>';
563
+ }
564
+ if ( $avatar && true == ampforwp_gravatar_checker($post_author->user_email) ) {
565
+ $author_avatar_url = get_avatar_url( $post_author->ID, array( 'size' => $avatar_size ) );
566
+ ?>
567
+ <amp-img <?php if(ampforwp_get_data_consent()){?>data-block-on-consent <?php } ?> src="<?php echo esc_url($author_avatar_url); ?>" width="<?php echo $avatar_size; ?>" height="<?php echo $avatar_size; ?>" layout="fixed"></amp-img>
568
+ <?php }
569
+ elseif ( $avatar && false == ampforwp_gravatar_checker($post_author->user_email ) ) {
570
+ $avatar_img = get_avatar( $post_author->user_email, $avatar_size );
571
+ $amp_html_sanitizer = new AMPFORWP_Content( $avatar_img, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array() ) ) );
572
+ $amp_html = $amp_html_sanitizer->get_amp_content();
573
+ echo $amp_html;
574
+ }
575
+
576
  }
components/featured-image/featured-image.php CHANGED
@@ -1,53 +1,53 @@
1
- <?php
2
- function ampforwp_framework_get_featured_image(){
3
- do_action('ampforwp_before_featured_image_hook');
4
- global $post, $redux_builder_amp;
5
- $post_id = $post->ID;
6
- $featured_image = "";
7
- $amp_html = "";
8
- $caption = "";
9
- if( ampforwp_is_front_page() ){
10
- $post_id = ampforwp_get_frontpage_id();
11
- }
12
- if( true == ampforwp_has_post_thumbnail() ) {
13
- if (has_post_thumbnail( $post_id ) ){
14
- $thumb_id = get_post_thumbnail_id($post_id);
15
- $image = wp_get_attachment_image_src( $thumb_id, 'full' );
16
- $caption = get_the_post_thumbnail_caption( $post_id );
17
- $thumb_alt = get_post_meta( $thumb_id, '_wp_attachment_image_alt', true);
18
- if($thumb_alt){
19
- $alt = $thumb_alt;
20
- }
21
- else{
22
- $alt = get_the_title( $post_id );
23
- }
24
- $alt = esc_attr($alt);
25
- if( $image ){
26
- $amp_html = "<amp-img src='$image[0]' width='$image[1]' height='$image[2]' layout=responsive alt='$alt'></amp-img>";
27
- }
28
- }
29
- if ( ampforwp_is_custom_field_featured_image() ) {
30
- $amp_img_src = ampforwp_cf_featured_image_src();
31
- $amp_img_width = ampforwp_cf_featured_image_src('width');
32
- $amp_img_height = ampforwp_cf_featured_image_src('height');
33
- if( $amp_img_src ){
34
- $amp_html = "<amp-img src='$amp_img_src' width=$amp_img_width height=$amp_img_height layout=responsive ></amp-img>";
35
- }
36
- }
37
- if( true == $redux_builder_amp['ampforwp-featured-image-from-content'] && ampforwp_get_featured_image_from_content() ){
38
- $amp_html = ampforwp_get_featured_image_from_content();
39
- $amp_html = preg_replace('#sizes="(.*)"#', "layout='responsive'", $amp_html);
40
- }
41
- if( $amp_html ){ ?>
42
- <figure class="amp-featured-image"> <?php
43
- echo $amp_html;
44
- if ( $caption ) : ?>
45
- <p class="wp-caption-text">
46
- <?php echo wp_kses_data( $caption ); ?>
47
- </p>
48
- <?php endif; ?>
49
- </figure>
50
- <?php do_action('ampforwp_after_featured_image_hook');
51
- }
52
- }
53
  }
1
+ <?php
2
+ function ampforwp_framework_get_featured_image(){
3
+ do_action('ampforwp_before_featured_image_hook');
4
+ global $post, $redux_builder_amp;
5
+ $post_id = $post->ID;
6
+ $featured_image = "";
7
+ $amp_html = "";
8
+ $caption = "";
9
+ if( ampforwp_is_front_page() ){
10
+ $post_id = ampforwp_get_frontpage_id();
11
+ }
12
+ if( true == ampforwp_has_post_thumbnail() ) {
13
+ if (has_post_thumbnail( $post_id ) ){
14
+ $thumb_id = get_post_thumbnail_id($post_id);
15
+ $image = wp_get_attachment_image_src( $thumb_id, 'full' );
16
+ $caption = get_the_post_thumbnail_caption( $post_id );
17
+ $thumb_alt = get_post_meta( $thumb_id, '_wp_attachment_image_alt', true);
18
+ if($thumb_alt){
19
+ $alt = $thumb_alt;
20
+ }
21
+ else{
22
+ $alt = get_the_title( $post_id );
23
+ }
24
+ $alt = esc_attr($alt);
25
+ if( $image ){
26
+ $amp_html = "<amp-img src='$image[0]' width='$image[1]' height='$image[2]' layout=responsive alt='$alt'></amp-img>";
27
+ }
28
+ }
29
+ if ( ampforwp_is_custom_field_featured_image() ) {
30
+ $amp_img_src = ampforwp_cf_featured_image_src();
31
+ $amp_img_width = ampforwp_cf_featured_image_src('width');
32
+ $amp_img_height = ampforwp_cf_featured_image_src('height');
33
+ if( $amp_img_src ){
34
+ $amp_html = "<amp-img src='$amp_img_src' width=$amp_img_width height=$amp_img_height layout=responsive ></amp-img>";
35
+ }
36
+ }
37
+ if( true == $redux_builder_amp['ampforwp-featured-image-from-content'] && ampforwp_get_featured_image_from_content() ){
38
+ $amp_html = ampforwp_get_featured_image_from_content();
39
+ $amp_html = preg_replace('#sizes="(.*)"#', "layout='responsive'", $amp_html);
40
+ }
41
+ if( $amp_html ){ ?>
42
+ <figure class="amp-featured-image"> <?php
43
+ echo $amp_html;
44
+ if ( $caption ) : ?>
45
+ <p class="wp-caption-text">
46
+ <?php echo wp_kses_data( $caption ); ?>
47
+ </p>
48
+ <?php endif; ?>
49
+ </figure>
50
+ <?php do_action('ampforwp_after_featured_image_hook');
51
+ }
52
+ }
53
  }
components/gdpr/gdpr.php ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php function amp_gdpr_output(){
2
+ global $redux_builder_amp;
3
+ $headline = $accept = $reject = $settings = $user_data = $form_url = '';
4
+ $headline = $redux_builder_amp['amp-gdpr-compliance-headline-text'];
5
+ $accept = $redux_builder_amp['amp-gdpr-compliance-accept-text'];
6
+ $reject = $redux_builder_amp['amp-gdpr-compliance-reject-text'];
7
+ $settings = $redux_builder_amp['amp-gdpr-compliance-settings-text'];
8
+ $user_data = $redux_builder_amp['amp-gdpr-compliance-textarea'];
9
+ $form_url = admin_url('admin-ajax.php?action=amp_consent_submission');
10
+ $form_url = preg_replace('#^https?:#', '', $form_url);
11
+ $more_info = $redux_builder_amp['amp-gdpr-compliance-for-more-privacy-info'];
12
+ $privacy_page = '';
13
+ $privacy_button_text = '';
14
+ if(isset($redux_builder_amp['amp-gdpr-compliance-select-privacy-page']) && $redux_builder_amp['amp-gdpr-compliance-select-privacy-page']){
15
+ $privacy_page = get_permalink($redux_builder_amp['amp-gdpr-compliance-select-privacy-page']);}
16
+
17
+ if(isset($redux_builder_amp['amp-gdpr-compliance-privacy-page-button-text']) && $redux_builder_amp['amp-gdpr-compliance-privacy-page-button-text']){
18
+ $privacy_button_text = $redux_builder_amp['amp-gdpr-compliance-privacy-page-button-text'];
19
+ }
20
+ $gdpr_countries = array("AT","BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IS", "IE", "IT", "LV", "LI", "LT", "LU", "MT", "NL", "NO", "PL", "PT", "RO", "SK", "SI", "ES", "SE", "GB", "AX", "IC", "EA", "GF", "PF", "TF", "GI", "GP", "GG", "JE", "MQ", "YT", "NC", "RE", "BL", "MF", "PM", "SJ", "VA", "WF", "EZ", "CH");
21
+ $gdpr_countries = apply_filters( 'ampforwp_gdpr_country_list' , $gdpr_countries ); ?>
22
+ <amp-geo layout="nodisplay">
23
+ <script type="application/json">
24
+ {
25
+ "ISOCountryGroups": {
26
+ "eea":[ <?php echo '"'.implode('","', array_values($gdpr_countries)).'"';?> ]
27
+ }
28
+ }
29
+ </script>
30
+ </amp-geo>
31
+ <amp-consent id="ampforwpConsent" layout="nodisplay">
32
+ <script type="application/json">{
33
+ "consents": {
34
+ "consent1": {
35
+ "promptIfUnknownForGeoGroup": "eea",
36
+ "promptUI": "gdpr_c"
37
+ }
38
+ },
39
+ "postPromptUI": "post-consent-ui"
40
+ }</script>
41
+ <div class="gdpr" id="gdpr_c">
42
+ <div class="gdpr_w">
43
+ <div class="gdpr_x" role="button" tabindex="0" on="tap:ampforwpConsent.dismiss">X</div>
44
+ <div class="gdpr-l">
45
+ <div class="gdpr_t">
46
+ <h3><?php echo esc_attr($headline); ?></h3>
47
+ <p><?php echo esc_attr($user_data); ?></p>
48
+ </div><?php if(isset($redux_builder_amp['amp-gdpr-compliance-select-privacy-page']) && $redux_builder_amp['amp-gdpr-compliance-select-privacy-page']){?>
49
+ <div class="gdpr_fmi">
50
+ <span><?php echo esc_attr($more_info); ?></span>
51
+ <a class="gdpr_fmi pri_page_link" href=<?php echo esc_attr($privacy_page); ?> target="_blank"><?php echo esc_attr($privacy_button_text); ?></a>
52
+ </div><?php } ?>
53
+ </div>
54
+ <div id="gdpr_yn" class="gdpr_yn">
55
+ <div class="gdpr-btns">
56
+ <form class="acp" action-xhr="<?php echo esc_url($form_url); ?>" method="post" target="_top">
57
+ <button type="submit" on="tap:ampforwpConsent.accept" class="btn gdpr_y btn"><?php echo esc_attr($accept); ?></button>
58
+ </form>
59
+ <form class="rej" action-xhr="<?php echo esc_url($form_url); ?>" method="post" target="_top">
60
+ <button type="submit" on="tap:ampforwpConsent.reject" class="btn gdpr_n"><?php echo esc_attr($reject); ?></button>
61
+ </form>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <div id="post-consent-ui">
67
+ <a href="#" on="tap:ampforwpConsent.prompt()" class="btn"><?php echo esc_attr($settings); ?></a>
68
+ </div>
69
+ </amp-consent>
70
+ <?php
71
+ }
72
+ if (ampforwp_get_setting('amp-gdpr-compliance-switch') ) {
73
+ // Scripts
74
+ add_filter('amp_post_template_data' , 'ampforwp_gdpr_data', 15);
75
+ // CSS
76
+ add_action('amp_post_template_css' , 'ampforwp_gdpr_css');
77
+ // Consent Submission
78
+ add_action('wp_ajax_amp_consent_submission','amp_consent_submission');
79
+ add_action('wp_ajax_nopriv_amp_consent_submission','amp_consent_submission');
80
+ }
81
+
82
+ function ampforwp_gdpr_data( $data ) {
83
+ global $redux_builder_amp;
84
+ if ( empty( $data['amp_component_scripts']['amp-consent'] ) ) {
85
+ $data['amp_component_scripts']['amp-consent'] = 'https://cdn.ampproject.org/v0/amp-consent-0.1.js';
86
+ }
87
+ if ( empty( $data['amp_component_scripts']['amp-form'] ) ) {
88
+ $data['amp_component_scripts']['amp-form'] = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
89
+ }
90
+ if ( empty( $data['amp_component_scripts']['amp-geo'] ) ) {
91
+ $data['amp_component_scripts']['amp-geo'] = 'https://cdn.ampproject.org/v0/amp-geo-0.1.js';
92
+ }
93
+
94
+ return $data;
95
+ }
96
+
97
+ function ampforwp_gdpr_css(){
98
+ global $redux_builder_amp;
99
+ // GDPR popup Design
100
+ if($redux_builder_amp['gdpr-type'] == '1'){?>
101
+ .gdpr{position: fixed; top: 0; bottom: 0; left: 0; right: 0; background: rgba(0, 0, 0, 0.7);color: #333;z-index:9999999;line-height:1.3}
102
+ .gdpr_w{padding: 2rem;background: #fff;max-width: 700px;width: 95%;position: relative;margin: 5% auto;text-align: center;}
103
+ .gdpr_t{margin-bottom:15px;}
104
+ .gdpr_t h3{font-size: 30px;margin:0px 0 10px 0;}
105
+ .gdpr_t p{font-size: 16px;line-height: 1.45;margin:0;}
106
+ .gdpr_x {position: absolute; right: 24px; top: 16px; cursor:pointer;}
107
+ .gdpr_yn{margin-top:10px;}
108
+ .gdpr_yn form{display: inline;}
109
+ .gdpr_yn button{background: #37474F;border: none;color: #fff;padding: 8px 30px;font-size: 13px;margin: 0 3px;}
110
+ .gdpr_yn .gdpr_n{background: #fff;color: #222;border: 1px solid #999;}
111
+ amp-consent{position: relative;margin-left: 10px;top: 2px;width: auto;background: transparent;}
112
+ .gdpr_fmi{
113
+ width:100%;
114
+ font-size: 15px;
115
+ line-height: 1.45;
116
+ margin: 0;
117
+ }
118
+ #footer .gdpr_fmi span, .gdpr_fmi span {
119
+ display: inline-block;
120
+ }
121
+ #footer .gdpr_fmi a{
122
+ color: <?php echo $redux_builder_amp['swift-color-scheme']['color']; ?>;
123
+ }
124
+ @media(max-width:768px){
125
+ .gdpr_w{width: 85%;margin:0 auto;padding:1.5rem;}
126
+
127
+ }<?php
128
+ } // GDPR Type 1 End
129
+ // GDPR Notice bar
130
+ if($redux_builder_amp['gdpr-type'] == '2'){?>
131
+ .gdpr{position: fixed; top: 0; bottom: 0; left: 0; right: 0;}
132
+ .gdpr_w{padding:20px 40px;background: #383B75;width: 95%;position: relative;margin: 0% auto;display: inline-flex;}
133
+ .gdpr_t h3, .gdpr_fmi{
134
+ font-size: 16px;
135
+ color:#fff;
136
+ margin: 0;
137
+ font-weight: 400;
138
+ }
139
+ .gdpr_fmi a{
140
+ text-decoration:underline;
141
+ margin-left: 10px;
142
+ color:#fff;
143
+ opacity: .8;
144
+ }
145
+ .gdpr_fmi a:hover{
146
+ opacity: 1;
147
+ color:#fff;
148
+ }
149
+ .gdpr-l{
150
+ display: flex;
151
+ flex-direction: row;
152
+ align-items: center;
153
+ order: 0;
154
+ }
155
+ .gdpr_t, .gdpr_fmi{
156
+ display:inline-block;
157
+ }
158
+ .gdpr_t p{display:none;}
159
+ .gdpr_x {position: absolute;right: 18px;top: 6px; cursor:pointer;color: #fff;visibility: hidden;}
160
+ .gdpr_yn{
161
+ text-align: right;
162
+ order: 0;
163
+ flex-grow: 1;
164
+ }
165
+ .gdpr_yn form{display: inline;}
166
+ .gdpr_yn button{background: #FFFC26;border: none;color: #333;padding: 8px 40px;font-size: 15px;margin: 0 3px;font-weight: 600;cursor: pointer;}
167
+ .gdpr_yn .gdpr_n{background: transparent;}
168
+ amp-consent{position: relative;margin-left: 10px;top: 2px;width: auto;background: transparent;}
169
+ .gdpr_fmi span, .gdpr_fmi a:before{
170
+ display:none;
171
+ }
172
+ .gdpr-btns{
173
+ display:inline-flex;
174
+ align-items: center;
175
+ }
176
+ .gdpr_yn .acp{
177
+ order: 1;
178
+ }
179
+ .rej button{
180
+ font-size: 15px;
181
+ padding: 0;
182
+ font-weight: 500;
183
+ margin-right: 20px;
184
+ cursor: pointer;
185
+ color:#fff;
186
+ }
187
+ .rej button:hover{
188
+ text-decoration:underline;
189
+ }
190
+ @media(max-width:768px){
191
+ .gdpr-l{display:inline-block;}
192
+ .gdpr_fmi a{margin:0;}
193
+ .gdpr_t, .gdpr_fmi {
194
+ display: block;
195
+ line-height: 1.4;
196
+ }
197
+ .gdpr_w{padding:10px 15px;
198
+ display:inline-block;text-align:left;
199
+ }
200
+ .gdpr_yn {
201
+ margin-top: 10px;
202
+ text-align: center;
203
+ }
204
+ }<?php
205
+ } // GDPR Type 2 End
206
+
207
+ if ( '1' === $redux_builder_amp['amp-design-selector'] ) { ?>
208
+ #ampforwpConsent{
209
+ left: 50%;
210
+ font-size: 13px;
211
+ top: -15px;
212
+ }
213
+ #ampforwpConsent a{
214
+ text-decoration:none;
215
+ }
216
+
217
+ <?php
218
+ }
219
+ if ( '3' === $redux_builder_amp['amp-design-selector'] ) {?>
220
+ amp-consent{background:none}
221
+ @media(max-width:425px){
222
+ #footer amp-consent a{font-size:12px;margin-top:7px;display:inline-block;}
223
+ }<?php
224
+ }
225
+ if ( '4' === $redux_builder_amp['amp-design-selector'] ) {?>
226
+ .gdpr_fmi a:before{
227
+ display:none;
228
+ }
229
+ .gdpr_w{width:100%;}
230
+ .f-w-f2 {
231
+ padding: 50px 0px;
232
+ }
233
+ <?php
234
+ }
235
+ }
236
+
237
+ function amp_consent_submission(){
238
+ $current_url = $site_url = $site_host = $amp_site = '';
239
+ $current_url = wp_get_referer();
240
+ $site_url = parse_url( get_site_url() );
241
+ $site_host = $site_url['host'];
242
+ $amp_site = $site_url['scheme'] . '://' . $site_url['host'];
243
+ header("AMP-Access-Control-Allow-Source-Origin: $amp_site ");
244
+ header("AMP-Redirect-To: $current_url ");
245
+ }
components/logo/logo.php CHANGED
@@ -1,58 +1,53 @@
1
- <?php
2
- function ampforwp_framework_get_logo(){
3
- global $redux_builder_amp; ?>
4
- <div class="amp-logo">
5
- <?php
6
- do_action('amp_header_top');
7
- $set_rel_to_noamp=false;
8
-
9
- if( $redux_builder_amp['amp-on-off-support-for-non-amp-home-page'] ) {
10
- if( $redux_builder_amp['amp-mobile-redirection'] ) {
11
- $ampforwp_home_url = trailingslashit( get_bloginfo('url') ).'?nonamp=1';
12
- $set_rel_to_noamp = true;
13
- } else {
14
- $ampforwp_home_url = user_trailingslashit( get_bloginfo('url') );
15
- }
16
- } else {
17
- if($redux_builder_amp['ampforwp-homepage-on-off-support']) {
18
- $ampforwp_home_url = ampforwp_url_controller( get_bloginfo('url') );
19
- //$ampforwp_home_url = user_trailingslashit( trailingslashit( get_bloginfo('url') ) . AMPFORWP_AMP_QUERY_VAR );
20
- } else {
21
- if( $redux_builder_amp['amp-mobile-redirection'] ) {
22
- $ampforwp_home_url = trailingslashit( get_bloginfo('url') ).'?nonamp=1';
23
- $set_rel_to_noamp = true;
24
- } else {
25
- $ampforwp_home_url = trailingslashit( get_bloginfo('url') );
26
- }
27
- }
28
- }?>
29
- <?php $ampforwp_home_url = apply_filters('ampforwp_header_url', $ampforwp_home_url); ?>
30
- <?php if ( true == ($redux_builder_amp['opt-media']['url']) ) {
31
- $alt = ampforwp_default_logo('alt') ?>
32
- <a href="<?php echo esc_url( $ampforwp_home_url ); ?>" <?php if($set_rel_to_noamp){ echo ' rel="nofollow"'; } ?> >
33
-
34
- <amp-img src="<?php echo $redux_builder_amp['opt-media']['url']; ?>" width="<?php echo ampforwp_default_logo('width'); ?>" height="<?php echo ampforwp_default_logo('height'); ?>" alt="<?php echo $alt; ?>" class="amp-logo" layout="responsive"></amp-img>
35
-
36
- </a>
37
- <?php } else { ?>
38
- <h1><a href="<?php echo esc_url( $ampforwp_home_url ); ?>" <?php if($set_rel_to_noamp){ echo ' rel="nofollow"'; } ?> ><?php bloginfo('name'); ?></a></h1>
39
- <?php } ?>
40
- </div>
41
- <?php }
42
-
43
- add_action('amp_post_template_css','amp_framework_logo_styles',11);
44
- if( !function_exists( 'amp_framework_logo_styles' ) ){
45
- function amp_framework_logo_styles(){
46
- global $redux_builder_amp;
47
- $max_width = '190px';
48
- $width = (integer) ampforwp_default_logo('width');
49
- if ( true == $redux_builder_amp['ampforwp-custom-logo-dimensions-options'] && isset($redux_builder_amp['ampforwp-custom-logo-dimensions-options']) && 'flexible' == $redux_builder_amp['ampforwp-custom-logo-dimensions-options'] ) {
50
- $max_width = (integer) $redux_builder_amp['ampforwp-custom-logo-dimensions-slider'];
51
- $width = (integer) ampforwp_default_logo('width');
52
- $max_width = ceil(($width*$max_width)/100)."px";
53
- }
54
- $width .= 'px';
55
- ?>
56
- .amp-logo amp-img{width:<?php echo $max_width; ?>}
57
- <?php }
58
- }
1
+ <?php
2
+ function ampforwp_framework_get_logo(){
3
+ global $redux_builder_amp; ?>
4
+ <div class="amp-logo"><?php
5
+ do_action('amp_header_top');
6
+ $set_rel_to_noamp=false;
7
+ if( $redux_builder_amp['amp-on-off-support-for-non-amp-home-page'] ) {
8
+ if( $redux_builder_amp['amp-mobile-redirection'] ) {
9
+ $ampforwp_home_url = trailingslashit( get_bloginfo('url') ).'?nonamp=1';
10
+ $set_rel_to_noamp = true;
11
+ } else {
12
+ $ampforwp_home_url = user_trailingslashit( get_bloginfo('url') );
13
+ }
14
+ } else {
15
+ if($redux_builder_amp['ampforwp-homepage-on-off-support']) {
16
+ $ampforwp_home_url = ampforwp_url_controller( get_bloginfo('url') );
17
+ //$ampforwp_home_url = user_trailingslashit( trailingslashit( get_bloginfo('url') ) . AMPFORWP_AMP_QUERY_VAR );
18
+ } else {
19
+ if( $redux_builder_amp['amp-mobile-redirection'] ) {
20
+ $ampforwp_home_url = trailingslashit( get_bloginfo('url') ).'?nonamp=1';
21
+ $set_rel_to_noamp = true;
22
+ } else {
23
+ $ampforwp_home_url = trailingslashit( get_bloginfo('url') );
24
+ }
25
+ }
26
+ }
27
+ $ampforwp_home_url = apply_filters('ampforwp_header_url', $ampforwp_home_url);
28
+ if ( true == ($redux_builder_amp['opt-media']['url']) ) {
29
+ $alt = $logo_url = "";
30
+ $alt = ampforwp_default_logo('alt');
31
+ $logo_url = __( $redux_builder_amp['opt-media']['url'], 'accelerated-mobile-pages' );
32
+ ?><a href="<?php echo esc_url( $ampforwp_home_url ); ?>" <?php if($set_rel_to_noamp){ echo ' rel="nofollow"'; } ?>><amp-img src="<?php echo esc_url( $logo_url ); ?>" width="<?php echo ampforwp_default_logo('width'); ?>" height="<?php echo ampforwp_default_logo('height'); ?>" alt="<?php echo esc_attr($alt); ?>" class="amp-logo" layout="responsive"></amp-img></a><?php } else { ?>
33
+ <h1><a href="<?php echo esc_url( $ampforwp_home_url ); ?>" <?php if($set_rel_to_noamp){ echo ' rel="nofollow"'; } ?> ><?php bloginfo('name'); ?></a></h1>
34
+ <?php }
35
+ ?></div>
36
+ <?php }
37
+
38
+ add_action('amp_post_template_css','amp_framework_logo_styles',11);
39
+ if( !function_exists( 'amp_framework_logo_styles' ) ){
40
+ function amp_framework_logo_styles(){
41
+ global $redux_builder_amp;
42
+ $max_width = '190px';
43
+ $width = (integer) ampforwp_default_logo('width');
44
+ if ( true == $redux_builder_amp['ampforwp-custom-logo-dimensions-options'] && isset($redux_builder_amp['ampforwp-custom-logo-dimensions-options']) && 'flexible' == $redux_builder_amp['ampforwp-custom-logo-dimensions-options'] ) {
45
+ $max_width = (integer) $redux_builder_amp['ampforwp-custom-logo-dimensions-slider'];
46
+ $width = (integer) ampforwp_default_logo('width');
47
+ $max_width = ceil(($width*$max_width)/100)."px";
48
+ }
49
+ $width .= 'px';
50
+ ?>
51
+ .amp-logo amp-img{width:<?php echo $max_width; ?>}
52
+ <?php }
53
+ }
 
 
 
 
 
components/loop/loop.php CHANGED
@@ -1,415 +1,421 @@
1
- <?php
2
- function amp_archive_title(){
3
- global $redux_builder_amp;
4
- if( is_author() ){
5
- $curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author'));
6
- if( true == ampforwp_gravatar_checker($curauth->user_email) ){
7
- $curauth_url = get_avatar_url( $curauth->user_email, array('size'=>180) );
8
- if($curauth_url){ ?>
9
- <div class="amp-wp-content author-img">
10
- <amp-img src="<?php echo esc_url($curauth_url); ?>" width="90" height="90" layout="responsive"></amp-img>
11
- </div>
12
- <?php }
13
- }
14
- }
15
- if ( is_archive() ) {
16
- $description = $sanitizer = $arch_desc = '';
17
- the_archive_title( '<h3 class="amp-archive-title">', '</h3>' );
18
- $description = get_the_archive_description();
19
- $sanitizer = new AMPFORWP_Content( $description, array(),
20
- apply_filters( 'ampforwp_content_sanitizers',
21
- array(
22
- 'AMP_Style_Sanitizer' => array(),
23
- 'AMP_Blacklist_Sanitizer' => array(),
24
- 'AMP_Img_Sanitizer' => array(),
25
- 'AMP_Video_Sanitizer' => array(),
26
- 'AMP_Audio_Sanitizer' => array(),
27
- 'AMP_Iframe_Sanitizer' => array(
28
- 'add_placeholder' => true,
29
- )
30
- ) ) );
31
- $arch_desc = $sanitizer->get_amp_content();
32
- if( $arch_desc ) {
33
- if ( get_query_var( 'paged' ) ) {
34
- $paged = get_query_var('paged');
35
- } elseif ( get_query_var( 'page' ) ) {
36
- $paged = get_query_var('page');
37
- } else {
38
- $paged = 1;
39
- }
40
- if($paged <= '1') {?>
41
- <div class="amp-archive-desc">
42
- <?php echo $arch_desc ; ?>
43
- </div> <?php
44
- }
45
- }
46
- }
47
- if( is_category() && 1 == $redux_builder_amp['ampforwp-sub-categories-support'] ){
48
- $parent_cat_id = '';
49
- $cat_childs = array();
50
- $parent_cat_id = get_queried_object_id();
51
- $cat_childs = get_terms( array(
52
- 'taxonomy' => get_queried_object()->taxonomy,
53
- 'parent' => $parent_cat_id )
54
- );
55
- if( !empty( $cat_childs ) ){
56
- echo "<div class='amp-sub-archives'><ul>";
57
- foreach ($cat_childs as $cat_child ) {
58
- echo '<li><a href="' . get_term_link( $cat_child ) . '">' . $cat_child->name . '</a></li>';
59
- }
60
- echo "</ul></div>";
61
- }
62
- }
63
- if(is_search()){
64
- $label = 'You searched for:';
65
- if(function_exists('ampforwp_translation')){
66
- $label = ampforwp_translation( $redux_builder_amp['amp-translator-search-text'], 'You searched for:');
67
- }
68
- echo '<h3 class="amp-loop-label">'.$label . ' ' . get_search_query().'</h3>';
69
- }
70
- }
71
-
72
- $amp_q = '';
73
- $count = 1;
74
- function call_loops_standard($data=array()){
75
- global $amp_q;
76
- $post_type = get_post_type();
77
- if (get_query_var( 'paged' ) ) {
78
- $paged = get_query_var('paged');
79
- } elseif ( get_query_var( 'page' ) ) {
80
- $paged = get_query_var('page');
81
- } else {
82
- $paged = 1;
83
- }
84
-
85
- if ( is_archive() ) {
86
- $exclude_ids = get_option('ampforwp_exclude_post');
87
- $qobj = get_queried_object();
88
- $args = array(
89
- 'post_type' => $post_type,
90
- 'orderby' => 'date',
91
- 'ignore_sticky_posts' => 1,
92
- 'tax_query' => array(
93
- array(
94
- 'taxonomy' => $qobj->taxonomy,
95
- 'field' => 'id',
96
- 'terms' => $qobj->term_id,
97
- // using a slug is also possible
98
- // 'field' => 'slug',
99
- // 'terms' => $qobj->name
100
- )
101
- ),
102
- 'paged' => esc_attr($paged),
103
- 'post__not_in' => $exclude_ids,
104
- 'has_password' => false ,
105
- 'post_status'=> 'publish'
106
- );
107
- }
108
- if ( is_home() ) {
109
- $exclude_ids = get_option('ampforwp_exclude_post');
110
-
111
- $args = array(
112
- 'post_type' => 'post',
113
- 'orderby' => 'date',
114
- 'paged' => esc_attr($paged),
115
- 'post__not_in' => $exclude_ids,
116
- 'has_password' => false ,
117
- 'post_status' => 'publish'
118
- );
119
- }
120
-
121
- if ( is_search() ) {
122
- $exclude_ids = get_option('ampforwp_exclude_post');
123
- $args = array(
124
- 's' => get_search_query() ,
125
- 'ignore_sticky_posts' => 1,
126
- 'paged' => esc_attr($paged),
127
- 'post__not_in' => $exclude_ids,
128
- 'has_password' => false ,
129
- 'post_status' => 'publish'
130
- );
131
- }
132
- if(is_author()){
133
- $exclude_ids = get_option('ampforwp_exclude_post');
134
- $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
135
- $args = array(
136
- 'author' => $author->ID,
137
- 'post_type' => 'post',
138
- 'orderby' => 'date',
139
- 'ignore_sticky_posts' => 1,
140
- 'paged' => esc_attr($paged),
141
- 'post__not_in' => $exclude_ids,
142
- 'has_password' => false ,
143
- 'post_status'=> 'publish'
144
- );
145
- }
146
- if( is_single() ) {
147
- global $post;
148
- $exclude_ids = get_option('ampforwp_exclude_post');
149
- $exclude_ids[] = $post->ID;
150
- $args = array(
151
- 'post_type' => 'post',
152
- 'orderby' => 'date',
153
- 'ignore_sticky_posts' => 1,
154
- 'paged' => esc_attr($paged),
155
- 'post__not_in' => $exclude_ids,
156
- 'has_password' => false ,
157
- 'post_status'=> 'publish'
158
- );
159
- }
160
- if( isset( $data['post_to_show'] ) && $data['post_to_show']>0 ){
161
- $args['posts_per_page'] = $data['post_to_show'];
162
- }
163
- if( isset( $data['offset'] ) && $data['offset']>0 ){
164
- $args['offset'] = $data['offset'];
165
- }
166
- if( isset( $data['posts_per_page'] ) && $data['posts_per_page']>0 ){
167
- $args['posts_per_page'] = $data['posts_per_page'];
168
- }
169
-
170
- $filtered_args = apply_filters('ampforwp_query_args', $args);
171
- $amp_q = new WP_Query( $filtered_args );
172
- }
173
- //call_loops_standered();
174
- /****
175
- * AMP Loop Functions
176
- */
177
- //add_action("init", 'call_loops_standered');
178
-
179
- function amp_loop($selection,$data=array()){
180
- global $amp_q;
181
- if(empty($amp_q) || is_null($amp_q)){
182
- call_loops_standard($data);
183
- echo "<div class='loop-wrapper'>";
184
- }
185
- if ( !isset($ampLoopData['no_data']) ) :
186
- switch($selection){
187
- case 'start':
188
- return amp_start_loop();
189
- break;
190
- case 'end':
191
- return amp_end_loop();
192
- break;
193
- }
194
- else : // If no posts exist.
195
- return false;
196
- endif; // End loop.
197
- }
198
-
199
- function amp_start_loop(){
200
- global $amp_q, $count;
201
- $post_status = $amp_q->have_posts();
202
- $amp_q->the_post();
203
- do_action('ampforwp_between_loop',$count);
204
- $count++;
205
- return $post_status;
206
- }
207
- function amp_end_loop(){
208
- global $amp_q;
209
- wp_reset_postdata();
210
- echo "</div>";
211
- }
212
-
213
- function amp_reset_loop(){
214
- global $amp_q;
215
- $amp_q = '';
216
- return "";
217
- }
218
-
219
- function amp_pagination($args =array()) {
220
- global $amp_q, $wp_query, $redux_builder_amp;
221
-
222
- if (get_query_var( 'paged' ) ) {
223
- $paged = get_query_var('paged');
224
- } elseif ( get_query_var( 'page' ) ) {
225
- $paged = get_query_var('page');
226
- } else {
227
- $paged = 1;
228
- }
229
- $pre_link = '';
230
- if(!isset($args['previous_text']) || $args['previous_text']==''){
231
- $args['previous_text'] = 'Show previous Posts';
232
- }
233
- if(!isset($args['next_text']) || $args['next_text']==''){
234
- $args['next_text'] = 'Show more Posts';
235
- }
236
- if ( $paged > 1 ) {
237
- $pre_link = '<div class="left">'.get_previous_posts_link( ampforwp_translation($redux_builder_amp['amp-translator-show-previous-posts-text'], $args['previous_text'] ) ) .'</div>';
238
- }
239
-
240
- if ( $wp_query->max_num_pages > 1 ) {
241
- echo '<div class="loop-pagination">
242
- <div class="right">'. get_next_posts_link( ampforwp_translation($redux_builder_amp['amp-translator-show-more-posts-text'] , $args['next_text']), $amp_q->max_num_pages ) .'</div>
243
- '.$pre_link.'
244
- <div class="clearfix"></div>
245
- </div>';
246
- }
247
- }
248
-
249
- /***
250
- * Get Title of post
251
- */
252
- function amp_loop_title($data=array()){
253
- $data = array_filter($data);
254
- $tag = 'h2';
255
- if(isset($data['tag']) && $data['tag']!=""){
256
- $tag = $data['tag'];
257
- }
258
- $attributes = 'class="loop-title"';
259
- if(isset($data['attributes']) && $data['attributes']!=""){
260
- $attributes = $data['attributes'];
261
- }
262
- echo '<'.$tag.' '.$attributes.'>';
263
- if(!isset($data['link']) ){
264
- echo '<a href="'. amp_loop_permalink(true) .'">';
265
- }
266
- echo the_title('','',false);
267
-
268
- if(!isset($data['link']) ){
269
- echo '</a>';
270
- }
271
- echo '</'.$tag.'>';
272
- }
273
-
274
- function amp_loop_date($args=array()){
275
- global $redux_builder_amp;
276
- if ( 2 == $redux_builder_amp['ampforwp-post-date-format'] ) {
277
- $args['format'] = 'traditional';
278
- }
279
- if(isset($args['format']) && $args['format']=='traditional'){
280
- $post_date = esc_html( get_the_date() ) . ' '.esc_html( get_the_time());
281
- }else{
282
- $post_date = human_time_diff(
283
- get_the_time('U', get_the_ID() ),
284
- current_time('timestamp') ) .' '. ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],
285
- 'ago');
286
- }
287
- echo '<div class="loop-date">'.$post_date.'</div>';
288
- }
289
-
290
- function amp_loop_excerpt($no_of_words=15,$tag = 'p'){
291
- //excerpt
292
- if(has_excerpt()){
293
- $content = get_the_excerpt();
294
- }else{
295
- $content = get_the_content();
296
- }
297
- $content = strip_shortcodes( $content );
298
- echo '<'.$tag.'>'. wp_trim_words( $content, $no_of_words ) .'</'.$tag.'>';
299
- }
300
- function amp_loop_all_content($tag = 'p'){
301
- $fullContent = strip_shortcodes( get_the_content() );
302
- echo '<'.$tag.'>'. $fullContent .'</'.$tag.'>';
303
- }
304
-
305
- function amp_loop_permalink($return,$amp_query_var ='amp'){
306
- global $redux_builder_amp;
307
- if( $return ){
308
- return ampforwp_url_controller( get_permalink() ) ;
309
- }
310
- if ( isset($redux_builder_amp['ampforwp-single-related-posts-link']) && true == $redux_builder_amp['ampforwp-single-related-posts-link'] ) {
311
- echo get_permalink();
312
- }
313
- else
314
- echo ampforwp_url_controller( get_permalink() );
315
- }
316
- function amp_loop_image( $data=array() ) {
317
- global $ampLoopData, $counterOffset, $redux_builder_amp;
318
- if (ampforwp_has_post_thumbnail() ) {
319
-
320
- $tag = 'div';
321
- $tag_class = '';
322
- $layout_responsive = '';
323
- $imageClass = '';
324
- $imageSize = 'thumbnail';
325
-
326
- if ( isset($data['tag']) && $data['tag'] != "" ) {
327
- $tag = $data['tag'];
328
- }
329
-
330
- if ( isset($data['responsive']) && $data['responsive'] != "" ) {
331
- $layout_responsive = 'layout=responsive';
332
- }
333
-
334
- if ( isset($data['tag_class']) && $data['tag_class'] != "" ) {
335
- $tag_class = $data['tag_class'];
336
- }
337
- if ( isset($data['image_class']) && $data['image_class'] != "" ) {
338
- $imageClass = $data['image_class'];
339
- }
340
- if ( isset($data['image_size']) && $data['image_size'] != "" ) {
341
- $imageSize = $data['image_size'];
342
- }
343
- $thumb_url = ampforwp_get_post_thumbnail('url', $imageSize);
344
- $thumb_width = ampforwp_get_post_thumbnail('width', $imageSize);
345
- $thumb_height = ampforwp_get_post_thumbnail('height', $imageSize);
346
-
347
- if ( isset($data['image_crop']) && $data['image_crop'] != "" ) {
348
- $width = $data['image_crop_width'];
349
- if ( empty($width) ) {
350
- $width = $thumb_width;
351
- }
352
- $height = $data['image_crop_height'];
353
- if ( empty($height) ) {
354
- $height = $thumb_height;
355
- }
356
- if ( isset($redux_builder_amp['ampforwp-retina-images']) && true == $redux_builder_amp['ampforwp-retina-images'] ) {
357
- $resolution = 2;
358
- if ( isset($redux_builder_amp['ampforwp-retina-images-res']) && $redux_builder_amp['ampforwp-retina-images-res'] ) {
359
- $resolution = $redux_builder_amp['ampforwp-retina-images-res'];
360
- }
361
- $width = $width * $resolution;
362
- $height = $height * $resolution;
363
- }
364
- $thumb_url_array = ampforwp_aq_resize( $thumb_url, $width, $height, true, false, true ); //resize & crop the image
365
- $thumb_url = $thumb_url_array[0];
366
- $thumb_width = $thumb_url_array[1];
367
- $thumb_height = $thumb_url_array[2];
368
- }
369
- if ( $thumb_url ) {
370
- $imageLink = amp_loop_permalink(true);
371
- $loopImageData = array("post_id" =>get_the_ID(),
372
- "image_url" =>$thumb_url,
373
- "width" =>$thumb_width,
374
- "height" =>$thumb_height,
375
- "layout_responsive" =>$layout_responsive,
376
- "image_class" =>$imageClass,
377
- "image_link" =>$imageLink
378
- );
379
- $changesInImageData = apply_filters("ampforwp_loop_image_update",$loopImageData);
380
- if(!empty($changesInImageData) && is_array($changesInImageData)){
381
- $thumb_url = $changesInImageData["image_url"];
382
- $thumb_width = $changesInImageData["width"];
383
- $thumb_height = $changesInImageData["height"];
384
- $layout_responsive = $changesInImageData["layout_responsive"];
385
- $imageClass = $changesInImageData["image_class"];
386
- $imageLink = $changesInImageData["image_link"];
387
- }
388
- echo '<'.$tag.' class="loop-img '.$tag_class.'">';
389
- echo '<a href="'.$imageLink.'">';
390
- echo '<amp-img src="'. $thumb_url .'" width="'.$thumb_width.'" height="'.$thumb_height.'" '. $layout_responsive .' class="'.$imageClass.'"></amp-img>';
391
- echo '</a>';
392
- echo '</'.$tag.'>';
393
- }
394
- }
395
- }
396
-
397
- // Category
398
- function amp_loop_category(){
399
- if(count(get_the_category()) > 0){
400
- echo ' <ul class="loop-category">';
401
- foreach((get_the_category()) as $category) {
402
- echo '<li class="amp-cat-'. $category->term_id.'"><a href="'.ampforwp_url_controller( get_category_link( $category->term_id ) ).'">'. $category->cat_name.'</a></li>';
403
- }
404
- echo '</ul>';
405
- }
406
- }
407
- // author
408
- function amp_loop_author($args = array()){
409
- global $redux_builder_amp;
410
- if(function_exists('ampforwp_framework_get_author_box')){
411
- ampforwp_framework_get_author_box($args);
412
- }else{
413
- echo "";
414
- }
 
 
 
 
 
 
415
  }
1
+ <?php
2
+ function amp_archive_title(){
3
+ global $redux_builder_amp;
4
+ if( is_author() ){
5
+ $curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author'));
6
+ if( true == ampforwp_gravatar_checker($curauth->user_email) ){
7
+ $curauth_url = get_avatar_url( $curauth->user_email, array('size'=>180) );
8
+ if($curauth_url){ ?>
9
+ <div class="amp-wp-content author-img">
10
+ <amp-img src="<?php echo esc_url($curauth_url); ?>" width="90" height="90" layout="responsive"></amp-img>
11
+ </div>
12
+ <?php }
13
+ }
14
+ }
15
+ if ( is_archive() ) {
16
+ $description = $sanitizer = $arch_desc = '';
17
+ the_archive_title( '<h3 class="amp-archive-title">', '</h3>' );
18
+ $description = get_the_archive_description();
19
+ $sanitizer = new AMPFORWP_Content( $description, array(),
20
+ apply_filters( 'ampforwp_content_sanitizers',
21
+ array(
22
+ 'AMP_Style_Sanitizer' => array(),
23
+ 'AMP_Blacklist_Sanitizer' => array(),
24
+ 'AMP_Img_Sanitizer' => array(),
25
+ 'AMP_Video_Sanitizer' => array(),
26
+ 'AMP_Audio_Sanitizer' => array(),
27
+ 'AMP_Iframe_Sanitizer' => array(
28
+ 'add_placeholder' => true,
29
+ )
30
+ ) ) );
31
+ $arch_desc = $sanitizer->get_amp_content();
32
+ if( $arch_desc ) {
33
+ if ( get_query_var( 'paged' ) ) {
34
+ $paged = get_query_var('paged');
35
+ } elseif ( get_query_var( 'page' ) ) {
36
+ $paged = get_query_var('page');
37
+ } else {
38
+ $paged = 1;
39
+ }
40
+ if($paged <= '1') {?>
41
+ <div class="amp-archive-desc">
42
+ <?php echo $arch_desc ; ?>
43
+ </div> <?php
44
+ }
45
+ }
46
+ }
47
+ if( is_category() && 1 == $redux_builder_amp['ampforwp-sub-categories-support'] ){
48
+ $parent_cat_id = '';
49
+ $cat_childs = array();
50
+ $parent_cat_id = get_queried_object_id();
51
+ $cat_childs = get_terms( array(
52
+ 'taxonomy' => get_queried_object()->taxonomy,
53
+ 'parent' => $parent_cat_id )
54
+ );
55
+ if( !empty( $cat_childs ) ){
56
+ echo "<div class='amp-sub-archives'><ul>";
57
+ foreach ($cat_childs as $cat_child ) {
58
+ echo '<li><a href="' . get_term_link( $cat_child ) . '">' . $cat_child->name . '</a></li>';
59
+ }
60
+ echo "</ul></div>";
61
+ }
62
+ }
63
+ if(is_search()){
64
+ $label = 'You searched for:';
65
+ if(function_exists('ampforwp_translation')){
66
+ $label = ampforwp_translation( $redux_builder_amp['amp-translator-search-text'], 'You searched for:');
67
+ }
68
+ echo '<h3 class="amp-loop-label">'.$label . ' ' . get_search_query().'</h3>';
69
+ }
70
+ }
71
+
72
+ $amp_q = '';
73
+ $count = 1;
74
+ function call_loops_standard($data=array()){
75
+ global $amp_q;
76
+ $post_type = get_post_type();
77
+ if (get_query_var( 'paged' ) ) {
78
+ $paged = get_query_var('paged');
79
+ } elseif ( get_query_var( 'page' ) ) {
80
+ $paged = get_query_var('page');
81
+ } else {
82
+ $paged = 1;
83
+ }
84
+
85
+ if ( is_archive() ) {
86
+ $exclude_ids = get_option('ampforwp_exclude_post');
87
+ $qobj = get_queried_object();
88
+ $args = array(
89
+ 'post_type' => $post_type,
90
+ 'orderby' => 'date',
91
+ 'ignore_sticky_posts' => 1,
92
+ 'tax_query' => array(
93
+ array(
94
+ 'taxonomy' => $qobj->taxonomy,
95
+ 'field' => 'id',
96
+ 'terms' => $qobj->term_id,
97
+ // using a slug is also possible
98
+ // 'field' => 'slug',
99
+ // 'terms' => $qobj->name
100
+ )
101
+ ),
102
+ 'paged' => esc_attr($paged),
103
+ 'post__not_in' => $exclude_ids,
104
+ 'has_password' => false ,
105
+ 'post_status'=> 'publish'
106
+ );
107
+ }
108
+ if ( is_home() ) {
109
+ $exclude_ids = get_option('ampforwp_exclude_post');
110
+
111
+ $args = array(
112
+ 'post_type' => 'post',
113
+ 'orderby' => 'date',
114
+ 'paged' => esc_attr($paged),
115
+ 'post__not_in' => $exclude_ids,
116
+ 'has_password' => false ,
117
+ 'post_status' => 'publish'
118
+ );
119
+ }
120
+
121
+ if ( is_search() ) {
122
+ $exclude_ids = get_option('ampforwp_exclude_post');
123
+ $args = array(
124
+ 's' => get_search_query() ,
125
+ 'ignore_sticky_posts' => 1,
126
+ 'paged' => esc_attr($paged),
127
+ 'post__not_in' => $exclude_ids,
128
+ 'has_password' => false ,
129
+ 'post_status' => 'publish'
130
+ );
131
+ }
132
+ if(is_author()){
133
+ $exclude_ids = get_option('ampforwp_exclude_post');
134
+ $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
135
+ $args = array(
136
+ 'author' => $author->ID,
137
+ 'post_type' => 'post',
138
+ 'orderby' => 'date',
139
+ 'ignore_sticky_posts' => 1,
140
+ 'paged' => esc_attr($paged),
141
+ 'post__not_in' => $exclude_ids,
142
+ 'has_password' => false ,
143
+ 'post_status'=> 'publish'
144
+ );
145
+ }
146
+ if( is_single() ) {
147
+ global $post;
148
+ $exclude_ids = get_option('ampforwp_exclude_post');
149
+ $exclude_ids[] = $post->ID;
150
+ $args = array(
151
+ 'post_type' => 'post',
152
+ 'orderby' => 'date',
153
+ 'ignore_sticky_posts' => 1,
154
+ 'paged' => esc_attr($paged),
155
+ 'post__not_in' => $exclude_ids,
156
+ 'has_password' => false ,
157
+ 'post_status'=> 'publish'
158
+ );
159
+ }
160
+ if( isset( $data['post_to_show'] ) && $data['post_to_show']>0 ){
161
+ $args['posts_per_page'] = $data['post_to_show'];
162
+ }
163
+ if( isset( $data['offset'] ) && $data['offset']>0 ){
164
+ $args['offset'] = $data['offset'];
165
+ }
166
+ if( isset( $data['posts_per_page'] ) && $data['posts_per_page']>0 ){
167
+ $args['posts_per_page'] = $data['posts_per_page'];
168
+ }
169
+
170
+ $filtered_args = apply_filters('ampforwp_query_args', $args);
171
+ $amp_q = new WP_Query( $filtered_args );
172
+
173
+ // If Relevanssi is available and this is a search, pass the query to Relevanssi
174
+ // for improved search results. 2018-07-03 Mikko Saari (mikko@mikkosaari.fi)
175
+ if ( is_search() && function_exists( 'relevanssi_do_query' ) ) {
176
+ relevanssi_do_query( $amp_q );
177
+ }
178
+ }
179
+ //call_loops_standered();
180
+ /****
181
+ * AMP Loop Functions
182
+ */
183
+ //add_action("init", 'call_loops_standered');
184
+
185
+ function amp_loop($selection,$data=array()){
186
+ global $amp_q;
187
+ if(empty($amp_q) || is_null($amp_q)){
188
+ call_loops_standard($data);
189
+ echo "<div class='loop-wrapper'>";
190
+ }
191
+ if ( !isset($ampLoopData['no_data']) ) :
192
+ switch($selection){
193
+ case 'start':
194
+ return amp_start_loop();
195
+ break;
196
+ case 'end':
197
+ return amp_end_loop();
198
+ break;
199
+ }
200
+ else : // If no posts exist.
201
+ return false;
202
+ endif; // End loop.
203
+ }
204
+
205
+ function amp_start_loop(){
206
+ global $amp_q, $count;
207
+ $post_status = $amp_q->have_posts();
208
+ $amp_q->the_post();
209
+ do_action('ampforwp_between_loop',$count);
210
+ $count++;
211
+ return $post_status;
212
+ }
213
+ function amp_end_loop(){
214
+ global $amp_q;
215
+ wp_reset_postdata();
216
+ echo "</div>";
217
+ }
218
+
219
+ function amp_reset_loop(){
220
+ global $amp_q;
221
+ $amp_q = '';
222
+ return "";
223
+ }
224
+
225
+ function amp_pagination($args =array()) {
226
+ global $amp_q, $wp_query, $redux_builder_amp;
227
+
228
+ if (get_query_var( 'paged' ) ) {
229
+ $paged = get_query_var('paged');
230
+ } elseif ( get_query_var( 'page' ) ) {
231
+ $paged = get_query_var('page');
232
+ } else {
233
+ $paged = 1;
234
+ }
235
+ $pre_link = '';
236
+ if(!isset($args['previous_text']) || $args['previous_text']==''){
237
+ $args['previous_text'] = 'Show previous Posts';
238
+ }
239
+ if(!isset($args['next_text']) || $args['next_text']==''){
240
+ $args['next_text'] = 'Show more Posts';
241
+ }
242
+ if ( $paged > 1 ) {
243
+ $pre_link = '<div class="left">'.get_previous_posts_link( ampforwp_translation($redux_builder_amp['amp-translator-show-previous-posts-text'], $args['previous_text'] ) ) .'</div>';
244
+ }
245
+
246
+ if ( $wp_query->max_num_pages > 1 ) {
247
+ echo '<div class="loop-pagination">
248
+ <div class="right">'. get_next_posts_link( ampforwp_translation($redux_builder_amp['amp-translator-show-more-posts-text'] , $args['next_text']), $amp_q->max_num_pages ) .'</div>
249
+ '.$pre_link.'
250
+ <div class="clearfix"></div>
251
+ </div>';
252
+ }
253
+ }
254
+
255
+ /***
256
+ * Get Title of post
257
+ */
258
+ function amp_loop_title($data=array()){
259
+ $data = array_filter($data);
260
+ $tag = 'h2';
261
+ if(isset($data['tag']) && $data['tag']!=""){
262
+ $tag = $data['tag'];
263
+ }
264
+ $attributes = 'class="loop-title"';
265
+ if(isset($data['attributes']) && $data['attributes']!=""){
266
+ $attributes = $data['attributes'];
267
+ }
268
+ echo '<'.$tag.' '.$attributes.'>';
269
+ if(!isset($data['link']) ){
270
+ echo '<a href="'. amp_loop_permalink(true) .'">';
271
+ }
272
+ echo the_title('','',false);
273
+
274
+ if(!isset($data['link']) ){
275
+ echo '</a>';
276
+ }
277
+ echo '</'.$tag.'>';
278
+ }
279
+
280
+ function amp_loop_date($args=array()){
281
+ global $redux_builder_amp;
282
+ if ( 2 == $redux_builder_amp['ampforwp-post-date-format'] ) {
283
+ $args['format'] = 'traditional';
284
+ }
285
+ if(isset($args['format']) && $args['format']=='traditional'){
286
+ $post_date = esc_html( get_the_date() ) . ' '.esc_html( get_the_time());
287
+ }else{
288
+ $post_date = human_time_diff(
289
+ get_the_time('U', get_the_ID() ),
290
+ current_time('timestamp') ) .' '. ampforwp_translation( $redux_builder_amp['amp-translator-ago-date-text'],
291
+ 'ago');
292
+ }
293
+ echo '<div class="loop-date">'.$post_date.'</div>';
294
+ }
295
+
296
+ function amp_loop_excerpt($no_of_words=15,$tag = 'p'){
297
+ //excerpt
298
+ if(has_excerpt()){
299
+ $content = get_the_excerpt();
300
+ }else{
301
+ $content = get_the_content();
302
+ }
303
+ $content = strip_shortcodes( $content );
304
+ echo '<'.$tag.'>'. wp_trim_words( $content, $no_of_words ) .'</'.$tag.'>';
305
+ }
306
+ function amp_loop_all_content($tag = 'p'){
307
+ $fullContent = strip_shortcodes( get_the_content() );
308
+ echo '<'.$tag.'>'. $fullContent .'</'.$tag.'>';
309
+ }
310
+
311
+ function amp_loop_permalink($return,$amp_query_var ='amp'){
312
+ global $redux_builder_amp;
313
+ if( $return ){
314
+ return ampforwp_url_controller( get_permalink() ) ;
315
+ }
316
+ if ( isset($redux_builder_amp['ampforwp-single-related-posts-link']) && true == $redux_builder_amp['ampforwp-single-related-posts-link'] ) {
317
+ echo get_permalink();
318
+ }
319
+ else
320
+ echo ampforwp_url_controller( get_permalink() );
321
+ }
322
+ function amp_loop_image( $data=array() ) {
323
+ global $ampLoopData, $counterOffset, $redux_builder_amp;
324
+ if (ampforwp_has_post_thumbnail() ) {
325
+
326
+ $tag = 'div';
327
+ $tag_class = '';
328
+ $layout_responsive = '';
329
+ $imageClass = '';
330
+ $imageSize = 'thumbnail';
331
+
332
+ if ( isset($data['tag']) && $data['tag'] != "" ) {
333
+ $tag = $data['tag'];
334
+ }
335
+
336
+ if ( isset($data['responsive']) && $data['responsive'] != "" ) {
337
+ $layout_responsive = 'layout=responsive';
338
+ }
339
+
340
+ if ( isset($data['tag_class']) && $data['tag_class'] != "" ) {
341
+ $tag_class = $data['tag_class'];
342
+ }
343
+ if ( isset($data['image_class']) && $data['image_class'] != "" ) {
344
+ $imageClass = $data['image_class'];
345
+ }
346
+ if ( isset($data['image_size']) && $data['image_size'] != "" ) {
347
+ $imageSize = $data['image_size'];
348
+ }
349
+ $thumb_url = ampforwp_get_post_thumbnail('url', $imageSize);
350
+ $thumb_width = ampforwp_get_post_thumbnail('width', $imageSize);
351
+ $thumb_height = ampforwp_get_post_thumbnail('height', $imageSize);
352
+
353
+ if ( isset($data['image_crop']) && $data['image_crop'] != "" ) {
354
+ $width = $data['image_crop_width'];
355
+ if ( empty($width) ) {
356
+ $width = $thumb_width;
357
+ }
358
+ $height = $data['image_crop_height'];
359
+ if ( empty($height) ) {
360
+ $height = $thumb_height;
361
+ }
362
+ if ( isset($redux_builder_amp['ampforwp-retina-images']) && true == $redux_builder_amp['ampforwp-retina-images'] ) {
363
+ $resolution = 2;
364
+ if ( isset($redux_builder_amp['ampforwp-retina-images-res']) && $redux_builder_amp['ampforwp-retina-images-res'] ) {
365
+ $resolution = $redux_builder_amp['ampforwp-retina-images-res'];
366
+ }
367
+ $width = $width * $resolution;
368
+ $height = $height * $resolution;
369
+ }
370
+ $thumb_url_array = ampforwp_aq_resize( $thumb_url, $width, $height, true, false, true ); //resize & crop the image
371
+ $thumb_url = $thumb_url_array[0];
372
+ $thumb_width = $thumb_url_array[1];
373
+ $thumb_height = $thumb_url_array[2];
374
+ }
375
+ if ( $thumb_url ) {
376
+ $imageLink = amp_loop_permalink(true);
377
+ $loopImageData = array("post_id" =>get_the_ID(),
378
+ "image_url" =>$thumb_url,
379
+ "width" =>$thumb_width,
380
+ "height" =>$thumb_height,
381
+ "layout_responsive" =>$layout_responsive,
382
+ "image_class" =>$imageClass,
383
+ "image_link" =>$imageLink
384
+ );
385
+ $changesInImageData = apply_filters("ampforwp_loop_image_update",$loopImageData);
386
+ if(!empty($changesInImageData) && is_array($changesInImageData)){
387
+ $thumb_url = $changesInImageData["image_url"];
388
+ $thumb_width = $changesInImageData["width"];
389
+ $thumb_height = $changesInImageData["height"];
390
+ $layout_responsive = $changesInImageData["layout_responsive"];
391
+ $imageClass = $changesInImageData["image_class"];
392
+ $imageLink = $changesInImageData["image_link"];
393
+ }
394
+ echo '<'.$tag.' class="loop-img '.$tag_class.'">';
395
+ echo '<a href="'.$imageLink.'">';
396
+ echo '<amp-img src="'. $thumb_url .'" width="'.$thumb_width.'" height="'.$thumb_height.'" '. $layout_responsive .' class="'.$imageClass.'"></amp-img>';
397
+ echo '</a>';
398
+ echo '</'.$tag.'>';
399
+ }
400
+ }
401
+ }
402
+
403
+ // Category
404
+ function amp_loop_category(){
405
+ if(count(get_the_category()) > 0){
406
+ echo ' <ul class="loop-category">';
407
+ foreach((get_the_category()) as $category) {
408
+ echo '<li class="amp-cat-'. $category->term_id.'"><a href="'.ampforwp_url_controller( get_category_link( $category->term_id ) ).'">'. $category->cat_name.'</a></li>';
409
+ }
410
+ echo '</ul>';
411
+ }
412
+ }
413
+ // author
414
+ function amp_loop_author($args = array()){
415
+ global $redux_builder_amp;
416
+ if(function_exists('ampforwp_framework_get_author_box')){
417
+ ampforwp_framework_get_author_box($args);
418
+ }else{
419
+ echo "";
420
+ }
421
  }
components/menu/menu.php CHANGED
@@ -1,22 +1,22 @@
1
- <?php
2
- function amp_menu_html($echo){
3
- if( has_nav_menu( 'amp-menu' ) ) {
4
- $menu_html_content = wp_nav_menu( array(
5
- 'theme_location' => 'amp-menu',
6
- 'container'=>'aside',
7
- 'menu'=>'ul',
8
- 'menu_class'=>'amp-menu',
9
- 'echo' => false,
10
- ) );
11
- $menu_html_content = apply_filters('ampforwp_menu_content', $menu_html_content);
12
- $sanitizer_obj = new AMPFORWP_Content( $menu_html_content, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array(), 'AMP_Style_Sanitizer' => array(), ) ) );
13
- $sanitized_menu = $sanitizer_obj->get_amp_content();
14
- return $sanitized_menu;
15
- }
16
- }
17
-
18
- //Load styling for Menu
19
- add_action('amp_post_template_css','amp_menu_styles',11);
20
- function amp_menu_styles(){ ?>
21
- aside{width:150px}.amp-menu{list-style-type:none;margin:0;padding:0}.amp-menu li{position:relative;display:block}.amp-menu li.menu-item-has-children ul{display:none}.amp-menu li.menu-item-has-children:hover>ul{display:block}.amp-menu li.menu-item-has-children>ul>li{padding-left:10px}.amp-menu li.menu-item-has-children:after{content:" > ";position:absolute;padding:10px;right:0;top:0;z-index:10000;line-height:1;}.amp-menu>li a{padding:7px;display:block;margin-bottom:1px}.amp-menu>li ul{list-style-type:none;margin:0;padding:0;position:relative}
22
  <?php }
1
+ <?php
2
+ function amp_menu_html($echo){
3
+ if( has_nav_menu( 'amp-menu' ) ) {
4
+ $menu_html_content = wp_nav_menu( array(
5
+ 'theme_location' => 'amp-menu',
6
+ 'container'=>'aside',
7
+ 'menu'=>'ul',
8
+ 'menu_class'=>'amp-menu',
9
+ 'echo' => false,
10
+ ) );
11
+ $menu_html_content = apply_filters('ampforwp_menu_content', $menu_html_content);
12
+ $sanitizer_obj = new AMPFORWP_Content( $menu_html_content, array(), apply_filters( 'ampforwp_content_sanitizers', array( 'AMP_Img_Sanitizer' => array(), 'AMP_Style_Sanitizer' => array(), ) ) );
13
+ $sanitized_menu = $sanitizer_obj->get_amp_content();
14
+ return $sanitized_menu;
15
+ }
16
+ }
17
+
18
+ //Load styling for Menu
19
+ add_action('amp_post_template_css','amp_menu_styles',11);
20
+ function amp_menu_styles(){ ?>
21
+ aside{width:150px}.amp-menu{list-style-type:none;margin:0;padding:0}.amp-menu li{position:relative;display:block}.amp-menu li.menu-item-has-children ul{display:none}.amp-menu li.menu-item-has-children:hover>ul{display:block}.amp-menu li.menu-item-has-children>ul>li{padding-left:10px}.amp-menu li.menu-item-has-children:after{content:" > ";position:absolute;padding:10px;right:0;top:0;z-index:10000;line-height:1;}.amp-menu>li a{padding:7px;display:block;margin-bottom:1px}.amp-menu>li ul{list-style-type:none;margin:0;padding:0;position:relative}
22
  <?php }
components/post-navigation/post-navigation.php CHANGED
@@ -1,26 +1,26 @@
1
- <?php
2
- function ampforwp_framework_get_post_navigation(){
3
- global $redux_builder_amp;
4
- if($redux_builder_amp['enable-single-next-prev']) { ?>
5
- <div id="pagination">
6
- <div class="next">
7
- <?php $next_post = get_next_post();
8
- if (!empty( $next_post )) {
9
- $next_text = $next_post->post_title; ?>
10
- <a href="<?php echo ampforwp_url_controller( get_permalink( $next_post->ID ) ); ?>"><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-next-text'], 'Next' ); ?></span><?php echo apply_filters('ampforwp_next_link',$next_text ); ?> &raquo;</a> <?php
11
- } ?>
12
- </div>
13
-
14
- <div class="prev">
15
- <?php $prev_post = get_previous_post();
16
- if (!empty( $prev_post )) {
17
- $prev_text = $prev_post->post_title;
18
- ?>
19
- <a href="<?php echo ampforwp_url_controller( get_permalink( $prev_post->ID ) ); ?>"><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous' ); ?></span> &laquo; <?php echo apply_filters('ampforwp_prev_link',$prev_text ); ?></a> <?php
20
- } ?>
21
- </div>
22
-
23
- <div class="clearfix"></div>
24
- </div>
25
- <?php }
26
  }
1
+ <?php
2
+ function ampforwp_framework_get_post_navigation(){
3
+ global $redux_builder_amp;
4
+ if($redux_builder_amp['enable-single-next-prev']) { ?>
5
+ <div id="pagination">
6
+ <div class="next">
7
+ <?php $next_post = get_next_post();
8
+ if (!empty( $next_post )) {
9
+ $next_text = $next_post->post_title; ?>
10
+ <a href="<?php echo ampforwp_url_controller( get_permalink( $next_post->ID ) ); ?>"><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-next-text'], 'Next' ); ?></span><?php echo apply_filters('ampforwp_next_link',$next_text ); ?> &raquo;</a> <?php
11
+ } ?>
12
+ </div>
13
+
14
+ <div class="prev">
15
+ <?php $prev_post = get_previous_post();
16
+ if (!empty( $prev_post )) {
17
+ $prev_text = $prev_post->post_title;
18
+ ?>
19
+ <a href="<?php echo ampforwp_url_controller( get_permalink( $prev_post->ID ) ); ?>"><span><?php echo ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous' ); ?></span> &laquo; <?php echo apply_filters('ampforwp_prev_link',$prev_text ); ?></a> <?php
20
+ } ?>
21
+ </div>
22
+
23
+ <div class="clearfix"></div>
24
+ </div>
25
+ <?php }
26
  }
components/post-pagination/post-pagination.php CHANGED
@@ -1,159 +1,159 @@
1
- <?php
2
- function ampforwp_framework_get_post_pagination( $args = '' ) {
3
-
4
- wp_reset_postdata();
5
- global $page, $numpages, $multipage, $more, $redux_builder_amp;
6
- $next_class = $previous_class = '';
7
- $defaults = array(
8
- 'before' => '<p>' . ( '<span>'. ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page') .':</span>' ),
9
- 'after' => '</p>',
10
- 'link_before' => '',
11
- 'link_after' => '',
12
- 'next_or_number' => 'number',
13
- 'separator' => ' ',
14
- 'nextpagelink' => ampforwp_translation($redux_builder_amp['amp-translator-next-text'], 'Next page'),
15
- 'previouspagelink' => ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous page'),
16
- 'pagelink' => '%',
17
- 'echo' => 1
18
- );
19
-
20
- $params = wp_parse_args( $args, $defaults );
21
-
22
- /**
23
- * Filters the arguments used in retrieving page links for paginated posts.
24
- * @param array $params An array of arguments for page links for paginated posts.
25
- */
26
- $r = apply_filters( 'ampforwp_framework_get_post_pagination_args', $params );
27
- if ( isset($params['next_class']) ) {
28
- $next_class = $params['next_class'];
29
- }
30
- if ( isset($params['previous_class']) ) {
31
- $previous_class = $params['previous_class'];
32
- }
33
- $output = '';
34
- if ( $multipage ) {
35
- if ( 'number' == $r['next_or_number'] ) {
36
- $output .= $r['before'];
37
- for ( $i = 1; $i <= $numpages; $i++ ) {
38
- $link = $r['link_before'] . str_replace( '%', '<span>'.$i.'</span>', $r['pagelink'] ) . $r['link_after'];
39
- if ( $i != $page || ! $more && 1 == $page ) {
40
- $link = ampforwp_framework_get_post_paginated_link( $i ) . $link . '</a>';
41
- }
42
- /**
43
- * Filters the HTML output of individual page number links.
44
- * @param string $link The page number HTML output.
45
- * @param int $i Page number for paginated posts' page links.
46
- */
47
- $link = apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $i );
48
-
49
- // Use the custom links separator beginning with the second link.
50
- $output .= ( 1 === $i ) ? ' ' : $r['separator'];
51
- $output .= $link;
52
- }
53
- $output .= $r['after'];
54
- } elseif ( $more ) {
55
- $output .= $r['before'];
56
- $prev = $page - 1;
57
- if ( $prev > 0 ) {
58
- $link = ampforwp_framework_get_post_paginated_link( $prev, $previous_class ) . $r['link_before'] . $r['previouspagelink'] . $r['link_after'] . '</a>';
59
- $output .= apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $prev );
60
- }
61
- $next = $page + 1;
62
- if ( $next <= $numpages ) {
63
- if ( $prev ) {
64
- $output .= $r['separator'];
65
- }
66
- $link = ampforwp_framework_get_post_paginated_link( $next, $next_class ) . $r['link_before'] . $r['nextpagelink'] . $r['link_after'] . '</a>';
67
- $output .= apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $next );
68
- }
69
- $output .= $r['after'];
70
- }
71
- }
72
-
73
- /**
74
- * Filters the HTML output of page links for paginated posts.
75
- * @param string $output HTML output of paginated posts' page links.
76
- * @param array $args An array of arguments.
77
- */
78
- $html = apply_filters( 'ampforwp_framework_get_post_pagination', $output, $args );
79
- if ( $r['echo'] ) {
80
- echo $html;
81
- }
82
- return $html;
83
- }
84
-
85
- /**
86
- * Helper function for ampforwp_framework_get_post_pagination().
87
- * @access private
88
- *
89
- * @global WP_Rewrite $wp_rewrite
90
- *
91
- * @param int $i Page number.
92
- * @return string Link.
93
- */
94
- function ampforwp_framework_get_post_paginated_link( $i, $args = '' ) {
95
- global $wp_rewrite;
96
- $post = get_post();
97
- $query_args = array();
98
- if ( isset($args) ) {
99
- $class = "class='$args'";
100
- }
101
- if ( 1 == $i ) {
102
- $url = get_permalink();
103
- } else {
104
- if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
105
- $url = add_query_arg( 'page', $i, get_permalink() );
106
- elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID )
107
- $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged');
108
- else
109
- $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged');
110
- }
111
-
112
- if ( is_preview() ) {
113
-
114
- if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
115
- $query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
116
- $query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
117
- }
118
-
119
- $url = get_preview_post_link( $post, $query_args, $url );
120
- }
121
- return '<a href="' . esc_url(trailingslashit( $url) ) . '?amp" ' . $class . '>';
122
- }
123
-
124
- add_filter('ampforwp_modify_rel_canonical','amp_paginated_post_modify_amphtml');
125
- function amp_paginated_post_modify_amphtml($url) {
126
- if(is_single()){
127
- $post_paginated_page='';
128
- $post_paginated_page = get_query_var('page');
129
- if($post_paginated_page){
130
- $url = get_permalink();
131
- $new_url = $url."$post_paginated_page/?amp";
132
- return $new_url;
133
- }
134
- }
135
- return $url;
136
- }
137
-
138
- //add_action('amp_post_template_head','amp_paginated_post_modify_canonical',9);
139
- function amp_paginated_post_modify_canonical(){
140
- if(is_single()){
141
- $post_paginated_page='';
142
- $post_paginated_page = get_query_var('page');
143
- if($post_paginated_page){
144
- remove_action( 'amp_post_template_head', 'amp_post_template_add_canonical' );
145
- add_action('amp_post_template_head','amp_paginated_post_rel_canonical');
146
- }
147
- }
148
- }
149
- function amp_paginated_post_rel_canonical(){
150
- $post_paginated_page='';
151
- $new_canonical_url = '';
152
- global $post;
153
- $current_post_id = $post->ID;
154
- $new_canonical_url = get_permalink($current_post_id);
155
- $new_canonical_url = trailingslashit($new_canonical_url);
156
- $post_paginated_page = get_query_var('page');
157
- if($post_paginated_page){?>
158
- <link rel="canonical" href="<?php echo $new_canonical_url.$post_paginated_page ?>/" /><?php }
159
- }
1
+ <?php
2
+ function ampforwp_framework_get_post_pagination( $args = '' ) {
3
+
4
+ wp_reset_postdata();
5
+ global $page, $numpages, $multipage, $more, $redux_builder_amp;
6
+ $next_class = $previous_class = '';
7
+ $defaults = array(
8
+ 'before' => '<p>' . ( '<span>'. ampforwp_translation($redux_builder_amp['amp-translator-page-text'], 'Page') .':</span>' ),
9
+ 'after' => '</p>',
10
+ 'link_before' => '',
11
+ 'link_after' => '',
12
+ 'next_or_number' => 'number',
13
+ 'separator' => ' ',
14
+ 'nextpagelink' => ampforwp_translation($redux_builder_amp['amp-translator-next-text'], 'Next page'),
15
+ 'previouspagelink' => ampforwp_translation($redux_builder_amp['amp-translator-previous-text'], 'Previous page'),
16
+ 'pagelink' => '%',
17
+ 'echo' => 1
18
+ );
19
+
20
+ $params = wp_parse_args( $args, $defaults );
21
+
22
+ /**
23
+ * Filters the arguments used in retrieving page links for paginated posts.
24
+ * @param array $params An array of arguments for page links for paginated posts.
25
+ */
26
+ $r = apply_filters( 'ampforwp_framework_get_post_pagination_args', $params );
27
+ if ( isset($params['next_class']) ) {
28
+ $next_class = $params['next_class'];
29
+ }
30
+ if ( isset($params['previous_class']) ) {
31
+ $previous_class = $params['previous_class'];
32
+ }
33
+ $output = '';
34
+ if ( $multipage ) {
35
+ if ( 'number' == $r['next_or_number'] ) {
36
+ $output .= $r['before'];
37
+ for ( $i = 1; $i <= $numpages; $i++ ) {
38
+ $link = $r['link_before'] . str_replace( '%', '<span>'.$i.'</span>', $r['pagelink'] ) . $r['link_after'];
39
+ if ( $i != $page || ! $more && 1 == $page ) {
40
+ $link = ampforwp_framework_get_post_paginated_link( $i ) . $link . '</a>';
41
+ }
42
+ /**
43
+ * Filters the HTML output of individual page number links.
44
+ * @param string $link The page number HTML output.
45
+ * @param int $i Page number for paginated posts' page links.
46
+ */
47
+ $link = apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $i );
48
+
49
+ // Use the custom links separator beginning with the second link.
50
+ $output .= ( 1 === $i ) ? ' ' : $r['separator'];
51
+ $output .= $link;
52
+ }
53
+ $output .= $r['after'];
54
+ } elseif ( $more ) {
55
+ $output .= $r['before'];
56
+ $prev = $page - 1;
57
+ if ( $prev > 0 ) {
58
+ $link = ampforwp_framework_get_post_paginated_link( $prev, $previous_class ) . $r['link_before'] . $r['previouspagelink'] . $r['link_after'] . '</a>';
59
+ $output .= apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $prev );
60
+ }
61
+ $next = $page + 1;
62
+ if ( $next <= $numpages ) {
63
+ if ( $prev ) {
64
+ $output .= $r['separator'];
65
+ }
66
+ $link = ampforwp_framework_get_post_paginated_link( $next, $next_class ) . $r['link_before'] . $r['nextpagelink'] . $r['link_after'] . '</a>';
67
+ $output .= apply_filters( 'ampforwp_framework_get_post_pagination_link', $link, $next );
68
+ }
69
+ $output .= $r['after'];
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Filters the HTML output of page links for paginated posts.
75
+ * @param string $output HTML output of paginated posts' page links.
76
+ * @param array $args An array of arguments.
77
+ */
78
+ $html = apply_filters( 'ampforwp_framework_get_post_pagination', $output, $args );
79
+ if ( $r['echo'] ) {
80
+ echo $html;
81
+ }
82
+ return $html;
83
+ }
84
+
85
+ /**
86
+ * Helper function for ampforwp_framework_get_post_pagination().
87
+ * @access private
88
+ *
89
+ * @global WP_Rewrite $wp_rewrite
90
+ *
91
+ * @param int $i Page number.
92
+ * @return string Link.
93
+ */
94
+ function ampforwp_framework_get_post_paginated_link( $i, $args = '' ) {
95
+ global $wp_rewrite;
96
+ $post = get_post();
97
+ $query_args = array();
98
+ if ( isset($args) ) {
99
+ $class = "class='$args'";
100
+ }
101
+ if ( 1 == $i ) {
102
+ $url = get_permalink();
103
+ } else {
104
+ if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
105
+ $url = add_query_arg( 'page', $i, get_permalink() );
106
+ elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID )
107
+ $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged');
108
+ else
109
+ $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged');
110
+ }
111
+
112
+ if ( is_preview() ) {
113
+
114
+ if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
115
+ $query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
116
+ $query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
117
+ }
118
+
119
+ $url = get_preview_post_link( $post, $query_args, $url );
120
+ }
121
+ return '<a href="' . esc_url(trailingslashit( $url) ) . '?amp" ' . $class . '>';
122
+ }
123
+
124
+ add_filter('ampforwp_modify_rel_canonical','amp_paginated_post_modify_amphtml');
125
+ function amp_paginated_post_modify_amphtml($url) {
126
+ if(is_single()){
127
+ $post_paginated_page='';
128
+ $post_paginated_page = get_query_var('page');
129
+ if($post_paginated_page){
130
+ $url = get_permalink();
131
+ $new_url = $url."$post_paginated_page/?amp";
132
+ return $new_url;
133
+ }
134
+ }
135
+ return $url;
136
+ }
137
+
138
+ //add_action('amp_post_template_head','amp_paginated_post_modify_canonical',9);
139
+ function amp_paginated_post_modify_canonical(){
140
+ if(is_single()){
141
+ $post_paginated_page='';
142
+ $post_paginated_page = get_query_var('page');
143
+ if($post_paginated_page){
144
+ remove_action( 'amp_post_template_head', 'amp_post_template_add_canonical' );
145
+ add_action('amp_post_template_head','amp_paginated_post_rel_canonical');
146
+ }
147
+ }
148
+ }
149
+ function amp_paginated_post_rel_canonical(){
150
+ $post_paginated_page='';
151
+ $new_canonical_url = '';
152
+ global $post;
153
+ $current_post_id = $post->ID;
154
+ $new_canonical_url = get_permalink($current_post_id);
155
+ $new_canonical_url = trailingslashit($new_canonical_url);
156
+ $post_paginated_page = get_query_var('page');
157
+ if($post_paginated_page){?>
158
+ <link rel="canonical" href="<?php echo $new_canonical_url.$post_paginated_page ?>/" /><?php }
159
+ }
components/related-posts/related-posts.php CHANGED
@@ -1,169 +1,169 @@
1
- <?php
2
- /*
3
- @data parameter have options for
4
- show_excerpt
5
- */
6
- function ampforwp_framework_get_related_posts($argsdata=array()){
7
- global $post, $redux_builder_amp;
8
- $show_image = (isset($argsdata['show_image']) ? $argsdata['show_image'] : true);
9
- $string_number_of_related_posts = $redux_builder_amp['ampforwp-number-of-related-posts'];
10
- $int_number_of_related_posts = round(abs(floatval($string_number_of_related_posts)));
11
- $my_query = related_post_loop_query();
12
- if ( isset($redux_builder_amp['ampforwp-single-related-posts-switch']) && $redux_builder_amp['ampforwp-single-related-posts-switch'] ) {
13
- if( $my_query->have_posts() ) { ?>
14
- <div class="amp-related-posts">
15
- <ul class="clearfix">
16
- <?php ampforwp_related_post(); ?>
17
- <?php
18
- while( $my_query->have_posts() ) {
19
- $my_query->the_post();
20
-
21
- ?>
22
- <li class="<?php if ( has_post_thumbnail() ) { echo'has_thumbnail'; } else { echo 'no_thumbnail'; } ?>">
23
- <?php
24
- $related_post_permalink = ampforwp_url_controller( get_permalink() );
25
- if ( $show_image ) {
26
- if ( isset($argsdata['image_size']) && '' != $argsdata['image_size'] ) {
27
- ampforwp_get_relatedpost_image($argsdata['image_size']);
28
- }
29
- else {
30
- ampforwp_get_relatedpost_image('thumbnail');
31
- }
32
- }
33
- ampforwp_get_relatedpost_content($argsdata);
34
- ?>
35
- </li><?php
36
- }
37
-
38
- } ?>
39
- </ul>
40
- </div>
41
- <?php wp_reset_postdata(); ?>
42
- <?php do_action('ampforwp_below_related_post_hook');
43
- }
44
- }
45
-
46
- function related_post_loop_query(){
47
- global $post, $redux_builder_amp;
48
- $string_number_of_related_posts = $redux_builder_amp['ampforwp-number-of-related-posts'];
49
- $int_number_of_related_posts = round(abs(floatval($string_number_of_related_posts)));
50
- $args = null;
51
-
52
- if($redux_builder_amp['ampforwp-single-select-type-of-related']==2){
53
- $categories = get_the_category($post->ID);
54
- if ($categories) {
55
- $category_ids = array();
56
- foreach($categories as $individual_category){ $category_ids[] = $individual_category->term_id;
57
- }
58
- $args=array(
59
- 'category__in' => $category_ids,
60
- 'post__not_in' => array($post->ID),
61
- 'posts_per_page'=> $int_number_of_related_posts,
62
- 'ignore_sticky_posts'=>1,
63
- 'has_password' => false ,
64
- 'post_status'=> 'publish'
65
- );
66
- }
67
- }
68
- // tags
69
- if($redux_builder_amp['ampforwp-single-select-type-of-related']==1) {
70
- $ampforwp_tags = get_the_tags($post->ID);
71
- if ($ampforwp_tags) {
72
- $tag_ids = array();
73
- foreach($ampforwp_tags as $individual_tag) {
74
- $tag_ids[] = $individual_tag->term_id;
75
- }
76
- $args=array(
77
- 'tag__in' => $tag_ids,
78
- 'post__not_in' => array($post->ID),
79
- 'posts_per_page'=> $int_number_of_related_posts,
80
- 'ignore_sticky_posts'=>1,
81
- 'has_password' => false ,
82
- 'post_status'=> 'publish'
83
- );
84
- }
85
- }
86
- // Related Posts Based on Past few Days #2132
87
- if ( isset($redux_builder_amp['ampforwp-related-posts-days-switch']) && true == $redux_builder_amp['ampforwp-related-posts-days-switch'] ) {
88
- $date_range = strtotime ( '-' . $redux_builder_amp['ampforwp-related-posts-days-text'] .' day' );
89
- $args['date_query'] = array(
90
- array(
91
- 'after' => array(
92
- 'year' => date('Y', $date_range ),
93
- 'month' => date('m', $date_range ),
94
- 'day' => date('d', $date_range ),
95
- ),
96
- )
97
- );
98
- }
99
- $my_query = new wp_query( $args );
100
- return $my_query;
101
- }
102
-
103
- function ampforwp_related_post(){
104
- global $redux_builder_amp;
105
- do_action('ampforwp_above_related_post'); //Above Related Posts
106
- ?>
107
- <h3 class="amp-related-posts-title"><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-related-text'], 'Related Post' ); ?></h3>
108
- <?php }
109
-
110
- function ampforwp_get_relatedpost_image( $imagetype ='thumbnail', $data=array() ){
111
- global $redux_builder_amp;
112
- $related_post_permalink = ampforwp_url_controller( get_permalink() );
113
- if ( isset($redux_builder_amp['ampforwp-single-related-posts-link']) && true == $redux_builder_amp['ampforwp-single-related-posts-link'] ) {
114
- $related_post_permalink = get_permalink();
115
- }
116
- $show_image = (isset($data['show_image']) ? $data['show_image'] : true);
117
- ?>
118
- <a href="<?php echo esc_url( $related_post_permalink ); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
119
- <?php
120
- if (ampforwp_has_post_thumbnail() ) {
121
- $thumb_url = ampforwp_get_post_thumbnail('url', $imagetype);
122
- $thumb_width = ampforwp_get_post_thumbnail('width', $imagetype);
123
- $thumb_height = ampforwp_get_post_thumbnail('height', $imagetype);
124
- if(isset($data['image_crop']) && $data['image_crop'] != ""){
125
- $width = $data['image_crop_width'];
126
- if(empty($width)){
127
- $width = $thumb_url_array_2[1];
128
- }
129
- $height = $data['image_crop_height'];
130
- if(empty($height)){
131
- $height = $thumb_url_array_2[2];
132
- }
133
- $thumb_url_array = ampforwp_aq_resize( $thumb_url, $width, $height, true, false, true ); //resize & crop the image
134
- $thumb_url = $thumb_url_array[0];
135
- $thumb_width = $thumb_url_array[1];
136
- $thumb_height = $thumb_url_array[2];
137
- }
138
-
139
- if ( $thumb_url && $show_image ) { ?>
140
- <amp-img src="<?php echo esc_url( $thumb_url ); ?>" width="<?php echo $thumb_width; ?>" height="<?php echo $thumb_height; ?>" layout="responsive"></amp-img>
141
- <?php }
142
- } ?>
143
- </a>
144
- <?php
145
- }
146
-
147
- function ampforwp_get_relatedpost_content($argsdata=array()){
148
- $related_post_permalink = ampforwp_url_controller( get_permalink() ); ?>
149
- <div class="related_link">
150
- <a href="<?php echo esc_url( $related_post_permalink ); ?>"><?php the_title(); ?></a>
151
- <?php
152
- $show_excerpt = (isset($argsdata['show_excerpt'])? $argsdata['show_excerpt'] : true);
153
- if($show_excerpt){
154
- if(has_excerpt()){
155
- $content = get_the_excerpt();
156
- }else{
157
- $content = get_the_content();
158
- }
159
- ?><p><?php
160
- echo wp_trim_words( strip_shortcodes( $content ) , '15' );
161
- ?></p><?php
162
- }
163
- $show_author = (isset($argsdata['show_author'])? $argsdata['show_author'] : true);
164
- if($show_author){
165
- $author_args = isset($argsdata['author_args'])? $argsdata['author_args'] : array();
166
- ampforwp_framework_get_author_box($author_args);
167
- } ?>
168
- </div>
169
  <?php }
1
+ <?php
2
+ /*
3
+ @data parameter have options for
4
+ show_excerpt
5
+ */
6
+ function ampforwp_framework_get_related_posts($argsdata=array()){
7
+ global $post, $redux_builder_amp;
8
+ $show_image = (isset($argsdata['show_image']) ? $argsdata['show_image'] : true);
9
+ $string_number_of_related_posts = $redux_builder_amp['ampforwp-number-of-related-posts'];
10
+ $int_number_of_related_posts = round(abs(floatval($string_number_of_related_posts)));
11
+ $my_query = related_post_loop_query();
12
+ if ( isset($redux_builder_amp['ampforwp-single-related-posts-switch']) && $redux_builder_amp['ampforwp-single-related-posts-switch'] ) {
13
+ if( $my_query->have_posts() ) { ?>
14
+ <div class="amp-related-posts">
15
+ <ul class="clearfix">
16
+ <?php ampforwp_related_post(); ?>
17
+ <?php
18
+ while( $my_query->have_posts() ) {
19
+ $my_query->the_post();
20
+
21
+ ?>
22
+ <li class="<?php if ( has_post_thumbnail() ) { echo'has_thumbnail'; } else { echo 'no_thumbnail'; } ?>">
23
+ <?php
24
+ $related_post_permalink = ampforwp_url_controller( get_permalink() );
25
+ if ( $show_image ) {
26
+ if ( isset($argsdata['image_size']) && '' != $argsdata['image_size'] ) {
27
+ ampforwp_get_relatedpost_image($argsdata['image_size']);
28
+ }
29
+ else {
30
+ ampforwp_get_relatedpost_image('thumbnail');
31
+ }
32
+ }
33
+ ampforwp_get_relatedpost_content($argsdata);
34
+ ?>
35
+ </li><?php
36
+ }
37
+
38
+ } ?>
39
+ </ul>
40
+ </div>
41
+ <?php wp_reset_postdata(); ?>
42
+ <?php do_action('ampforwp_below_related_post_hook');
43
+ }
44
+ }
45
+
46
+ function related_post_loop_query(){
47
+ global $post, $redux_builder_amp;
48
+ $string_number_of_related_posts = $redux_builder_amp['ampforwp-number-of-related-posts'];
49
+ $int_number_of_related_posts = round(abs(floatval($string_number_of_related_posts)));
50
+ $args = null;
51
+
52
+ if($redux_builder_amp['ampforwp-single-select-type-of-related']==2){
53
+ $categories = get_the_category($post->ID);
54
+ if ($categories) {
55
+ $category_ids = array();
56
+ foreach($categories as $individual_category){ $category_ids[] = $individual_category->term_id;
57
+ }
58
+ $args=array(
59
+ 'category__in' => $category_ids,
60
+ 'post__not_in' => array($post->ID),
61
+ 'posts_per_page'=> $int_number_of_related_posts,
62
+ 'ignore_sticky_posts'=>1,
63
+ 'has_password' => false ,
64
+ 'post_status'=> 'publish'
65
+ );
66
+ }
67
+ }
68
+ // tags
69
+ if($redux_builder_amp['ampforwp-single-select-type-of-related']==1) {
70
+ $ampforwp_tags = get_the_tags($post->ID);
71
+ if ($ampforwp_tags) {
72
+ $tag_ids = array();
73
+ foreach($ampforwp_tags as $individual_tag) {
74
+ $tag_ids[] = $individual_tag->term_id;
75
+ }
76
+ $args=array(
77
+ 'tag__in' => $tag_ids,
78
+ 'post__not_in' => array($post->ID),
79
+ 'posts_per_page'=> $int_number_of_related_posts,
80
+ 'ignore_sticky_posts'=>1,
81
+ 'has_password' => false ,
82
+ 'post_status'=> 'publish'
83
+ );
84
+ }
85
+ }
86
+ // Related Posts Based on Past few Days #2132
87
+ if ( isset($redux_builder_amp['ampforwp-related-posts-days-switch']) && true == $redux_builder_amp['ampforwp-related-posts-days-switch'] ) {
88
+ $date_range = strtotime ( '-' . $redux_builder_amp['ampforwp-related-posts-days-text'] .' day' );
89
+ $args['date_query'] = array(
90
+ array(
91
+ 'after' => array(
92
+ 'year' => date('Y', $date_range ),
93
+ 'month' => date('m', $date_range ),
94
+ 'day' => date('d', $date_range ),
95
+ ),
96
+ )
97
+ );
98
+ }
99
+ $my_query = new wp_query( $args );
100
+ return $my_query;
101
+ }
102
+
103
+ function ampforwp_related_post(){
104
+ global $redux_builder_amp;
105
+ do_action('ampforwp_above_related_post'); //Above Related Posts
106
+ ?>
107
+ <h3 class="amp-related-posts-title"><?php echo ampforwp_translation( $redux_builder_amp['amp-translator-related-text'], 'Related Post' ); ?></h3>
108
+ <?php }
109
+
110
+ function ampforwp_get_relatedpost_image( $imagetype ='thumbnail', $data=array() ){
111
+ global $redux_builder_amp;
112
+ $related_post_permalink = ampforwp_url_controller( get_permalink() );
113
+ if ( isset($redux_builder_amp['ampforwp-single-related-posts-link']) && true == $redux_builder_amp['ampforwp-single-related-posts-link'] ) {
114
+ $related_post_permalink = get_permalink();
115
+ }
116
+ $show_image = (isset($data['show_image']) ? $data['show_image'] : true);
117
+ ?>
118
+ <a href="<?php echo esc_url( $related_post_permalink ); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
119
+ <?php
120
+ if (ampforwp_has_post_thumbnail() ) {
121
+ $thumb_url = ampforwp_get_post_thumbnail('url', $imagetype);
122
+ $thumb_width = ampforwp_get_post_thumbnail('width', $imagetype);
123
+ $thumb_height = ampforwp_get_post_thumbnail('height', $imagetype);
124
+ if(isset($data['image_crop']) && $data['image_crop'] != ""){
125
+ $width = $data['image_crop_width'];
126
+ if(empty($width)){
127
+ $width = $thumb_url_array_2[1];
128
+ }
129
+ $height = $data['image_crop_height'];
130
+ if(empty($height)){
131
+ $height = $thumb_url_array_2[2];
132
+ }
133
+ $thumb_url_array = ampforwp_aq_resize( $thumb_url, $width, $height, true, false, true ); //resize & crop the image
134
+ $thumb_url = $thumb_url_array[0];
135
+ $thumb_width = $thumb_url_array[1];
136
+ $thumb_height = $thumb_url_array[2];
137
+ }
138
+
139
+ if ( $thumb_url && $show_image ) { ?>
140
+ <amp-img src="<?php echo esc_url( $thumb_url ); ?>" width="<?php echo $thumb_width; ?>" height="<?php echo $thumb_height; ?>" layout="responsive"></amp-img>
141
+ <?php }
142
+ } ?>
143
+ </a>
144
+ <?php
145
+ }
146
+
147
+ function ampforwp_get_relatedpost_content($argsdata=array()){
148
+ $related_post_permalink = ampforwp_url_controller( get_permalink() ); ?>
149
+ <div class="related_link">
150
+ <a href="<?php echo esc_url( $related_post_permalink ); ?>"><?php the_title(); ?></a>
151
+ <?php
152
+ $show_excerpt = (isset($argsdata['show_excerpt'])? $argsdata['show_excerpt'] : true);
153
+ if($show_excerpt){
154
+ if(has_excerpt()){
155
+ $content = get_the_excerpt();
156
+ }else{
157
+ $content = get_the_content();
158
+ }
159
+ ?><p><?php
160
+ echo wp_trim_words( strip_shortcodes( $content ) , '15' );
161
+ ?></p><?php
162
+ }
163
+ $show_author = (isset($argsdata['show_author'])? $argsdata['show_author'] : true);
164
+ if($show_author){
165
+ $author_args = isset($argsdata['author_args'])? $argsdata['author_args'] : array();
166
+ ampforwp_framework_get_author_box($author_args);
167
+ } ?>
168
+ </div>
169
  <?php }
components/search/search.php CHANGED
@@ -1,35 +1,35 @@
1
- <?php
2
- //main output function
3
- function ampforwp_framework_get_search_form() {
4
- global $redux_builder_amp;
5
- $action_url = '';
6
- $amp_query_variable = '';
7
- $amp_query_variable_val = '';
8
- $label = ampforwp_translation(isset($redux_builder_amp['ampforwp-search-label']) && $redux_builder_amp['ampforwp-search-label'], 'Type your search query and hit enter');
9
- $action_url = esc_url( get_bloginfo('url') );
10
- $action_url = preg_replace('#^http?:#', '', $action_url);
11
- $placeholder = ampforwp_translation($redux_builder_amp['ampforwp-search-placeholder'], 'Type Here' );
12
- if ( isset($redux_builder_amp['ampforwp-amp-takeover']) && !$redux_builder_amp['ampforwp-amp-takeover'] ) {
13
- $amp_query_variable = 'amp';
14
- $amp_query_variable_val = '1';
15
- }
16
- $form = '<form role="search" method="get" id="amp-search" class="amp-search" target="_top" action="' . $action_url .'">
17
- <div class="amp-search-wrapper">
18
- <label class="screen-reader-text" for="s">' . $label . '</label>
19
- <input type="text" placeholder="AMP" value="'.$amp_query_variable_val.'" name="'.$amp_query_variable.'" class="hidden"/>
20
- <input type="text" placeholder="'.$placeholder.'" value="' . get_search_query() . '" name="s" id="s" />
21
- <input type="submit" class="icon-search" id="amp-search-submit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />
22
- <div class="overlay-search">
23
- </div>
24
- </div>
25
- </form>';
26
- echo $form;
27
-
28
- }
29
- ampforwp_add_scripts();
30
- function ampforwp_add_scripts(){
31
- global $scriptComponent;
32
- if ( empty( $scriptComponent['amp-form'] ) ) {
33
- $scriptComponent['amp-form'] = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
34
- }
35
  }
1
+ <?php
2
+ //main output function
3
+ function ampforwp_framework_get_search_form() {
4
+ global $redux_builder_amp;
5
+ $action_url = '';
6
+ $amp_query_variable = '';
7
+ $amp_query_variable_val = '';
8
+ $label = ampforwp_translation(isset($redux_builder_amp['ampforwp-search-label']) && $redux_builder_amp['ampforwp-search-label'], 'Type your search query and hit enter');
9
+ $action_url = esc_url( get_bloginfo('url') );
10
+ $action_url = preg_replace('#^http?:#', '', $action_url);
11
+ $placeholder = ampforwp_translation($redux_builder_amp['ampforwp-search-placeholder'], 'Type Here' );
12
+ if ( isset($redux_builder_amp['ampforwp-amp-takeover']) && !$redux_builder_amp['ampforwp-amp-takeover'] ) {
13
+ $amp_query_variable = 'amp';
14
+ $amp_query_variable_val = '1';
15
+ }
16
+ $form = '<form role="search" method="get" id="amp-search" class="amp-search" target="_top" action="' . $action_url .'">
17
+ <div class="amp-search-wrapper">
18
+ <label class="screen-reader-text" for="s">' . $label . '</label>
19
+ <input type="text" placeholder="AMP" value="'.$amp_query_variable_val.'" name="'.$amp_query_variable.'" class="hidden"/>
20
+ <input type="text" placeholder="'.$placeholder.'" value="' . get_search_query() . '" name="s" id="s" />
21
+ <input type="submit" class="icon-search" id="amp-search-submit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />
22
+ <div class="overlay-search">
23
+ </div>
24
+ </div>
25
+ </form>';
26
+ echo $form;
27
+
28
+ }
29
+ ampforwp_add_scripts();
30
+ function ampforwp_add_scripts(){
31
+ global $scriptComponent;
32
+ if ( empty( $scriptComponent['amp-form'] ) ) {
33
+ $scriptComponent['amp-form'] = 'https://cdn.ampproject.org/v0/amp-form-0.1.js';
34
+ }
35
  }
components/sidebar/sidebar.php CHANGED
@@ -1,80 +1,80 @@
1
- <?php
2
- if(!function_exists('ampforwp_framework_get_sideabr')){
3
- function ampforwp_framework_get_sideabr($data=array()){
4
- if(!isset($data['action'])){
5
- echo esc_attr('action not found');
6
- }
7
- $action = $data['action'];
8
- unset($data['action']);
9
- switch(strtolower($action)) {
10
- case 'start':
11
- echo sideber_begin($data);
12
- do_action('amp_sidebar_start');
13
- break;
14
- case 'end':
15
- do_action('amp_sidebar_end');
16
- echo sideber_end();
17
- break;
18
- case 'open-button':
19
- echo sidebar_opening_button($data);
20
- break;
21
- case 'close-button':
22
- echo sidebar_close_button($data);
23
- break;
24
- default:
25
- echo esc_html('action not found');
26
- break;
27
- }
28
- }
29
- }
30
- function sidebar_close_button($data=array() ){
31
- $id = 'sidebar';
32
- $class = 'amp-sidebar-close';
33
- if(isset($data['id'])){
34
- $id = $data['id'];
35
- }
36
- if(isset($data['class'])){
37
- $class .= $data['class'];
38
- }
39
- return '<div role="button" tabindex="0" on="tap:'.esc_attr( $id ).'.close" class="'.esc_attr( $class ).'">X</div>';
40
- }
41
- function sidebar_opening_button($data=array()){
42
- $id = 'sidebar';
43
- $class = 'amp-sidebar-button';
44
- if(isset($data['id'])){
45
- $id = $data['id'];
46
- }
47
- if(isset($data['class'])){
48
- $class = $data['class'];
49
- }
50
- return '<div on="tap:'.esc_attr( $id ).'.toggle" role="button" tabindex="0" class="'. esc_attr( $class ) .'">
51
- <a href="#" class="amp-sidebar-toggle">
52
- <span></span>
53
- <span></span>
54
- <span></span>
55
- </a>
56
- </div>';
57
- }
58
- function sideber_begin($data=array()){
59
- $attribute = '';
60
- if(count($data)>0){
61
- foreach ($data as $key => $value) {
62
- $attribute .= esc_attr($key).'="'.esc_attr($value).'" ';
63
- }
64
- }else{
65
- $attribute = "id='sidebar' layout='nodisplay' side='right'";
66
- }
67
- return '<amp-sidebar '. $attribute .'>';
68
- }
69
-
70
- function sideber_end(){
71
- return '</amp-sidebar>';
72
- }
73
-
74
- ampforwp_add_sidebar_scripts();
75
- function ampforwp_add_sidebar_scripts(){
76
- global $scriptComponent;
77
- if ( empty( $scriptComponent['amp-sidebar'] ) ) {
78
- $scriptComponent['amp-sidebar'] = 'https://cdn.ampproject.org/v0/amp-sidebar-0.1.js';
79
- }
80
  }
1
+ <?php
2
+ if(!function_exists('ampforwp_framework_get_sideabr')){
3
+ function ampforwp_framework_get_sideabr($data=array()){
4
+ if(!isset($data['action'])){
5
+ echo esc_attr('action not found');
6
+ }
7
+ $action = $data['action'];
8
+ unset($data['action']);
9
+ switch(strtolower($action)) {
10
+ case 'start':
11
+ echo sideber_begin($data);
12
+ do_action('amp_sidebar_start');
13
+ break;
14
+ case 'end':
15
+ do_action('amp_sidebar_end');
16
+ echo sideber_end();
17
+ break;
18
+ case 'open-button':
19
+ echo sidebar_opening_button($data);
20
+ break;
21
+ case 'close-button':
22
+ echo sidebar_close_button($data);
23
+ break;
24
+ default:
25
+ echo esc_html('action not found');
26
+ break;
27
+ }
28
+ }
29
+ }
30
+ function sidebar_close_button($data=array() ){
31
+ $id = 'sidebar';
32
+ $class = 'amp-sidebar-close';
33
+ if(isset($data['id'])){
34
+ $id = $data['id'];
35
+ }
36
+ if(isset($data['class'])){
37
+ $class .= $data['class'];
38
+ }
39
+ return '<div role="button" tabindex="0" on="tap:'.esc_attr( $id ).'.close" class="'.esc_attr( $class ).'">X</div>';
40
+ }
41
+ function sidebar_opening_button($data=array()){
42
+ $id = 'sidebar';
43
+ $class = 'amp-sidebar-button';
44
+ if(isset($data['id'])){
45
+ $id = $data['id'];
46
+ }
47
+ if(isset($data['class'])){
48
+ $class = $data['class'];
49
+ }
50
+ return '<div on="tap:'.esc_attr( $id ).'.toggle" role="button" tabindex="0" class="'. esc_attr( $class ) .'">
51
+ <a href="#" class="amp-sidebar-toggle">
52
+ <span></span>
53
+ <span></span>
54
+ <span></span>
55
+ </a>
56
+ </div>';
57
+ }
58
+ function sideber_begin($data=array()){
59
+ $attribute = '';
60
+ if(count($data)>0){
61
+ foreach ($data as $key => $value) {
62
+ $attribute .= esc_attr($key).'="'.esc_attr($value).'" ';
63
+ }
64
+ }else{
65
+ $attribute = "id='sidebar' layout='nodisplay' side='right'";
66
+ }
67
+ return '<amp-sidebar '. $attribute .'>';
68
+ }
69
+
70
+ function sideber_end(){
71
+ return '</amp-sidebar>';
72
+ }
73
+
74
+ ampforwp_add_sidebar_scripts();
75
+ function ampforwp_add_sidebar_scripts(){
76
+ global $scriptComponent;
77
+ if ( empty( $scriptComponent['amp-sidebar'] ) ) {
78
+ $scriptComponent['amp-sidebar'] = 'https://cdn.ampproject.org/v0/amp-sidebar-0.1.js';
79
+ }
80
  }
components/social-icons/fonts/icomoon.svg CHANGED
@@ -1,22 +1,22 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Generated by IcoMoon</metadata>
5
- <defs>
6
- <font id="icomoon" horiz-adv-x="1024">
7
- <font-face units-per-em="1024" ascent="960" descent="-64" />
8
- <missing-glyph horiz-adv-x="1024" />
9
- <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
- <glyph unicode="&#xf099;" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714c-25.143-36.571-56.571-69.143-92.571-95.429 0.571-8 0.571-16 0.571-24 0-244-185.714-525.143-525.143-525.143-104.571 0-201.714 30.286-283.429 82.857 14.857-1.714 29.143-2.286 44.571-2.286 86.286 0 165.714 29.143 229.143 78.857-81.143 1.714-149.143 54.857-172.571 128 11.429-1.714 22.857-2.857 34.857-2.857 16.571 0 33.143 2.286 48.571 6.286-84.571 17.143-148 91.429-148 181.143v2.286c24.571-13.714 53.143-22.286 83.429-23.429-49.714 33.143-82.286 89.714-82.286 153.714 0 34.286 9.143 65.714 25.143 93.143 90.857-112 227.429-185.143 380.571-193.143-2.857 13.714-4.571 28-4.571 42.286 0 101.714 82.286 184.571 184.571 184.571 53.143 0 101.143-22.286 134.857-58.286 41.714 8 81.714 23.429 117.143 44.571-13.714-42.857-42.857-78.857-81.143-101.714 37.143 4 73.143 14.286 106.286 28.571z" />
11
- <glyph unicode="&#xf09a;" glyph-name="facebook, facebook-f" horiz-adv-x="602" d="M548 944v-150.857h-89.714c-70.286 0-83.429-33.714-83.429-82.286v-108h167.429l-22.286-169.143h-145.143v-433.714h-174.857v433.714h-145.714v169.143h145.714v124.571c0 144.571 88.571 223.429 217.714 223.429 61.714 0 114.857-4.571 130.286-6.857z" />
12
- <glyph unicode="&#xf0d2;" glyph-name="pinterest" horiz-adv-x="878" d="M877.714 438.857c0-242.286-196.571-438.857-438.857-438.857-43.429 0-84.571 6.286-124.571 18.286 16.571 26.286 35.429 60 44.571 93.714 0 0 5.143 19.429 30.857 120.571 14.857-29.143 59.429-54.857 106.857-54.857 141.143 0 237.143 128.571 237.143 301.143 0 129.714-110.286 251.429-278.286 251.429-208 0-313.143-149.714-313.143-274.286 0-75.429 28.571-142.857 89.714-168 9.714-4 18.857 0 21.714 11.429 2.286 7.429 6.857 26.857 9.143 34.857 2.857 11.429 1.714 14.857-6.286 24.571-17.714 21.143-29.143 48-29.143 86.286 0 110.857 82.857 210.286 216 210.286 117.714 0 182.857-72 182.857-168.571 0-126.286-56-233.143-139.429-233.143-45.714 0-80 37.714-69.143 84.571 13.143 55.429 38.857 115.429 38.857 155.429 0 36-19.429 66.286-59.429 66.286-46.857 0-84.571-48.571-84.571-113.714 0 0 0-41.714 14.286-69.714-48-203.429-56.571-238.857-56.571-238.857-8-33.143-8.571-70.286-7.429-101.143-154.857 68-262.857 222.286-262.857 402.286 0 242.286 196.571 438.857 438.857 438.857s438.857-196.571 438.857-438.857z" />
13
- <glyph unicode="&#xf0d5;" glyph-name="google-plus" horiz-adv-x="1317" d="M821.143 429.143c0-239.429-160.571-409.143-402.286-409.143-231.429 0-418.857 187.429-418.857 418.857s187.429 418.857 418.857 418.857c113.143 0 207.429-41.143 280.571-109.714l-113.714-109.143c-30.857 29.714-85.143 64.571-166.857 64.571-142.857 0-259.429-118.286-259.429-264.571s116.571-264.571 259.429-264.571c165.714 0 228 119.429 237.714 180.571h-237.714v144h395.429c4-21.143 6.857-42.286 6.857-69.714zM1316.571 498.857v-120h-119.429v-119.429h-120v119.429h-119.429v120h119.429v119.429h120v-119.429h119.429z" />
14
- <glyph unicode="&#xf0e1;" glyph-name="linkedin" horiz-adv-x="878" d="M199.429 593.714v-566.286h-188.571v566.286h188.571zM211.429 768.571c0.571-54.286-40.571-97.714-106.286-97.714v0h-1.143c-63.429 0-104 43.429-104 97.714 0 55.429 42.286 97.714 106.286 97.714 64.571 0 104.571-42.286 105.143-97.714zM877.714 352v-324.571h-188v302.857c0 76-27.429 128-95.429 128-52 0-82.857-34.857-96.571-68.571-4.571-12.571-6.286-29.143-6.286-46.286v-316h-188c2.286 513.143 0 566.286 0 566.286h188v-82.286h-1.143c24.571 38.857 69.143 95.429 170.857 95.429 124 0 216.571-81.143 216.571-254.857z" />
15
- <glyph unicode="&#xf16a;" glyph-name="youtube-play" d="M406.286 306.286l276.571 142.857-276.571 144.571v-287.429zM512 798.857c215.429 0 358.286-10.286 358.286-10.286 20-2.286 64-2.286 102.857-43.429 0 0 31.429-30.857 40.571-101.714 10.857-82.857 10.286-165.714 10.286-165.714v-77.714s0.571-82.857-10.286-165.714c-9.143-70.286-40.571-101.714-40.571-101.714-38.857-40.571-82.857-40.571-102.857-42.857 0 0-142.857-10.857-358.286-10.857v0c-266.286 2.286-348 10.286-348 10.286-22.857 4-74.286 2.857-113.143 43.429 0 0-31.429 31.429-40.571 101.714-10.857 82.857-10.286 165.714-10.286 165.714v77.714s-0.571 82.857 10.286 165.714c9.143 70.857 40.571 101.714 40.571 101.714 38.857 41.143 82.857 41.143 102.857 43.429 0 0 142.857 10.286 358.286 10.286v0z" />
16
- <glyph unicode="&#xf16d;" glyph-name="instagram" horiz-adv-x="878" d="M585.143 438.857c0 80.571-65.714 146.286-146.286 146.286s-146.286-65.714-146.286-146.286 65.714-146.286 146.286-146.286 146.286 65.714 146.286 146.286zM664 438.857c0-124.571-100.571-225.143-225.143-225.143s-225.143 100.571-225.143 225.143 100.571 225.143 225.143 225.143 225.143-100.571 225.143-225.143zM725.714 673.143c0-29.143-23.429-52.571-52.571-52.571s-52.571 23.429-52.571 52.571 23.429 52.571 52.571 52.571 52.571-23.429 52.571-52.571zM438.857 798.857c-64 0-201.143 5.143-258.857-17.714-20-8-34.857-17.714-50.286-33.143s-25.143-30.286-33.143-50.286c-22.857-57.714-17.714-194.857-17.714-258.857s-5.143-201.143 17.714-258.857c8-20 17.714-34.857 33.143-50.286s30.286-25.143 50.286-33.143c57.714-22.857 194.857-17.714 258.857-17.714s201.143-5.143 258.857 17.714c20 8 34.857 17.714 50.286 33.143s25.143 30.286 33.143 50.286c22.857 57.714 17.714 194.857 17.714 258.857s5.143 201.143-17.714 258.857c-8 20-17.714 34.857-33.143 50.286s-30.286 25.143-50.286 33.143c-57.714 22.857-194.857 17.714-258.857 17.714zM877.714 438.857c0-60.571 0.571-120.571-2.857-181.143-3.429-70.286-19.429-132.571-70.857-184s-113.714-67.429-184-70.857c-60.571-3.429-120.571-2.857-181.143-2.857s-120.571-0.571-181.143 2.857c-70.286 3.429-132.571 19.429-184 70.857s-67.429 113.714-70.857 184c-3.429 60.571-2.857 120.571-2.857 181.143s-0.571 120.571 2.857 181.143c3.429 70.286 19.429 132.571 70.857 184s113.714 67.429 184 70.857c60.571 3.429 120.571 2.857 181.143 2.857s120.571 0.571 181.143-2.857c70.286-3.429 132.571-19.429 184-70.857s67.429-113.714 70.857-184c3.429-60.571 2.857-120.571 2.857-181.143z" />
17
- <glyph unicode="&#xf173;" glyph-name="tumblr" horiz-adv-x="624" d="M539.429 191.428l45.714-135.429c-17.143-25.714-94.857-54.857-164.571-56-207.429-3.429-285.714 147.429-285.714 253.714v310.857h-96v122.857c144 52 178.857 182.286 186.857 256.571 0.571 4.571 4.571 6.857 6.857 6.857h139.429v-242.286h190.286v-144h-190.857v-296c0-40 14.857-95.429 91.429-93.714 25.143 0.571 58.857 8 76.571 16.571z" />
18
- <glyph unicode="&#xf189;" glyph-name="vk" horiz-adv-x="1119" d="M1095.429 653.714c8.571-23.429-18.286-78.286-85.714-168-110.857-147.429-122.857-133.714-31.429-218.857 88-81.714 106.286-121.143 109.143-126.286 0 0 36.571-64-40.571-64.571l-146.286-2.286c-31.429-6.286-73.143 22.286-73.143 22.286-54.857 37.714-106.286 135.429-146.286 122.857 0 0-41.143-13.143-40-101.143 0.571-18.857-8.571-29.143-8.571-29.143s-10.286-10.857-30.286-12.571h-65.714c-144.571-9.143-272 124-272 124s-139.429 144-261.714 431.429c-8 18.857 0.571 28 0.571 28s8.571 10.857 32.571 10.857l156.571 1.143c14.857-2.286 25.143-10.286 25.143-10.286s9.143-6.286 13.714-18.286c25.714-64 58.857-122.286 58.857-122.286 57.143-117.714 96-137.714 118.286-125.714 0 0 29.143 17.714 22.857 160-2.286 51.429-16.571 74.857-16.571 74.857-13.143 17.714-37.714 22.857-48.571 24.571-8.571 1.143 5.714 21.714 24.571 30.857 28 13.714 77.714 14.286 136.571 13.714 46.286-0.571 59.429-3.429 77.143-7.429 54.286-13.143 36-63.429 36-184.571 0-38.857-7.429-93.143 20.571-110.857 12-8 41.714-1.143 114.857 123.429 0 0 34.286 59.429 61.143 128.571 4.571 12.571 14.286 17.714 14.286 17.714s9.143 5.143 21.714 3.429l164.571 1.143c49.714 6.286 57.714-16.571 57.714-16.571z" />
19
- <glyph unicode="&#xf232;" glyph-name="whatsapp" horiz-adv-x="878" d="M562.857 394.286c9.714 0 102.857-48.571 106.857-55.429 1.143-2.857 1.143-6.286 1.143-8.571 0-14.286-4.571-30.286-9.714-43.429-13.143-32-66.286-52.571-98.857-52.571-27.429 0-84 24-108.571 35.429-81.714 37.143-132.571 100.571-181.714 173.143-21.714 32-41.143 71.429-40.571 110.857v4.571c1.143 37.714 14.857 64.571 42.286 90.286 8.571 8 17.714 12.571 29.714 12.571 6.857 0 13.714-1.714 21.143-1.714 15.429 0 18.286-4.571 24-19.429 4-9.714 33.143-87.429 33.143-93.143 0-21.714-39.429-46.286-39.429-59.429 0-2.857 1.143-5.714 2.857-8.571 12.571-26.857 36.571-57.714 58.286-78.286 26.286-25.143 54.286-41.714 86.286-57.714 4-2.286 8-4 12.571-4 17.143 0 45.714 55.429 60.571 55.429zM446.857 91.428c197.714 0 358.857 161.143 358.857 358.857s-161.143 358.857-358.857 358.857-358.857-161.143-358.857-358.857c0-75.429 24-149.143 68.571-210.286l-45.143-133.143 138.286 44c58.286-38.286 127.429-59.429 197.143-59.429zM446.857 881.143c237.714 0 430.857-193.143 430.857-430.857s-193.143-430.857-430.857-430.857c-72.571 0-144.571 18.286-208.571 53.714l-238.286-76.571 77.714 231.429c-40.571 66.857-61.714 144-61.714 222.286 0 237.714 193.143 430.857 430.857 430.857z" />
20
- <glyph unicode="&#xf281;" glyph-name="reddit-alien" d="M1024 467.428c0-44.571-25.143-82.857-62.286-101.714 4.571-17.714 6.857-36 6.857-54.857 0-180.571-204-326.857-455.429-326.857-250.857 0-454.857 146.286-454.857 326.857 0 18.286 2.286 36.571 6.286 53.714-38.286 18.857-64.571 57.714-64.571 102.857 0 62.857 50.857 113.714 113.714 113.714 32.571 0 61.714-13.714 82.857-36 77.143 53.714 180 88.571 294.286 92.571l66.286 297.714c2.286 10.286 13.143 17.143 23.429 14.857l210.857-46.286c13.714 27.429 42.857 46.857 76 46.857 47.429 0 85.714-38.286 85.714-85.143 0-47.429-38.286-85.714-85.714-85.714-46.857 0-85.143 38.286-85.143 85.143l-190.857 42.286-59.429-269.714c114.857-3.429 218.857-37.714 296.571-91.429 20.571 21.714 49.714 34.857 81.714 34.857 62.857 0 113.714-50.857 113.714-113.714zM238.857 353.714c0-47.429 38.286-85.714 85.143-85.714 47.429 0 85.714 38.286 85.714 85.714 0 46.857-38.286 85.143-85.714 85.143-46.857 0-85.143-38.286-85.143-85.143zM701.714 150.857c8.571 8.571 8.571 21.143 0 29.714-8 8-21.143 8-29.143 0-34.286-34.857-108-46.857-160.571-46.857s-126.286 12-160.571 46.857c-8 8-21.143 8-29.143 0-8.571-8-8.571-21.143 0-29.714 54.286-54.286 158.857-58.286 189.714-58.286s135.429 4 189.714 58.286zM700 268c46.857 0 85.143 38.286 85.143 85.714 0 46.857-38.286 85.143-85.143 85.143-47.429 0-85.714-38.286-85.714-85.143 0-47.429 38.286-85.714 85.714-85.714z" />
21
- <glyph unicode="&#xf2ac;" glyph-name="snapchat-ghost" horiz-adv-x="951" d="M484.571 877.714c102.857 1.143 188-56.571 230.857-149.143 13.143-28 15.429-71.429 15.429-102.286 0-36.571-2.857-72.571-5.143-109.143 4.571-2.286 10.857-4 16-4 20.571 0 37.714 15.429 58.286 15.429 19.429 0 47.429-13.714 47.429-36.571 0-54.857-114.857-44.571-114.857-92.571 0-8.571 3.429-16.571 6.857-24.571 27.429-60 79.429-117.714 141.143-143.429 14.857-6.286 29.714-9.714 45.714-13.143 10.286-2.286 16-9.714 16-20 0-38.857-98.857-54.857-125.143-58.857-11.429-17.714-2.857-59.429-33.143-59.429-23.429 0-46.857 7.429-72 7.429-12 0-24-0.571-35.429-2.857-68-11.429-90.857-84.571-202.286-84.571-107.429 0-133.143 73.143-199.429 84.571-12 2.286-24 2.857-36 2.857-25.714 0-50.286-8.571-70.857-8.571-32 0-22.286 42.286-34.286 60.571-26.286 4-125.143 20-125.143 58.857 0 10.286 5.714 17.714 16 20 16 3.429 30.857 6.857 45.714 13.143 61.143 25.143 114.286 83.429 141.143 143.429 3.429 8 6.857 16 6.857 24.571 0 48-115.429 38.857-115.429 92 0 22.286 26.286 36.571 46.286 36.571 17.714 0 35.429-14.857 57.714-14.857 6.286 0 12.571 1.143 18.286 4-2.286 36-5.143 72-5.143 108.571 0 30.857 2.286 74.857 15.429 102.857 50.286 108.571 135.429 148 249.143 149.143z" />
22
  </font></defs></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="icomoon" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xf099;" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714c-25.143-36.571-56.571-69.143-92.571-95.429 0.571-8 0.571-16 0.571-24 0-244-185.714-525.143-525.143-525.143-104.571 0-201.714 30.286-283.429 82.857 14.857-1.714 29.143-2.286 44.571-2.286 86.286 0 165.714 29.143 229.143 78.857-81.143 1.714-149.143 54.857-172.571 128 11.429-1.714 22.857-2.857 34.857-2.857 16.571 0 33.143 2.286 48.571 6.286-84.571 17.143-148 91.429-148 181.143v2.286c24.571-13.714 53.143-22.286 83.429-23.429-49.714 33.143-82.286 89.714-82.286 153.714 0 34.286 9.143 65.714 25.143 93.143 90.857-112 227.429-185.143 380.571-193.143-2.857 13.714-4.571 28-4.571 42.286 0 101.714 82.286 184.571 184.571 184.571 53.143 0 101.143-22.286 134.857-58.286 41.714 8 81.714 23.429 117.143 44.571-13.714-42.857-42.857-78.857-81.143-101.714 37.143 4 73.143 14.286 106.286 28.571z" />
11
+ <glyph unicode="&#xf09a;" glyph-name="facebook, facebook-f" horiz-adv-x="602" d="M548 944v-150.857h-89.714c-70.286 0-83.429-33.714-83.429-82.286v-108h167.429l-22.286-169.143h-145.143v-433.714h-174.857v433.714h-145.714v169.143h145.714v124.571c0 144.571 88.571 223.429 217.714 223.429 61.714 0 114.857-4.571 130.286-6.857z" />
12
+ <glyph unicode="&#xf0d2;" glyph-name="pinterest" horiz-adv-x="878" d="M877.714 438.857c0-242.286-196.571-438.857-438.857-438.857-43.429 0-84.571 6.286-124.571 18.286 16.571 26.286 35.429 60 44.571 93.714 0 0 5.143 19.429 30.857 120.571 14.857-29.143 59.429-54.857 106.857-54.857 141.143 0 237.143 128.571 237.143 301.143 0 129.714-110.286 251.429-278.286 251.429-208 0-313.143-149.714-313.143-274.286 0-75.429 28.571-142.857 89.714-168 9.714-4 18.857 0 21.714 11.429 2.286 7.429 6.857 26.857 9.143 34.857 2.857 11.429 1.714 14.857-6.286 24.571-17.714 21.143-29.143 48-29.143 86.286 0 110.857 82.857 210.286 216 210.286 117.714 0 182.857-72 182.857-168.571 0-126.286-56-233.143-139.429-233.143-45.714 0-80 37.714-69.143 84.571 13.143 55.429 38.857 115.429 38.857 155.429 0 36-19.429 66.286-59.429 66.286-46.857 0-84.571-48.571-84.571-113.714 0 0 0-41.714 14.286-69.714-48-203.429-56.571-238.857-56.571-238.857-8-33.143-8.571-70.286-7.429-101.143-154.857 68-262.857 222.286-262.857 402.286 0 242.286 196.571 438.857 438.857 438.857s438.857-196.571 438.857-438.857z" />
13
+ <glyph unicode="&#xf0d5;" glyph-name="google-plus" horiz-adv-x="1317" d="M821.143 429.143c0-239.429-160.571-409.143-402.286-409.143-231.429 0-418.857 187.429-418.857 418.857s187.429 418.857 418.857 418.857c113.143 0 207.429-41.143 280.571-109.714l-113.714-109.143c-30.857 29.714-85.143 64.571-166.857 64.571-142.857 0-259.429-118.286-259.429-264.571s116.571-264.571 259.429-264.571c165.714 0 228 119.429 237.714 180.571h-237.714v144h395.429c4-21.143 6.857-42.286 6.857-69.714zM1316.571 498.857v-120h-119.429v-119.429h-120v119.429h-119.429v120h119.429v119.429h120v-119.429h119.429z" />
14
+ <glyph unicode="&#xf0e1;" glyph-name="linkedin" horiz-adv-x="878" d="M199.429 593.714v-566.286h-188.571v566.286h188.571zM211.429 768.571c0.571-54.286-40.571-97.714-106.286-97.714v0h-1.143c-63.429 0-104 43.429-104 97.714 0 55.429 42.286 97.714 106.286 97.714 64.571 0 104.571-42.286 105.143-97.714zM877.714 352v-324.571h-188v302.857c0 76-27.429 128-95.429 128-52 0-82.857-34.857-96.571-68.571-4.571-12.571-6.286-29.143-6.286-46.286v-316h-188c2.286 513.143 0 566.286 0 566.286h188v-82.286h-1.143c24.571 38.857 69.143 95.429 170.857 95.429 124 0 216.571-81.143 216.571-254.857z" />
15
+ <glyph unicode="&#xf16a;" glyph-name="youtube-play" d="M406.286 306.286l276.571 142.857-276.571 144.571v-287.429zM512 798.857c215.429 0 358.286-10.286 358.286-10.286 20-2.286 64-2.286 102.857-43.429 0 0 31.429-30.857 40.571-101.714 10.857-82.857 10.286-165.714 10.286-165.714v-77.714s0.571-82.857-10.286-165.714c-9.143-70.286-40.571-101.714-40.571-101.714-38.857-40.571-82.857-40.571-102.857-42.857 0 0-142.857-10.857-358.286-10.857v0c-266.286 2.286-348 10.286-348 10.286-22.857 4-74.286 2.857-113.143 43.429 0 0-31.429 31.429-40.571 101.714-10.857 82.857-10.286 165.714-10.286 165.714v77.714s-0.571 82.857 10.286 165.714c9.143 70.857 40.571 101.714 40.571 101.714 38.857 41.143 82.857 41.143 102.857 43.429 0 0 142.857 10.286 358.286 10.286v0z" />
16
+ <glyph unicode="&#xf16d;" glyph-name="instagram" horiz-adv-x="878" d="M585.143 438.857c0 80.571-65.714 146.286-146.286 146.286s-146.286-65.714-146.286-146.286 65.714-146.286 146.286-146.286 146.286 65.714 146.286 146.286zM664 438.857c0-124.571-100.571-225.143-225.143-225.143s-225.143 100.571-225.143 225.143 100.571 225.143 225.143 225.143 225.143-100.571 225.143-225.143zM725.714 673.143c0-29.143-23.429-52.571-52.571-52.571s-52.571 23.429-52.571 52.571 23.429 52.571 52.571 52.571 52.571-23.429 52.571-52.571zM438.857 798.857c-64 0-201.143 5.143-258.857-17.714-20-8-34.857-17.714-50.286-33.143s-25.143-30.286-33.143-50.286c-22.857-57.714-17.714-194.857-17.714-258.857s-5.143-201.143 17.714-258.857c8-20 17.714-34.857 33.143-50.286s30.286-25.143 50.286-33.143c57.714-22.857 194.857-17.714 258.857-17.714s201.143-5.143 258.857 17.714c20 8 34.857 17.714 50.286 33.143s25.143 30.286 33.143 50.286c22.857 57.714 17.714 194.857 17.714 258.857s5.143 201.143-17.714 258.857c-8 20-17.714 34.857-33.143 50.286s-30.286 25.143-50.286 33.143c-57.714 22.857-194.857 17.714-258.857 17.714zM877.714 438.857c0-60.571 0.571-120.571-2.857-181.143-3.429-70.286-19.429-132.571-70.857-184s-113.714-67.429-184-70.857c-60.571-3.429-120.571-2.857-181.143-2.857s-120.571-0.571-181.143 2.857c-70.286 3.429-132.571 19.429-184 70.857s-67.429 113.714-70.857 184c-3.429 60.571-2.857 120.571-2.857 181.143s-0.571 120.571 2.857 181.143c3.429 70.286 19.429 132.571 70.857 184s113.714 67.429 184 70.857c60.571 3.429 120.571 2.857 181.143 2.857s120.571 0.571 181.143-2.857c70.286-3.429 132.571-19.429 184-70.857s67.429-113.714 70.857-184c3.429-60.571 2.857-120.571 2.857-181.143z" />
17
+ <glyph unicode="&#xf173;" glyph-name="tumblr" horiz-adv-x="624" d="M539.429 191.428l45.714-135.429c-17.143-25.714-94.857-54.857-164.571-56-207.429-3.429-285.714 147.429-285.714 253.714v310.857h-96v122.857c144 52 178.857 182.286 186.857 256.571 0.571 4.571 4.571 6.857 6.857 6.857h139.429v-242.286h190.286v-144h-190.857v-296c0-40 14.857-95.429 91.429-93.714 25.143 0.571 58.857 8 76.571 16.571z" />
18
+ <glyph unicode="&#xf189;" glyph-name="vk" horiz-adv-x="1119" d="M1095.429 653.714c8.571-23.429-18.286-78.286-85.714-168-110.857-147.429-122.857-133.714-31.429-218.857 88-81.714 106.286-121.143 109.143-126.286 0 0 36.571-64-40.571-64.571l-146.286-2.286c-31.429-6.286-73.143 22.286-73.143 22.286-54.857 37.714-106.286 135.429-146.286 122.857 0 0-41.143-13.143-40-101.143 0.571-18.857-8.571-29.143-8.571-29.143s-10.286-10.857-30.286-12.571h-65.714c-144.571-9.143-272 124-272 124s-139.429 144-261.714 431.429c-8 18.857 0.571 28 0.571 28s8.571 10.857 32.571 10.857l156.571 1.143c14.857-2.286 25.143-10.286 25.143-10.286s9.143-6.286 13.714-18.286c25.714-64 58.857-122.286 58.857-122.286 57.143-117.714 96-137.714 118.286-125.714 0 0 29.143 17.714 22.857 160-2.286 51.429-16.571 74.857-16.571 74.857-13.143 17.714-37.714 22.857-48.571 24.571-8.571 1.143 5.714 21.714 24.571 30.857 28 13.714 77.714 14.286 136.571 13.714 46.286-0.571 59.429-3.429 77.143-7.429 54.286-13.143 36-63.429 36-184.571 0-38.857-7.429-93.143 20.571-110.857 12-8 41.714-1.143 114.857 123.429 0 0 34.286 59.429 61.143 128.571 4.571 12.571 14.286 17.714 14.286 17.714s9.143 5.143 21.714 3.429l164.571 1.143c49.714 6.286 57.714-16.571 57.714-16.571z" />
19
+ <glyph unicode="&#xf232;" glyph-name="whatsapp" horiz-adv-x="878" d="M562.857 394.286c9.714 0 102.857-48.571 106.857-55.429 1.143-2.857 1.143-6.286 1.143-8.571 0-14.286-4.571-30.286-9.714-43.429-13.143-32-66.286-52.571-98.857-52.571-27.429 0-84 24-108.571 35.429-81.714 37.143-132.571 100.571-181.714 173.143-21.714 32-41.143 71.429-40.571 110.857v4.571c1.143 37.714 14.857 64.571 42.286 90.286 8.571 8 17.714 12.571 29.714 12.571 6.857 0 13.714-1.714 21.143-1.714 15.429 0 18.286-4.571 24-19.429 4-9.714 33.143-87.429 33.143-93.143 0-21.714-39.429-46.286-39.429-59.429 0-2.857 1.143-5.714 2.857-8.571 12.571-26.857 36.571-57.714 58.286-78.286 26.286-25.143 54.286-41.714 86.286-57.714 4-2.286 8-4 12.571-4 17.143 0 45.714 55.429 60.571 55.429zM446.857 91.428c197.714 0 358.857 161.143 358.857 358.857s-161.143 358.857-358.857 358.857-358.857-161.143-358.857-358.857c0-75.429 24-149.143 68.571-210.286l-45.143-133.143 138.286 44c58.286-38.286 127.429-59.429 197.143-59.429zM446.857 881.143c237.714 0 430.857-193.143 430.857-430.857s-193.143-430.857-430.857-430.857c-72.571 0-144.571 18.286-208.571 53.714l-238.286-76.571 77.714 231.429c-40.571 66.857-61.714 144-61.714 222.286 0 237.714 193.143 430.857 430.857 430.857z" />
20
+ <glyph unicode="&#xf281;" glyph-name="reddit-alien" d="M1024 467.428c0-44.571-25.143-82.857-62.286-101.714 4.571-17.714 6.857-36 6.857-54.857 0-180.571-204-326.857-455.429-326.857-250.857 0-454.857 146.286-454.857 326.857 0 18.286 2.286 36.571 6.286 53.714-38.286 18.857-64.571 57.714-64.571 102.857 0 62.857 50.857 113.714 113.714 113.714 32.571 0 61.714-13.714 82.857-36 77.143 53.714 180 88.571 294.286 92.571l66.286 297.714c2.286 10.286 13.143 17.143 23.429 14.857l210.857-46.286c13.714 27.429 42.857 46.857 76 46.857 47.429 0 85.714-38.286 85.714-85.143 0-47.429-38.286-85.714-85.714-85.714-46.857 0-85.143 38.286-85.143 85.143l-190.857 42.286-59.429-269.714c114.857-3.429 218.857-37.714 296.571-91.429 20.571 21.714 49.714 34.857 81.714 34.857 62.857 0 113.714-50.857 113.714-113.714zM238.857 353.714c0-47.429 38.286-85.714 85.143-85.714 47.429 0 85.714 38.286 85.714 85.714 0 46.857-38.286 85.143-85.714 85.143-46.857 0-85.143-38.286-85.143-85.143zM701.714 150.857c8.571 8.571 8.571 21.143 0 29.714-8 8-21.143 8-29.143 0-34.286-34.857-108-46.857-160.571-46.857s-126.286 12-160.571 46.857c-8 8-21.143 8-29.143 0-8.571-8-8.571-21.143 0-29.714 54.286-54.286 158.857-58.286 189.714-58.286s135.429 4 189.714 58.286zM700 268c46.857 0 85.143 38.286 85.143 85.714 0 46.857-38.286 85.143-85.143 85.143-47.429 0-85.714-38.286-85.714-85.143 0-47.429 38.286-85.714 85.714-85.714z" />
21
+ <glyph unicode="&#xf2ac;" glyph-name="snapchat-ghost" horiz-adv-x="951" d="M484.571 877.714c102.857 1.143 188-56.571 230.857-149.143 13.143-28 15.429-71.429 15.429-102.286 0-36.571-2.857-72.571-5.143-109.143 4.571-2.286 10.857-4 16-4 20.571 0 37.714 15.429 58.286 15.429 19.429 0 47.429-13.714 47.429-36.571 0-54.857-114.857-44.571-114.857-92.571 0-8.571 3.429-16.571 6.857-24.571 27.429-60 79.429-117.714 141.143-143.429 14.857-6.286 29.714-9.714 45.714-13.143 10.286-2.286 16-9.714 16-20 0-38.857-98.857-54.857-125.143-58.857-11.429-17.714-2.857-59.429-33.143-59.429-23.429 0-46.857 7.429-72 7.429-12 0-24-0.571-35.429-2.857-68-11.429-90.857-84.571-202.286-84.571-107.429 0-133.143 73.143-199.429 84.571-12 2.286-24 2.857-36 2.857-25.714 0-50.286-8.571-70.857-8.571-32 0-22.286 42.286-34.286 60.571-26.286 4-125.143 20-125.143 58.857 0 10.286 5.714 17.714 16 20 16 3.429 30.857 6.857 45.714 13.143 61.143 25.143 114.286 83.429 141.143 143.429 3.429 8 6.857 16 6.857 24.571 0 48-115.429 38.857-115.429 92 0 22.286 26.286 36.571 46.286 36.571 17.714 0 35.429-14.857 57.714-14.857 6.286 0 12.571 1.143 18.286 4-2.286 36-5.143 72-5.143 108.571 0 30.857 2.286 74.857 15.429 102.857 50.286 108.571 135.429 148 249.143 149.143z" />
22
  </font></defs></svg>
components/social-icons/social-icons.php CHANGED
@@ -1,231 +1,231 @@
1
- <?php
2
-
3
- function ampforwp_framework_get_social_icons($selected_social_icons){
4
-
5
- /* TODO:
6
- 1: Connect with options panel
7
- 2: Add icons for email, line and whatsapp
8
- */
9
- global $post, $redux_builder_amp;
10
- $twitter_url = '';
11
- $thumb_id = '';
12
- $image = '';
13
- $post_id = $post->ID;
14
- $desc = $post->post_excerpt;
15
- if (ampforwp_has_post_thumbnail( $post_id ) ){
16
- $image = ampforwp_get_post_thumbnail( 'url', 'full' );
17
- }
18
-
19
- if(!ampforwp_is_associative($selected_social_icons)){
20
- $icons_list_temp = array();
21
- foreach ($selected_social_icons as $key => $icons) {
22
- $icons_list_temp[$icons] = '';
23
- }
24
- $selected_social_icons = $icons_list_temp;
25
- }
26
-
27
- $social_icons_names = array();
28
- $url = get_the_permalink();
29
- $title = esc_attr( htmlspecialchars( get_the_title() ) );
30
- if(isset($redux_builder_amp['enable-single-twitter-share-link']) && $redux_builder_amp['enable-single-twitter-share-link']){
31
- $twitter_url = get_the_permalink();
32
- }
33
- else
34
- $twitter_url = wp_get_shortlink();
35
- foreach ($selected_social_icons as $key => $value) {
36
- $social_icons_names[] = $key;
37
- }
38
-
39
-
40
- if( isset($selected_social_icons['twitter'] ) && null == $selected_social_icons['twitter'] ){
41
- $selected_social_icons['twitter'] = 'https://twitter.com/intent/tweet?url='. $twitter_url.'&text='. $title .' ';
42
- //https://twitter.com/intent/tweet?url={url}&text={title}&via={via}&hashtags={hashtags}
43
- }
44
-
45
- if( isset($selected_social_icons['facebook'] ) && null == $selected_social_icons['facebook'] ){
46
- $selected_social_icons['facebook'] = 'https://www.facebook.com/sharer.php?u='. $url. '';
47
- //or https://www.facebook.com/dialog/share?app_id={app_id}&display=page&href={url}&redirect_uri={redirect_url}
48
- }
49
- if( isset($selected_social_icons['pinterest'] ) && null == $selected_social_icons['pinterest'] ){
50
- $selected_social_icons['pinterest'] = 'https://pinterest.com/pin/create/bookmarklet/?media='.$image.'&url='.$url.'&description='.$title.'';
51
- //https://pinterest.com/pin/create/bookmarklet/?media={img}&url={url}&is_video={is_video}&description={title}
52
- }
53
- if( isset($selected_social_icons['google-plus']) && $selected_social_icons['google-plus'] == null){
54
- $selected_social_icons['google-plus'] = 'https://plus.google.com/share?url='. $url. '';
55
- //https://plus.google.com/share?url={url}
56
- }
57
- if( isset($selected_social_icons['linkedin']) && $selected_social_icons['linkedin'] == null){
58
- $selected_social_icons['linkedin'] = 'https://www.linkedin.com/shareArticle?url='. $url. '&title='. $title .'';
59
- //https://www.linkedin.com/shareArticle?url={url}&title={title}
60
- }
61
-
62
- if( isset($selected_social_icons['reddit']) && $selected_social_icons['reddit'] == null){
63
- $selected_social_icons['reddit'] = 'https://reddit.com/submit?url='. $url. '&title='. $title .'';
64
- //https://reddit.com/submit?url={url}&title={title}
65
- }
66
- if( isset($selected_social_icons['VKontakte']) && $selected_social_icons['VKontakte'] == null){
67
- $selected_social_icons['VKontakte'] = 'https://vk.com/share.php?url='. $url. '';
68
- //http://vk.com/share.php?url={url}
69
- }
70
- if( isset($selected_social_icons['Odnoklassniki']) && $selected_social_icons['Odnoklassniki'] == null){
71
- $selected_social_icons['Odnoklassniki'] = 'https://ok.ru/dk?st.cmd=addShare&st._surl='. $url. '';
72
- }
73
-
74
- if( isset($selected_social_icons['tumblr']) && $selected_social_icons['tumblr'] == null){
75
- $selected_social_icons['tumblr'] = 'https://www.tumblr.com/widgets/share/tool?canonicalUrl='. $url. '&title='. $title .'&caption='.$desc.'';
76
- //https://www.tumblr.com/widgets/share/tool?canonicalUrl={url}&title={title}&caption={desc}
77
- }
78
- if ( isset($selected_social_icons['telegram']) && null == $selected_social_icons['telegram'] ) {
79
- $selected_social_icons['telegram'] = 'https://telegram.me/share/url?url='. $url. '&text='. $title .'';
80
- //https://telegram.me/share/url?url={url}&text={title}
81
- }
82
- if ( isset($selected_social_icons['digg']) && null == $selected_social_icons['digg'] ) {
83
- $selected_social_icons['digg'] = 'http://digg.com/submit?url='. $url. '&title='. $title .'';
84
- //http://digg.com/submit?url={url}&title={title}
85
- }
86
- if ( isset($selected_social_icons['StumbleUpon']) && null == $selected_social_icons['StumbleUpon'] ) {
87
- $selected_social_icons['StumbleUpon'] = 'http://www.stumbleupon.com/submit?url='. $url. '&title='. $title .'';
88
- //http://www.stumbleupon.com/submit?url={url}&title={title}
89
- }
90
- if ( isset($selected_social_icons['Wechat']) && null == $selected_social_icons['Wechat'] ) {
91
- $selected_social_icons['Wechat'] = 'http://api.addthis.com/oexchange/0.8/forward/wechat/offer?url='. $url. '';
92
- // http://api.addthis.com/oexchange/0.8/forward/wechat/offer?url={url}
93
- }
94
- if ( isset($selected_social_icons['Viber']) && null == $selected_social_icons['Viber'] ) {
95
- $selected_social_icons['Viber'] = 'viber://forward?text='. $url. '';
96
- //viber://forward?text={url}
97
- }
98
-
99
- ?>
100
- <?php do_action('ampforwp_before_social_icons_hook'); ?>
101
- <div class="amp-social">
102
- <ul>
103
- <?php if( ( in_array( 'twitter' , $selected_social_icons,true) || in_array('twitter', $social_icons_names,true) ) && !empty($selected_social_icons['twitter']) ) { ?>
104
- <a href="<?php echo $selected_social_icons['twitter'] ?>" target ="_blank"><li class="icon-twitter"></li></a>
105
- <?php } ?>
106
-
107
- <?php if( (in_array('facebook', $selected_social_icons,true) || in_array('facebook', $social_icons_names,true)) && !empty($selected_social_icons['facebook']) ) { ?>
108
- <a href="<?php echo $selected_social_icons['facebook'] ?>" target ="_blank"><li class="icon-facebook"></li></a>
109
- <?php } ?>
110
-
111
- <?php if( ( in_array( 'pinterest' , $selected_social_icons,true ) || in_array( 'pinterest', $social_icons_names,true )) && !empty($selected_social_icons['pinterest']) ) { ?>
112
- <a href="<?php echo $selected_social_icons['pinterest'] ?>" target ="_blank"><li class="icon-pinterest"></li></a>
113
- <?php } ?>
114
-
115
- <?php if( (in_array( 'google-plus' , $selected_social_icons,true ) || in_array( 'google-plus' , $social_icons_names,true )) && !empty($selected_social_icons['google-plus']) ) { ?>
116
- <a href="<?php echo $selected_social_icons['google-plus'] ?>" target ="_blank"><li class="icon-google-plus"></li></a>
117
- <?php } ?>
118
-
119
- <?php if( (in_array( 'linkedin' , $selected_social_icons,true ) || in_array( 'linkedin' , $social_icons_names,true )) && !empty($selected_social_icons['linkedin']) ) { ?>
120
- <a href="<?php echo $selected_social_icons['linkedin'] ?>" target ="_blank"><li class="icon-linkedin"></li></a>
121
- <?php } ?>
122
-
123
- <?php if( (in_array( 'youtube' , $selected_social_icons,true ) || in_array( 'youtube' , $social_icons_names,true )) && !empty($selected_social_icons['youtube']) ) { ?>
124
- <a href="<?php echo $selected_social_icons['youtube'] ?>" target ="_blank"><li class="icon-youtube-play"></li></a>
125
- <?php } ?>
126
-
127
- <?php if( (in_array( 'instagram' , $selected_social_icons,true ) || in_array( 'instagram' , $social_icons_names,true )) && !empty($selected_social_icons['instagram']) ) { ?>
128
- <a href="<?php echo $selected_social_icons['instagram'] ?>" target ="_blank"> <li class="icon-instagram"></li></a>
129
- <?php } ?>
130
-
131
- <?php if( ( in_array( 'reddit' , $selected_social_icons,true ) || in_array( 'reddit' , $social_icons_names,true )) && !empty($selected_social_icons['reddit']) ) { ?>
132
- <a href="<?php echo $selected_social_icons['reddit'] ?>" target ="_blank"><li class="icon-reddit-alien"></li></a>
133
- <?php } ?>
134
-
135
- <?php if( ( in_array( 'VKontakte' , $selected_social_icons,true ) || in_array( 'VKontakte' , $social_icons_names,true ) ) && !empty($selected_social_icons['VKontakte']) ) { ?>
136
- <a href="<?php echo $selected_social_icons['VKontakte'] ?>" target ="_blank"><li class="icon-vk"></li></a>
137
- <?php } ?>
138
-
139
- <?php if( ( in_array( 'Odnoklassniki' , $selected_social_icons,true ) || in_array( 'Odnoklassniki' , $social_icons_names,true ) ) && !empty($selected_social_icons['Odnoklassniki']) ) { ?>
140
- <a href="<?php echo esc_url($selected_social_icons['Odnoklassniki']) ?>" target ="_blank"><li class="icon-Odnoklassniki"></li></a>
141
- <?php } ?>
142
-
143
- <?php if( (in_array( 'snapchat' , $selected_social_icons,true ) || in_array( 'snapchat' , $social_icons_names,true ) ) && !empty($selected_social_icons['snapchat']) ) { ?>
144
- <a href="<?php echo $selected_social_icons['snapchat'] ?>" target ="_blank"><li class="icon-snapchat-ghost"></li></a>
145
- <?php } ?>
146
-
147
- <?php if( (in_array( 'tumblr' , $selected_social_icons,true ) || in_array( 'tumblr' , $social_icons_names,true )) && !empty($selected_social_icons['tumblr']) ) { ?>
148
- <a href="<?php echo $selected_social_icons['tumblr'] ?>" target ="_blank"><li class="icon-tumblr"></li></a>
149
- <?php } ?>
150
-
151
- <?php if ( (in_array( 'telegram' , $selected_social_icons,true ) || in_array( 'telegram' , $social_icons_names,true )) && ! empty($selected_social_icons['telegram']) ) { ?>
152
- <a href="<?php echo esc_url($selected_social_icons['telegram']); ?>" target ="_blank"><li class="icon-telegram"></li></a>
153
- <?php } ?>
154
-
155
- <?php if ( (in_array( 'digg' , $selected_social_icons,true ) || in_array( 'digg' , $social_icons_names,true )) && ! empty($selected_social_icons['digg']) ) { ?>
156
- <a href="<?php echo esc_url($selected_social_icons['digg']); ?>" target ="_blank"><li class="icon-digg"></li></a>
157
- <?php } ?>
158
-
159
- <?php if ( (in_array( 'StumbleUpon' , $selected_social_icons,true ) || in_array( 'StumbleUpon' , $social_icons_names,true )) && ! empty($selected_social_icons['StumbleUpon']) ) { ?>
160
- <a href="<?php echo esc_url($selected_social_icons['StumbleUpon']); ?>" target ="_blank"><li class="icon-StumbleUpon"></li></a>
161
- <?php } ?>
162
-
163
- <?php if ( (in_array( 'Wechat' , $selected_social_icons,true ) || in_array( 'Wechat' , $social_icons_names,true )) && !empty($selected_social_icons['Wechat']) ) { ?>
164
- <a href="<?php echo esc_url($selected_social_icons['Wechat']); ?>" target ="_blank"><li class="icon-Wechat"></li></a>
165
- <?php } ?>
166
-
167
- <?php if ( (in_array( 'Viber' , $selected_social_icons,true ) || in_array( 'Viber' , $social_icons_names,true )) && ! empty($selected_social_icons['Viber']) ) { ?>
168
- <a href="<?php echo ($selected_social_icons['Viber']); ?>" target ="_blank"><li class="icon-Viber"></li></a>
169
- <?php } ?>
170
-
171
- <?php if( (in_array( 'facebook-like' , $selected_social_icons,true ) || in_array( 'facebook-like' , $social_icons_names,true )) ) { ?>
172
- <amp-facebook-like width=90 height=28
173
- layout="fixed"
174
- data-size="large"
175
- data-layout="button_count"
176
- data-href="<?php echo esc_url(get_the_permalink()); ?>">
177
- </amp-facebook-like>
178
- <?php } ?>
179
- </ul>
180
- </div>
181
- <?php do_action('ampforwp_after_social_icons_hook'); ?>
182
- <?php
183
- }
184
-
185
- function ampforwp_is_associative(array $arr)
186
- {
187
- if (array() === $arr) return false;
188
- return array_keys($arr) !== range(0, count($arr) - 1);
189
- }
190
- //Load styling for social icons
191
-
192
- add_action('amp_post_template_css','amp_social_styles',11);
193
-
194
-
195
- function amp_social_styles(){ ?>
196
- @font-face {
197
- font-family: 'icomoon';
198
- src: url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.eot');
199
- src: url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.eot') format('embedded-opentype'),
200
- url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.ttf') format('truetype'),
201
- url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.woff') format('woff'),
202
- url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.svg') format('svg');
203
- font-weight: normal;
204
- font-style: normal;
205
- }
206
-
207
- [class^="icon-"], [class*=" icon-"]{ font-family: 'icomoon'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1;
208
- -webkit-font-smoothing: antialiased;
209
- -moz-osx-font-smoothing: grayscale;
210
- }
211
-
212
- .icon-twitter:before{ content: "\f099";background:#1da1f2 }
213
- .icon-facebook:before{ content: "\f09a";background:#3b5998 }
214
- .icon-facebook-f:before{ content: "\f09a";background:#3b5998 }
215
- .icon-pinterest:before{ content: "\f0d2";background:#bd081c }
216
- .icon-google-plus:before{ content: "\f0d5";background:#dd4b39 }
217
- .icon-linkedin:before{ content: "\f0e1";background:#0077b5 }
218
- .icon-youtube-play:before{ content: "\f16a";background:#cd201f }
219
- .icon-instagram:before{ content: "\f16d";background:#c13584 }
220
- .icon-tumblr:before{ content: "\f173";background:#35465c }
221
- .icon-vk:before{ content: "\f189";background:#45668e }
222
- .icon-whatsapp:before{ content: "\f232";background:#075e54 }
223
- .icon-reddit-alien:before{ content: "\f281";background:#ff4500 }
224
- .icon-snapchat-ghost:before{ content: "\f2ac"; background:#fffc00 }
225
- .amp-social{ font-size: 15px; display: inline-block; }
226
- .amp-social ul{ list-style-type:none; padding:0;margin:0; text-align:center }
227
- .amp-social li{ box-sizing: initial; display:inline-block; }
228
- .amp-social li:before{box-sizing: initial;color: #fff;display: inline-block;width: 18px;height: 18px;line-height: 18px;}
229
- amp-facebook-like{top:8px;}
230
-
231
  <?php }
1
+ <?php
2
+
3
+ function ampforwp_framework_get_social_icons($selected_social_icons){
4
+
5
+ /* TODO:
6
+ 1: Connect with options panel
7
+ 2: Add icons for email, line and whatsapp
8
+ */
9
+ global $post, $redux_builder_amp;
10
+ $twitter_url = '';
11
+ $thumb_id = '';
12
+ $image = '';
13
+ $post_id = $post->ID;
14
+ $desc = $post->post_excerpt;
15
+ if (ampforwp_has_post_thumbnail( $post_id ) ){
16
+ $image = ampforwp_get_post_thumbnail( 'url', 'full' );
17
+ }
18
+
19
+ if(!ampforwp_is_associative($selected_social_icons)){
20
+ $icons_list_temp = array();
21
+ foreach ($selected_social_icons as $key => $icons) {
22
+ $icons_list_temp[$icons] = '';
23
+ }
24
+ $selected_social_icons = $icons_list_temp;
25
+ }
26
+
27
+ $social_icons_names = array();
28
+ $url = get_the_permalink();
29
+ $title = esc_attr( htmlspecialchars( get_the_title() ) );
30
+ if(isset($redux_builder_amp['enable-single-twitter-share-link']) && $redux_builder_amp['enable-single-twitter-share-link']){
31
+ $twitter_url = get_the_permalink();
32
+ }
33
+ else
34
+ $twitter_url = wp_get_shortlink();
35
+ foreach ($selected_social_icons as $key => $value) {
36
+ $social_icons_names[] = $key;
37
+ }
38
+
39
+
40
+ if( isset($selected_social_icons['twitter'] ) && null == $selected_social_icons['twitter'] ){
41
+ $selected_social_icons['twitter'] = 'https://twitter.com/intent/tweet?url='. $twitter_url.'&text='. $title .' ';
42
+ //https://twitter.com/intent/tweet?url={url}&text={title}&via={via}&hashtags={hashtags}
43
+ }
44
+
45
+ if( isset($selected_social_icons['facebook'] ) && null == $selected_social_icons['facebook'] ){
46
+ $selected_social_icons['facebook'] = 'https://www.facebook.com/sharer.php?u='. $url. '';
47
+ //or https://www.facebook.com/dialog/share?app_id={app_id}&display=page&href={url}&redirect_uri={redirect_url}
48
+ }
49
+ if( isset($selected_social_icons['pinterest'] ) && null == $selected_social_icons['pinterest'] ){
50
+ $selected_social_icons['pinterest'] = 'https://pinterest.com/pin/create/bookmarklet/?media='.$image.'&url='.$url.'&description='.$title.'';
51
+ //https://pinterest.com/pin/create/bookmarklet/?media={img}&url={url}&is_video={is_video}&description={title}
52
+ }
53
+ if( isset($selected_social_icons['google-plus']) && $selected_social_icons['google-plus'] == null){
54
+ $selected_social_icons['google-plus'] = 'https://plus.google.com/share?url='. $url. '';
55
+ //https://plus.google.com/share?url={url}
56
+ }
57
+ if( isset($selected_social_icons['linkedin']) && $selected_social_icons['linkedin'] == null){
58
+ $selected_social_icons['linkedin'] = 'https://www.linkedin.com/shareArticle?url='. $url. '&title='. $title .'';
59
+ //https://www.linkedin.com/shareArticle?url={url}&title={title}
60
+ }
61
+
62
+ if( isset($selected_social_icons['reddit']) && $selected_social_icons['reddit'] == null){
63
+ $selected_social_icons['reddit'] = 'https://reddit.com/submit?url='. $url. '&title='. $title .'';
64
+ //https://reddit.com/submit?url={url}&title={title}
65
+ }
66
+ if( isset($selected_social_icons['VKontakte']) && $selected_social_icons['VKontakte'] == null){
67
+ $selected_social_icons['VKontakte'] = 'https://vk.com/share.php?url='. $url. '';
68
+ //http://vk.com/share.php?url={url}
69
+ }
70
+ if( isset($selected_social_icons['Odnoklassniki']) && $selected_social_icons['Odnoklassniki'] == null){
71
+ $selected_social_icons['Odnoklassniki'] = 'https://ok.ru/dk?st.cmd=addShare&st._surl='. $url. '';
72
+ }
73
+
74
+ if( isset($selected_social_icons['tumblr']) && $selected_social_icons['tumblr'] == null){
75
+ $selected_social_icons['tumblr'] = 'https://www.tumblr.com/widgets/share/tool?canonicalUrl='. $url. '&title='. $title .'&caption='.$desc.'';
76
+ //https://www.tumblr.com/widgets/share/tool?canonicalUrl={url}&title={title}&caption={desc}
77
+ }
78
+ if ( isset($selected_social_icons['telegram']) && null == $selected_social_icons['telegram'] ) {
79
+ $selected_social_icons['telegram'] = 'https://telegram.me/share/url?url='. $url. '&text='. $title .'';
80
+ //https://telegram.me/share/url?url={url}&text={title}
81
+ }
82
+ if ( isset($selected_social_icons['digg']) && null == $selected_social_icons['digg'] ) {
83
+ $selected_social_icons['digg'] = 'http://digg.com/submit?url='. $url. '&title='. $title .'';
84
+ //http://digg.com/submit?url={url}&title={title}
85
+ }
86
+ if ( isset($selected_social_icons['StumbleUpon']) && null == $selected_social_icons['StumbleUpon'] ) {
87
+ $selected_social_icons['StumbleUpon'] = 'http://www.stumbleupon.com/submit?url='. $url. '&title='. $title .'';
88
+ //http://www.stumbleupon.com/submit?url={url}&title={title}
89
+ }
90
+ if ( isset($selected_social_icons['Wechat']) && null == $selected_social_icons['Wechat'] ) {
91
+ $selected_social_icons['Wechat'] = 'http://api.addthis.com/oexchange/0.8/forward/wechat/offer?url='. $url. '';
92
+ // http://api.addthis.com/oexchange/0.8/forward/wechat/offer?url={url}
93
+ }
94
+ if ( isset($selected_social_icons['Viber']) && null == $selected_social_icons['Viber'] ) {
95
+ $selected_social_icons['Viber'] = 'viber://forward?text='. $url. '';
96
+ //viber://forward?text={url}
97
+ }
98
+
99
+ ?>
100
+ <?php do_action('ampforwp_before_social_icons_hook'); ?>
101
+ <div class="amp-social">
102
+ <ul>
103
+ <?php if( ( in_array( 'twitter' , $selected_social_icons,true) || in_array('twitter', $social_icons_names,true) ) && !empty($selected_social_icons['twitter']) ) { ?>
104
+ <a href="<?php echo $selected_social_icons['twitter'] ?>" target ="_blank"><li class="icon-twitter"></li></a>
105
+ <?php } ?>
106
+
107
+ <?php if( (in_array('facebook', $selected_social_icons,true) || in_array('facebook', $social_icons_names,true)) && !empty($selected_social_icons['facebook']) ) { ?>
108
+ <a href="<?php echo $selected_social_icons['facebook'] ?>" target ="_blank"><li class="icon-facebook"></li></a>
109
+ <?php } ?>
110
+
111
+ <?php if( ( in_array( 'pinterest' , $selected_social_icons,true ) || in_array( 'pinterest', $social_icons_names,true )) && !empty($selected_social_icons['pinterest']) ) { ?>
112
+ <a href="<?php echo $selected_social_icons['pinterest'] ?>" target ="_blank"><li class="icon-pinterest"></li></a>
113
+ <?php } ?>
114
+
115
+ <?php if( (in_array( 'google-plus' , $selected_social_icons,true ) || in_array( 'google-plus' , $social_icons_names,true )) && !empty($selected_social_icons['google-plus']) ) { ?>
116
+ <a href="<?php echo $selected_social_icons['google-plus'] ?>" target ="_blank"><li class="icon-google-plus"></li></a>
117
+ <?php } ?>
118
+
119
+ <?php if( (in_array( 'linkedin' , $selected_social_icons,true ) || in_array( 'linkedin' , $social_icons_names,true )) && !empty($selected_social_icons['linkedin']) ) { ?>
120
+ <a href="<?php echo $selected_social_icons['linkedin'] ?>" target ="_blank"><li class="icon-linkedin"></li></a>
121
+ <?php } ?>
122
+
123
+ <?php if( (in_array( 'youtube' , $selected_social_icons,true ) || in_array( 'youtube' , $social_icons_names,true )) && !empty($selected_social_icons['youtube']) ) { ?>
124
+ <a href="<?php echo $selected_social_icons['youtube'] ?>" target ="_blank"><li class="icon-youtube-play"></li></a>
125
+ <?php } ?>
126
+
127
+ <?php if( (in_array( 'instagram' , $selected_social_icons,true ) || in_array( 'instagram' , $social_icons_names,true )) && !empty($selected_social_icons['instagram']) ) { ?>
128
+ <a href="<?php echo $selected_social_icons['instagram'] ?>" target ="_blank"> <li class="icon-instagram"></li></a>
129
+ <?php } ?>
130
+
131
+ <?php if( ( in_array( 'reddit' , $selected_social_icons,true ) || in_array( 'reddit' , $social_icons_names,true )) && !empty($selected_social_icons['reddit']) ) { ?>
132
+ <a href="<?php echo $selected_social_icons['reddit'] ?>" target ="_blank"><li class="icon-reddit-alien"></li></a>
133
+ <?php } ?>
134
+
135
+ <?php if( ( in_array( 'VKontakte' , $selected_social_icons,true ) || in_array( 'VKontakte' , $social_icons_names,true ) ) && !empty($selected_social_icons['VKontakte']) ) { ?>
136
+ <a href="<?php echo $selected_social_icons['VKontakte'] ?>" target ="_blank"><li class="icon-vk"></li></a>
137
+ <?php } ?>
138
+
139
+ <?php if( ( in_array( 'Odnoklassniki' , $selected_social_icons,true ) || in_array( 'Odnoklassniki' , $social_icons_names,true ) ) && !empty($selected_social_icons['Odnoklassniki']) ) { ?>
140
+ <a href="<?php echo esc_url($selected_social_icons['Odnoklassniki']) ?>" target ="_blank"><li class="icon-Odnoklassniki"></li></a>
141
+ <?php } ?>
142
+
143
+ <?php if( (in_array( 'snapchat' , $selected_social_icons,true ) || in_array( 'snapchat' , $social_icons_names,true ) ) && !empty($selected_social_icons['snapchat']) ) { ?>
144
+ <a href="<?php echo $selected_social_icons['snapchat'] ?>" target ="_blank"><li class="icon-snapchat-ghost"></li></a>
145
+ <?php } ?>
146
+
147
+ <?php if( (in_array( 'tumblr' , $selected_social_icons,true ) || in_array( 'tumblr' , $social_icons_names,true )) && !empty($selected_social_icons['tumblr']) ) { ?>
148
+ <a href="<?php echo $selected_social_icons['tumblr'] ?>" target ="_blank"><li class="icon-tumblr"></li></a>
149
+ <?php } ?>
150
+
151
+ <?php if ( (in_array( 'telegram' , $selected_social_icons,true ) || in_array( 'telegram' , $social_icons_names,true )) && ! empty($selected_social_icons['telegram']) ) { ?>
152
+ <a href="<?php echo esc_url($selected_social_icons['telegram']); ?>" target ="_blank"><li class="icon-telegram"></li></a>
153
+ <?php } ?>
154
+
155
+ <?php if ( (in_array( 'digg' , $selected_social_icons,true ) || in_array( 'digg' , $social_icons_names,true )) && ! empty($selected_social_icons['digg']) ) { ?>
156
+ <a href="<?php echo esc_url($selected_social_icons['digg']); ?>" target ="_blank"><li class="icon-digg"></li></a>
157
+ <?php } ?>
158
+
159
+ <?php if ( (in_array( 'StumbleUpon' , $selected_social_icons,true ) || in_array( 'StumbleUpon' , $social_icons_names,true )) && ! empty($selected_social_icons['StumbleUpon']) ) { ?>
160
+ <a href="<?php echo esc_url($selected_social_icons['StumbleUpon']); ?>" target ="_blank"><li class="icon-StumbleUpon"></li></a>
161
+ <?php } ?>
162
+
163
+ <?php if ( (in_array( 'Wechat' , $selected_social_icons,true ) || in_array( 'Wechat' , $social_icons_names,true )) && !empty($selected_social_icons['Wechat']) ) { ?>
164
+ <a href="<?php echo esc_url($selected_social_icons['Wechat']); ?>" target ="_blank"><li class="icon-Wechat"></li></a>
165
+ <?php } ?>
166
+
167
+ <?php if ( (in_array( 'Viber' , $selected_social_icons,true ) || in_array( 'Viber' , $social_icons_names,true )) && ! empty($selected_social_icons['Viber']) ) { ?>
168
+ <a href="<?php echo ($selected_social_icons['Viber']); ?>" target ="_blank"><li class="icon-Viber"></li></a>
169
+ <?php } ?>
170
+
171
+ <?php if( (in_array( 'facebook-like' , $selected_social_icons,true ) || in_array( 'facebook-like' , $social_icons_names,true )) ) { ?>
172
+ <amp-facebook-like width=90 height=28
173
+ layout="fixed"
174
+ data-size="large"
175
+ data-layout="button_count"
176
+ data-href="<?php echo esc_url(get_the_permalink()); ?>">
177
+ </amp-facebook-like>
178
+ <?php } ?>
179
+ </ul>
180
+ </div>
181
+ <?php do_action('ampforwp_after_social_icons_hook'); ?>
182
+ <?php
183
+ }
184
+
185
+ function ampforwp_is_associative(array $arr)
186
+ {
187
+ if (array() === $arr) return false;
188
+ return array_keys($arr) !== range(0, count($arr) - 1);
189
+ }
190
+ //Load styling for social icons
191
+
192
+ add_action('amp_post_template_css','amp_social_styles',11);
193
+
194
+
195
+ function amp_social_styles(){ ?>
196
+ @font-face {
197
+ font-family: 'icomoon';
198
+ src: url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.eot');
199
+ src: url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.eot') format('embedded-opentype'),
200
+ url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.ttf') format('truetype'),
201
+ url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.woff') format('woff'),
202
+ url('<?php echo plugin_dir_url(__FILE__) ?>fonts/icomoon.svg') format('svg');
203
+ font-weight: normal;
204
+ font-style: normal;
205
+ }
206
+
207
+ [class^="icon-"], [class*=" icon-"]{ font-family: 'icomoon'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1;
208
+ -webkit-font-smoothing: antialiased;
209
+ -moz-osx-font-smoothing: grayscale;
210
+ }
211
+
212
+ .icon-twitter:before{ content: "\f099";background:#1da1f2 }
213
+ .icon-facebook:before{ content: "\f09a";background:#3b5998 }
214
+ .icon-facebook-f:before{ content: "\f09a";background:#3b5998 }
215
+ .icon-pinterest:before{ content: "\f0d2";background:#bd081c }
216
+ .icon-google-plus:before{ content: "\f0d5";background:#dd4b39 }
217
+ .icon-linkedin:before{ content: "\f0e1";background:#0077b5 }
218
+ .icon-youtube-play:before{ content: "\f16a";background:#cd201f }
219
+ .icon-instagram:before{ content: "\f16d";background:#c13584 }
220
+ .icon-tumblr:before{ content: "\f173";background:#35465c }
221
+ .icon-vk:before{ content: "\f189";background:#45668e }
222
+ .icon-whatsapp:before{ content: "\f232";background:#075e54 }
223
+ .icon-reddit-alien:before{ content: "\f281";background:#ff4500 }
224
+ .icon-snapchat-ghost:before{ content: "\f2ac"; background:#fffc00 }
225
+ .amp-social{ font-size: 15px; display: inline-block; }
226
+ .amp-social ul{ list-style-type:none; padding:0;margin:0; text-align:center }
227
+ .amp-social li{ box-sizing: initial; display:inline-block; }
228
+ .amp-social li:before{box-sizing: initial;color: #fff;display: inline-block;width: 18px;height: 18px;line-height: 18px;}
229
+ amp-facebook-like{top:8px;}
230
+
231
  <?php }
components/theme-loader.php CHANGED
@@ -1,279 +1,279 @@
1
- <?php
2
- if ( 4 == $ampforwp_design_selector ) {
3
- define('AMPFORWP_CUSTOM_THEME', AMPFORWP_PLUGIN_DIR . 'templates/design-manager/swift' );
4
- }
5
- elseif ( ! defined('AMPFORWP_CUSTOM_THEME') ) {
6
- define('AMPFORWP_CUSTOM_THEME', AMPFORWP_MAIN_PLUGIN_DIR."/".$ampforwp_design_selector);
7
- }
8
-
9
- require_once( AMPFORWP_CUSTOM_THEME . '/functions.php' );
10
- //Filter the Template files to override previous ones
11
- //add_filter( 'amp_post_template_file', 'ampforwp_custom_header_file', 10, 2 );
12
- add_filter( 'amp_post_template_file', 'ampforwp_designing_custom_template', 10, 3 );
13
- //add_filter( 'amp_post_template_file', 'ampforwp_custom_footer_file', 10, 2 );
14
-
15
- // Custom Header
16
- function ampforwp_custom_header_file( $file, $type ) {
17
- if ( 'header' === $type ) {
18
- $file = AMPFORWP_CUSTOM_THEME . '/header.php';
19
- }
20
- return $file;
21
- }
22
-
23
- // Custom Template Files
24
- function ampforwp_designing_custom_template( $file, $type, $post ) {
25
- global $redux_builder_amp;
26
- // Single file
27
- /*if ( is_single() ) {
28
- if( 'single' === $type && ! ('product' === $post->post_type) ) {
29
- $file = AMPFORWP_CUSTOM_THEME . '/single.php';
30
- }
31
- }*/
32
- // 404 Template
33
-
34
- if( 'single' === $type && is_404() ) {
35
- $file = AMPFORWP_CUSTOM_THEME . '/404.php';
36
- }
37
- // single Template
38
- if ( is_page() ) {
39
- if( 'single' === $type && ! ('product' === $post->post_type) ) {
40
- $file = AMPFORWP_CUSTOM_THEME . '/page.php';
41
- }
42
- }
43
- // Loop Template
44
- if ( 'loop' === $type ) {
45
- $file = AMPFORWP_CUSTOM_THEME . '/loop.php';
46
- }
47
- // Archive
48
- if ( is_archive() ) {
49
- if ( 'single' === $type ) {
50
- $file = AMPFORWP_CUSTOM_THEME . '/archive.php';
51
- }
52
- }
53
- $ampforwp_custom_post_page = ampforwp_custom_post_page();
54
- // Homepage
55
- if ( is_home() ) {
56
- if ( 'single' === $type ) {
57
- $file = AMPFORWP_CUSTOM_THEME . '/index.php';
58
-
59
- if ( $redux_builder_amp['amp-frontpage-select-option'] == 1 ) {
60
- $file = AMPFORWP_CUSTOM_THEME . '/page.php';
61
- }
62
- if ( ampforwp_is_blog() ) {
63
- $file = AMPFORWP_CUSTOM_THEME . '/index.php';
64
- }
65
- }
66
- }
67
- // is_search
68
- if ( is_search() ) {
69
- if ( 'single' === $type ) {
70
- $file = AMPFORWP_CUSTOM_THEME . '/search.php';
71
- }
72
- }
73
-
74
- //For template pages
75
- switch ( true ) {
76
- case (is_tax()):
77
- $term = get_queried_object();
78
- $templates = array();
79
- if ( ! empty( $term->slug ) ) {
80
- $taxonomy = $term->taxonomy;
81
- $slug_decoded = urldecode( $term->slug );
82
- if ( $slug_decoded !== $term->slug ) {
83
- $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy-{$slug_decoded}.php";
84
- }
85
- $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy-{$term->slug}.php";
86
- $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy.php";
87
- }
88
- $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy.php";
89
- foreach ( $templates as $key => $value ) {
90
- if ( 'single' === $type && file_exists($value) ) {
91
- $file = $value;
92
- break;
93
- }
94
- }
95
- break;
96
- case (is_category()):
97
- $category = get_queried_object();
98
- $templates = array();
99
- if ( ! empty( $category->slug ) ) {
100
- $slug_decoded = urldecode( $category->slug );
101
- if ( $slug_decoded !== $category->slug ) {
102
- $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$slug_decoded}.php";
103
- }
104
- $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$category->slug}.php";
105
- $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$category->term_id}.php";
106
- }
107
- $templates[] = AMPFORWP_CUSTOM_THEME . '/category.php';
108
- foreach ( $templates as $key => $value ) {
109
- if ( 'single' === $type && file_exists($value) ) {
110
- $file = $value;
111
- break;
112
- }
113
- }
114
- break;
115
- case (is_tag()):
116
- $tag = get_queried_object();
117
- $templates = array();
118
- if ( ! empty( $tag->slug ) ) {
119
- $slug_decoded = urldecode( $tag->slug );
120
- if ( $slug_decoded !== $tag->slug ) {
121
- $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$slug_decoded}.php";
122
- }
123
- $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$tag->slug}.php";
124
- $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$tag->term_id}.php";
125
- }
126
- $templates[] = AMPFORWP_CUSTOM_THEME . '/tag.php';
127
- foreach ( $templates as $key => $value ) {
128
- if ( 'single' === $type && file_exists($value) ) {
129
- $file = $value;
130
- break;
131
- }
132
- }
133
- break;
134
- case is_author():
135
- $author = get_queried_object();
136
-
137
- $templates = array();
138
-
139
- if ( $author instanceof WP_User ) {
140
- $templates[] = AMPFORWP_CUSTOM_THEME . "/author-{$author->user_nicename}.php";
141
- $templates[] = AMPFORWP_CUSTOM_THEME . "/author-{$author->ID}.php";
142
- }
143
- $templates[] = AMPFORWP_CUSTOM_THEME . "/author.php";
144
-
145
- foreach ( $templates as $key => $value ) {
146
- if ( 'single' === $type && file_exists($value) ) {
147
- $file = $value;
148
- break;
149
- }
150
- }
151
- break;
152
- case (is_archive()):
153
- $post_types = array_filter( (array) get_query_var( 'post_type' ) );
154
- $templates = array();
155
- if ( count( $post_types ) == 1 ) {
156
- $post_type = reset( $post_types );
157
- $templates[] = AMPFORWP_CUSTOM_THEME . "/archive-{$post_type}.php";
158
- }
159
- $templates[] = AMPFORWP_CUSTOM_THEME . '/archive.php';
160
- foreach ( $templates as $key => $value ) {
161
- if ( 'single' === $type && file_exists($value) ) {
162
- $file = $value;
163
- break;
164
- }
165
- }
166
- break;
167
- case (is_post_type_archive()):
168
- $post_type = get_query_var( 'post_type' );
169
- if ( is_array( $post_type ) )
170
- $post_type = reset( $post_type );
171
-
172
- $obj = get_post_type_object( $post_type );
173
- if ( ! ($obj instanceof WP_Post_Type) || ! $obj->has_archive ) {
174
- //return '';
175
- break;
176
- }
177
-
178
- $post_types = array_filter( (array) get_query_var( 'post_type' ) );
179
-
180
- $templates = array();
181
-
182
- if ( count( $post_types ) == 1 ) {
183
- $post_type = reset( $post_types );
184
- $templates[] = AMPFORWP_CUSTOM_THEME . "/archive-{$post_type}.php";
185
- }
186
- $templates[] = AMPFORWP_CUSTOM_THEME . '/archive.php';
187
- foreach ( $templates as $key => $value ) {
188
- if ( 'single' === $type && file_exists($value) ) {
189
- $file = $value;
190
- break;
191
- }
192
- }
193
- break;
194
- case is_single():
195
- $object = get_queried_object();
196
-
197
- $templates = array();
198
-
199
- if ( ! empty( $object->post_type ) ) {
200
- $template = get_page_template_slug( $object );
201
- if ( $template && 0 === validate_file( $template ) ) {
202
- $templates[] = $template;
203
- }
204
-
205
- $name_decoded = urldecode( $object->post_name );
206
- if ( $name_decoded !== $object->post_name ) {
207
- $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}-{$name_decoded}.php";
208
- }
209
-
210
- $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}-{$object->post_name}.php";
211
- $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}.php";
212
- }
213
-
214
- $templates[] = AMPFORWP_CUSTOM_THEME . "/single.php";
215
-
216
- foreach ( $templates as $key => $value ) {
217
- if ( 'single' === $type && file_exists($value) ) {
218
- $file = $value;
219
- break;
220
- }
221
- }
222
- break;
223
- case is_page():
224
- $id = get_queried_object_id();
225
- $template = get_page_template_slug();
226
- $pagename = get_query_var('pagename');
227
-
228
- if ( ! $pagename && $id ) {
229
- // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
230
- $post = get_queried_object();
231
- if ( $post )
232
- $pagename = $post->post_name;
233
- }
234
-
235
- $templates = array();
236
- if ( $template && 0 === validate_file( $template ) )
237
- $templates[] = $template;
238
- if ( $pagename ) {
239
- $pagename_decoded = urldecode( $pagename );
240
- if ( $pagename_decoded !== $pagename ) {
241
- $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$pagename_decoded}.php";
242
- }
243
- $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$pagename}.php";
244
- }
245
- if ( $id )
246
- $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$id}.php";
247
- $templates[] = AMPFORWP_CUSTOM_THEME . "/page.php";
248
-
249
- foreach ( $templates as $key => $value ) {
250
- if ( 'single' === $type && file_exists($value) ) {
251
- $file = $value;
252
- break;
253
- }
254
- }
255
- break;
256
- }
257
- // Polylang Frontpage #1779
258
- if ( 'single' === $type && ampforwp_polylang_front_page() && true == $redux_builder_amp['amp-frontpage-select-option'] ) {
259
- $file = AMPFORWP_CUSTOM_THEME . '/page.php';
260
- }
261
- return $file;
262
- }
263
-
264
- // Custom Footer
265
- function ampforwp_custom_footer_file( $file, $type ) {
266
- if ( 'footer' === $type ) {
267
- $file = AMPFORWP_CUSTOM_THEME . '/footer.php';
268
- }
269
- return $file;
270
- }
271
- // Load the Core Styles of Custom Theme
272
- //add_action('amp_css', 'ampforwp_custom_style');
273
- function ampforwp_custom_style() {
274
- global $redux_builder_amp;
275
- require_once( AMPFORWP_CUSTOM_THEME . '/style.php' );
276
- // Custom CSS
277
- echo $redux_builder_amp['css_editor'];
278
- }
279
-
1
+ <?php
2
+ if ( 4 == $ampforwp_design_selector ) {
3
+ define('AMPFORWP_CUSTOM_THEME', AMPFORWP_PLUGIN_DIR . 'templates/design-manager/swift' );
4
+ }
5
+ elseif ( ! defined('AMPFORWP_CUSTOM_THEME') ) {
6
+ define('AMPFORWP_CUSTOM_THEME', AMPFORWP_MAIN_PLUGIN_DIR."/".$ampforwp_design_selector);
7
+ }
8
+
9
+ require_once( AMPFORWP_CUSTOM_THEME . '/functions.php' );
10
+ //Filter the Template files to override previous ones
11
+ //add_filter( 'amp_post_template_file', 'ampforwp_custom_header_file', 10, 2 );
12
+ add_filter( 'amp_post_template_file', 'ampforwp_designing_custom_template', 10, 3 );
13
+ //add_filter( 'amp_post_template_file', 'ampforwp_custom_footer_file', 10, 2 );
14
+
15
+ // Custom Header
16
+ function ampforwp_custom_header_file( $file, $type ) {
17
+ if ( 'header' === $type ) {
18
+ $file = AMPFORWP_CUSTOM_THEME . '/header.php';
19
+ }
20
+ return $file;
21
+ }
22
+
23
+ // Custom Template Files
24
+ function ampforwp_designing_custom_template( $file, $type, $post ) {
25
+ global $redux_builder_amp;
26
+ // Single file
27
+ /*if ( is_single() ) {
28
+ if( 'single' === $type && ! ('product' === $post->post_type) ) {
29
+ $file = AMPFORWP_CUSTOM_THEME . '/single.php';
30
+ }
31
+ }*/
32
+ // 404 Template
33
+
34
+ if( 'single' === $type && is_404() ) {
35
+ $file = AMPFORWP_CUSTOM_THEME . '/404.php';
36
+ }
37
+ // single Template
38
+ if ( is_page() ) {
39
+ if( 'single' === $type && ! ('product' === $post->post_type) ) {
40
+ $file = AMPFORWP_CUSTOM_THEME . '/page.php';
41
+ }
42
+ }
43
+ // Loop Template
44
+ if ( 'loop' === $type ) {
45
+ $file = AMPFORWP_CUSTOM_THEME . '/loop.php';
46
+ }
47
+ // Archive
48
+ if ( is_archive() ) {
49
+ if ( 'single' === $type ) {
50
+ $file = AMPFORWP_CUSTOM_THEME . '/archive.php';
51
+ }
52
+ }
53
+ $ampforwp_custom_post_page = ampforwp_custom_post_page();
54
+ // Homepage
55
+ if ( is_home() ) {
56
+ if ( 'single' === $type ) {
57
+ $file = AMPFORWP_CUSTOM_THEME . '/index.php';
58
+
59
+ if ( $redux_builder_amp['amp-frontpage-select-option'] == 1 ) {
60
+ $file = AMPFORWP_CUSTOM_THEME . '/page.php';
61
+ }
62
+ if ( ampforwp_is_blog() ) {
63
+ $file = AMPFORWP_CUSTOM_THEME . '/index.php';
64
+ }
65
+ }
66
+ }
67
+ // is_search
68
+ if ( is_search() ) {
69
+ if ( 'single' === $type ) {
70
+ $file = AMPFORWP_CUSTOM_THEME . '/search.php';
71
+ }
72
+ }
73
+
74
+ //For template pages
75
+ switch ( true ) {
76
+ case (is_tax()):
77
+ $term = get_queried_object();
78
+ $templates = array();
79
+ if ( ! empty( $term->slug ) ) {
80
+ $taxonomy = $term->taxonomy;
81
+ $slug_decoded = urldecode( $term->slug );
82
+ if ( $slug_decoded !== $term->slug ) {
83
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy-{$slug_decoded}.php";
84
+ }
85
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy-{$term->slug}.php";
86
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy-$taxonomy.php";
87
+ }
88
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/taxonomy.php";
89
+ foreach ( $templates as $key => $value ) {
90
+ if ( 'single' === $type && file_exists($value) ) {
91
+ $file = $value;
92
+ break;
93
+ }
94
+ }
95
+ break;
96
+ case (is_category()):
97
+ $category = get_queried_object();
98
+ $templates = array();
99
+ if ( ! empty( $category->slug ) ) {
100
+ $slug_decoded = urldecode( $category->slug );
101
+ if ( $slug_decoded !== $category->slug ) {
102
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$slug_decoded}.php";
103
+ }
104
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$category->slug}.php";
105
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/category-{$category->term_id}.php";
106
+ }
107
+ $templates[] = AMPFORWP_CUSTOM_THEME . '/category.php';
108
+ foreach ( $templates as $key => $value ) {
109
+ if ( 'single' === $type && file_exists($value) ) {
110
+ $file = $value;
111
+ break;
112
+ }
113
+ }
114
+ break;
115
+ case (is_tag()):
116
+ $tag = get_queried_object();
117
+ $templates = array();
118
+ if ( ! empty( $tag->slug ) ) {
119
+ $slug_decoded = urldecode( $tag->slug );
120
+ if ( $slug_decoded !== $tag->slug ) {
121
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$slug_decoded}.php";
122
+ }
123
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$tag->slug}.php";
124
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/tag-{$tag->term_id}.php";
125
+ }
126
+ $templates[] = AMPFORWP_CUSTOM_THEME . '/tag.php';
127
+ foreach ( $templates as $key => $value ) {
128
+ if ( 'single' === $type && file_exists($value) ) {
129
+ $file = $value;
130
+ break;
131
+ }
132
+ }
133
+ break;
134
+ case is_author():
135
+ $author = get_queried_object();
136
+
137
+ $templates = array();
138
+
139
+ if ( $author instanceof WP_User ) {
140
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/author-{$author->user_nicename}.php";
141
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/author-{$author->ID}.php";
142
+ }
143
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/author.php";
144
+
145
+ foreach ( $templates as $key => $value ) {
146
+ if ( 'single' === $type && file_exists($value) ) {
147
+ $file = $value;
148
+ break;
149
+ }
150
+ }
151
+ break;
152
+ case (is_archive()):
153
+ $post_types = array_filter( (array) get_query_var( 'post_type' ) );
154
+ $templates = array();
155
+ if ( count( $post_types ) == 1 ) {
156
+ $post_type = reset( $post_types );
157
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/archive-{$post_type}.php";
158
+ }
159
+ $templates[] = AMPFORWP_CUSTOM_THEME . '/archive.php';
160
+ foreach ( $templates as $key => $value ) {
161
+ if ( 'single' === $type && file_exists($value) ) {
162
+ $file = $value;
163
+ break;
164
+ }
165
+ }
166
+ break;
167
+ case (is_post_type_archive()):
168
+ $post_type = get_query_var( 'post_type' );
169
+ if ( is_array( $post_type ) )
170
+ $post_type = reset( $post_type );
171
+
172
+ $obj = get_post_type_object( $post_type );
173
+ if ( ! ($obj instanceof WP_Post_Type) || ! $obj->has_archive ) {
174
+ //return '';
175
+ break;
176
+ }
177
+
178
+ $post_types = array_filter( (array) get_query_var( 'post_type' ) );
179
+
180
+ $templates = array();
181
+
182
+ if ( count( $post_types ) == 1 ) {
183
+ $post_type = reset( $post_types );
184
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/archive-{$post_type}.php";
185
+ }
186
+ $templates[] = AMPFORWP_CUSTOM_THEME . '/archive.php';
187
+ foreach ( $templates as $key => $value ) {
188
+ if ( 'single' === $type && file_exists($value) ) {
189
+ $file = $value;
190
+ break;
191
+ }
192
+ }
193
+ break;
194
+ case is_single():
195
+ $object = get_queried_object();
196
+
197
+ $templates = array();
198
+
199
+ if ( ! empty( $object->post_type ) ) {
200
+ $template = get_page_template_slug( $object );
201
+ if ( $template && 0 === validate_file( $template ) ) {
202
+ $templates[] = $template;
203
+ }
204
+
205
+ $name_decoded = urldecode( $object->post_name );
206
+ if ( $name_decoded !== $object->post_name ) {
207
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}-{$name_decoded}.php";
208
+ }
209
+
210
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}-{$object->post_name}.php";
211
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/single-{$object->post_type}.php";
212
+ }
213
+
214
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/single.php";
215
+
216
+ foreach ( $templates as $key => $value ) {
217
+ if ( 'single' === $type && file_exists($value) ) {
218
+ $file = $value;
219
+ break;
220
+ }
221
+ }
222
+ break;
223
+ case is_page():
224
+ $id = get_queried_object_id();
225
+ $template = get_page_template_slug();
226
+ $pagename = get_query_var('pagename');
227
+
228
+ if ( ! $pagename && $id ) {
229
+ // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
230
+ $post = get_queried_object();
231
+ if ( $post )
232
+ $pagename = $post->post_name;
233
+ }
234
+
235
+ $templates = array();
236
+ if ( $template && 0 === validate_file( $template ) )
237
+ $templates[] = $template;
238
+ if ( $pagename ) {
239
+ $pagename_decoded = urldecode( $pagename );
240
+ if ( $pagename_decoded !== $pagename ) {
241
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$pagename_decoded}.php";
242
+ }
243
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$pagename}.php";
244
+ }
245
+ if ( $id )
246
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/page-{$id}.php";
247
+ $templates[] = AMPFORWP_CUSTOM_THEME . "/page.php";
248
+
249
+ foreach ( $templates as $key => $value ) {
250
+ if ( 'single' === $type && file_exists($value) ) {
251
+ $file = $value;
252
+ break;
253
+ }
254
+ }
255
+ break;
256
+ }
257
+ // Polylang Frontpage #1779
258
+ if ( 'single' === $type && ampforwp_polylang_front_page() && true == $redux_builder_amp['amp-frontpage-select-option'] ) {
259
+ $file = AMPFORWP_CUSTOM_THEME . '/page.php';
260
+ }
261
+ return $file;
262
+ }
263
+
264
+ // Custom Footer
265
+ function ampforwp_custom_footer_file( $file, $type ) {
266
+ if ( 'footer' === $type ) {
267
+ $file = AMPFORWP_CUSTOM_THEME . '/footer.php';
268
+ }
269
+ return $file;
270
+ }
271
+ // Load the Core Styles of Custom Theme
272
+ //add_action('amp_css', 'ampforwp_custom_style');
273
+ function ampforwp_custom_style() {
274
+ global $redux_builder_amp;
275
+ require_once( AMPFORWP_CUSTOM_THEME . '/style.php' );
276
+ // Custom CSS
277
+ echo $redux_builder_amp['css_editor'];
278
+ }
279
+
feeds/instant-article-feed.php CHANGED
@@ -1,56 +1,56 @@
1
- <?php header('Content-Type: ' . feed_content_type('rss2') . '; charset=' . get_option('blog_charset'), true);
2
- $more = 1;
3
-
4
- echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
5
- ?>
6
-
7
- <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
8
-
9
- <channel>
10
- <title><?php bloginfo_rss('name'); ?></title>
11
- <link><?php bloginfo_rss('url') ?></link>
12
- <description><?php bloginfo_rss("description") ?></description>
13
- <lastBuildDate><?php echo mysql2date('c', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
14
- <language><?php bloginfo_rss( 'language' ); ?></language>
15
-
16
- <?php
17
- global $redux_builder_amp;
18
- $number_of_articles = '';
19
- if( isset( $redux_builder_amp['ampforwp-fb-instant-article-posts'] ) && $redux_builder_amp['ampforwp-fb-instant-article-posts'] ){
20
- $number_of_articles = $redux_builder_amp['ampforwp-fb-instant-article-posts'];
21
- $number_of_articles = round( abs( floatval( $number_of_articles ) ) );
22
- }
23
- else{
24
- $number_of_articles = -1;
25
- }
26
- $args = array(
27
- 'post_status' => 'publish',
28
- 'ignore_sticky_posts' => 1,
29
- 'posts_per_page' => $number_of_articles
30
- );
31
- $query = new WP_Query( $args );
32
- while( $query->have_posts() ) :
33
-
34
- $query->the_post();
35
- ?>
36
-
37
- <item>
38
- <title><?php the_title_rss() ?></title>
39
- <link><?php the_permalink_rss() ?></link>
40
- <guid><?php the_guid(); ?></guid>
41
- <pubDate><?php echo mysql2date('c', get_post_time('c', true), false); ?></pubDate>
42
- <author><?php the_author() ?></author>
43
- <description><?php the_excerpt_rss(); ?></description>
44
- <content:encoded>
45
- <![CDATA[
46
- <?php
47
- $template_file = AMPFORWP_PLUGIN_DIR . 'templates/instant-articles/instant-article.php';
48
- load_template($template_file, false);
49
- ?>
50
- ]]>
51
- </content:encoded>
52
- </item>
53
-
54
- <?php endwhile; ?>
55
- </channel>
56
  </rss>
1
+ <?php header('Content-Type: ' . feed_content_type('rss2') . '; charset=' . get_option('blog_charset'), true);
2
+ $more = 1;
3
+
4
+ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
5
+ ?>
6
+
7
+ <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
8
+
9
+ <channel>
10
+ <title><?php bloginfo_rss('name'); ?></title>
11
+ <link><?php bloginfo_rss('url') ?></link>
12
+ <description><?php bloginfo_rss("description") ?></description>
13
+ <lastBuildDate><?php echo mysql2date('c', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
14
+ <language><?php bloginfo_rss( 'language' ); ?></language>
15
+
16
+ <?php
17
+ global $redux_builder_amp;
18
+ $number_of_articles = '';
19
+ if( isset( $redux_builder_amp['ampforwp-fb-instant-article-posts'] ) && $redux_builder_amp['ampforwp-fb-instant-article-posts'] ){
20
+ $number_of_articles = $redux_builder_amp['ampforwp-fb-instant-article-posts'];
21
+ $number_of_articles = round( abs( floatval( $number_of_articles ) ) );
22
+ }
23
+ else{
24
+ $number_of_articles = -1;
25
+ }
26
+ $args = array(
27
+ 'post_status' => 'publish',
28
+ 'ignore_sticky_posts' => 1,
29
+ 'posts_per_page' => $number_of_articles
30
+ );
31
+ $query = new WP_Query( $args );
32
+ while( $query->have_posts() ) :
33
+
34
+ $query->the_post();
35
+ ?>
36
+
37
+ <item>
38
+ <title><?php the_title_rss() ?></title>
39
+ <link><?php the_permalink_rss() ?></link>
40
+ <guid><?php the_guid(); ?></guid>
41
+ <pubDate><?php echo mysql2date('c', get_post_time('c', true), false); ?></pubDate>
42
+ <author><?php the_author() ?></author>
43
+ <description><?php the_excerpt_rss(); ?></description>
44
+ <content:encoded>
45
+ <![CDATA[
46
+ <?php
47
+ $template_file = AMPFORWP_PLUGIN_DIR . 'templates/instant-articles/instant-article.php';
48
+ load_template($template_file, false);
49
+ ?>
50
+ ]]>
51
+ </content:encoded>
52
+ </item>
53
+
54
+ <?php endwhile; ?>
55
+ </channel>
56
  </rss>
includes/admin-script.js CHANGED
@@ -1,582 +1,604 @@
1
- jQuery(function($) {
2
- var reduxOptionSearch = function(){
3
- jQuery('.redux_field_search').typeWatch({
4
- callback:function( searchString ){
5
- searchString = searchString.toLowerCase();
6
- var searchArray = searchString.split(' ');
7
- var parent = $(this).parents('.redux-container:first');
8
- var expanded_options = parent.find('.expand_options');
9
- if (searchString != "") {
10
- if (!expanded_options.hasClass('expanded')) {
11
- expanded_options.click();
12
- parent.find('.redux-main').addClass('redux-search');
13
- }
14
- } else {
15
- if (expanded_options.hasClass('expanded')) {
16
- expanded_options.click();
17
- parent.find('.redux-main').removeClass('redux-search');
18
- }
19
- //parent.find('.redux-section-field, .redux-info-field, .redux-notice-field, .redux-container-group, .redux-section-desc, .redux-group-tab h3').show();
20
-
21
- if($('.redux-group-tab-link-li.active').length>0){
22
- var rel = $('.redux-group-tab-link-li.active a').attr('data-rel');
23
- var selector = 'div#'+rel+'_section_group';
24
- jQuery(selector).show();
25
- jQuery(selector).css('display','block');
26
-
27
- }else{
28
- $('.redux-group-tab-link-li.activeChild').click();
29
- $('div#'+rel+'_section_group').show();
30
- $('#'+rel+'_section_group').css('display','block');
31
- }
32
-
33
- }
34
- parent.find('.redux-field-container').each(function() {
35
- if (searchString != "") {
36
- parent.find('div.redux-group-tab').css('display','none');
37
- $(this).parents('tr:first').hide();
38
- } else {
39
- $(this).parents('tr:first').show();
40
- }
41
- });
42
- parent.find('.form-table tr').filter(function () {
43
- if(searchString==''){
44
- $('.redux-tab-container').show();
45
- $('.redux-tab-container').each(function(){
46
- $(this).find('.redux-tab-selector:first').click();
47
- });
48
- return false;
49
- }
50
- var item = $(this);
51
- var isMatch = true,
52
- text = $(this).find('.redux_field_th').text().toLowerCase();
53
- if ( !text || text == "" ) {
54
- return false;
55
- }
56
- $.each(searchArray, function (i, searchStr) {
57
- if (text.indexOf(searchStr) == -1) {
58
- isMatch = false;
59
- }
60
- });
61
- if (isMatch) {
62
- $(this).show();
63
- $(this).parents('div.redux-group-tab').css('display','block');
64
- }
65
- return isMatch;
66
- }).show( function() { });
67
-
68
- parent.find('.redux-group-tab').each(function() {
69
- if (searchString != "") {
70
- $(this).find("div.redux-section-field").each(function(){
71
- var divSectionId = $(this).attr('id');
72
- var splitResult = divSectionId.split("-");
73
- splitResult.splice(1, 0, "table");
74
- var divTableId = splitResult.join("-");
75
- var totalTr = $("#"+divTableId).find('tr:visible').length;
76
- if(totalTr==0){
77
- $(this).hide();
78
- }
79
- });
80
- } else {
81
- $(this).find("div.redux-section-field").each(function(){
82
- var divSectionId = $(this).attr('id');
83
- var splitResult = divSectionId.split("-");
84
- splitResult.splice(1, 0, "table");
85
- var divTableId = splitResult.join("-");
86
- var totalTr = $("#"+divTableId).find('tr:visible').length;
87
- if(totalTr>0){
88
- $(this).show();
89
- }
90
- });
91
- }
92
- }); // parent.find('.redux-group-tab') Closed
93
- },
94
- wait:400,
95
- highlight:false,
96
- captureLength:0
97
- });
98
- }
99
-
100
- //option panel Section Division
101
- var optionSectionDevision = function(){
102
- $('.afw-accordion-header').click(function(){
103
- //Get Cookie Changes
104
- if ( $.cookie( "redux_current_section_customize" )){
105
- var allReduxTabs = JSON.parse($.cookie( "redux_current_section_customize" ));
106
- }else{
107
- var allReduxTabs = {};
108
- }
109
-
110
- var section = $(this).attr("id");
111
- section = section.replace("section-","section-table-");
112
-
113
- if($("#"+section).is(':visible')){
114
- $("#"+section).hide();
115
- $(this).removeClass("afw-accordion-tab-open").addClass("afw-accordion-tab-close");
116
- allReduxTabs[section] = 'hide';
117
- }else{
118
- $("#"+section).show();
119
- $(this).removeClass("afw-accordion-tab-close").addClass("afw-accordion-tab-open");
120
- allReduxTabs[section] = 'show';
121
- }
122
-
123
- //Set Cookie Changes
124
- $.cookie(
125
- 'redux_current_section_customize', JSON.stringify(allReduxTabs), {
126
- expires: 7,
127
- path: '/'
128
- }
129
- );
130
- });
131
- //While loading at first time
132
- if($('.afw-accordion-header').length>0){
133
- //console.log($.cookie( "redux_current_section_customize" ));
134
- if ( $.cookie( "redux_current_section_customize" ) ){
135
- var tabsValue = JSON.parse($.cookie( "redux_current_section_customize" ));
136
- }else{
137
- var tabsValue = "";
138
- }
139
- $('.afw-accordion-header').each(function(){
140
-
141
- var reduxAccordianHeader = $(this);
142
- var section = reduxAccordianHeader.attr("id");
143
- section = section.replace("section-","section-table-");
144
-
145
- if(tabsValue[section]){
146
- var currentSettings = tabsValue[section];
147
- if(currentSettings=='hide'){
148
- reduxAccordianHeader.removeClass("afw-accordion-tab-open").addClass("afw-accordion-tab-close");
149
- }else if(currentSettings=='show'){
150
- reduxAccordianHeader.removeClass("afw-accordion-tab-close").addClass("afw-accordion-tab-open");
151
- }
152
- }
153
-
154
- if(reduxAccordianHeader.hasClass('afw-accordion-tab-close')){
155
- $("#"+section).hide();
156
- }else if(reduxAccordianHeader.hasClass('afw-accordion-tab-open')){
157
- $("#"+section).show();
158
- }
159
-
160
- })
161
- }
162
- }//Cloesed function = optionSectionDevision
163
-
164
- var hideReduxLeftTabs = function(){
165
- jQuery('ul.redux-group-menu > li.redux-group-tab-link-li').siblings('.redux-group-tab-link-li').each(function(key,Data){
166
- if(key>3){
167
- jQuery(this).attr("style","display:none;").addClass("otherSectionFields");
168
- }
169
- });
170
-
171
- jQuery( '.redux-group-tab-link-a' ).click(function(){
172
- if(jQuery(this).parent('li').hasClass('otherSectionFields')){
173
- jQuery(this).parent('li.otherSectionFields').siblings('li.otherSectionFields').hide();
174
- if(!jQuery(this).parent('li').is(':visible')){
175
- jQuery(this).parent('li').show();
176
- }
177
- }else{
178
- jQuery(this).parent('li').siblings('li.otherSectionFields').hide();
179
- jQuery(this).parent('li').siblings('li.active').show();
180
-
181
- }
182
- });
183
- }
184
-
185
- var showExtensionTabs = function(){
186
- var currentTab = getQueryStringValue('tabid');
187
- if(currentTab!="" && $("li."+currentTab).length>0){
188
- $("li."+currentTab+" a").click();
189
- }
190
- }
191
- $(document).ready(function() {
192
- if(getQueryStringValue('page')=='amp_options'){
193
- //Tab section implementation
194
- optionSectionDevision();
195
- //To Show title on the top; In front of search bar
196
- if($( '.redux-group-tab-link-a' ).length){
197
- redux_title_modify();
198
- }
199
-
200
- //To Hide Leftsidebar option Below Extension
201
- hideReduxLeftTabs();
202
- showExtensionTabs();
203
- }
204
-
205
-
206
- var gURL, gAPIkey;
207
-
208
-
209
- gAPIkey = redux_data.google_font_api_key;
210
-
211
- // Append data into selects
212
- ampforwp_font_generator();
213
- function ampforwp_font_generator() {
214
-
215
- if ( ! gAPIkey){
216
- gAPIkey = $('#google_font_api_key').val();
217
- }
218
- if(gAPIkey=='' || typeof gAPIkey == 'undefined'){
219
- $('#redux_builder_amp-google_font_api_key').append('<p style="color:red"> Could not connect to API, please double check your API key. </p> ');
220
- $('.ampforwp-google-font-class').css({'display':'none'});
221
- return ;
222
- }
223
-
224
- gURL = "https://www.googleapis.com/webfonts/v1/webfonts?key=" + gAPIkey;
225
-
226
- var gfontData = $.get( gURL );
227
-
228
- gfontData.done(function( data ) {
229
- var values = Object.values(data.items);
230
- var allFonts = [];
231
-
232
- for (var i = 0; i < values.length; i++) {
233
- allFonts.push({fontFamily: values[i].family });
234
- }
235
-
236
-
237
- // var output = data.items.find('Basic');
238
- // console.log ( output );
239
-
240
-
241
- // let selectedFontDetails = data.items.find((o, i) => {
242
-
243
- // if (o.family === 'Keania One') {
244
- // //arr[i] = { name: 'new string', value: 'this', other: 'that' };
245
- // return data.items[i]; // stop searching
246
- // }
247
- // });
248
-
249
- // We have all the Font details from Google API in object selectedFontDetails
250
- //console.log(selectedFontDetails);
251
-
252
-
253
- // We have all the font names in the an array allFonts
254
- //console.log( allFonts );
255
-
256
-
257
- // Creating a select
258
- var s = $('<select/>');
259
-
260
- for (var i in allFonts) {
261
-
262
- var fontDetail = allFonts[i].fontFamily;
263
-
264
- $('#amp_font_selector-select').append($('<option value="'+ fontDetail +'" data-font-number="'+ i +'"> '+ fontDetail +' </option>'));
265
- $('#amp_font_selector_content_single-select').append($('<option value="'+ fontDetail +'" data-font-number="'+ i +'"> '+ fontDetail +' </option>'));
266
- }
267
-
268
- //console.log( values.length);
269
- //console.log( values[0].family );
270
- //console.table( values);
271
-
272
- $('#amp_font_selector-select, #amp_font_selector_content_single-select').on('change', function() {
273
- var select = $('option:selected', this).attr('data-font-number');
274
- var fontVariants = data.items[select].variants ;
275
- var fontFile = data.items[select].files ;
276
-
277
- if($(this).attr("id")=='amp_font_selector-select'){
278
- if ( fontVariants) {
279
- //$('.select2-search-choice').remove();
280
- $('#amp_font_type-select').html('<option></option>').trigger('change');
281
- }
282
-
283
- // console.log( data.items[select] );
284
-
285
- //if ( data.items[select] ) {
286
- $('#google_current_font_data').val( JSON.stringify(data.items[select]) );
287
-
288
- for (var i in fontVariants) {
289
- $('#amp_font_type-select').append($("<option value='"+ fontVariants[i] +"' > "+fontVariants[i]+"</option>")).trigger('change');
290
- }
291
- }else if($(this).attr("id")=='amp_font_selector_content_single-select') {
292
- if ( fontVariants) {
293
- //$('.select2-search-choice').remove();
294
- $('#amp_font_type_content_single-select').html('<option></option>').trigger('change');
295
- }
296
- $('#google_current_font_data_content_single').val( JSON.stringify(data.items[select]) );
297
-
298
- for (var i in fontVariants) {
299
- $('#amp_font_type_content_single-select').append($("<option value='"+ fontVariants[i] +"' > "+fontVariants[i]+"</option>")).trigger('change');
300
- }
301
- }
302
-
303
- });
304
-
305
- });
306
-
307
- gfontData.fail(function(data) {
308
- $('#redux_builder_amp-google_font_api_key').append('<p style="color:red"> Cound not connect to API, please double check your API key. </p> ');
309
- $('.ampforwp-google-font-class').css({'display':'none'});
310
- });
311
-
312
- }
313
-
314
- function amp_font_selector_select_change(){
315
-
316
-
317
- }
318
-
319
- $(window).load(function() {
320
- if($("#google_font_api_key").length>0){
321
- $("#google_font_api_key").after("<input type='submit' value='Verify'>");
322
- }
323
- if($('#amp_font_selector-select').length>0){
324
- // Adding Default Font Family
325
- $('#s2id_amp_font_selector-select a').removeClass('select2-default');
326
-
327
- $('#select2-chosen-3').html(redux_data.amp_font_selector);
328
- if(redux_data.amp_font_selector==''){
329
- redux_data.amp_font_selector = 'Poppins'
330
- }
331
-
332
- $('#amp_font_selector-select option[value="'+redux_data.amp_font_selector+'"]').attr("selected", "selected");
333
- $('#amp_font_selector-select').select2('val',redux_data.amp_font_selector).trigger("change");
334
-
335
- $('#amp_font_selector_content_single-select option[value="'+redux_data.amp_font_selector+'"]').attr("selected", "selected");
336
- $('#amp_font_selector_content_single-select').select2('val',redux_data.amp_font_selector).trigger("change");
337
-
338
- // Build select data
339
- let fontData = redux_data.google_current_font_data;
340
- // fontData = JSON.parse(fontData);
341
- console.log(fontData);
342
- if (! fontData.variants) {
343
- //$('.select2-search-choice').remove();
344
- //$('#amp_font_type-select').html('<option></option>');
345
-
346
- for (var i in fontData.variants) {
347
- $('#amp_font_type-select').append($("<option value='"+ fontData.variants[i] +"' > "+fontData.variants[i]+"</option>")).trigger('change');
348
- }
349
- }
350
-
351
- if(redux_data.amp_font_type==''){
352
- redux_data.amp_font_type = ['regular','500','700'];
353
- }
354
- // Add Default selected
355
- if ( redux_data.amp_font_type ) {
356
- $('#s2id_autogen4').remove();
357
- for (var i in redux_data.amp_font_type) {
358
- $('#s2id_amp_font_type-select ul').append('<li class="select2-search-choice"> <div> '+redux_data.amp_font_type[i]+'</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a></li>');
359
- //s2.append($('<option>').text(e));
360
- $('#amp_font_type-select option[value='+redux_data.amp_font_type[i]+']').attr('selected','selected').trigger('change');
361
- $('#amp_font_type_content_single-select option[value='+redux_data.amp_font_type[i]+']').attr('selected','selected').trigger('change');
362
- }
363
- //$('#amp_font_type-select').select2('val',redux_data.amp_font_type)
364
- }
365
- }
366
- });
367
-
368
- /*---------Google Fonts Ends -------*/
369
-
370
-
371
- $('.redux-container').each(function() {
372
- if (!$(this).hasClass('redux-no-sections')) {
373
- $(this).find('.display_header').append('<span class="search-wrapper"><input class="redux_field_search" name="" type="text" placeholder="Search the controls" style="display:none"/><span class="redux-amp-search-icon"><i class="dashicons-before dashicons-search"></i></span></span>');
374
- $('.redux-amp-search-icon').click(function(){
375
- $('.redux_field_search').toggle('slide');
376
- });
377
- reduxOptionSearch();
378
- }
379
- });
380
-
381
- $(".redux_field_search").keypress(function (evt) {
382
- //Deterime where our character code is coming from within the event
383
- var charCode = evt.charCode || evt.keyCode;
384
- if (charCode == 13) { //Enter key's keycode
385
- return false;
386
- }
387
- });
388
-
389
- if($(".amp-preview-button").length>0){
390
- $(".amp-preview-button").click(function(){
391
- var srcLink = $("#amp-preview-iframe").attr('data-src');
392
- $("#amp-preview-iframe").html("<iframe src='"+srcLink+"'></iframe>");
393
- });
394
- }
395
-
396
- });
397
- var dataTabRequired = function(){
398
- $('[data-tab-required]').each(function(){
399
- var tabRequired = $(this).attr('data-tab-required');
400
- var currentThis = $(this);
401
- tabRequired = JSON.parse(tabRequired);
402
- var showLi = true;
403
- $.each(tabRequired,function(k, value){
404
- var currentValue = jQuery('[name="redux_builder_amp['+value[0]+']"]').val();;
405
- if(currentValue!=value[2]){
406
- showLi = false;
407
- return false;
408
- }
409
- });
410
- if(showLi==false){
411
- currentThis.hide();
412
- }else{
413
- currentThis.show();
414
- }
415
-
416
- });
417
- }
418
- var reduxOptionTab = function(){
419
- $('.redux-tab-selector').click(function(){
420
- var tabId = $(this).attr('data-tab');
421
- var tabRequired = $(this).attr('data-tab-required');
422
- $(this).parents().find('.custom-tab-container').hide();
423
- $('#parent-section-'+ tabId ).show();
424
- });
425
- $('.redux-tabs-ul').each(function(){
426
- $(this).find('.redux-tab-selector:first').click();
427
- });
428
- dataTabRequired();
429
- $('select').change(function(){
430
- dataTabRequired();
431
- });
432
- }
433
- //reduxOptionTab();
434
-
435
- $(".redux-ampforwp-ext-activate").click(function(){
436
- var currentThis = $(this);
437
- var plugin_id = currentThis.attr("id");
438
- var newlicense = $('#redux_builder_amp_amp-license_'+plugin_id+'_license').val();
439
- var license = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][license]"]').val();
440
-
441
- if(newlicense!='' && newlicense.indexOf("**")<0){
442
- license = newlicense;
443
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][license]"]').val(license);
444
- }
445
-
446
- var item_name = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][item_name]"]').val();
447
- var store_url = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][store_url]"]').val();
448
- var plugin_active_path = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][plugin_active_path]"]').val();
449
- currentThis.html("Please Wait...");
450
- $.ajax({
451
- url: ajaxurl,
452
- method: 'post',
453
- data: {action: 'ampforwp_get_licence_activate_update',
454
- ampforwp_license_activate:plugin_id,
455
- license:license,
456
- item_name:item_name,
457
- store_url:store_url,
458
- plugin_active_path:plugin_active_path
459
- },
460
- dataType: 'json',
461
- success: function(response){
462
- currentThis.parents("li").find('.afw-license-response-message').remove();
463
- if(response.status=='200'){
464
- currentThis.parents("li").removeClass("not-active").removeClass("invalid").addClass("active").addClass("valid");
465
- currentThis.html("Deactivate");
466
- currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
467
- currentThis.removeClass('redux-ampforwp-ext-activate').addClass('redux-ampforwp-ext-deactivate');
468
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][status]"]').val("valid");
469
- deactivatelicence();
470
- var all_data = response.other.all_data;
471
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][success]"]').val( all_data.success );
472
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][license]"]').val( all_data.license );
473
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][item_name]"]').val( all_data.item_name );
474
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][expires]"]').val( all_data.expires );
475
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][customer_name]"]').val( all_data.customer_name );
476
- $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][customer_email]"]').val( all_data.customer_email );
477
- //window.location.href = window.location.href;
478
- }else{
479
- currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
480
- currentThis.html("Activate");
481
- }
482
- }
483
- })
484
- })
485
-
486
- //Deactivate License key
487
- function deactivatelicence(){
488
- $(".redux-ampforwp-ext-deactivate").click(function(){
489
- var currentThis = $(this);
490
- var plugin_id = currentThis.attr("id");
491
- currentThis.html("Please Wait...");
492
- $deactivateConfirm = confirm("Are you sure you want to Deactivate ?");
493
- if($deactivateConfirm){
494
- $.ajax({
495
- url: ajaxurl,
496
- method: 'post',
497
- data: {action: 'ampforwp_deactivate_license', ampforwp_license_deactivate:plugin_id},
498
- dataType: 'json',
499
- success: function(response){
500
- currentThis.parents("li").find('.afw-license-response-message').remove();
501
- if(response.status=='200'){
502
- currentThis.parents(".extension_desc").find("input[name='redux_builder_amp[amp-license][amp-ads-google-adsense][license]']").val("");
503
-
504
- currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
505
-
506
- window.location.href = window.location.href;
507
- }else{
508
- alert(response.message);
509
- }
510
- }
511
- })
512
- }
513
- });
514
-
515
- }
516
- deactivatelicence();
517
-
518
- var helpSection = function(){
519
- var open;
520
-
521
- open = true;
522
-
523
- $('.a-f-wp-help-tear').click(function() {
524
- if (open) {
525
- $('.a-f-wp-help-tear').addClass('active');
526
- $('.a-f-wp-help-message').addClass('active');
527
- $('.a-f-wp-help-tear').html("<span><i class='dashicons-no-alt'></i></span>");
528
- return open = !open;
529
- } else {
530
- $('.a-f-wp-help-tear').removeClass('active');
531
- $('.a-f-wp-help-message').removeClass('active');
532
- $('.a-f-wp-help-message').val('');
533
- $('.a-f-wp-help-tear').html("<span><i class='dashicons-admin-comments'></i></span>");
534
- return open = !open;
535
- }
536
- });
537
-
538
- $('input').on('input', function(e) {
539
- var value;
540
- value = $("input").val();
541
- if (value.length >= 2) {
542
- $('.a-f-wp-help-tear').addClass('green');
543
- $('.a-f-wp-help-tear').removeClass('active');
544
- return $('.a-f-wp-help-tear').html("<span><i class='dashicons-admin-comments'></i></span>");
545
- } else {
546
- $('.a-f-wp-help-tear').removeClass('green');
547
- $('.a-f-wp-help-tear').addClass('active');
548
- return $('.a-f-wp-help-tear').html("<span><i class='dashicons-no-alt'></i></span>");
549
- }
550
- });
551
- }
552
- helpSection();
553
-
554
- var redux_title_modify = function(){
555
- $( '.redux-group-tab-link-a' ).click(function(){
556
- var link = $( this );
557
- if ( link.parent().hasClass( 'empty_section' ) && link.parent().hasClass( 'hasSubSections' ) ) {
558
- var elements = $( this ).closest( 'ul' ).find( '.redux-group-tab-link-a' );
559
- var index = elements.index( this );
560
- link = elements.slice( index + 1, index + 2 );
561
- }
562
-
563
- var el = link.parents( '.redux-container:first' );
564
- var relid = link.data( 'rel' ); // The group ID of interest
565
- var oldid = el.find( '.redux-group-tab-link-li.active:first .redux-group-tab-link-a' ).data( 'rel' );
566
-
567
- var panelTitle = el.find( '#' + relid + '_section_group' ).find("h2:first").hide().html();
568
- $('.redux-main').find("#info_bar h2#newTitle").remove();
569
- if (typeof panelTitle !== 'undefined' || panelTitle){
570
- $('.redux-main').find("#info_bar a.expand_options").after('<h2 id="newTitle" style="float: left;margin: 0px;padding-left: 10px;">'+panelTitle+'</h2>');
571
- }
572
-
573
- });
574
-
575
- $('li.active .redux-group-tab-link-a').click();
576
- }
577
-
578
- });
579
-
580
- function getQueryStringValue (key) {
581
- return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
582
  }
1
+ jQuery(function($) {
2
+ var reduxOptionSearch = function(){
3
+ jQuery('.redux_field_search').typeWatch({
4
+ callback:function( searchString ){
5
+ searchString = searchString.toLowerCase();
6
+ var searchArray = searchString.split(' ');
7
+ var parent = $(this).parents('.redux-container:first');
8
+ var expanded_options = parent.find('.expand_options');
9
+ if (searchString != "") {
10
+ if (!expanded_options.hasClass('expanded')) {
11
+ expanded_options.click();
12
+ parent.find('.redux-main').addClass('redux-search');
13
+ }
14
+ } else {
15
+ if (expanded_options.hasClass('expanded')) {
16
+ expanded_options.click();
17
+ parent.find('.redux-main').removeClass('redux-search');
18
+ }
19
+ //parent.find('.redux-section-field, .redux-info-field, .redux-notice-field, .redux-container-group, .redux-section-desc, .redux-group-tab h3').show();
20
+
21
+ if($('.redux-group-tab-link-li.active').length>0){
22
+ var rel = $('.redux-group-tab-link-li.active a').attr('data-rel');
23
+ var selector = 'div#'+rel+'_section_group';
24
+ jQuery(selector).show();
25
+ jQuery(selector).css('display','block');
26
+
27
+ }else{
28
+ $('.redux-group-tab-link-li.activeChild').click();
29
+ $('div#'+rel+'_section_group').show();
30
+ $('#'+rel+'_section_group').css('display','block');
31
+ }
32
+
33
+ }
34
+ parent.find('.redux-field-container').each(function() {
35
+ if (searchString != "") {
36
+ parent.find('div.redux-group-tab').css('display','none');
37
+ $(this).parents('tr:first').hide();
38
+ } else {
39
+ $(this).parents('tr:first').show();
40
+ }
41
+ });
42
+ parent.find('.form-table tr').filter(function () {
43
+ if(searchString==''){
44
+ $('.redux-tab-container').show();
45
+ $('.redux-tab-container').each(function(){
46
+ $(this).find('.redux-tab-selector:first').click();
47
+ });
48
+ return false;
49
+ }
50
+ var item = $(this);
51
+ var isMatch = true,
52
+ text = $(this).find('.redux_field_th').text().toLowerCase();
53
+ if ( !text || text == "" ) {
54
+ return false;
55
+ }
56
+ $.each(searchArray, function (i, searchStr) {
57
+ if (text.indexOf(searchStr) == -1) {
58
+ isMatch = false;
59
+ }
60
+ });
61
+ if (isMatch) {
62
+ $(this).show();
63
+ $(this).parents('div.redux-group-tab').css('display','block');
64
+ }
65
+ return isMatch;
66
+ }).show( function() { });
67
+
68
+ parent.find('.redux-group-tab').each(function() {
69
+ if (searchString != "") {
70
+ $(this).find("div.redux-section-field").each(function(){
71
+ var divSectionId = $(this).attr('id');
72
+ var splitResult = divSectionId.split("-");
73
+ splitResult.splice(1, 0, "table");
74
+ var divTableId = splitResult.join("-");
75
+ var totalTr = $("#"+divTableId).find('tr:visible').length;
76
+ if(totalTr==0){
77
+ $(this).hide();
78
+ }
79
+ });
80
+ } else {
81
+ $(this).find("div.redux-section-field").each(function(){
82
+ var divSectionId = $(this).attr('id');
83
+ var splitResult = divSectionId.split("-");
84
+ splitResult.splice(1, 0, "table");
85
+ var divTableId = splitResult.join("-");
86
+ var totalTr = $("#"+divTableId).find('tr:visible').length;
87
+ if(totalTr>0){
88
+ $(this).show();
89
+ }
90
+ });
91
+ }
92
+ }); // parent.find('.redux-group-tab') Closed
93
+ },
94
+ wait:400,
95
+ highlight:false,
96
+ captureLength:0
97
+ });
98
+ }
99
+
100
+ //option panel Section Division
101
+ var optionSectionDevision = function(){
102
+ $('.afw-accordion-header').click(function(){
103
+ //Get Cookie Changes
104
+ if ( $.cookie( "redux_current_section_customize" )){
105
+ var allReduxTabs = JSON.parse($.cookie( "redux_current_section_customize" ));
106
+ }else{
107
+ var allReduxTabs = {};
108
+ }
109
+
110
+ var section = $(this).attr("id");
111
+ section = section.replace("section-","section-table-");
112
+
113
+ if($("#"+section).is(':visible')){
114
+ $("#"+section).hide();
115
+ $(this).removeClass("afw-accordion-tab-open").addClass("afw-accordion-tab-close");
116
+ allReduxTabs[section] = 'hide';
117
+ }else{
118
+ $("#"+section).show();
119
+ $(this).removeClass("afw-accordion-tab-close").addClass("afw-accordion-tab-open");
120
+ allReduxTabs[section] = 'show';
121
+ }
122
+
123
+ //Set Cookie Changes
124
+ $.cookie(
125
+ 'redux_current_section_customize', JSON.stringify(allReduxTabs), {
126
+ expires: 7,
127
+ path: '/'
128
+ }
129
+ );
130
+ });
131
+ //While loading at first time
132
+ if($('.afw-accordion-header').length>0){
133
+ //console.log($.cookie( "redux_current_section_customize" ));
134
+ if ( $.cookie( "redux_current_section_customize" ) ){
135
+ var tabsValue = JSON.parse($.cookie( "redux_current_section_customize" ));
136
+ }else{
137
+ var tabsValue = "";
138
+ }
139
+ $('.afw-accordion-header').each(function(){
140
+
141
+ var reduxAccordianHeader = $(this);
142
+ var section = reduxAccordianHeader.attr("id");
143
+ section = section.replace("section-","section-table-");
144
+
145
+ if(tabsValue[section]){
146
+ var currentSettings = tabsValue[section];
147
+ if(currentSettings=='hide'){
148
+ reduxAccordianHeader.removeClass("afw-accordion-tab-open").addClass("afw-accordion-tab-close");
149
+ }else if(currentSettings=='show'){
150
+ reduxAccordianHeader.removeClass("afw-accordion-tab-close").addClass("afw-accordion-tab-open");
151
+ }
152
+ }
153
+
154
+ if(reduxAccordianHeader.hasClass('afw-accordion-tab-close')){
155
+ $("#"+section).hide();
156
+ }else if(reduxAccordianHeader.hasClass('afw-accordion-tab-open')){
157
+ $("#"+section).show();
158
+ }
159
+
160
+ })
161
+ }
162
+ }//Cloesed function = optionSectionDevision
163
+
164
+ var hideReduxLeftTabs = function(){
165
+ jQuery('ul.redux-group-menu > li.redux-group-tab-link-li').siblings('.redux-group-tab-link-li').each(function(key,Data){
166
+ if(key>3){
167
+ jQuery(this).attr("style","display:none;").addClass("otherSectionFields");
168
+ }
169
+ });
170
+
171
+ jQuery( '.redux-group-tab-link-a' ).click(function(){
172
+ if(jQuery(this).parent('li').hasClass('otherSectionFields')){
173
+ jQuery(this).parent('li.otherSectionFields').siblings('li.otherSectionFields').hide();
174
+ if(!jQuery(this).parent('li').is(':visible')){
175
+ jQuery(this).parent('li').show();
176
+ }
177
+ }else{
178
+ jQuery(this).parent('li').siblings('li.otherSectionFields').hide();
179
+ jQuery(this).parent('li').siblings('li.active').show();
180
+
181
+ }
182
+ });
183
+ }
184
+
185
+ var showExtensionTabs = function(){
186
+ var currentTab = getQueryStringValue('tabid');
187
+ if(currentTab!="" && $("li."+currentTab).length>0){
188
+ $("li."+currentTab+" a").click();
189
+ }
190
+ }
191
+ var switchTextfunc = function(){
192
+ var switchText = $('.switch-text');
193
+ switchText.each(function(e,v){
194
+ if ( $(this).siblings('input').attr('value') == 1 ) {
195
+ $(this).parent('div.switch-options').find('.switch-text-on').show();
196
+ }
197
+ else if ( $(this).siblings('input').attr('value') == 0 ) {
198
+ $(this).parent('div.switch-options').find('.switch-text-off').show();
199
+ }
200
+ });
201
+ switchText.siblings('label').click(function(){
202
+ if ( $(this).siblings('input').attr('value') == 1 ) {
203
+ $(this).parent().find('.switch-text-on').hide();
204
+ $(this).parent().find('.switch-text-off').show();
205
+ }
206
+ else if ( $(this).siblings('input').attr('value') == 0 ) {
207
+ $(this).parent().find('.switch-text-off').hide();
208
+ $(this).parent().find('.switch-text-on').show();
209
+ }
210
+ });
211
+ }
212
+ $(document).ready(function() {
213
+ if(getQueryStringValue('page')=='amp_options'){
214
+ //Tab section implementation
215
+ optionSectionDevision();
216
+ //To Show title on the top; In front of search bar
217
+ if($( '.redux-group-tab-link-a' ).length){
218
+ redux_title_modify();
219
+ }
220
+
221
+ //To Hide Leftsidebar option Below Extension
222
+ hideReduxLeftTabs();
223
+ showExtensionTabs();
224
+ switchTextfunc();
225
+ }
226
+
227
+
228
+ var gURL, gAPIkey;
229
+
230
+
231
+ gAPIkey = redux_data.google_font_api_key;
232
+
233
+ // Append data into selects
234
+ ampforwp_font_generator();
235
+ function ampforwp_font_generator() {
236
+
237
+ if ( ! gAPIkey){
238
+ gAPIkey = $('#google_font_api_key').val();
239
+ }
240
+ if(gAPIkey=='' || typeof gAPIkey == 'undefined'){
241
+ $('#redux_builder_amp-google_font_api_key').append('<p style="color:red"> Could not connect to API, please double check your API key. </p> ');
242
+ $('.ampforwp-google-font-class').css({'display':'none'});
243
+ return ;
244
+ }
245
+
246
+ gURL = "https://www.googleapis.com/webfonts/v1/webfonts?key=" + gAPIkey;
247
+
248
+ var gfontData = $.get( gURL );
249
+
250
+ gfontData.done(function( data ) {
251
+ var values = Object.values(data.items);
252
+ var allFonts = [];
253
+
254
+ for (var i = 0; i < values.length; i++) {
255
+ allFonts.push({fontFamily: values[i].family });
256
+ }
257
+
258
+
259
+ // var output = data.items.find('Basic');
260
+ // console.log ( output );
261
+
262
+
263
+ // let selectedFontDetails = data.items.find((o, i) => {
264
+
265
+ // if (o.family === 'Keania One') {
266
+ // //arr[i] = { name: 'new string', value: 'this', other: 'that' };
267
+ // return data.items[i]; // stop searching
268
+ // }
269
+ // });
270
+
271
+ // We have all the Font details from Google API in object selectedFontDetails
272
+ //console.log(selectedFontDetails);
273
+
274
+
275
+ // We have all the font names in the an array allFonts
276
+ //console.log( allFonts );
277
+
278
+
279
+ // Creating a select
280
+ var s = $('<select/>');
281
+
282
+ for (var i in allFonts) {
283
+
284
+ var fontDetail = allFonts[i].fontFamily;
285
+
286
+ $('#amp_font_selector-select').append($('<option value="'+ fontDetail +'" data-font-number="'+ i +'"> '+ fontDetail +' </option>'));
287
+ $('#amp_font_selector_content_single-select').append($('<option value="'+ fontDetail +'" data-font-number="'+ i +'"> '+ fontDetail +' </option>'));
288
+ }
289
+
290
+ //console.log( values.length);
291
+ //console.log( values[0].family );
292
+ //console.table( values);
293
+
294
+ $('#amp_font_selector-select, #amp_font_selector_content_single-select').on('change', function() {
295
+ var select = $('option:selected', this).attr('data-font-number');
296
+ var fontVariants = data.items[select].variants ;
297
+ var fontFile = data.items[select].files ;
298
+
299
+ if($(this).attr("id")=='amp_font_selector-select'){
300
+ if ( fontVariants) {
301
+ //$('.select2-search-choice').remove();
302
+ $('#amp_font_type-select').html('<option></option>').trigger('change');
303
+ }
304
+
305
+ // console.log( data.items[select] );
306
+
307
+ //if ( data.items[select] ) {
308
+ $('#google_current_font_data').val( JSON.stringify(data.items[select]) );
309
+
310
+ for (var i in fontVariants) {
311
+ $('#amp_font_type-select').append($("<option value='"+ fontVariants[i] +"' > "+fontVariants[i]+"</option>")).trigger('change');
312
+ }
313
+ }else if($(this).attr("id")=='amp_font_selector_content_single-select') {
314
+ if ( fontVariants) {
315
+ //$('.select2-search-choice').remove();
316
+ $('#amp_font_type_content_single-select').html('<option></option>').trigger('change');
317
+ }
318
+ $('#google_current_font_data_content_single').val( JSON.stringify(data.items[select]) );
319
+
320
+ for (var i in fontVariants) {
321
+ $('#amp_font_type_content_single-select').append($("<option value='"+ fontVariants[i] +"' > "+fontVariants[i]+"</option>")).trigger('change');
322
+ }
323
+ }
324
+
325
+ });
326
+
327
+ });
328
+
329
+ gfontData.fail(function(data) {
330
+ $('#redux_builder_amp-google_font_api_key').append('<p style="color:red"> Cound not connect to API, please double check your API key. </p> ');
331
+ $('.ampforwp-google-font-class').css({'display':'none'});
332
+ });
333
+
334
+ }
335
+
336
+ function amp_font_selector_select_change(){
337
+
338
+
339
+ }
340
+
341
+ $(window).load(function() {
342
+ if($("#google_font_api_key").length>0){
343
+ $("#google_font_api_key").after("<input type='submit' value='Verify'>");
344
+ }
345
+ if($('#amp_font_selector-select').length>0){
346
+ // Adding Default Font Family
347
+ $('#s2id_amp_font_selector-select a').removeClass('select2-default');
348
+
349
+ $('#select2-chosen-3').html(redux_data.amp_font_selector);
350
+ if(redux_data.amp_font_selector==''){
351
+ redux_data.amp_font_selector = 'Poppins'
352
+ }
353
+
354
+ $('#amp_font_selector-select option[value="'+redux_data.amp_font_selector+'"]').attr("selected", "selected");
355
+ $('#amp_font_selector-select').select2('val',redux_data.amp_font_selector).trigger("change");
356
+
357
+ $('#amp_font_selector_content_single-select option[value="'+redux_data.amp_font_selector+'"]').attr("selected", "selected");
358
+ $('#amp_font_selector_content_single-select').select2('val',redux_data.amp_font_selector).trigger("change");
359
+
360
+ // Build select data
361
+ let fontData = redux_data.google_current_font_data;
362
+ // fontData = JSON.parse(fontData);
363
+ console.log(fontData);
364
+ if (! fontData.variants) {
365
+ //$('.select2-search-choice').remove();
366
+ //$('#amp_font_type-select').html('<option></option>');
367
+
368
+ for (var i in fontData.variants) {
369
+ $('#amp_font_type-select').append($("<option value='"+ fontData.variants[i] +"' > "+fontData.variants[i]+"</option>")).trigger('change');
370
+ }
371
+ }
372
+
373
+ if(redux_data.amp_font_type==''){
374
+ redux_data.amp_font_type = ['regular','500','700'];
375
+ }
376
+ // Add Default selected
377
+ if ( redux_data.amp_font_type ) {
378
+ $('#s2id_autogen4').remove();
379
+ for (var i in redux_data.amp_font_type) {
380
+ $('#s2id_amp_font_type-select ul').append('<li class="select2-search-choice"> <div> '+redux_data.amp_font_type[i]+'</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a></li>');
381
+ //s2.append($('<option>').text(e));
382
+ $('#amp_font_type-select option[value='+redux_data.amp_font_type[i]+']').attr('selected','selected').trigger('change');
383
+ $('#amp_font_type_content_single-select option[value='+redux_data.amp_font_type[i]+']').attr('selected','selected').trigger('change');
384
+ }
385
+ //$('#amp_font_type-select').select2('val',redux_data.amp_font_type)
386
+ }
387
+ }
388
+ });
389
+
390
+ /*---------Google Fonts Ends -------*/
391
+
392
+
393
+ $('.redux-container').each(function() {
394
+ if (!$(this).hasClass('redux-no-sections')) {
395
+ $(this).find('.display_header').append('<span class="search-wrapper"><input class="redux_field_search" name="" type="text" placeholder="Search the controls" style="display:none"/><span class="redux-amp-search-icon"><i class="dashicons-before dashicons-search"></i></span></span>');
396
+ $('.redux-amp-search-icon').click(function(){
397
+ $('.redux_field_search').toggle('slide');
398
+ });
399
+ reduxOptionSearch();
400
+ }
401
+ });
402
+
403
+ $(".redux_field_search").keypress(function (evt) {
404
+ //Deterime where our character code is coming from within the event
405
+ var charCode = evt.charCode || evt.keyCode;
406
+ if (charCode == 13) { //Enter key's keycode
407
+ return false;
408
+ }
409
+ });
410
+
411
+ if($(".amp-preview-button").length>0){
412
+ $(".amp-preview-button").click(function(){
413
+ var srcLink = $("#amp-preview-iframe").attr('data-src');
414
+ $("#amp-preview-iframe").html("<iframe src='"+srcLink+"'></iframe>");
415
+ });
416
+ }
417
+
418
+ });
419
+ var dataTabRequired = function(){
420
+ $('[data-tab-required]').each(function(){
421
+ var tabRequired = $(this).attr('data-tab-required');
422
+ var currentThis = $(this);
423
+ tabRequired = JSON.parse(tabRequired);
424
+ var showLi = true;
425
+ $.each(tabRequired,function(k, value){
426
+ var currentValue = jQuery('[name="redux_builder_amp['+value[0]+']"]').val();;
427
+ if(currentValue!=value[2]){
428
+ showLi = false;
429
+ return false;
430
+ }
431
+ });
432
+ if(showLi==false){
433
+ currentThis.hide();
434
+ }else{
435
+ currentThis.show();
436
+ }
437
+
438
+ });
439
+ }
440
+ var reduxOptionTab = function(){
441
+ $('.redux-tab-selector').click(function(){
442
+ var tabId = $(this).attr('data-tab');
443
+ var tabRequired = $(this).attr('data-tab-required');
444
+ $(this).parents().find('.custom-tab-container').hide();
445
+ $('#parent-section-'+ tabId ).show();
446
+ });
447
+ $('.redux-tabs-ul').each(function(){
448
+ $(this).find('.redux-tab-selector:first').click();
449
+ });
450
+ dataTabRequired();
451
+ $('select').change(function(){
452
+ dataTabRequired();
453
+ });
454
+ }
455
+ //reduxOptionTab();
456
+
457
+ $(".redux-ampforwp-ext-activate").click(function(){
458
+ var currentThis = $(this);
459
+ var plugin_id = currentThis.attr("id");
460
+ var newlicense = $('#redux_builder_amp_amp-license_'+plugin_id+'_license').val();
461
+ var license = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][license]"]').val();
462
+
463
+ if(newlicense!='' && newlicense.indexOf("**")<0){
464
+ license = newlicense;
465
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][license]"]').val(license);
466
+ }
467
+
468
+ var item_name = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][item_name]"]').val();
469
+ var store_url = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][store_url]"]').val();
470
+ var plugin_active_path = $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][plugin_active_path]"]').val();
471
+ currentThis.html("Please Wait...");
472
+ $.ajax({
473
+ url: ajaxurl,
474
+ method: 'post',
475
+ data: {action: 'ampforwp_get_licence_activate_update',
476
+ ampforwp_license_activate:plugin_id,
477
+ license:license,
478
+ item_name:item_name,
479
+ store_url:store_url,
480
+ plugin_active_path:plugin_active_path
481
+ },
482
+ dataType: 'json',
483
+ success: function(response){
484
+ currentThis.parents("li").find('.afw-license-response-message').remove();
485
+ if(response.status=='200'){
486
+ currentThis.parents("li").removeClass("not-active").removeClass("invalid").addClass("active").addClass("valid");
487
+ currentThis.html("Deactivate");
488
+ currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
489
+ currentThis.removeClass('redux-ampforwp-ext-activate').addClass('redux-ampforwp-ext-deactivate');
490
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][status]"]').val("valid");
491
+ deactivatelicence();
492
+ var all_data = response.other.all_data;
493
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][success]"]').val( all_data.success );
494
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][license]"]').val( all_data.license );
495
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][item_name]"]').val( all_data.item_name );
496
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][expires]"]').val( all_data.expires );
497
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][customer_name]"]').val( all_data.customer_name );
498
+ $('input[name="redux_builder_amp[amp-license]['+plugin_id+'][all_data][customer_email]"]').val( all_data.customer_email );
499
+ //window.location.href = window.location.href;
500
+ }else{
501
+ currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
502
+ currentThis.html("Activate");
503
+ }
504
+ }
505
+ })
506
+ })
507
+
508
+ //Deactivate License key
509
+ function deactivatelicence(){
510
+ $(".redux-ampforwp-ext-deactivate").click(function(){
511
+ var currentThis = $(this);
512
+ var plugin_id = currentThis.attr("id");
513
+ currentThis.html("Please Wait...");
514
+ $deactivateConfirm = confirm("Are you sure you want to Deactivate ?");
515
+ if($deactivateConfirm){
516
+ $.ajax({
517
+ url: ajaxurl,
518
+ method: 'post',
519
+ data: {action: 'ampforwp_deactivate_license', ampforwp_license_deactivate:plugin_id},
520
+ dataType: 'json',
521
+ success: function(response){
522
+ currentThis.parents("li").find('.afw-license-response-message').remove();
523
+ if(response.status=='200'){
524
+ currentThis.parents(".extension_desc").find("input[name='redux_builder_amp[amp-license][amp-ads-google-adsense][license]']").val("");
525
+
526
+ currentThis.after("<div class='afw-license-response-message'>"+response.message+'</div>');
527
+
528
+ window.location.href = window.location.href;
529
+ }else{
530
+ alert(response.message);
531
+ }
532
+ }
533
+ })
534
+ }
535
+ });
536
+
537
+ }
538
+ deactivatelicence();
539
+
540
+ var helpSection = function(){
541
+ var open;
542
+
543
+ open = true;
544
+
545
+ $('.a-f-wp-help-tear').click(function() {
546
+ if (open) {
547
+ $('.a-f-wp-help-tear').addClass('active');
548
+ $('.a-f-wp-help-message').addClass('active');
549
+ $('.a-f-wp-help-tear').html("<span><i class='dashicons-no-alt'></i></span>");
550
+ return open = !open;
551
+ } else {
552
+ $('.a-f-wp-help-tear').removeClass('active');
553
+ $('.a-f-wp-help-message').removeClass('active');
554
+ $('.a-f-wp-help-message').val('');
555
+ $('.a-f-wp-help-tear').html("<span><i class='dashicons-admin-comments'></i></span>");
556
+ return open = !open;
557
+ }
558
+ });
559
+
560
+ $('input').on('input', function(e) {
561
+ var value;
562
+ value = $("input").val();
563
+ if (value.length >= 2) {
564
+ $('.a-f-wp-help-tear').addClass('green');
565
+ $('.a-f-wp-help-tear').removeClass('active');
566
+ return $('.a-f-wp-help-tear').html("<span><i class='dashicons-admin-comments'></i></span>");
567
+ } else {
568
+ $('.a-f-wp-help-tear').removeClass('green');
569
+ $('.a-f-wp-help-tear').addClass('active');
570
+ return $('.a-f-wp-help-tear').html("<span><i class='dashicons-no-alt'></i></span>");
571
+ }
572
+ });
573
+ }
574
+ helpSection();
575
+
576
+ var redux_title_modify = function(){
577
+ $( '.redux-group-tab-link-a' ).click(function(){
578
+ var link = $( this );
579
+ if ( link.parent().hasClass( 'empty_section' ) && link.parent().hasClass( 'hasSubSections' ) ) {
580
+ var elements = $( this ).closest( 'ul' ).find( '.redux-group-tab-link-a' );
581
+ var index = elements.index( this );
582
+ link = elements.slice( index + 1, index + 2 );
583
+ }
584
+
585
+ var el = link.parents( '.redux-container:first' );
586
+ var relid = link.data( 'rel' ); // The group ID of interest
587
+ var oldid = el.find( '.redux-group-tab-link-li.active:first .redux-group-tab-link-a' ).data( 'rel' );
588
+
589
+ var panelTitle = el.find( '#' + relid + '_section_group' ).find("h2:first").hide().html();
590
+ $('.redux-main').find("#info_bar h2#newTitle").remove();
591
+ if (typeof panelTitle !== 'undefined' || panelTitle){
592
+ $('.redux-main').find("#info_bar a.expand_options").after('<h2 id="newTitle" style="float: left;margin: 0px;padding-left: 10px;">'+panelTitle+'</h2>');
593
+ }
594
+
595
+ });
596
+
597
+ $('li.active .redux-group-tab-link-a').click();
598
+ }
599
+
600
+ });
601
+
602
+ function getQueryStringValue (key) {
603
+ return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
604
  }
includes/admin-style.css CHANGED
@@ -1,721 +1,724 @@
1
- /*Bolt Icon*/
2
- .ampforwp-blurb-add:hover{
3
- cursor: pointer;
4
- }
5
- .ampforwp-blurb-add.button {
6
- margin-bottom: 10px;
7
- }
8
- .ampforwp-blurb-additional .preview-image {
9
- max-width:100%;
10
- width : 70px;
11
- height : 70px;
12
- }
13
- #toplevel_page_amp_options a .wp-menu-image:before{display: none}
14
-
15
- body #toplevel_page_amp_options .wp-menu-image{
16
- background-image:
17
- url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjMxNHB4IiBoZWlnaHQ9IjMxNXB4IiB2aWV3Qm94PSIwIDAgMzE0IDMxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDEgKDM1MzI2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5TaGFwZTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIyNjA3MSIgZmlsbD0iI0ZGNEM0QyI+CiAgICAgICAgICAgIDxnIGlkPSJDYXBhXzEiPgogICAgICAgICAgICAgICAgPGcgaWQ9Il94MzJfNDAuX1Bvd2VyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTU3LjAwNywwIEM3MC4yOTIsMCAwLDcwLjI5MiAwLDE1Ny4wMDcgQzAsMjQzLjcxNSA3MC4yOTIsMzE0LjAxNCAxNTcuMDA3LDMxNC4wMTQgQzI0My43MTYsMzE0LjAxNCAzMTQuMDE0LDI0My43MTUgMzE0LjAxNCwxNTcuMDA3IEMzMTQuMDE0LDcwLjI5MiAyNDMuNzE2LDAgMTU3LjAwNywwIFogTTE1Ny4wMDcsMjgyLjYxMiBDODcuNjM0LDI4Mi42MTIgMzEuNDAyLDIyNi4zNzIgMzEuNDAyLDE1Ny4wMDcgQzMxLjQwMiw4Ny42MzQgODcuNjM0LDMxLjQwMiAxNTcuMDA3LDMxLjQwMiBDMjI2LjM3MSwzMS40MDIgMjgyLjYxMSw4Ny42MzQgMjgyLjYxMSwxNTcuMDA3IEMyODIuNjEyLDIyNi4zNzIgMjI2LjM3MiwyODIuNjEyIDE1Ny4wMDcsMjgyLjYxMiBaIE0yMDQuMTExLDE0MS4zNjggTDE2My40NzksMTQxLjUzMyBDMTU5LjEzOSwxNDEuNTUzIDE1Ny41NDQsMTM4LjYyMyAxNTkuOTA1LDEzNC45NzkgTDIwMy4zOTcsNjguMTA5IEMyMDguMTI2LDYwLjg0MSAyMDYuOTg0LDU5LjkyMiAyMDAuODYxLDY2LjA1MyBMMTA1LjMwNSwxNjEuNiBDOTkuMTcyLDE2Ny43MzIgMTAxLjIzMiwxNzIuNjc2IDEwOS45MDYsMTcyLjY0MSBMMTQyLjY3OSwxNzIuNTA4IEMxNTEuMzQ3LDE3Mi40NzIgMTU0LjU1MiwxNzguMzM1IDE0OS44MjQsMTg1LjYwNSBMMTA2LjMzNCwyNTIuNDc3IEMxMDMuOTcyLDI1Ni4xMTIgMTA0LjU0MiwyNTYuNTgxIDEwNy42MiwyNTMuNTI3IEwxNzUuOTE1LDE4NS43MTcgQzE3OC45ODgsMTgyLjY1OSAxODMuOTUsMTc3LjY4NiAxODYuOTgzLDE3NC41OTYgTDIwOC43ODgsMTUyLjQ4NSBDMjE0Ljg3NSwxNDYuMzE3IDIxMi43NzUsMTQxLjMzIDIwNC4xMTEsMTQxLjM2OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) !important;
18
- background-repeat: no-repeat;
19
- background-position: center;
20
- -webkit-background-size: 20px auto;
21
- background-size: 20px auto;
22
- }
23
- .ampforwp_new_features .redux-group-tab-link-a span:after {
24
- content: "NEW";
25
- color: #fff;
26
- font-size: 10px;
27
- background: #4452a7;
28
- padding: 4px 7px;
29
- border-radius: 30px;
30
- font-weight: normal;
31
- position: relative;
32
- top: -1px;
33
- left: 5px;
34
- }
35
- .redux-container #redux-header .display_header h2{
36
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAqFBMVEUAAADuHSTwHib5JCv/TEzuHCTuHSXuHCTuHSX/JzbuHCTuHCTyICjuHCTuHSTuHCTvHSbzHyfuHCXuHCT/KirtHSTuHSTtHCTuHCTvHSXuHSXwHyfuHST0IinxHiXuHSXyHybuHCTyIynuHCTtHCTwHSXwHiXwHibvHybuHSXvHCXvHSXuHSXuHCTuHSXvHSXuHSTuHCXvHSb1HyruHibvHCTuHCTtHCRUu4DRAAAAN3RSTlMA7jEOA/L5650Jz9Ukt47ATRv7sAbmhPapXFYgaBY3cSjFEtrJUURALndsYt6iiXuSlkcYO3/h34n5UgAADa5JREFUeNrs22lz2jAQBuDXN74wl8EBQrihQAoBkv3//6x3M50iy9cKp9PncyaZ1yOt1isH//2nlqGvxsfmc7j0D7Fj2WRbWvy28MLk9LobTh7x73L1fbPraZRu4Ien8dXAv8VYHxO/Qzm8dfurf2Q1tIcnr0OFLBr7KT603rnpUzlxY/hR90N7Fw6oCp3Z8eMthMsuoir5rx/pGRjjiKrnfWrjQ7g2BsSjE7ZM1Nz8ySdOcX+EGgtOA2KXTFBTky6pMVvVcSecZ6TOYl+3R7CZkVqLhzo9gmtE6vlD1MQ0pPvwNqgBo2nT3XTvfiiaY4fuye4buCfdo3uLV7gbt9mhGui2cR/rA9WDNsYdGA2qj2gE1bY+ldNxFr43i8JotvT82KZytBbU2g+oGNsPT0+rSTDHn4yR3to1u55FBTV7UMdIqIC42x9OTUiMWsdkQQUsR1Blu6C8vJeHEbJ7bH2e2ZSTtoIa4wHl4jw/zJGf2zod6rgNci7/t88TFBd88uq2DXItf+t5baIkvRnX6TTYWJRZ+OCiCuY5GVBmY3Ba2ZSRX+kQ29hHlNUr+Iwpo+UK71RPHF9MMHmlbKIzOGwTyibpgYP5QpmEG3AJGh3KIjJQvV5CWXQn4DR6sSkD7xFVMyLKYKaDWzuhDA4BqvXokZyzhwprn+RiHVUysuRvzKFG7zggKSdAdXoRSXkTqDPqktShjaqYCclYOxNKtQ4k4xmoyAvJhBeo5p5IJnIV9T+dT7iHlUYSXVNJ/xtfcR+jJUk0UN6KJMI57qXXJIk+ytrYtVz+v7Q0SrdDOVuLUr1dkZfibTBEGcaCUs3muLdeg1JZU5SQUKrQRQ18plS+y3YAPJtQyHh+wm1PXEfBdkBpPkOlwKctBB5sSvPAUwCeoNI2pi6EzhZHGUgoRecBKukO2QHEJg6l8FwUsKcUgzNU0jXZtHf6RikaVReAjvr8fg+pAqfaMmD4xX8fR366Sn/KIjErQE6N+tS/7/lPkFrbJOb1kMu6Puff9/wHF3JDSnFEHu6BxJ7BRJyf1shiR2KDADk0SSw0oZCu5anifRKLkJ3eIaGZCybi/LFRRekaIyvTI6G3OZiI89MKWZkRCWmXCt6BOldIMORPkN0lLt8OGQ4JfYIEQ37tsarzSy9dAUMopGuFuq4+Cc2QxdQmkXgOdXSt2EM3o5LzsbAeBeBXfquNnC6OuIS7kLrWowDoWvGPntalmvioFgVA1wTtS8ky4LiQ2JCIdYEyuiZpYGWNTPFVPGO4YiiQv+Sum5CIYyDVmUQ8E6roWuk/2iCRY9EFMIEQW357i4LmGgloRrGl04AqulbF1ea+2EHQJQFnDgHG/H4PxS1J4GBCKCCRPRTRtYp2nd4p0A6e8jfRjPmbKEIeZgmR+SDvaxRjfvEYsPRL7RV5Lxm7EGDMT2uUdCSBBAK+uiNQnr+BsgyNbrPnOV+DQggw5o8NlNbPeRI2SGADAb781EJ5c4tu83GLMcg1T+bNn6AKzVxlcEwCZwjw5XceUYWLnaevjfIcmwz5OS5fX+g2rYe/XEhgBX66xlN1Rx16JykxuzwFgze/1UZVnrPfb0aKBoHy/DRGSfIBl/XXHmiTQBvcdI3x1HnLugd2ipogef5BgAr1s+6B8F4fw+ga6+cnU7rNwZ/cgWCvuBDgyr80Uallthfcc9aVwp3f3qKcrHv7mK1pXIOVrrH/7/fczjTj8emmNxOM3vOXHQMWmHN25lkOwc/gpGsqJg+rLB3uUMkkRJ6/iarI63szwwDRgQBT/oULBmGGlzxP/Rmga5LJC/c5YLv4zejIuyAF+V/AIpAPutZ02xzv+PPHBngspK95R7rJwzv+/NQCk4Z02J/QO8GS5M+fgMte0OTgN19tCdA1+fWriiJg4CdXUANHeMedn4bg40hmwzrdFIOFrim/fetKvp7eS4qEgvxaG4yOkhrXlPzrOX9+2oNTS3Lj05V8SMCfPwKrkWSPe3TTFICa/IMAvCy6qYcfNLrFNgGe/OpH7zO6KcB3hqobEV3L+f0qdy94Tj0FQ1X5KQG3V/E5KB6ZnNjyq38AD6kDrzHd9KQqP1kjMNvQTY3UNmHFkF8g3m0fv7pc2l+Nvgq+mX6z/Ur/ZjKZPpooqC1u9cR90ERV/uy0ZINCTLpplnqFHNQu/xfu7rRJTSAIA3ArDJcHgoLxwCOuR/YyrtH+//8sRyVlVeIcwHRL5fma2qq8igPTTM/UqFO3VDe6nqQc1MT8iHuLRSFf9fYsbWZ+vNh8Q+gqyiF+M/NXbFzpqUoir3jPppn5cWVzqUwBP2X3B4hm5n+z+iycKApGUSPzZ4nV9XJdxVxx3cT84wVU01f9njy8J25gfm9gecO1A/wkmQz+T/lla6XaqiugcfnTrfUt99qqMaBx+af2142vFM/JT/9TfvVdIMN7omblxwlFTSxRrCbt/E/5pU+CiplS1qj8LzQvxxzFawEPaphlzcovq4u76plSZWEHrZpDDYoZb0u5PGIGlV2alh981Yz3q+12WWeMNj1DfanqVn+RtRRU9YE2LaG+Qvm4/2z7g982LT8slMWFqWwpaVVngeWRtSzpIy6sLxDZCrTkCFZ8UV7khf1VgsnlSaBCynxy3Ek9zN0ftAXUMyqK4vMPzk/hD6PRyHXd3/+YLC4R0p4Poe8JPKiXCc6A2Fww5Qdf/azXk10g1AZMu9efNd0AXwkGoPr7t/fBmp2mY2D+qHULsCXMr98c5U2zd8YGyLVZ8sOb5hnLwfsKoLZA5Fif86rrCbw+ahRcsuQ/a7/g4aM2Ue9x5IeptiUsf9AGWgeW/NDXvvrZSvuqaPVY8kOkfc4q8CGDwIB6/DdPt5Fdi5ScjCU/TAx64gK86xUoBar89I+bHZMNKLtAZ8+U320Z9MSt+LeQCV+Zbrx7o3dNGXfrJPSZ8kNgtD1OwL2V5IIrfyiM2iGm0jkJjVGHqUkLpqpqg75/PHOBRM6VH3qGS27XrHvpHTyu/EVquJfWkbObw33S1H/p55tD0x2Xxg7Y94UtP0TGL9w7fHtKd8ds5ceDJJXnGL/SjsG6mO95q2++U/KKbVPhOV9+R5RYchQxbSudCLb8cJT+AvQj080BrOrxnd4Y+mW+1CRluRNO+PLDEktVenrIMCkufL78owxLPd8OOI7X+MSXH+Yl37q6sg8snYEtA8aje9xr2Us6RyTeUMjJ+PLDS+nd8mco4SUkxYk5UHI35Q8Z+UTc4L5jzA/LCsfMLFBmZ6cMyJg/ESjxbLKmmGSvzz7nwT2fKh01taVcr7bgzL9DmfdqA8d4Vr8MyJh/tKk4oL8g2VE7OWN+OKLMqeq9Awf2yoATIDYbay4A87mKrZOf3IgxPwyx8tobtyP/WztlwJQuv/5bHJ/rHOK/rVMGZMy/ErUWn0Uo05rVLwOmU6AWyhOIwuhtqtTTCKqZM+aHoG73wdD68s1EMOafoNTG7AuceWj5XthjzN8V9f/3OSqGgRrfiScZRZkGAIzNyxZWh4GixZcfTiiVHqy0fQVV52XeAOjNLfUfDC32MWwZ80/xptbhBUnLWiefk/Hl33vWNiGbW+vlD/jyt4XFn26Mct4HGNvd/oJa10e57DOUM2uhnFiYlwHZ8p9fUWFnt6PLX5U5/nnMkd+JbHfg9VHh2gUT337l3wE9J0aF2IXyRk+o4LeNyoBc+c8RKvhnuLE0DKAwyJVz5e++osoHyT4A3hQ0DinieA/02j5RC26/1t4WbsSUfy+w6gCgHwaUcl0ZUHDkn3qo4iegoB8GlAJXVQbkyT9HtQ/C/m7E+Kx4zyi+AbnwhGo58eebyQb5Z5b83QjVAqqt+W8uLtwxExz5pwLVhi5NjUX/M+iJBVALA9RYh1Cf+wk1/N2/Y0eLPv8qQo2OAzaMYtTJ3b9/OCugNhGocU0IJloS0QJ4zYao49v7EopX1Ao+A5/RcYw6VgehboZarRfgstugCkURqu2j3lMbOCS3UVk7VSOYcKqkXx2g5i4F6okPsC2J0ID/xQFK7ssGDfgUY7ITo4lWTjcajuZXNHFdAYVwiEZE/wwUwmWGRjoJ0HADNOOdZmCbc/TRzPozkMnRUPq2B5sO7wINDUMg9IzGrvkK7CiWERoLXCA1FWju6bn+1RhOeymay4HaqoMleMNtCNW5+0BgCf4H0AsDLGXce+5CFcXkUwtLiRNgMRFY0iZ46UIZ52k/wrJyF5isIizPHx4HM9Ardsu3P8/djbv8NT8DPbEOLpNviXs3+WL65RT7WE18BlYTgXW0NuveW3Dqv+fv/VPwNlx3/BTxpsGXP9wK0s2R7YCfexxjQwSf4SG6MTbBZg8PM2/ho6XvITzQOcDHig/wYO01Ps5mAA3wvR17XUEQhuIAPp1OJTVNu0myErt7yRLP+79ZCEH0IUhTO0q/N/hvbOfiFfAb8tElKGhcge7NTZ+goR0V6Ba73AgqNBWgOyyzCTqUR9ANIUEYvyR5IbQv4pTglS8YtMrwJIJbwEfQlulMJ32QqwI0jzkW9st/cq1Ybja9scT88t+cgQLNkJ1z39I/iOlmAl8aJXskDW89wdYMWe3w6hJpxa9G26dOAdUoxswKyJDQfJWNp59ED2O+QzTnNMvVr6tELZfA8EqIQiM2T9ahp99ddRL1bX19EMW1bvu0PxX+b2ju+lzNg3GzPMcAAAAASUVORK5CYII=") !important;
37
- background-size: 18px;
38
- background-repeat: no-repeat;
39
- padding-left: 26px;
40
- background-position: 0px 0;
41
- color: #000;
42
- }
43
- .amp-update-notice .notice-dismiss{
44
- display: none
45
- }
46
-
47
- /* Mobile preview button and preview Iframe Styling #1082 */
48
- .col-sm-12 {
49
- width: 100%;
50
- }
51
- .margin-top-bottom {
52
- margin-top: 9px;
53
- margin-bottom: 10px;
54
- }
55
- .text-center {
56
- text-align: center;
57
- }
58
- #ampforwp-preview-format {
59
- margin-bottom: 0px;
60
- line-height: 0.5em;
61
- }
62
- .ampforwp-preview-phone-frame-wrapper {
63
- width:110%;
64
- display:inline-block;
65
- position: relative;
66
- max-width: 300px;
67
- text-align: center;
68
- margin-left: -12px;
69
- }
70
- .ampforwp-preview-phone-frame-wrapper:after {
71
- padding-top: 180%;
72
- display:block;
73
- content: '';
74
- }
75
- .ampforwp-preview-phone-frame {
76
- position: absolute;
77
- top: 0;
78
- bottom: 0;
79
- right: 0;
80
- left: 0;
81
- border: 1px solid #e5e5e5;
82
- border-radius: 40px;
83
- padding-top:50px;
84
- padding-bottom: 35px;
85
- background: #f1f1f1;
86
-
87
- }
88
- .ampforwp-preview-container {
89
- height: 100%;
90
- position: relative;
91
- width: 100%;
92
- border: 1px solid #e5e5e5;
93
- overflow: hidden;
94
- }
95
- .ampforwp-preview-container > iframe {
96
- height: 100%;
97
- width: 100%;
98
- transform: scale(1, 1);
99
- transform-origin: top left;
100
- }
101
- #TB_window #TB_ajaxContent{
102
- width: 100%;
103
- height: 100%;
104
- }
105
- .ampforwp-preview-button-container{
106
- float: right;
107
- margin-top: 0px;
108
- }
109
- .meta-radio-two{margin-right: 8px; top: 3px; position: relative;}
110
- #wp-admin-bar-ampforwp-view-amp a, #wp-admin-bar-ampforwp-view-amp:hover a{
111
- background-size: 18px !important;background-repeat: no-repeat !important;background-position: 4px 7px !important;text-indent: -99999px;width: 12px; background:
112
- url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjMxNHB4IiBoZWlnaHQ9IjMxNXB4IiB2aWV3Qm94PSIwIDAgMzE0IDMxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDEgKDM1MzI2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5TaGFwZTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjODI4NzhjIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIyNjA3MSIgZmlsbD0iIzgyODc4YyI+CiAgICAgICAgICAgIDxnIGlkPSJDYXBhXzEiPgogICAgICAgICAgICAgICAgPGcgaWQ9Il94MzJfNDAuX1Bvd2VyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTU3LjAwNywwIEM3MC4yOTIsMCAwLDcwLjI5MiAwLDE1Ny4wMDcgQzAsMjQzLjcxNSA3MC4yOTIsMzE0LjAxNCAxNTcuMDA3LDMxNC4wMTQgQzI0My43MTYsMzE0LjAxNCAzMTQuMDE0LDI0My43MTUgMzE0LjAxNCwxNTcuMDA3IEMzMTQuMDE0LDcwLjI5MiAyNDMuNzE2LDAgMTU3LjAwNywwIFogTTE1Ny4wMDcsMjgyLjYxMiBDODcuNjM0LDI4Mi42MTIgMzEuNDAyLDIyNi4zNzIgMzEuNDAyLDE1Ny4wMDcgQzMxLjQwMiw4Ny42MzQgODcuNjM0LDMxLjQwMiAxNTcuMDA3LDMxLjQwMiBDMjI2LjM3MSwzMS40MDIgMjgyLjYxMSw4Ny42MzQgMjgyLjYxMSwxNTcuMDA3IEMyODIuNjEyLDIyNi4zNzIgMjI2LjM3MiwyODIuNjEyIDE1Ny4wMDcsMjgyLjYxMiBaIE0yMDQuMTExLDE0MS4zNjggTDE2My40NzksMTQxLjUzMyBDMTU5LjEzOSwxNDEuNTUzIDE1Ny41NDQsMTM4LjYyMyAxNTkuOTA1LDEzNC45NzkgTDIwMy4zOTcsNjguMTA5IEMyMDguMTI2LDYwLjg0MSAyMDYuOTg0LDU5LjkyMiAyMDAuODYxLDY2LjA1MyBMMTA1LjMwNSwxNjEuNiBDOTkuMTcyLDE2Ny43MzIgMTAxLjIzMiwxNzIuNjc2IDEwOS45MDYsMTcyLjY0MSBMMTQyLjY3OSwxNzIuNTA4IEMxNTEuMzQ3LDE3Mi40NzIgMTU0LjU1MiwxNzguMzM1IDE0OS44MjQsMTg1LjYwNSBMMTA2LjMzNCwyNTIuNDc3IEMxMDMuOTcyLDI1Ni4xMTIgMTA0LjU0MiwyNTYuNTgxIDEwNy42MiwyNTMuNTI3IEwxNzUuOTE1LDE4NS43MTcgQzE3OC45ODgsMTgyLjY1OSAxODMuOTUsMTc3LjY4NiAxODYuOTgzLDE3NC41OTYgTDIwOC43ODgsMTUyLjQ4NSBDMjE0Ljg3NSwxNDYuMzE3IDIxMi43NzUsMTQxLjMzIDIwNC4xMTEsMTQxLjM2OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+)
113
- no-repeat
114
- 4px 7px;
115
-
116
- }
117
- .amp-theme-selector-img a{
118
- background: rgba(0, 0, 0, 0.7);
119
- text-decoration: none;
120
- padding: 3px 8px 4px 7px;
121
- bottom: 16px;
122
- font-size: 12px;
123
- border-radius: 100px;
124
- color: #fff;
125
- position: relative;
126
- right: 62px;
127
- }
128
- .amp-theme-selector-img:hover a {
129
- background: #4452a7;
130
- }
131
- .amp-theme-selector-img img{
132
- position: relative;
133
- visibility: visible;
134
- cursor:pointer;
135
- }
136
- .hidetab{
137
- display: none !important;
138
- }
139
- .activetab{
140
- display: block !important;
141
- }
142
- #wpbody-content .wrap .amp-update-notice{
143
- display: table;
144
- position: relative;
145
- height: 70px;
146
- padding: 0;
147
- border: 0;
148
- overflow: hidden;
149
- margin-bottom: 10px;
150
- }
151
- .amp-update-notice-text-box{
152
- padding: 15px 15px 10px 15px;
153
- display: inline-block;
154
- }
155
-
156
- .amp-update-notice-text-box img{
157
- width: 40px;
158
- display: inline;
159
- height: 40px;
160
- }
161
- .amp-update-notice-text{
162
- display: inline;
163
- position: relative;
164
- margin-left: 5px;
165
- font-weight: 300;
166
- top: -14px;
167
- font-size: 20px;
168
- }
169
- .amp-update-notice-text-box a{
170
- position: relative;
171
- top: -17px;
172
- background: #ECEFF1;
173
- text-decoration: none;
174
- color: #111;
175
- font-size: 10px;
176
- padding: 4px 6px 5px 5px;
177
- border-radius: 4px;
178
- margin-left: 5px;
179
- text-transform: uppercase;
180
- border: 1px solid rgba(207, 216, 220, 0.9);
181
- }
182
- .amp-update-notice-dismiss{
183
- display:inline-block;float:right;height: 70px;background: #333;width: 50px;text-align: center;
184
- }
185
- .amp-update-notice-dismiss a{
186
- color: #fff;
187
- text-decoration: none;
188
- top: 26px;
189
- position: relative;
190
- padding: 24px 18px;
191
- font-size: 17px;
192
- font-weight: 300;
193
- background: #333;
194
- z-index: 100;
195
- }
196
- .amp-update-notice-review-box{
197
- float: right;display: inline-block;/* height: 55px; */background: #4CAF50;padding: 12px 20px 11px 60px;background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MTIuMDAxIDUxMi4wMDEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMi4wMDEgNTEyLjAwMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIxMjhweCIgaGVpZ2h0PSIxMjhweCI+CjxnPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGQ9Ik0zNjYuOTA1LDM2NS4wNzFsODcuOTAyLTg1LjY4M2M2LjA4Ny01LjkzNSw4LjIzNi0xNC42NDMsNS42MS0yMi43MjljLTIuNjI5LTguMDg1LTkuNDg2LTEzLjg2Ni0xNy44OTgtMTUuMDg3ICAgICBsLTU1Ljg3OS04LjEyYy00LjQxMy0wLjY0Ny04LjUyMSwyLjQxOS05LjE2MSw2LjgzN2MtMC42NDMsNC40MTksMi40MTgsOC41MjEsNi44MzcsOS4xNjNsNTUuODc5LDguMTIgICAgIGMyLjI3OCwwLjMzLDQuMTM1LDEuODk2LDQuODQ3LDQuMDgzYzAuNzExLDIuMTksMC4xMjksNC41NDgtMS41MTksNi4xNTRsLTkwLjk0Nyw4OC42NWMtMS45MDUsMS44NTgtMi43NzMsNC41MzMtMi4zMjMsNy4xNTUgICAgIGwyMS40NjksMTI1LjE3OGMwLjM4OSwyLjI2OC0wLjUyNyw0LjUxOC0yLjM4Nyw1Ljg2OWMtMS44MTYsMS4zMTgtNC4zMzksMS41MDItNi4zMjIsMC40NTlsLTExMi40MTQtNTkuMTAxICAgICBjLTIuMzU1LTEuMjM3LTUuMTY5LTEuMjM3LTcuNTI0LDBsLTExMi40MTQsNTkuMTAxYy0yLjAzOCwxLjA3LTQuNDYsMC44OTMtNi4zMjItMC40NThjLTEuODYxLTEuMzUzLTIuNzc1LTMuNjAyLTIuMzg4LTUuODcgICAgIGwyMS40Ny0xMjUuMTc3YzAuNDUtMi42MjItMC40Mi01LjI5Ny0yLjMyNC03LjE1NWwtOTAuOTQ2LTg4LjY0OWMtMS42NDgtMS42MDctMi4yMjktMy45NjYtMS41Mi02LjE1NSAgICAgYzAuNzEyLTIuMTg4LDIuNTY3LTMuNzUzLDQuODQ2LTQuMDgzbDEyNS42ODQtMTguMjYzYzIuNjMzLTAuMzgyLDQuOTEtMi4wMzYsNi4wODctNC40MjJsNTYuMjA5LTExMy44OTEgICAgIGMxLjAxOS0yLjA2MywzLjA4LTMuMzQ1LDUuMzgyLTMuMzQ1czQuMzY0LDEuMjgxLDUuMzgzLDMuMzQ1bDU2LjIwNywxMTMuODljMS4xNzgsMi4zODUsMy40NTMsNC4wMzksNi4wODgsNC40MjJsNDIuMzk1LDYuMTYgICAgIGM0LjQwNSwwLjY0MSw4LjUyLTIuNDE4LDkuMTYxLTYuODM3YzAuNjQzLTQuNDE4LTIuNDE4LTguNTIxLTYuODM3LTkuMTYybC0zOC4xOS01LjU0OWwtNTQuMzI2LTExMC4wNzcgICAgIGMtMy43NjEtNy42MjQtMTEuMzc5LTEyLjM1OS0xOS44OC0xMi4zNTljLTguNTAxLDAtMTYuMTE5LDQuNzM2LTE5Ljg3OSwxMi4zNThsLTU0LjMyOCwxMTAuMDc4TDUxLjE0OSwyNDEuNTcyICAgICBjLTguNDEyLDEuMjIyLTE1LjI3LDcuMDAzLTE3Ljg5NywxNS4wODljLTIuNjI2LDguMDg0LTAuNDc4LDE2Ljc5Miw1LjYxLDIyLjcyOGw4Ny45MDIsODUuNjgybC0yMC43NSwxMjAuOTg5ICAgICBjLTEuNDM4LDguMzc3LDEuOTQsMTYuNjg1LDguODE4LDIxLjY4M2MzLjg4OCwyLjgyMyw4LjQzNCw0LjI1OCwxMy4wMTEsNC4yNThjMy41MjMsMCw3LjA2NS0wLjg1LDEwLjMzNy0yLjU2OWwxMDguNjU0LTU3LjEyMiAgICAgbDEwOC42NTcsNTcuMTI0YzMuMTcsMS42NjMsNi43MzUsMi41NDMsMTAuMzEyLDIuNTQzYzQuNzE0LDAsOS4yMTktMS40NjQsMTMuMDM0LTQuMjM0YzYuODc2LTQuOTk4LDEwLjI1Ni0xMy4zMDcsOC44MTctMjEuNjgzICAgICBMMzY2LjkwNSwzNjUuMDcxeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMzg5LjQyOCwyMDIuMzEzYzAuNzA2LTUuMTc5LDcuNzgtMTMuNTY1LDI5LjgxNi0xMi4xNjVjMS4zNTUsMC4wODYsMi42NTEsMC4xMjgsMy45MDEsMC4xMjggICAgIGMyNy42OTktMC4wMDIsMzAuMDU0LTIwLjYzOSwzMS42My0zNC40OThjMC44NzQtNy42NzcsMS42OTktMTQuOTI4LDUuMjc1LTIwLjA1M2MyLjU1My0zLjY2MiwxLjY1My04LjcwMS0yLjAwNy0xMS4yNTQgICAgIGMtMy42NjItMi41NTItOC43MDEtMS42NTUtMTEuMjU1LDIuMDA2Yy01LjkxNCw4LjQ4MS03LjA2MywxOC41Ny04LjA3NiwyNy40NzNjLTEuNzQ2LDE1LjM0My0yLjQxLDIxLjA4Ny0xOC40MzgsMjAuMDYzICAgICBjLTE3LjY2NC0xLjEyNy0zMC44NiwyLjY1Ni0zOS4yMzIsMTEuMjQyYy02Ljg1NCw3LjAyOS03LjY0NCwxNC43MjItNy43MTEsMTUuNTc2bDE2LjExNywxLjI3NSAgICAgQzM4OS40NDksMjAyLjEwNiwzODkuNDQ3LDIwMi4xNzksMzg5LjQyOCwyMDIuMzEzeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMjg2Ljc3NSw5MS4xN2MwLjE2LTAuMDg2LDAuMjU0LTAuMTE5LDAuMjU0LTAuMTE5bDYuNTIxLDE0Ljc5NWM3LjkzNC0zLjQ5NiwxOS45NDUtMTcuMTkyLDguNjE3LTQzLjk5OSAgICAgYy00LjEzNS05Ljc4OS0yLjEyNS0xMS4xMzEsOS4yNS0xNi42MThjMTEuMTEtNS4zNjEsMjcuOTAyLTEzLjQ2MiwyMy40NzEtMzguNTUxYy0wLjc3NS00LjM5Ny00Ljk2Mi03LjMyNy05LjM2Ny02LjU1NSAgICAgYy00LjM5NywwLjc3Ny03LjMzLDQuOTcxLTYuNTU0LDkuMzY3YzIuMjA1LDEyLjQ4LTMuMTc3LDE1LjY3OC0xNC41NzYsMjEuMTc3Yy0xMC4yMzcsNC45MzktMjcuMzcsMTMuMjA1LTE3LjExNiwzNy40NzQgICAgIEMyOTMuNDU5LDgyLjc3OSwyODkuODcxLDg5LjUwNSwyODYuNzc1LDkxLjE3eiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNODAuMjY4LDg0Ljc0OWMxMi4zMTQsMi43OTYsMTQuNTc2LDMuNjUzLDEyLjc0LDE0LjEyYy01LjAyOCwyOC42NjUsOS43NSwzOS4zMTksMTguMjY2LDQwLjk0NiAgICAgYzAuNTEzLDAuMDk5LDEuMDIzLDAuMTQ2LDEuNTI3LDAuMTQ2YzMuODAyLDAsNy4xOS0yLjY5NSw3LjkzMS02LjU2N2MwLjgzOC00LjM4Ni0yLjAzNy04LjYyLTYuNDIzLTkuNDU4ICAgICBjLTAuMDg5LTAuMDE3LTguODI3LTIuNi01LjM3Ni0yMi4yNzNjNC41NDktMjUuOTUtMTQuMDAxLTMwLjE2My0yNS4wODUtMzIuNjhjLTEyLjM0MS0yLjgwMy0xOC4zMDMtNC43MTItMTguOTUzLTE3LjM2OSAgICAgYy0wLjIyOS00LjQ1OC00LjAwNi03Ljg5NC04LjQ4OC03LjY1OWMtNC40NTgsMC4yMjktNy44ODgsNC4wMjktNy42NTgsOC40ODhDNTAuMDU2LDc3Ljg4OCw2OC4yMzcsODIuMDE2LDgwLjI2OCw4NC43NDl6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0xMDUuMjM5LDE4MS4xMTNjMCw2LjEyMSwyLjM4MiwxMS44NzQsNi43MSwxNi4yMDFjNC4zMjgsNC4zMjgsMTAuMDgxLDYuNzExLDE2LjIwMSw2LjcxMSAgICAgYzYuMTIsMCwxMS44NzQtMi4zODMsMTYuMjAyLTYuNzFjNC4zMjgtNC4zMjgsNi43MTItMTAuMDgxLDYuNzEyLTE2LjIwMnMtMi4zODQtMTEuODc0LTYuNzExLTE2LjIwMiAgICAgYy00LjMyOS00LjMyOC0xMC4wODItNi43MTEtMTYuMjAzLTYuNzExcy0xMS44NzMsMi4zODMtMTYuMjAxLDYuNzExQzEwNy42MjEsMTY5LjIzOSwxMDUuMjM5LDE3NC45OTIsMTA1LjIzOSwxODEuMTEzeiAgICAgIE0xMjMuMzgyLDE3Ni4zNDJjMS4yNzMtMS4yNzMsMi45NjgtMS45NzUsNC43NjktMS45NzVjMS44MDIsMCwzLjQ5NSwwLjcwMiw0Ljc3LDEuOTc2YzEuMjc1LDEuMjc0LDEuOTc4LDIuOTY4LDEuOTc4LDQuNzcgICAgIHMtMC43MDIsMy40OTQtMS45NzYsNC43NjljLTEuMjc1LDEuMjc0LTIuOTY5LDEuOTc2LTQuNzcyLDEuOTc2Yy0xLjgsMC0zLjQ5NC0wLjcwMi00Ljc3LTEuOTc2ICAgICBjLTEuMjczLTEuMjczLTEuOTc1LTIuOTY3LTEuOTc1LTQuNzY5QzEyMS40MDUsMTc5LjMxMiwxMjIuMTA2LDE3Ny42MTgsMTIzLjM4MiwxNzYuMzQyeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMzE1LjI4NSwxMjkuMTg5Yy04LjkzMyw4LjkzNC04LjkzMywyMy40NywwLjAwMSwzMi40MDRjNC4zMjgsNC4zMjgsMTAuMDgyLDYuNzEsMTYuMjAxLDYuNzEgICAgIGM2LjExOSwwLDExLjg3NC0yLjM4MiwxNi4yMDItNi43MWM4LjkzMy04LjkzNCw4LjkzMy0yMy40NywwLTMyLjQwM2MtNC4zMjctNC4zMjgtMTAuMDgzLTYuNzExLTE2LjIwMi02LjcxMSAgICAgQzMyNS4zNjgsMTIyLjQ3OSwzMTkuNjEzLDEyNC44NiwzMTUuMjg1LDEyOS4xODl6IE0zMzYuMjU0LDE1MC4xNmMtMS4yNzMsMS4yNzMtMi45NjcsMS45NzQtNC43NjksMS45NzQgICAgIGMtMS44MDIsMC0zLjQ5NS0wLjcwMS00Ljc3LTEuOTc0Yy0yLjYzLTIuNjMtMi42My02LjkxLTAuMDAxLTkuNTM5YzEuMjc0LTEuMjc0LDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1ICAgICBjMS44MDEsMCwzLjQ5NCwwLjcwMSw0Ljc2OSwxLjk3NEMzMzguODg0LDE0My4yNSwzMzguODg0LDE0Ny41MywzMzYuMjU0LDE1MC4xNnoiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPHBhdGggZD0iTTc1LjY5NSwzMzYuOTI2Yy00LjMyOS00LjMyNi0xMC4wODItNi43MDktMTYuMjAyLTYuNzA5Yy02LjEyLDAtMTEuODczLDIuMzgzLTE2LjIwMSw2LjcxICAgICBjLTguOTM0LDguOTM1LTguOTM0LDIzLjQ3LDAsMzIuNDA0YzQuMzI3LDQuMzI4LDEwLjA4LDYuNzEyLDE2LjIwMSw2LjcxMnMxMS44NzQtMi4zODQsMTYuMjAzLTYuNzExICAgICBDODQuNjI5LDM2MC4zOTYsODQuNjI5LDM0NS44NjIsNzUuNjk1LDMzNi45MjZ6IE02NC4yNjIsMzU3Ljg5OGMtMS4yNzMsMS4yNzQtMi45NjcsMS45NzctNC43NywxLjk3NyAgICAgYy0xLjgsMC0zLjQ5NC0wLjcwMi00Ljc2OS0xLjk3N2MtMi42MzEtMi42MjktMi42MzEtNi45MDktMC4wMDEtOS41MzhjMS4yNzMtMS4yNzMsMi45NjctMS45NzUsNC43Ny0xLjk3NSAgICAgczMuNDk2LDAuNzAxLDQuNzcsMS45NzVDNjYuODkzLDM1MC45ODksNjYuODkzLDM1NS4yNjksNjQuMjYyLDM1Ny44OTh6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik00NzMuMTUsMzM2LjkyNmMtNC4zMjktNC4zMjYtMTAuMDgyLTYuNzA5LTE2LjIwMS02LjcwOWMtNi4xMjEsMC0xMS44NzMsMi4zODMtMTYuMjAyLDYuNzEgICAgIGMtOC45MzMsOC45MzUtOC45MzMsMjMuNDcsMCwzMi40MDRjNC4zMjgsNC4zMjgsMTAuMDgxLDYuNzEyLDE2LjIwMiw2LjcxMmM2LjEyLDAsMTEuODczLTIuMzg0LDE2LjIwMi02LjcxMSAgICAgQzQ4Mi4wODQsMzYwLjM5Niw0ODIuMDg0LDM0NS44NjIsNDczLjE1LDMzNi45MjZ6IE00NjEuNzE5LDM1Ny44OThjLTEuMjc0LDEuMjc0LTIuOTY4LDEuOTc3LTQuNzcsMS45NzcgICAgIGMtMS44MDEsMC0zLjQ5NS0wLjcwMi00Ljc2OS0xLjk3N2MtMi42MzEtMi42MjktMi42MzEtNi45MDktMC4wMDItOS41MzhjMS4yNzQtMS4yNzMsMi45NjgtMS45NzUsNC43NzEtMS45NzUgICAgIGMxLjgwMSwwLDMuNDk2LDAuNzAxLDQuNzcsMS45NzVDNDY0LjM0OSwzNTAuOTg5LDQ2NC4zNDksMzU1LjI2OSw0NjEuNzE5LDM1Ny44OTh6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0xODYuODkyLDkzLjI0NWM2LjEyLDAsMTEuODczLTIuMzgzLDE2LjIwMS02LjcxMWM0LjMyNy00LjMyOCw2LjcxMS0xMC4wODIsNi43MTEtMTYuMjAyICAgICBjMC02LjEyMS0yLjM4NC0xMS44NzQtNi43MTEtMTYuMmMtNC4zMjgtNC4zMjktMTAuMDgxLTYuNzEyLTE2LjIwMS02LjcxMmMtNi4xMjIsMC0xMS44NzQsMi4zODMtMTYuMjAyLDYuNzExICAgICBjLTQuMzI4LDQuMzI3LTYuNzEyLDEwLjA4LTYuNzEyLDE2LjIwMXMyLjM4NCwxMS44NzQsNi43MTEsMTYuMjAyQzE3NS4wMTgsOTAuODYxLDE4MC43Nyw5My4yNDUsMTg2Ljg5Miw5My4yNDV6ICAgICAgTTE4Mi4xMjIsNjUuNTYyYzEuMjczLTEuMjc0LDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1YzEuOCwwLDMuNDkzLDAuNzAxLDQuNzY5LDEuOTc2YzEuMjczLDEuMjczLDEuOTc3LDIuOTY3LDEuOTc3LDQuNzY5ICAgICBjMCwxLjgwMi0wLjcwMywzLjQ5NS0xLjk3Nyw0Ljc3MWMtMS4yNzQsMS4yNzMtMi45NjgsMS45NzUtNC43NjksMS45NzVjLTEuODAyLDAtMy40OTYtMC43MDItNC43NzEtMS45NzYgICAgIGMtMS4yNzQtMS4yNzQtMS45NzYtMi45NjctMS45NzYtNC43N0MxODAuMTQ2LDY4LjUzMSwxODAuODQ4LDY2LjgzNiwxODIuMTIyLDY1LjU2MnoiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPGNpcmNsZSBjeD0iNjQuNDA5IiBjeT0iMTYwLjIyIiByPSIxMC40OTYiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPGNpcmNsZSBjeD0iNDExLjM5IiBjeT0iMzc0LjExNSIgcj0iMTAuNDk2IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxjaXJjbGUgY3g9IjczLjc1IiBjeT0iNDM5LjM0MyIgcj0iMTAuNDk3IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0zODcuOTI5LDE0OC45NTFjMi4xMDcsMCw0LjIxMy0wLjgxOSw1Ljc5OS0yLjQ0OGwxMS4yMy0xMS41NTNjMy4xMTEtMy4yMDEsMy4wMzktOC4zMTktMC4xNjItMTEuNDMxICAgICBjLTMuMTk5LTMuMTEyLTguMzE4LTMuMDM5LTExLjQzMSwwLjE2MmwtMTEuMjMsMTEuNTUyYy0zLjExMSwzLjIwMS0zLjA0LDguMzE5LDAuMTYyLDExLjQzMSAgICAgQzM4My44NjgsMTQ4LjE5MiwzODUuODk5LDE0OC45NTEsMzg3LjkyOSwxNDguOTUxeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMTQ4LjgyMiwxMzYuMTgybDE0LjkzNyw2LjA0YzAuOTkzLDAuNDAxLDIuMDIsMC41OTEsMy4wMjcsMC41OTFjMy4xOTcsMCw2LjIyNy0xLjkwOSw3LjQ5Ny01LjA1NiAgICAgYzEuNjc0LTQuMTM5LTAuMzI1LTguODUxLTQuNDY0LTEwLjUyNGwtMTQuOTM4LTYuMDRjLTQuMTQ2LTEuNjc2LTguODUxLDAuMzI2LTEwLjUyNCw0LjQ2NCAgICAgQzE0Mi42ODQsMTI5Ljc5NywxNDQuNjgzLDEzNC41MDgsMTQ4LjgyMiwxMzYuMTgyeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNOTYuMDMzLDM5Mi42NzNsLTE0LjkzOC02LjA0Yy00LjE0Ni0xLjY3NC04Ljg1MSwwLjMyNS0xMC41MjQsNC40NjRjLTEuNjczLDQuMTQsMC4zMjYsOC44NTIsNC40NjUsMTAuNTI0bDE0LjkzOCw2LjA0MSAgICAgYzAuOTkzLDAuNCwyLjAxOSwwLjU5MSwzLjAyNiwwLjU5MWMzLjE5NywwLDYuMjI3LTEuOTA4LDcuNDk3LTUuMDU2QzEwMi4xNzEsMzk5LjA1OSwxMDAuMTcyLDM5NC4zNDcsOTYuMDMzLDM5Mi42NzN6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik00MzYuOTQ1LDQyMC4yODRsLTE0LjkzNy02LjA0Yy00LjE0Ni0xLjY3My04Ljg1MiwwLjMyNi0xMC41MjQsNC40NjVjLTEuNjc0LDQuMTQsMC4zMjUsOC44NTIsNC40NjQsMTAuNTI0bDE0LjkzOCw2LjA0ICAgICBjMC45OTMsMC40LDIuMDE5LDAuNTkyLDMuMDI3LDAuNTkyYzMuMTk2LDAsNi4yMjYtMS45MSw3LjQ5Ny01LjA1N0M0NDMuMDgzLDQyNi42NjksNDQxLjA4NSw0MjEuOTU3LDQzNi45NDUsNDIwLjI4NHoiIGZpbGw9IiNGRkZGRkYiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==);url(data: image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MTIuMDAxIDUxMi4wMDEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMi4wMDEgNTEyLjAwMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiPgo8Zz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBkPSJNMzY2LjkwNSwzNjUuMDcxbDg3LjkwMi04NS42ODNjNi4wODctNS45MzUsOC4yMzYtMTQuNjQzLDUuNjEtMjIuNzI5Yy0yLjYyOS04LjA4NS05LjQ4Ni0xMy44NjYtMTcuODk4LTE1LjA4NyAgICAgbC01NS44NzktOC4xMmMtNC40MTMtMC42NDctOC41MjEsMi40MTktOS4xNjEsNi44MzdjLTAuNjQzLDQuNDE5LDIuNDE4LDguNTIxLDYuODM3LDkuMTYzbDU1Ljg3OSw4LjEyICAgICBjMi4yNzgsMC4zMyw0LjEzNSwxLjg5Niw0Ljg0Nyw0LjA4M2MwLjcxMSwyLjE5LDAuMTI5LDQuNTQ4LTEuNTE5LDYuMTU0bC05MC45NDcsODguNjVjLTEuOTA1LDEuODU4LTIuNzczLDQuNTMzLTIuMzIzLDcuMTU1ICAgICBsMjEuNDY5LDEyNS4xNzhjMC4zODksMi4yNjgtMC41MjcsNC41MTgtMi4zODcsNS44NjljLTEuODE2LDEuMzE4LTQuMzM5LDEuNTAyLTYuMzIyLDAuNDU5bC0xMTIuNDE0LTU5LjEwMSAgICAgYy0yLjM1NS0xLjIzNy01LjE2OS0xLjIzNy03LjUyNCwwbC0xMTIuNDE0LDU5LjEwMWMtMi4wMzgsMS4wNy00LjQ2LDAuODkzLTYuMzIyLTAuNDU4Yy0xLjg2MS0xLjM1My0yLjc3NS0zLjYwMi0yLjM4OC01Ljg3ICAgICBsMjEuNDctMTI1LjE3N2MwLjQ1LTIuNjIyLTAuNDItNS4yOTctMi4zMjQtNy4xNTVsLTkwLjk0Ni04OC42NDljLTEuNjQ4LTEuNjA3LTIuMjI5LTMuOTY2LTEuNTItNi4xNTUgICAgIGMwLjcxMi0yLjE4OCwyLjU2Ny0zLjc1Myw0Ljg0Ni00LjA4M2wxMjUuNjg0LTE4LjI2M2MyLjYzMy0wLjM4Miw0LjkxLTIuMDM2LDYuMDg3LTQuNDIybDU2LjIwOS0xMTMuODkxICAgICBjMS4wMTktMi4wNjMsMy4wOC0zLjM0NSw1LjM4Mi0zLjM0NXM0LjM2NCwxLjI4MSw1LjM4MywzLjM0NWw1Ni4yMDcsMTEzLjg5YzEuMTc4LDIuMzg1LDMuNDUzLDQuMDM5LDYuMDg4LDQuNDIybDQyLjM5NSw2LjE2ICAgICBjNC40MDUsMC42NDEsOC41Mi0yLjQxOCw5LjE2MS02LjgzN2MwLjY0My00LjQxOC0yLjQxOC04LjUyMS02LjgzNy05LjE2MmwtMzguMTktNS41NDlsLTU0LjMyNi0xMTAuMDc3ICAgICBjLTMuNzYxLTcuNjI0LTExLjM3OS0xMi4zNTktMTkuODgtMTIuMzU5Yy04LjUwMSwwLTE2LjExOSw0LjczNi0xOS44NzksMTIuMzU4bC01NC4zMjgsMTEwLjA3OEw1MS4xNDksMjQxLjU3MiAgICAgYy04LjQxMiwxLjIyMi0xNS4yNyw3LjAwMy0xNy44OTcsMTUuMDg5Yy0yLjYyNiw4LjA4NC0wLjQ3OCwxNi43OTIsNS42MSwyMi43MjhsODcuOTAyLDg1LjY4MmwtMjAuNzUsMTIwLjk4OSAgICAgYy0xLjQzOCw4LjM3NywxLjk0LDE2LjY4NSw4LjgxOCwyMS42ODNjMy44ODgsMi44MjMsOC40MzQsNC4yNTgsMTMuMDExLDQuMjU4YzMuNTIzLDAsNy4wNjUtMC44NSwxMC4zMzctMi41NjlsMTA4LjY1NC01Ny4xMjIgICAgIGwxMDguNjU3LDU3LjEyNGMzLjE3LDEuNjYzLDYuNzM1LDIuNTQzLDEwLjMxMiwyLjU0M2M0LjcxNCwwLDkuMjE5LTEuNDY0LDEzLjAzNC00LjIzNGM2Ljg3Ni00Ljk5OCwxMC4yNTYtMTMuMzA3LDguODE3LTIxLjY4MyAgICAgTDM2Ni45MDUsMzY1LjA3MXoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTM4OS40MjgsMjAyLjMxM2MwLjcwNi01LjE3OSw3Ljc4LTEzLjU2NSwyOS44MTYtMTIuMTY1YzEuMzU1LDAuMDg2LDIuNjUxLDAuMTI4LDMuOTAxLDAuMTI4ICAgICBjMjcuNjk5LTAuMDAyLDMwLjA1NC0yMC42MzksMzEuNjMtMzQuNDk4YzAuODc0LTcuNjc3LDEuNjk5LTE0LjkyOCw1LjI3NS0yMC4wNTNjMi41NTMtMy42NjIsMS42NTMtOC43MDEtMi4wMDctMTEuMjU0ICAgICBjLTMuNjYyLTIuNTUyLTguNzAxLTEuNjU1LTExLjI1NSwyLjAwNmMtNS45MTQsOC40ODEtNy4wNjMsMTguNTctOC4wNzYsMjcuNDczYy0xLjc0NiwxNS4zNDMtMi40MSwyMS4wODctMTguNDM4LDIwLjA2MyAgICAgYy0xNy42NjQtMS4xMjctMzAuODYsMi42NTYtMzkuMjMyLDExLjI0MmMtNi44NTQsNy4wMjktNy42NDQsMTQuNzIyLTcuNzExLDE1LjU3NmwxNi4xMTcsMS4yNzUgICAgIEMzODkuNDQ5LDIwMi4xMDYsMzg5LjQ0NywyMDIuMTc5LDM4OS40MjgsMjAyLjMxM3oiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTI4Ni43NzUsOTEuMTdjMC4xNi0wLjA4NiwwLjI1NC0wLjExOSwwLjI1NC0wLjExOWw2LjUyMSwxNC43OTVjNy45MzQtMy40OTYsMTkuOTQ1LTE3LjE5Miw4LjYxNy00My45OTkgICAgIGMtNC4xMzUtOS43ODktMi4xMjUtMTEuMTMxLDkuMjUtMTYuNjE4YzExLjExLTUuMzYxLDI3LjkwMi0xMy40NjIsMjMuNDcxLTM4LjU1MWMtMC43NzUtNC4zOTctNC45NjItNy4zMjctOS4zNjctNi41NTUgICAgIGMtNC4zOTcsMC43NzctNy4zMyw0Ljk3MS02LjU1NCw5LjM2N2MyLjIwNSwxMi40OC0zLjE3NywxNS42NzgtMTQuNTc2LDIxLjE3N2MtMTAuMjM3LDQuOTM5LTI3LjM3LDEzLjIwNS0xNy4xMTYsMzcuNDc0ICAgICBDMjkzLjQ1OSw4Mi43NzksMjg5Ljg3MSw4OS41MDUsMjg2Ljc3NSw5MS4xN3oiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTgwLjI2OCw4NC43NDljMTIuMzE0LDIuNzk2LDE0LjU3NiwzLjY1MywxMi43NCwxNC4xMmMtNS4wMjgsMjguNjY1LDkuNzUsMzkuMzE5LDE4LjI2Niw0MC45NDYgICAgIGMwLjUxMywwLjA5OSwxLjAyMywwLjE0NiwxLjUyNywwLjE0NmMzLjgwMiwwLDcuMTktMi42OTUsNy45MzEtNi41NjdjMC44MzgtNC4zODYtMi4wMzctOC42Mi02LjQyMy05LjQ1OCAgICAgYy0wLjA4OS0wLjAxNy04LjgyNy0yLjYtNS4zNzYtMjIuMjczYzQuNTQ5LTI1Ljk1LTE0LjAwMS0zMC4xNjMtMjUuMDg1LTMyLjY4Yy0xMi4zNDEtMi44MDMtMTguMzAzLTQuNzEyLTE4Ljk1My0xNy4zNjkgICAgIGMtMC4yMjktNC40NTgtNC4wMDYtNy44OTQtOC40ODgtNy42NTljLTQuNDU4LDAuMjI5LTcuODg4LDQuMDI5LTcuNjU4LDguNDg4QzUwLjA1Niw3Ny44ODgsNjguMjM3LDgyLjAxNiw4MC4yNjgsODQuNzQ5eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMTA1LjIzOSwxODEuMTEzYzAsNi4xMjEsMi4zODIsMTEuODc0LDYuNzEsMTYuMjAxYzQuMzI4LDQuMzI4LDEwLjA4MSw2LjcxMSwxNi4yMDEsNi43MTEgICAgIGM2LjEyLDAsMTEuODc0LTIuMzgzLDE2LjIwMi02LjcxYzQuMzI4LTQuMzI4LDYuNzEyLTEwLjA4MSw2LjcxMi0xNi4yMDJzLTIuMzg0LTExLjg3NC02LjcxMS0xNi4yMDIgICAgIGMtNC4zMjktNC4zMjgtMTAuMDgyLTYuNzExLTE2LjIwMy02LjcxMXMtMTEuODczLDIuMzgzLTE2LjIwMSw2LjcxMUMxMDcuNjIxLDE2OS4yMzksMTA1LjIzOSwxNzQuOTkyLDEwNS4yMzksMTgxLjExM3ogICAgICBNMTIzLjM4MiwxNzYuMzQyYzEuMjczLTEuMjczLDIuOTY4LTEuOTc1LDQuNzY5LTEuOTc1YzEuODAyLDAsMy40OTUsMC43MDIsNC43NywxLjk3NmMxLjI3NSwxLjI3NCwxLjk3OCwyLjk2OCwxLjk3OCw0Ljc3ICAgICBzLTAuNzAyLDMuNDk0LTEuOTc2LDQuNzY5Yy0xLjI3NSwxLjI3NC0yLjk2OSwxLjk3Ni00Ljc3MiwxLjk3NmMtMS44LDAtMy40OTQtMC43MDItNC43Ny0xLjk3NiAgICAgYy0xLjI3My0xLjI3My0xLjk3NS0yLjk2Ny0xLjk3NS00Ljc2OUMxMjEuNDA1LDE3OS4zMTIsMTIyLjEwNiwxNzcuNjE4LDEyMy4zODIsMTc2LjM0MnoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTMxNS4yODUsMTI5LjE4OWMtOC45MzMsOC45MzQtOC45MzMsMjMuNDcsMC4wMDEsMzIuNDA0YzQuMzI4LDQuMzI4LDEwLjA4Miw2LjcxLDE2LjIwMSw2LjcxICAgICBjNi4xMTksMCwxMS44NzQtMi4zODIsMTYuMjAyLTYuNzFjOC45MzMtOC45MzQsOC45MzMtMjMuNDcsMC0zMi40MDNjLTQuMzI3LTQuMzI4LTEwLjA4My02LjcxMS0xNi4yMDItNi43MTEgICAgIEMzMjUuMzY4LDEyMi40NzksMzE5LjYxMywxMjQuODYsMzE1LjI4NSwxMjkuMTg5eiBNMzM2LjI1NCwxNTAuMTZjLTEuMjczLDEuMjczLTIuOTY3LDEuOTc0LTQuNzY5LDEuOTc0ICAgICBjLTEuODAyLDAtMy40OTUtMC43MDEtNC43Ny0xLjk3NGMtMi42My0yLjYzLTIuNjMtNi45MS0wLjAwMS05LjUzOWMxLjI3NC0xLjI3NCwyLjk2OC0xLjk3NSw0Ljc3MS0xLjk3NSAgICAgYzEuODAxLDAsMy40OTQsMC43MDEsNC43NjksMS45NzRDMzM4Ljg4NCwxNDMuMjUsMzM4Ljg4NCwxNDcuNTMsMzM2LjI1NCwxNTAuMTZ6IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxwYXRoIGQ9Ik03NS42OTUsMzM2LjkyNmMtNC4zMjktNC4zMjYtMTAuMDgyLTYuNzA5LTE2LjIwMi02LjcwOWMtNi4xMiwwLTExLjg3MywyLjM4My0xNi4yMDEsNi43MSAgICAgYy04LjkzNCw4LjkzNS04LjkzNCwyMy40NywwLDMyLjQwNGM0LjMyNyw0LjMyOCwxMC4wOCw2LjcxMiwxNi4yMDEsNi43MTJzMTEuODc0LTIuMzg0LDE2LjIwMy02LjcxMSAgICAgQzg0LjYyOSwzNjAuMzk2LDg0LjYyOSwzNDUuODYyLDc1LjY5NSwzMzYuOTI2eiBNNjQuMjYyLDM1Ny44OThjLTEuMjczLDEuMjc0LTIuOTY3LDEuOTc3LTQuNzcsMS45NzcgICAgIGMtMS44LDAtMy40OTQtMC43MDItNC43NjktMS45NzdjLTIuNjMxLTIuNjI5LTIuNjMxLTYuOTA5LTAuMDAxLTkuNTM4YzEuMjczLTEuMjczLDIuOTY3LTEuOTc1LDQuNzctMS45NzUgICAgIHMzLjQ5NiwwLjcwMSw0Ljc3LDEuOTc1QzY2Ljg5MywzNTAuOTg5LDY2Ljg5MywzNTUuMjY5LDY0LjI2MiwzNTcuODk4eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNNDczLjE1LDMzNi45MjZjLTQuMzI5LTQuMzI2LTEwLjA4Mi02LjcwOS0xNi4yMDEtNi43MDljLTYuMTIxLDAtMTEuODczLDIuMzgzLTE2LjIwMiw2LjcxICAgICBjLTguOTMzLDguOTM1LTguOTMzLDIzLjQ3LDAsMzIuNDA0YzQuMzI4LDQuMzI4LDEwLjA4MSw2LjcxMiwxNi4yMDIsNi43MTJjNi4xMiwwLDExLjg3My0yLjM4NCwxNi4yMDItNi43MTEgICAgIEM0ODIuMDg0LDM2MC4zOTYsNDgyLjA4NCwzNDUuODYyLDQ3My4xNSwzMzYuOTI2eiBNNDYxLjcxOSwzNTcuODk4Yy0xLjI3NCwxLjI3NC0yLjk2OCwxLjk3Ny00Ljc3LDEuOTc3ICAgICBjLTEuODAxLDAtMy40OTUtMC43MDItNC43NjktMS45NzdjLTIuNjMxLTIuNjI5LTIuNjMxLTYuOTA5LTAuMDAyLTkuNTM4YzEuMjc0LTEuMjczLDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1ICAgICBjMS44MDEsMCwzLjQ5NiwwLjcwMSw0Ljc3LDEuOTc1QzQ2NC4zNDksMzUwLjk4OSw0NjQuMzQ5LDM1NS4yNjksNDYxLjcxOSwzNTcuODk4eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMTg2Ljg5Miw5My4yNDVjNi4xMiwwLDExLjg3My0yLjM4MywxNi4yMDEtNi43MTFjNC4zMjctNC4zMjgsNi43MTEtMTAuMDgyLDYuNzExLTE2LjIwMiAgICAgYzAtNi4xMjEtMi4zODQtMTEuODc0LTYuNzExLTE2LjJjLTQuMzI4LTQuMzI5LTEwLjA4MS02LjcxMi0xNi4yMDEtNi43MTJjLTYuMTIyLDAtMTEuODc0LDIuMzgzLTE2LjIwMiw2LjcxMSAgICAgYy00LjMyOCw0LjMyNy02LjcxMiwxMC4wOC02LjcxMiwxNi4yMDFzMi4zODQsMTEuODc0LDYuNzExLDE2LjIwMkMxNzUuMDE4LDkwLjg2MSwxODAuNzcsOTMuMjQ1LDE4Ni44OTIsOTMuMjQ1eiAgICAgIE0xODIuMTIyLDY1LjU2MmMxLjI3My0xLjI3NCwyLjk2OC0xLjk3NSw0Ljc3MS0xLjk3NWMxLjgsMCwzLjQ5MywwLjcwMSw0Ljc2OSwxLjk3NmMxLjI3MywxLjI3MywxLjk3NywyLjk2NywxLjk3Nyw0Ljc2OSAgICAgYzAsMS44MDItMC43MDMsMy40OTUtMS45NzcsNC43NzFjLTEuMjc0LDEuMjczLTIuOTY4LDEuOTc1LTQuNzY5LDEuOTc1Yy0xLjgwMiwwLTMuNDk2LTAuNzAyLTQuNzcxLTEuOTc2ICAgICBjLTEuMjc0LTEuMjc0LTEuOTc2LTIuOTY3LTEuOTc2LTQuNzdDMTgwLjE0Niw2OC41MzEsMTgwLjg0OCw2Ni44MzYsMTgyLjEyMiw2NS41NjJ6IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxjaXJjbGUgY3g9IjY0LjQwOSIgY3k9IjE2MC4yMiIgcj0iMTAuNDk2IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxjaXJjbGUgY3g9IjQxMS4zOSIgY3k9IjM3NC4xMTUiIHI9IjEwLjQ5NiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8Y2lyY2xlIGN4PSI3My43NSIgY3k9IjQzOS4zNDMiIHI9IjEwLjQ5NyIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMzg3LjkyOSwxNDguOTUxYzIuMTA3LDAsNC4yMTMtMC44MTksNS43OTktMi40NDhsMTEuMjMtMTEuNTUzYzMuMTExLTMuMjAxLDMuMDM5LTguMzE5LTAuMTYyLTExLjQzMSAgICAgYy0zLjE5OS0zLjExMi04LjMxOC0zLjAzOS0xMS40MzEsMC4xNjJsLTExLjIzLDExLjU1MmMtMy4xMTEsMy4yMDEtMy4wNCw4LjMxOSwwLjE2MiwxMS40MzEgICAgIEMzODMuODY4LDE0OC4xOTIsMzg1Ljg5OSwxNDguOTUxLDM4Ny45MjksMTQ4Ljk1MXoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTE0OC44MjIsMTM2LjE4MmwxNC45MzcsNi4wNGMwLjk5MywwLjQwMSwyLjAyLDAuNTkxLDMuMDI3LDAuNTkxYzMuMTk3LDAsNi4yMjctMS45MDksNy40OTctNS4wNTYgICAgIGMxLjY3NC00LjEzOS0wLjMyNS04Ljg1MS00LjQ2NC0xMC41MjRsLTE0LjkzOC02LjA0Yy00LjE0Ni0xLjY3Ni04Ljg1MSwwLjMyNi0xMC41MjQsNC40NjQgICAgIEMxNDIuNjg0LDEyOS43OTcsMTQ0LjY4MywxMzQuNTA4LDE0OC44MjIsMTM2LjE4MnoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTk2LjAzMywzOTIuNjczbC0xNC45MzgtNi4wNGMtNC4xNDYtMS42NzQtOC44NTEsMC4zMjUtMTAuNTI0LDQuNDY0Yy0xLjY3Myw0LjE0LDAuMzI2LDguODUyLDQuNDY1LDEwLjUyNGwxNC45MzgsNi4wNDEgICAgIGMwLjk5MywwLjQsMi4wMTksMC41OTEsMy4wMjYsMC41OTFjMy4xOTcsMCw2LjIyNy0xLjkwOCw3LjQ5Ny01LjA1NkMxMDIuMTcxLDM5OS4wNTksMTAwLjE3MiwzOTQuMzQ3LDk2LjAzMywzOTIuNjczeiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNNDM2Ljk0NSw0MjAuMjg0bC0xNC45MzctNi4wNGMtNC4xNDYtMS42NzMtOC44NTIsMC4zMjYtMTAuNTI0LDQuNDY1Yy0xLjY3NCw0LjE0LDAuMzI1LDguODUyLDQuNDY0LDEwLjUyNGwxNC45MzgsNi4wNCAgICAgYzAuOTkzLDAuNCwyLjAxOSwwLjU5MiwzLjAyNywwLjU5MmMzLjE5NiwwLDYuMjI2LTEuOTEsNy40OTctNS4wNTdDNDQzLjA4Myw0MjYuNjY5LDQ0MS4wODUsNDIxLjk1Nyw0MzYuOTQ1LDQyMC4yODR6IiBmaWxsPSIjY2NjY2NjIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);background-size: 34px;background-repeat: no-repeat;text-align: right;background-position: 16px 17px;
198
- }
199
- .amp-update-notice-review-box a{
200
- color: #fff;
201
- text-decoration: none;
202
- font-size: 16px;
203
- line-height: 23px; font-weight: 300;
204
- }
205
- .amp-update-notice-review-box span{
206
- font-size: 11px;text-transform: uppercase;
207
- }
208
- li.first{
209
- position: relative;
210
- }
211
- .active.valid:before{
212
- content: "✓";
213
- display: inline-block;
214
- position: absolute;
215
- color: #fff;
216
- left: 20px;
217
- background: green;
218
- top: 15px;
219
- padding: 4px 7px;
220
- border-radius: 100%;
221
- }
222
- .not-active.invalid:before{
223
- content: "X";
224
- display: inline-block;
225
- position: absolute;
226
- color: #fff;
227
- left: 20px;
228
- background: #f32a56;
229
- top: 15px;
230
- padding: 4px 7px;
231
- border-radius: 100%;
232
- }
233
-
234
-
235
-
236
-
237
-
238
-
239
- .a-f-wp-help-message {
240
- width: 0em;
241
- position: fixed;
242
- right:0; z-index: 99999;
243
- border: 0;
244
- -webkit-transform: translateX(-50%);
245
- -moz-transform: translateX(-50%);
246
- -ms-transform: translateX(-50%);
247
- -o-transform: translateX(-50%);
248
- transform: translateX(-50%);
249
- padding: 0;
250
- color: #333;
251
- opacity: 0;
252
- -webkit-transition: 0.5s;
253
- -moz-transition: 0.5s;
254
- transition: 0.5s;
255
- bottom: 85px;
256
- }
257
- .a-f-wp-help-message img{
258
- width: 250px;
259
- }
260
-
261
- .a-f-wp-help-message:focus {
262
- outline: none;
263
- }
264
- .a-f-wp-help-message.active {
265
- opacity: 1;
266
- -webkit-transition: 1s;
267
- -moz-transition: 1s;
268
- transition: 1s;
269
- width: 170px;
270
- }
271
-
272
- .a-f-wp-help-container {
273
- display: flex;
274
- align-items: center;
275
- justify-content: center;
276
- position: fixed;
277
- z-index: 9999;
278
- bottom: 0px;
279
- right: 0pc;
280
- }
281
- .dashicons-admin-comments:before, .dashicons-no-alt{
282
- font-family: dashicons;
283
- font-style: normal;
284
- }
285
- .a-f-wp-help-container .a-f-wp-help-tear {
286
- width: 4em;
287
- height: 4em;
288
- right: 26px;
289
- bottom: 27px;
290
- border-radius: 0 50% 50% 50%;
291
- border-radius: 50%;
292
- cursor: pointer;
293
- transform: rotate(0deg);
294
- -webkit-transition: 0.5s;
295
- -moz-transition: 0.5s;
296
- transition: 0.5s;
297
- background: dodgerblue;
298
- box-shadow: 4px 4px 10px #b3b3b3;
299
- position: relative;
300
- }
301
- .a-f-wp-help-container .a-f-wp-help-tear.active {
302
- border-radius: 0 50% 50% 50%;
303
- transform: rotate(45deg);
304
- background: black;
305
- }
306
- .a-f-wp-help-container .a-f-wp-help-tear.active span {
307
- position: absolute;
308
- left: 12px;
309
- top: 17px;
310
- font-size: 2em;
311
- color: white;
312
- -webkit-transform: rotate(45deg);
313
- -moz-transform: rotate(45deg);
314
- -ms-transform: rotate(45deg);
315
- -o-transform: rotate(45deg);
316
- transform: rotate(45deg);
317
- }
318
- .a-f-wp-help-container span {
319
- position: absolute;
320
- left: 26px;
321
- top: 29px;
322
- -webkit-transform: translateX(-50%) translateY(-50%);
323
- -moz-transform: translateX(-50%) translateY(-50%);
324
- -ms-transform: translateX(-50%) translateY(-50%);
325
- -o-transform: translateX(-50%) translateY(-50%);
326
- transform: translateX(-50%) translateY(-50%);
327
- font-size: 2em;
328
- color: white;
329
- }
330
- .amp_layout_upcomming .amppb-layout-button .button{
331
- background: #455A64;
332
- color: #fff;
333
- width: 100%;
334
- text-align: center;
335
- padding: 5px 3px;
336
- height: 37px;
337
- border-radius: 0;
338
- color: #fff;
339
- border: 0;
340
- }
341
-
342
- #redux_builder_amp-ampforwp_layouts_core {
343
- position: relative
344
- }
345
- #redux_builder_amp-ampforwp_layouts_core .redux_field_th{
346
- text-transform: uppercase;
347
- line-height: 0;
348
- border-bottom: 1px solid #E7E7E7;
349
- margin-bottom: 30px;
350
- padding-bottom: 15px !important;
351
- }
352
- /*** Layout Screenshot-Image CSS ***/
353
- #redux_builder_amp-ampforwp_layouts_core .amppb_ad-layout-layout {
354
- margin-bottom: 30px;
355
- }
356
-
357
- /*** Layout Screenshot-Image CSS End ***/
358
- .amp-layouts-desc{
359
- position: absolute;
360
- font-size: 13px;
361
- right: 22px;
362
- text-transform: none;
363
- top: -6px;
364
- text-decoration: none;
365
- }
366
- .ampforwp-new-element .form-table tr{
367
- border-top: 0px;
368
- }
369
- .amp-design-selector th, .amp-design-selector td {
370
- padding-top: 40px;
371
- }
372
- .amppb_ad-layout-layout .amppb_ad-layout-wrapper{
373
- padding: 0px;
374
- background: #F7F7F7;
375
- position: relative;
376
- -webkit-transition: .3s ease-in-out;
377
- transition: .3s ease-in-out;
378
- }
379
- .amppb_ad-layout-library-wrapper .amppb_ad-layout-layout:hover .amppb_ad-layout-title{
380
- color:#000;
381
-
382
- }
383
- .amppb_ad-layout-layout .amppb_ad-layout-wrapper .amppb_ad-layout-screenshot{
384
- background: #ffffff;
385
- }
386
- .amppb_ad-layout-screenshot img{
387
- display: block;
388
- width: 100%;
389
- height: auto;
390
- cursor:pointer;
391
- }
392
- .amppb_ad-layout-bottom{
393
- position: relative;
394
- margin: 10px 0px 0px 0px;
395
- text-align: center
396
- }
397
- .amppb_ad-layout-button .button {
398
- width: 100%;
399
- text-align: center;
400
- padding: 5px 3px;
401
- height: 37px;
402
- border-radius: 0;
403
- background: #455A64;
404
- color: #fff;
405
- border: 0;
406
- }
407
- .amppb_ad-layout-title {
408
- margin: 0;
409
- padding: 10px 0px 10px 0px;
410
- text-align: center;
411
- border-bottom: 1px solid #eee;
412
- font-size: 16px;
413
- background: #fcfcfc;
414
- }
415
- .amppb_ad-layout-button{
416
- z-index: 2;
417
- top: 0;
418
- bottom: 0;
419
- right: 0;
420
- height: 100%;
421
- visibility: visible;
422
- -ms-box-sizing: border-box;
423
- -moz-box-sizing: border-box;
424
- -webkit-box-sizing: border-box;
425
- box-sizing: border-box;
426
- padding: 0;
427
- background: #f6f6f6;
428
- -webkit-box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
429
- -moz-box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
430
- box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
431
- }
432
- .amppb_ad-layout-wrapper:hover{
433
- box-shadow: 0 0px 30px 0px rgba(0, 0, 0, 0.30);
434
- }
435
- .amppb_ad-layout-layout .amppb_ad-layout-button .button:hover{
436
- background: #455A64;
437
- color:#fff;
438
- }
439
- .amppb_ad-layout-layout {
440
- -ms-box-sizing: border-box;
441
- -moz-box-sizing: border-box;
442
- -webkit-box-sizing: border-box;
443
- box-sizing: border-box;
444
- float: left;
445
- padding: 0;
446
- width: 30%;
447
- margin-right: 30px;
448
- }
449
- .layouts_pro_lbl, .amppb_ad-layout_pro a{
450
- position: absolute;
451
- right: -3px;
452
- color: #fff;
453
- text-decoration: none;
454
- text-align: center;
455
- font-size: 12px;
456
- font-weight: normal;
457
- background: #43A047;
458
- border-radius: 40px;
459
- top: 28px;
460
- line-height: 3.3;
461
- height: 40px;
462
- width: 40px;
463
- }
464
- .extension-menu-call .dashicons-admin-generic:before{
465
- font-size: 18px;
466
- }
467
-
468
-
469
- /*
470
- Accordion
471
- */
472
-
473
- .afw-accordion-header > h3{
474
- border-radius: 3px 3px 0px 0px;
475
- padding-top: 0px;
476
- margin-top: 20px;
477
- font-size: 13px;
478
- text-transform: none;
479
- padding: 0 16px;
480
- background: #f9f9f9 !important;
481
- border-width: 1px 1px 0 1px !important;
482
- padding: 5px 16px;
483
- border: solid #e5e5e5;
484
- font-weight: 600;
485
- color: #333;
486
- border-bottom: 1px solid #eee !important;
487
- }
488
- .afw-accordion-header{
489
- position: relative;
490
- background: #fff;
491
- width: 100%;
492
- margin-top: 20px;}
493
- .afw-accordion-header:hover .redux_field_th{
494
- color: red
495
- }
496
- .afw-accordion-header:hover{
497
- cursor: pointer;
498
- }
499
- .afw-accordion-header:hover .afw-accordion-tab-open:after{
500
- content: "\f142";
501
- color: #222;
502
- }
503
- .afw-accordion-tab-open:after{
504
- right: 12px;
505
- color: #72777c;
506
- top: 12px;
507
- border-radius: 1000px;
508
- position: absolute;
509
- content: "\f142";
510
- transform: rotate(0deg);
511
- display: inline-block;
512
- font: 400 16px/1 dashicons;
513
- z-index: 30;
514
- }
515
- .afw-accordion-tab-close:after{
516
- right: 8px;
517
- color: #333;
518
- top: 10px;
519
- border-radius: 1000px;
520
- position: absolute;
521
- transform: rotate(180deg);
522
- content: "\f142";
523
- display: inline-block;
524
- font: 400 20px/1 dashicons;
525
- z-index: 30;
526
- }
527
-
528
-
529
- .afw-accordion-tab-close:before {
530
- content: "";
531
- border: 1px solid #eee;
532
- width: 99%;
533
- display: inline-block;
534
- height: 10px;
535
- border-radius: 2px;
536
- left: -1px;
537
- transition: 0.4s;
538
- z-index: 4;
539
- left: 0.5%;
540
- top: 30px;
541
- position: absolute;
542
- }
543
-
544
-
545
- .afw-accordion-tab-close:hover:before{
546
- top: 36px;
547
- }
548
- /*TOOltip*/
549
-
550
- .afw-tooltip {
551
- position: relative;
552
- display: inline !important;
553
- margin-left: 5px;
554
- color: #d8d8d8 !important;
555
- }
556
-
557
- .redux-main .afw-tooltip .afw-help-subtitle {
558
- visibility: hidden;
559
- max-width: 250px;
560
- width: max-content;
561
- background-color: #333;
562
- box-shadow: 0px 0px 10px 0px #999;
563
- color: #fff;
564
- line-height: 1.45;
565
- text-align: center;
566
- border-radius: 3px;
567
- padding: 8px 10px;
568
- position: absolute;
569
- z-index: 100;
570
- bottom: 100%;
571
- right: -26px;
572
- margin-bottom: 6px !important;
573
- opacity: 0;
574
- transition: opacity 0.3s;}
575
-
576
- .afw-tooltip .afw-help-subtitle::after {
577
- content: "";
578
- position: absolute;
579
- top: 100%;
580
- right: 28px;
581
- margin-left: -5px;
582
- border-width: 5px;
583
- border-style: solid;
584
- border-color: #111 transparent transparent transparent;
585
- }
586
-
587
- .afw-tooltip:hover .afw-help-subtitle {
588
- visibility: visible;
589
- opacity: 1;
590
- }
591
- .afw-tooltip .afw-help-subtitle .afw-tootip-bottom{
592
- position: absolute;
593
- bottom: 3px;
594
- border-top: 1px solid #fff;
595
- left: 0px;
596
- right: 0px;
597
- top: auto;
598
- padding: 3px 0px 0px;
599
- }
600
- .afw-tooltip .afw-help-subtitle .afw-tootip-bottom .help-wrap{
601
- width: 49%;
602
- float: left;
603
- border-right: 1px solid #fff;
604
- color:#fff;
605
- }
606
- .afw-tooltip .afw-help-subtitle .afw-tootip-bottom .help-wrap:last-child{
607
- border:none;
608
- }
609
- .afw-tootip-bottom i:before{
610
- font-size: 15px;
611
- }
612
- .redux-main .child_opt .afw-tooltip{
613
- margin-top: -8px;
614
- }
615
- .redux-main .child_opt .redux_field_th{ background: #f9f9f9;padding:23px 10px 23px 20px;
616
- margin-right: -16px;}
617
-
618
- .child_opt_last fieldset {
619
- margin-bottom: 15px;
620
- }
621
- .child_opt_arrow .redux_field_th:before{
622
- position: absolute;
623
- content: "\f142";
624
- transform: rotate(0deg);
625
- display: inline-block;
626
- font: 400 40px/1 dashicons;
627
- color: #f9f9f9;
628
- margin-top: -48px;
629
- margin-left: -10px
630
- }
631
- .redux-main .child_opt fieldset{ background: #f9f9f9;
632
- min-height: 30px;
633
- right: 20px;
634
- position: relative;
635
- padding: 8px 10px 8px 20px;
636
- }
637
- .redux-main .child_opt .redux-container-textarea{
638
- padding-top: 40px;
639
- }
640
- .redux-main .form-table tr:hover .afw-tooltip{color: #666 !important;}
641
- /**Option panel css For extension**/
642
- .backtoextensionlist{
643
- cursor: pointer;
644
- }
645
- .redux-main #redux-sticky{display: none}
646
-
647
- #info-ampforwp-beta-mode-notice{color: #263238; margin: 20px; background: #FFF9C4;border-color: #908204;}
648
-
649
- .redux-container #redux-intro-text .dashicons-admin-generic:before, .activated-plugins { color: #666 }
650
-
651
- /*** RTL CSS ***/
652
- .rtl .redux_field_th span:first-child {
653
- right: auto;
654
- left: 2%;
655
- }
656
- .rtl .redux-main .redux-field-container{
657
- margin-left: 50px;
658
- width: 90%;
659
- }
660
- .rtl .redux-main .button.remove-image{
661
- margin-right: 10px;
662
- }
663
- .rtl .redux-sidebar .redux-group-tab-link-a i {
664
- right: auto;
665
- left: 10px;
666
- }
667
- .rtl .redux-main .child_opt .redux_field_th {
668
- margin-right: 10px;
669
- }
670
- .rtl .redux_field_th {
671
- padding: 20px 20px 20px 10px !important;
672
- }
673
- .rtl .redux-container #redux-header .display_header{
674
- float: right;
675
- }
676
- .rtl .redux-container #redux-intro-text {
677
- left: 5px;
678
- right: auto;
679
- }
680
- .rtl .redux-amp-search-icon .dashicons-before:before{
681
- vertical-align:middle;
682
- }
683
- .rtl .redux-container-switch .switch-options{
684
- text-align:right;
685
- }
686
- .rtl .redux-main .child_opt fieldset {
687
- padding: 8px 25px 8px 10px;
688
- }
689
- .rtl .redux-main .child_opt th, .rtl .redux-main .child_opt td {
690
- padding: 0px 0px 0px 0px !important;
691
- }
692
- .rtl .redux-main .child_opt fieldset {
693
- right: 0;
694
- }
695
- .rtl .redux-main .redux-field-container {
696
- padding: 18px 15px 18px 0;
697
- }
698
- .rtl .redux-main .afw-tooltip .afw-help-subtitle{
699
- left: -16px;
700
- }
701
- .rtl .afw-tooltip .afw-help-subtitle::after{
702
- display: none
703
- }
704
- /*** Free Vs Pro CSS ***/
705
- .rtl .fr h1, .rtl .pr h1{
706
- padding: 0px 35px 20px 0px;
707
- }
708
- .rtl .ext{
709
- padding: 45px 50px 45px 0px;
710
- }
711
- .rtl .fe-t h4{
712
- padding:0px 8px 0px 0px;
713
- }
714
- .rtl .lt {
715
- padding-right: 50px;
716
- padding-left:0;
717
- }
718
-
719
- #redux_builder_amp-hide-amp-categories .inner-child span:before{
720
- content: "- "
 
 
 
721
  }
1
+ /*Bolt Icon*/
2
+ .ampforwp-blurb-add:hover{
3
+ cursor: pointer;
4
+ }
5
+ .ampforwp-blurb-add.button {
6
+ margin-bottom: 10px;
7
+ }
8
+ .ampforwp-blurb-additional .preview-image {
9
+ max-width:100%;
10
+ width : 70px;
11
+ height : 70px;
12
+ }
13
+ #toplevel_page_amp_options a .wp-menu-image:before{display: none}
14
+
15
+ body #toplevel_page_amp_options .wp-menu-image{
16
+ background-image:
17
+ url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjMxNHB4IiBoZWlnaHQ9IjMxNXB4IiB2aWV3Qm94PSIwIDAgMzE0IDMxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDEgKDM1MzI2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5TaGFwZTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIyNjA3MSIgZmlsbD0iI0ZGNEM0QyI+CiAgICAgICAgICAgIDxnIGlkPSJDYXBhXzEiPgogICAgICAgICAgICAgICAgPGcgaWQ9Il94MzJfNDAuX1Bvd2VyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTU3LjAwNywwIEM3MC4yOTIsMCAwLDcwLjI5MiAwLDE1Ny4wMDcgQzAsMjQzLjcxNSA3MC4yOTIsMzE0LjAxNCAxNTcuMDA3LDMxNC4wMTQgQzI0My43MTYsMzE0LjAxNCAzMTQuMDE0LDI0My43MTUgMzE0LjAxNCwxNTcuMDA3IEMzMTQuMDE0LDcwLjI5MiAyNDMuNzE2LDAgMTU3LjAwNywwIFogTTE1Ny4wMDcsMjgyLjYxMiBDODcuNjM0LDI4Mi42MTIgMzEuNDAyLDIyNi4zNzIgMzEuNDAyLDE1Ny4wMDcgQzMxLjQwMiw4Ny42MzQgODcuNjM0LDMxLjQwMiAxNTcuMDA3LDMxLjQwMiBDMjI2LjM3MSwzMS40MDIgMjgyLjYxMSw4Ny42MzQgMjgyLjYxMSwxNTcuMDA3IEMyODIuNjEyLDIyNi4zNzIgMjI2LjM3MiwyODIuNjEyIDE1Ny4wMDcsMjgyLjYxMiBaIE0yMDQuMTExLDE0MS4zNjggTDE2My40NzksMTQxLjUzMyBDMTU5LjEzOSwxNDEuNTUzIDE1Ny41NDQsMTM4LjYyMyAxNTkuOTA1LDEzNC45NzkgTDIwMy4zOTcsNjguMTA5IEMyMDguMTI2LDYwLjg0MSAyMDYuOTg0LDU5LjkyMiAyMDAuODYxLDY2LjA1MyBMMTA1LjMwNSwxNjEuNiBDOTkuMTcyLDE2Ny43MzIgMTAxLjIzMiwxNzIuNjc2IDEwOS45MDYsMTcyLjY0MSBMMTQyLjY3OSwxNzIuNTA4IEMxNTEuMzQ3LDE3Mi40NzIgMTU0LjU1MiwxNzguMzM1IDE0OS44MjQsMTg1LjYwNSBMMTA2LjMzNCwyNTIuNDc3IEMxMDMuOTcyLDI1Ni4xMTIgMTA0LjU0MiwyNTYuNTgxIDEwNy42MiwyNTMuNTI3IEwxNzUuOTE1LDE4NS43MTcgQzE3OC45ODgsMTgyLjY1OSAxODMuOTUsMTc3LjY4NiAxODYuOTgzLDE3NC41OTYgTDIwOC43ODgsMTUyLjQ4NSBDMjE0Ljg3NSwxNDYuMzE3IDIxMi43NzUsMTQxLjMzIDIwNC4xMTEsMTQxLjM2OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) !important;
18
+ background-repeat: no-repeat;
19
+ background-position: center;
20
+ -webkit-background-size: 20px auto;
21
+ background-size: 20px auto;
22
+ }
23
+ .ampforwp_new_features .redux-group-tab-link-a span:after {
24
+ content: "NEW";
25
+ color: #fff;
26
+ font-size: 10px;
27
+ background: #4452a7;
28
+ padding: 4px 7px;
29
+ border-radius: 30px;
30
+ font-weight: normal;
31
+ position: relative;
32
+ top: -1px;
33
+ left: 5px;
34
+ }
35
+ .redux-container #redux-header .display_header h2{
36
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAqFBMVEUAAADuHSTwHib5JCv/TEzuHCTuHSXuHCTuHSX/JzbuHCTuHCTyICjuHCTuHSTuHCTvHSbzHyfuHCXuHCT/KirtHSTuHSTtHCTuHCTvHSXuHSXwHyfuHST0IinxHiXuHSXyHybuHCTyIynuHCTtHCTwHSXwHiXwHibvHybuHSXvHCXvHSXuHSXuHCTuHSXvHSXuHSTuHCXvHSb1HyruHibvHCTuHCTtHCRUu4DRAAAAN3RSTlMA7jEOA/L5650Jz9Ukt47ATRv7sAbmhPapXFYgaBY3cSjFEtrJUURALndsYt6iiXuSlkcYO3/h34n5UgAADa5JREFUeNrs22lz2jAQBuDXN74wl8EBQrihQAoBkv3//6x3M50iy9cKp9PncyaZ1yOt1isH//2nlqGvxsfmc7j0D7Fj2WRbWvy28MLk9LobTh7x73L1fbPraZRu4Ien8dXAv8VYHxO/Qzm8dfurf2Q1tIcnr0OFLBr7KT603rnpUzlxY/hR90N7Fw6oCp3Z8eMthMsuoir5rx/pGRjjiKrnfWrjQ7g2BsSjE7ZM1Nz8ySdOcX+EGgtOA2KXTFBTky6pMVvVcSecZ6TOYl+3R7CZkVqLhzo9gmtE6vlD1MQ0pPvwNqgBo2nT3XTvfiiaY4fuye4buCfdo3uLV7gbt9mhGui2cR/rA9WDNsYdGA2qj2gE1bY+ldNxFr43i8JotvT82KZytBbU2g+oGNsPT0+rSTDHn4yR3to1u55FBTV7UMdIqIC42x9OTUiMWsdkQQUsR1Blu6C8vJeHEbJ7bH2e2ZSTtoIa4wHl4jw/zJGf2zod6rgNci7/t88TFBd88uq2DXItf+t5baIkvRnX6TTYWJRZ+OCiCuY5GVBmY3Ba2ZSRX+kQ29hHlNUr+Iwpo+UK71RPHF9MMHmlbKIzOGwTyibpgYP5QpmEG3AJGh3KIjJQvV5CWXQn4DR6sSkD7xFVMyLKYKaDWzuhDA4BqvXokZyzhwprn+RiHVUysuRvzKFG7zggKSdAdXoRSXkTqDPqktShjaqYCclYOxNKtQ4k4xmoyAvJhBeo5p5IJnIV9T+dT7iHlUYSXVNJ/xtfcR+jJUk0UN6KJMI57qXXJIk+ytrYtVz+v7Q0SrdDOVuLUr1dkZfibTBEGcaCUs3muLdeg1JZU5SQUKrQRQ18plS+y3YAPJtQyHh+wm1PXEfBdkBpPkOlwKctBB5sSvPAUwCeoNI2pi6EzhZHGUgoRecBKukO2QHEJg6l8FwUsKcUgzNU0jXZtHf6RikaVReAjvr8fg+pAqfaMmD4xX8fR366Sn/KIjErQE6N+tS/7/lPkFrbJOb1kMu6Puff9/wHF3JDSnFEHu6BxJ7BRJyf1shiR2KDADk0SSw0oZCu5anifRKLkJ3eIaGZCybi/LFRRekaIyvTI6G3OZiI89MKWZkRCWmXCt6BOldIMORPkN0lLt8OGQ4JfYIEQ37tsarzSy9dAUMopGuFuq4+Cc2QxdQmkXgOdXSt2EM3o5LzsbAeBeBXfquNnC6OuIS7kLrWowDoWvGPntalmvioFgVA1wTtS8ky4LiQ2JCIdYEyuiZpYGWNTPFVPGO4YiiQv+Sum5CIYyDVmUQ8E6roWuk/2iCRY9EFMIEQW357i4LmGgloRrGl04AqulbF1ea+2EHQJQFnDgHG/H4PxS1J4GBCKCCRPRTRtYp2nd4p0A6e8jfRjPmbKEIeZgmR+SDvaxRjfvEYsPRL7RV5Lxm7EGDMT2uUdCSBBAK+uiNQnr+BsgyNbrPnOV+DQggw5o8NlNbPeRI2SGADAb781EJ5c4tu83GLMcg1T+bNn6AKzVxlcEwCZwjw5XceUYWLnaevjfIcmwz5OS5fX+g2rYe/XEhgBX66xlN1Rx16JykxuzwFgze/1UZVnrPfb0aKBoHy/DRGSfIBl/XXHmiTQBvcdI3x1HnLugd2ipogef5BgAr1s+6B8F4fw+ga6+cnU7rNwZ/cgWCvuBDgyr80Uallthfcc9aVwp3f3qKcrHv7mK1pXIOVrrH/7/fczjTj8emmNxOM3vOXHQMWmHN25lkOwc/gpGsqJg+rLB3uUMkkRJ6/iarI63szwwDRgQBT/oULBmGGlzxP/Rmga5LJC/c5YLv4zejIuyAF+V/AIpAPutZ02xzv+PPHBngspK95R7rJwzv+/NQCk4Z02J/QO8GS5M+fgMte0OTgN19tCdA1+fWriiJg4CdXUANHeMedn4bg40hmwzrdFIOFrim/fetKvp7eS4qEgvxaG4yOkhrXlPzrOX9+2oNTS3Lj05V8SMCfPwKrkWSPe3TTFICa/IMAvCy6qYcfNLrFNgGe/OpH7zO6KcB3hqobEV3L+f0qdy94Tj0FQ1X5KQG3V/E5KB6ZnNjyq38AD6kDrzHd9KQqP1kjMNvQTY3UNmHFkF8g3m0fv7pc2l+Nvgq+mX6z/Ur/ZjKZPpooqC1u9cR90ERV/uy0ZINCTLpplnqFHNQu/xfu7rRJTSAIA3ArDJcHgoLxwCOuR/YyrtH+//8sRyVlVeIcwHRL5fma2qq8igPTTM/UqFO3VDe6nqQc1MT8iHuLRSFf9fYsbWZ+vNh8Q+gqyiF+M/NXbFzpqUoir3jPppn5cWVzqUwBP2X3B4hm5n+z+iycKApGUSPzZ4nV9XJdxVxx3cT84wVU01f9njy8J25gfm9gecO1A/wkmQz+T/lla6XaqiugcfnTrfUt99qqMaBx+af2142vFM/JT/9TfvVdIMN7omblxwlFTSxRrCbt/E/5pU+CiplS1qj8LzQvxxzFawEPaphlzcovq4u76plSZWEHrZpDDYoZb0u5PGIGlV2alh981Yz3q+12WWeMNj1DfanqVn+RtRRU9YE2LaG+Qvm4/2z7g982LT8slMWFqWwpaVVngeWRtSzpIy6sLxDZCrTkCFZ8UV7khf1VgsnlSaBCynxy3Ek9zN0ftAXUMyqK4vMPzk/hD6PRyHXd3/+YLC4R0p4Poe8JPKiXCc6A2Fww5Qdf/azXk10g1AZMu9efNd0AXwkGoPr7t/fBmp2mY2D+qHULsCXMr98c5U2zd8YGyLVZ8sOb5hnLwfsKoLZA5Fif86rrCbw+ahRcsuQ/a7/g4aM2Ue9x5IeptiUsf9AGWgeW/NDXvvrZSvuqaPVY8kOkfc4q8CGDwIB6/DdPt5Fdi5ScjCU/TAx64gK86xUoBar89I+bHZMNKLtAZ8+U320Z9MSt+LeQCV+Zbrx7o3dNGXfrJPSZ8kNgtD1OwL2V5IIrfyiM2iGm0jkJjVGHqUkLpqpqg75/PHOBRM6VH3qGS27XrHvpHTyu/EVquJfWkbObw33S1H/p55tD0x2Xxg7Y94UtP0TGL9w7fHtKd8ds5ceDJJXnGL/SjsG6mO95q2++U/KKbVPhOV9+R5RYchQxbSudCLb8cJT+AvQj080BrOrxnd4Y+mW+1CRluRNO+PLDEktVenrIMCkufL78owxLPd8OOI7X+MSXH+Yl37q6sg8snYEtA8aje9xr2Us6RyTeUMjJ+PLDS+nd8mco4SUkxYk5UHI35Q8Z+UTc4L5jzA/LCsfMLFBmZ6cMyJg/ESjxbLKmmGSvzz7nwT2fKh01taVcr7bgzL9DmfdqA8d4Vr8MyJh/tKk4oL8g2VE7OWN+OKLMqeq9Awf2yoATIDYbay4A87mKrZOf3IgxPwyx8tobtyP/WztlwJQuv/5bHJ/rHOK/rVMGZMy/ErUWn0Uo05rVLwOmU6AWyhOIwuhtqtTTCKqZM+aHoG73wdD68s1EMOafoNTG7AuceWj5XthjzN8V9f/3OSqGgRrfiScZRZkGAIzNyxZWh4GixZcfTiiVHqy0fQVV52XeAOjNLfUfDC32MWwZ80/xptbhBUnLWiefk/Hl33vWNiGbW+vlD/jyt4XFn26Mct4HGNvd/oJa10e57DOUM2uhnFiYlwHZ8p9fUWFnt6PLX5U5/nnMkd+JbHfg9VHh2gUT337l3wE9J0aF2IXyRk+o4LeNyoBc+c8RKvhnuLE0DKAwyJVz5e++osoHyT4A3hQ0DinieA/02j5RC26/1t4WbsSUfy+w6gCgHwaUcl0ZUHDkn3qo4iegoB8GlAJXVQbkyT9HtQ/C/m7E+Kx4zyi+AbnwhGo58eebyQb5Z5b83QjVAqqt+W8uLtwxExz5pwLVhi5NjUX/M+iJBVALA9RYh1Cf+wk1/N2/Y0eLPv8qQo2OAzaMYtTJ3b9/OCugNhGocU0IJloS0QJ4zYao49v7EopX1Ao+A5/RcYw6VgehboZarRfgstugCkURqu2j3lMbOCS3UVk7VSOYcKqkXx2g5i4F6okPsC2J0ID/xQFK7ssGDfgUY7ITo4lWTjcajuZXNHFdAYVwiEZE/wwUwmWGRjoJ0HADNOOdZmCbc/TRzPozkMnRUPq2B5sO7wINDUMg9IzGrvkK7CiWERoLXCA1FWju6bn+1RhOeymay4HaqoMleMNtCNW5+0BgCf4H0AsDLGXce+5CFcXkUwtLiRNgMRFY0iZ46UIZ52k/wrJyF5isIizPHx4HM9Ardsu3P8/djbv8NT8DPbEOLpNviXs3+WL65RT7WE18BlYTgXW0NuveW3Dqv+fv/VPwNlx3/BTxpsGXP9wK0s2R7YCfexxjQwSf4SG6MTbBZg8PM2/ho6XvITzQOcDHig/wYO01Ps5mAA3wvR17XUEQhuIAPp1OJTVNu0myErt7yRLP+79ZCEH0IUhTO0q/N/hvbOfiFfAb8tElKGhcge7NTZ+goR0V6Ba73AgqNBWgOyyzCTqUR9ANIUEYvyR5IbQv4pTglS8YtMrwJIJbwEfQlulMJ32QqwI0jzkW9st/cq1Ybja9scT88t+cgQLNkJ1z39I/iOlmAl8aJXskDW89wdYMWe3w6hJpxa9G26dOAdUoxswKyJDQfJWNp59ED2O+QzTnNMvVr6tELZfA8EqIQiM2T9ahp99ddRL1bX19EMW1bvu0PxX+b2ju+lzNg3GzPMcAAAAASUVORK5CYII=") !important;
37
+ background-size: 18px;
38
+ background-repeat: no-repeat;
39
+ padding-left: 26px;
40
+ background-position: 0px 0;
41
+ color: #000;
42
+ }
43
+ .amp-update-notice .notice-dismiss{
44
+ display: none
45
+ }
46
+
47
+ /* Mobile preview button and preview Iframe Styling #1082 */
48
+ .col-sm-12 {
49
+ width: 100%;
50
+ }
51
+ .margin-top-bottom {
52
+ margin-top: 9px;
53
+ margin-bottom: 10px;
54
+ }
55
+ .text-center {
56
+ text-align: center;
57
+ }
58
+ #ampforwp-preview-format {
59
+ margin-bottom: 0px;
60
+ line-height: 0.5em;
61
+ }
62
+ .ampforwp-preview-phone-frame-wrapper {
63
+ width:110%;
64
+ display:inline-block;
65
+ position: relative;
66
+ max-width: 300px;
67
+ text-align: center;
68
+ margin-left: -12px;
69
+ }
70
+ .ampforwp-preview-phone-frame-wrapper:after {
71
+ padding-top: 180%;
72
+ display:block;
73
+ content: '';
74
+ }
75
+ .ampforwp-preview-phone-frame {
76
+ position: absolute;
77
+ top: 0;
78
+ bottom: 0;
79
+ right: 0;
80
+ left: 0;
81
+ border: 1px solid #e5e5e5;
82
+ border-radius: 40px;
83
+ padding-top:50px;
84
+ padding-bottom: 35px;
85
+ background: #f1f1f1;
86
+
87
+ }
88
+ .ampforwp-preview-container {
89
+ height: 100%;
90
+ position: relative;
91
+ width: 100%;
92
+ border: 1px solid #e5e5e5;
93
+ overflow: hidden;
94
+ }
95
+ .ampforwp-preview-container > iframe {
96
+ height: 100%;
97
+ width: 100%;
98
+ transform: scale(1, 1);
99
+ transform-origin: top left;
100
+ }
101
+ #TB_window #TB_ajaxContent{
102
+ width: 100%;
103
+ height: 100%;
104
+ }
105
+ .ampforwp-preview-button-container{
106
+ float: right;
107
+ margin-top: 0px;
108
+ }
109
+ .meta-radio-two{margin-right: 8px; top: 3px; position: relative;}
110
+ #wp-admin-bar-ampforwp-view-amp a, #wp-admin-bar-ampforwp-view-amp:hover a{
111
+ background-size: 18px !important;background-repeat: no-repeat !important;background-position: 4px 7px !important;text-indent: -99999px;width: 12px; background:
112
+ url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjMxNHB4IiBoZWlnaHQ9IjMxNXB4IiB2aWV3Qm94PSIwIDAgMzE0IDMxNSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDEgKDM1MzI2KSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5TaGFwZTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjODI4NzhjIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSIyNjA3MSIgZmlsbD0iIzgyODc4YyI+CiAgICAgICAgICAgIDxnIGlkPSJDYXBhXzEiPgogICAgICAgICAgICAgICAgPGcgaWQ9Il94MzJfNDAuX1Bvd2VyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTU3LjAwNywwIEM3MC4yOTIsMCAwLDcwLjI5MiAwLDE1Ny4wMDcgQzAsMjQzLjcxNSA3MC4yOTIsMzE0LjAxNCAxNTcuMDA3LDMxNC4wMTQgQzI0My43MTYsMzE0LjAxNCAzMTQuMDE0LDI0My43MTUgMzE0LjAxNCwxNTcuMDA3IEMzMTQuMDE0LDcwLjI5MiAyNDMuNzE2LDAgMTU3LjAwNywwIFogTTE1Ny4wMDcsMjgyLjYxMiBDODcuNjM0LDI4Mi42MTIgMzEuNDAyLDIyNi4zNzIgMzEuNDAyLDE1Ny4wMDcgQzMxLjQwMiw4Ny42MzQgODcuNjM0LDMxLjQwMiAxNTcuMDA3LDMxLjQwMiBDMjI2LjM3MSwzMS40MDIgMjgyLjYxMSw4Ny42MzQgMjgyLjYxMSwxNTcuMDA3IEMyODIuNjEyLDIyNi4zNzIgMjI2LjM3MiwyODIuNjEyIDE1Ny4wMDcsMjgyLjYxMiBaIE0yMDQuMTExLDE0MS4zNjggTDE2My40NzksMTQxLjUzMyBDMTU5LjEzOSwxNDEuNTUzIDE1Ny41NDQsMTM4LjYyMyAxNTkuOTA1LDEzNC45NzkgTDIwMy4zOTcsNjguMTA5IEMyMDguMTI2LDYwLjg0MSAyMDYuOTg0LDU5LjkyMiAyMDAuODYxLDY2LjA1MyBMMTA1LjMwNSwxNjEuNiBDOTkuMTcyLDE2Ny43MzIgMTAxLjIzMiwxNzIuNjc2IDEwOS45MDYsMTcyLjY0MSBMMTQyLjY3OSwxNzIuNTA4IEMxNTEuMzQ3LDE3Mi40NzIgMTU0LjU1MiwxNzguMzM1IDE0OS44MjQsMTg1LjYwNSBMMTA2LjMzNCwyNTIuNDc3IEMxMDMuOTcyLDI1Ni4xMTIgMTA0LjU0MiwyNTYuNTgxIDEwNy42MiwyNTMuNTI3IEwxNzUuOTE1LDE4NS43MTcgQzE3OC45ODgsMTgyLjY1OSAxODMuOTUsMTc3LjY4NiAxODYuOTgzLDE3NC41OTYgTDIwOC43ODgsMTUyLjQ4NSBDMjE0Ljg3NSwxNDYuMzE3IDIxMi43NzUsMTQxLjMzIDIwNC4xMTEsMTQxLjM2OCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+)
113
+ no-repeat
114
+ 4px 7px;
115
+
116
+ }
117
+ .amp-theme-selector-img a{
118
+ background: rgba(0, 0, 0, 0.7);
119
+ text-decoration: none;
120
+ padding: 3px 8px 4px 7px;
121
+ bottom: 16px;
122
+ font-size: 12px;
123
+ border-radius: 100px;
124
+ color: #fff;
125
+ position: relative;
126
+ right: 62px;
127
+ }
128
+ .amp-theme-selector-img:hover a {
129
+ background: #4452a7;
130
+ }
131
+ .amp-theme-selector-img img{
132
+ position: relative;
133
+ visibility: visible;
134
+ cursor:pointer;
135
+ }
136
+ .hidetab{
137
+ display: none !important;
138
+ }
139
+ .activetab{
140
+ display: block !important;
141
+ }
142
+ #wpbody-content .wrap .amp-update-notice{
143
+ display: table;
144
+ position: relative;
145
+ height: 70px;
146
+ padding: 0;
147
+ border: 0;
148
+ overflow: hidden;
149
+ margin-bottom: 10px;
150
+ }
151
+ .amp-update-notice-text-box{
152
+ padding: 15px 15px 10px 15px;
153
+ display: inline-block;
154
+ }
155
+
156
+ .amp-update-notice-text-box img{
157
+ width: 40px;
158
+ display: inline;
159
+ height: 40px;
160
+ }
161
+ .amp-update-notice-text{
162
+ display: inline;
163
+ position: relative;
164
+ margin-left: 5px;
165
+ font-weight: 300;
166
+ top: -14px;
167
+ font-size: 20px;
168
+ }
169
+ .amp-update-notice-text-box a{
170
+ position: relative;
171
+ top: -17px;
172
+ background: #ECEFF1;
173
+ text-decoration: none;
174
+ color: #111;
175
+ font-size: 10px;
176
+ padding: 4px 6px 5px 5px;
177
+ border-radius: 4px;
178
+ margin-left: 5px;
179
+ text-transform: uppercase;
180
+ border: 1px solid rgba(207, 216, 220, 0.9);
181
+ }
182
+ .amp-update-notice-dismiss{
183
+ display:inline-block;float:right;height: 70px;background: #333;width: 50px;text-align: center;
184
+ }
185
+ .amp-update-notice-dismiss a{
186
+ color: #fff;
187
+ text-decoration: none;
188
+ top: 26px;
189
+ position: relative;
190
+ padding: 24px 18px;
191
+ font-size: 17px;
192
+ font-weight: 300;
193
+ background: #333;
194
+ z-index: 100;
195
+ }
196
+ .amp-update-notice-review-box{
197
+ float: right;display: inline-block;/* height: 55px; */background: #4CAF50;padding: 12px 20px 11px 60px;background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MTIuMDAxIDUxMi4wMDEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMi4wMDEgNTEyLjAwMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIxMjhweCIgaGVpZ2h0PSIxMjhweCI+CjxnPgoJPGc+CgkJPGc+CgkJCTxwYXRoIGQ9Ik0zNjYuOTA1LDM2NS4wNzFsODcuOTAyLTg1LjY4M2M2LjA4Ny01LjkzNSw4LjIzNi0xNC42NDMsNS42MS0yMi43MjljLTIuNjI5LTguMDg1LTkuNDg2LTEzLjg2Ni0xNy44OTgtMTUuMDg3ICAgICBsLTU1Ljg3OS04LjEyYy00LjQxMy0wLjY0Ny04LjUyMSwyLjQxOS05LjE2MSw2LjgzN2MtMC42NDMsNC40MTksMi40MTgsOC41MjEsNi44MzcsOS4xNjNsNTUuODc5LDguMTIgICAgIGMyLjI3OCwwLjMzLDQuMTM1LDEuODk2LDQuODQ3LDQuMDgzYzAuNzExLDIuMTksMC4xMjksNC41NDgtMS41MTksNi4xNTRsLTkwLjk0Nyw4OC42NWMtMS45MDUsMS44NTgtMi43NzMsNC41MzMtMi4zMjMsNy4xNTUgICAgIGwyMS40NjksMTI1LjE3OGMwLjM4OSwyLjI2OC0wLjUyNyw0LjUxOC0yLjM4Nyw1Ljg2OWMtMS44MTYsMS4zMTgtNC4zMzksMS41MDItNi4zMjIsMC40NTlsLTExMi40MTQtNTkuMTAxICAgICBjLTIuMzU1LTEuMjM3LTUuMTY5LTEuMjM3LTcuNTI0LDBsLTExMi40MTQsNTkuMTAxYy0yLjAzOCwxLjA3LTQuNDYsMC44OTMtNi4zMjItMC40NThjLTEuODYxLTEuMzUzLTIuNzc1LTMuNjAyLTIuMzg4LTUuODcgICAgIGwyMS40Ny0xMjUuMTc3YzAuNDUtMi42MjItMC40Mi01LjI5Ny0yLjMyNC03LjE1NWwtOTAuOTQ2LTg4LjY0OWMtMS42NDgtMS42MDctMi4yMjktMy45NjYtMS41Mi02LjE1NSAgICAgYzAuNzEyLTIuMTg4LDIuNTY3LTMuNzUzLDQuODQ2LTQuMDgzbDEyNS42ODQtMTguMjYzYzIuNjMzLTAuMzgyLDQuOTEtMi4wMzYsNi4wODctNC40MjJsNTYuMjA5LTExMy44OTEgICAgIGMxLjAxOS0yLjA2MywzLjA4LTMuMzQ1LDUuMzgyLTMuMzQ1czQuMzY0LDEuMjgxLDUuMzgzLDMuMzQ1bDU2LjIwNywxMTMuODljMS4xNzgsMi4zODUsMy40NTMsNC4wMzksNi4wODgsNC40MjJsNDIuMzk1LDYuMTYgICAgIGM0LjQwNSwwLjY0MSw4LjUyLTIuNDE4LDkuMTYxLTYuODM3YzAuNjQzLTQuNDE4LTIuNDE4LTguNTIxLTYuODM3LTkuMTYybC0zOC4xOS01LjU0OWwtNTQuMzI2LTExMC4wNzcgICAgIGMtMy43NjEtNy42MjQtMTEuMzc5LTEyLjM1OS0xOS44OC0xMi4zNTljLTguNTAxLDAtMTYuMTE5LDQuNzM2LTE5Ljg3OSwxMi4zNThsLTU0LjMyOCwxMTAuMDc4TDUxLjE0OSwyNDEuNTcyICAgICBjLTguNDEyLDEuMjIyLTE1LjI3LDcuMDAzLTE3Ljg5NywxNS4wODljLTIuNjI2LDguMDg0LTAuNDc4LDE2Ljc5Miw1LjYxLDIyLjcyOGw4Ny45MDIsODUuNjgybC0yMC43NSwxMjAuOTg5ICAgICBjLTEuNDM4LDguMzc3LDEuOTQsMTYuNjg1LDguODE4LDIxLjY4M2MzLjg4OCwyLjgyMyw4LjQzNCw0LjI1OCwxMy4wMTEsNC4yNThjMy41MjMsMCw3LjA2NS0wLjg1LDEwLjMzNy0yLjU2OWwxMDguNjU0LTU3LjEyMiAgICAgbDEwOC42NTcsNTcuMTI0YzMuMTcsMS42NjMsNi43MzUsMi41NDMsMTAuMzEyLDIuNTQzYzQuNzE0LDAsOS4yMTktMS40NjQsMTMuMDM0LTQuMjM0YzYuODc2LTQuOTk4LDEwLjI1Ni0xMy4zMDcsOC44MTctMjEuNjgzICAgICBMMzY2LjkwNSwzNjUuMDcxeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMzg5LjQyOCwyMDIuMzEzYzAuNzA2LTUuMTc5LDcuNzgtMTMuNTY1LDI5LjgxNi0xMi4xNjVjMS4zNTUsMC4wODYsMi42NTEsMC4xMjgsMy45MDEsMC4xMjggICAgIGMyNy42OTktMC4wMDIsMzAuMDU0LTIwLjYzOSwzMS42My0zNC40OThjMC44NzQtNy42NzcsMS42OTktMTQuOTI4LDUuMjc1LTIwLjA1M2MyLjU1My0zLjY2MiwxLjY1My04LjcwMS0yLjAwNy0xMS4yNTQgICAgIGMtMy42NjItMi41NTItOC43MDEtMS42NTUtMTEuMjU1LDIuMDA2Yy01LjkxNCw4LjQ4MS03LjA2MywxOC41Ny04LjA3NiwyNy40NzNjLTEuNzQ2LDE1LjM0My0yLjQxLDIxLjA4Ny0xOC40MzgsMjAuMDYzICAgICBjLTE3LjY2NC0xLjEyNy0zMC44NiwyLjY1Ni0zOS4yMzIsMTEuMjQyYy02Ljg1NCw3LjAyOS03LjY0NCwxNC43MjItNy43MTEsMTUuNTc2bDE2LjExNywxLjI3NSAgICAgQzM4OS40NDksMjAyLjEwNiwzODkuNDQ3LDIwMi4xNzksMzg5LjQyOCwyMDIuMzEzeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMjg2Ljc3NSw5MS4xN2MwLjE2LTAuMDg2LDAuMjU0LTAuMTE5LDAuMjU0LTAuMTE5bDYuNTIxLDE0Ljc5NWM3LjkzNC0zLjQ5NiwxOS45NDUtMTcuMTkyLDguNjE3LTQzLjk5OSAgICAgYy00LjEzNS05Ljc4OS0yLjEyNS0xMS4xMzEsOS4yNS0xNi42MThjMTEuMTEtNS4zNjEsMjcuOTAyLTEzLjQ2MiwyMy40NzEtMzguNTUxYy0wLjc3NS00LjM5Ny00Ljk2Mi03LjMyNy05LjM2Ny02LjU1NSAgICAgYy00LjM5NywwLjc3Ny03LjMzLDQuOTcxLTYuNTU0LDkuMzY3YzIuMjA1LDEyLjQ4LTMuMTc3LDE1LjY3OC0xNC41NzYsMjEuMTc3Yy0xMC4yMzcsNC45MzktMjcuMzcsMTMuMjA1LTE3LjExNiwzNy40NzQgICAgIEMyOTMuNDU5LDgyLjc3OSwyODkuODcxLDg5LjUwNSwyODYuNzc1LDkxLjE3eiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNODAuMjY4LDg0Ljc0OWMxMi4zMTQsMi43OTYsMTQuNTc2LDMuNjUzLDEyLjc0LDE0LjEyYy01LjAyOCwyOC42NjUsOS43NSwzOS4zMTksMTguMjY2LDQwLjk0NiAgICAgYzAuNTEzLDAuMDk5LDEuMDIzLDAuMTQ2LDEuNTI3LDAuMTQ2YzMuODAyLDAsNy4xOS0yLjY5NSw3LjkzMS02LjU2N2MwLjgzOC00LjM4Ni0yLjAzNy04LjYyLTYuNDIzLTkuNDU4ICAgICBjLTAuMDg5LTAuMDE3LTguODI3LTIuNi01LjM3Ni0yMi4yNzNjNC41NDktMjUuOTUtMTQuMDAxLTMwLjE2My0yNS4wODUtMzIuNjhjLTEyLjM0MS0yLjgwMy0xOC4zMDMtNC43MTItMTguOTUzLTE3LjM2OSAgICAgYy0wLjIyOS00LjQ1OC00LjAwNi03Ljg5NC04LjQ4OC03LjY1OWMtNC40NTgsMC4yMjktNy44ODgsNC4wMjktNy42NTgsOC40ODhDNTAuMDU2LDc3Ljg4OCw2OC4yMzcsODIuMDE2LDgwLjI2OCw4NC43NDl6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0xMDUuMjM5LDE4MS4xMTNjMCw2LjEyMSwyLjM4MiwxMS44NzQsNi43MSwxNi4yMDFjNC4zMjgsNC4zMjgsMTAuMDgxLDYuNzExLDE2LjIwMSw2LjcxMSAgICAgYzYuMTIsMCwxMS44NzQtMi4zODMsMTYuMjAyLTYuNzFjNC4zMjgtNC4zMjgsNi43MTItMTAuMDgxLDYuNzEyLTE2LjIwMnMtMi4zODQtMTEuODc0LTYuNzExLTE2LjIwMiAgICAgYy00LjMyOS00LjMyOC0xMC4wODItNi43MTEtMTYuMjAzLTYuNzExcy0xMS44NzMsMi4zODMtMTYuMjAxLDYuNzExQzEwNy42MjEsMTY5LjIzOSwxMDUuMjM5LDE3NC45OTIsMTA1LjIzOSwxODEuMTEzeiAgICAgIE0xMjMuMzgyLDE3Ni4zNDJjMS4yNzMtMS4yNzMsMi45NjgtMS45NzUsNC43NjktMS45NzVjMS44MDIsMCwzLjQ5NSwwLjcwMiw0Ljc3LDEuOTc2YzEuMjc1LDEuMjc0LDEuOTc4LDIuOTY4LDEuOTc4LDQuNzcgICAgIHMtMC43MDIsMy40OTQtMS45NzYsNC43NjljLTEuMjc1LDEuMjc0LTIuOTY5LDEuOTc2LTQuNzcyLDEuOTc2Yy0xLjgsMC0zLjQ5NC0wLjcwMi00Ljc3LTEuOTc2ICAgICBjLTEuMjczLTEuMjczLTEuOTc1LTIuOTY3LTEuOTc1LTQuNzY5QzEyMS40MDUsMTc5LjMxMiwxMjIuMTA2LDE3Ny42MTgsMTIzLjM4MiwxNzYuMzQyeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMzE1LjI4NSwxMjkuMTg5Yy04LjkzMyw4LjkzNC04LjkzMywyMy40NywwLjAwMSwzMi40MDRjNC4zMjgsNC4zMjgsMTAuMDgyLDYuNzEsMTYuMjAxLDYuNzEgICAgIGM2LjExOSwwLDExLjg3NC0yLjM4MiwxNi4yMDItNi43MWM4LjkzMy04LjkzNCw4LjkzMy0yMy40NywwLTMyLjQwM2MtNC4zMjctNC4zMjgtMTAuMDgzLTYuNzExLTE2LjIwMi02LjcxMSAgICAgQzMyNS4zNjgsMTIyLjQ3OSwzMTkuNjEzLDEyNC44NiwzMTUuMjg1LDEyOS4xODl6IE0zMzYuMjU0LDE1MC4xNmMtMS4yNzMsMS4yNzMtMi45NjcsMS45NzQtNC43NjksMS45NzQgICAgIGMtMS44MDIsMC0zLjQ5NS0wLjcwMS00Ljc3LTEuOTc0Yy0yLjYzLTIuNjMtMi42My02LjkxLTAuMDAxLTkuNTM5YzEuMjc0LTEuMjc0LDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1ICAgICBjMS44MDEsMCwzLjQ5NCwwLjcwMSw0Ljc2OSwxLjk3NEMzMzguODg0LDE0My4yNSwzMzguODg0LDE0Ny41MywzMzYuMjU0LDE1MC4xNnoiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPHBhdGggZD0iTTc1LjY5NSwzMzYuOTI2Yy00LjMyOS00LjMyNi0xMC4wODItNi43MDktMTYuMjAyLTYuNzA5Yy02LjEyLDAtMTEuODczLDIuMzgzLTE2LjIwMSw2LjcxICAgICBjLTguOTM0LDguOTM1LTguOTM0LDIzLjQ3LDAsMzIuNDA0YzQuMzI3LDQuMzI4LDEwLjA4LDYuNzEyLDE2LjIwMSw2LjcxMnMxMS44NzQtMi4zODQsMTYuMjAzLTYuNzExICAgICBDODQuNjI5LDM2MC4zOTYsODQuNjI5LDM0NS44NjIsNzUuNjk1LDMzNi45MjZ6IE02NC4yNjIsMzU3Ljg5OGMtMS4yNzMsMS4yNzQtMi45NjcsMS45NzctNC43NywxLjk3NyAgICAgYy0xLjgsMC0zLjQ5NC0wLjcwMi00Ljc2OS0xLjk3N2MtMi42MzEtMi42MjktMi42MzEtNi45MDktMC4wMDEtOS41MzhjMS4yNzMtMS4yNzMsMi45NjctMS45NzUsNC43Ny0xLjk3NSAgICAgczMuNDk2LDAuNzAxLDQuNzcsMS45NzVDNjYuODkzLDM1MC45ODksNjYuODkzLDM1NS4yNjksNjQuMjYyLDM1Ny44OTh6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik00NzMuMTUsMzM2LjkyNmMtNC4zMjktNC4zMjYtMTAuMDgyLTYuNzA5LTE2LjIwMS02LjcwOWMtNi4xMjEsMC0xMS44NzMsMi4zODMtMTYuMjAyLDYuNzEgICAgIGMtOC45MzMsOC45MzUtOC45MzMsMjMuNDcsMCwzMi40MDRjNC4zMjgsNC4zMjgsMTAuMDgxLDYuNzEyLDE2LjIwMiw2LjcxMmM2LjEyLDAsMTEuODczLTIuMzg0LDE2LjIwMi02LjcxMSAgICAgQzQ4Mi4wODQsMzYwLjM5Niw0ODIuMDg0LDM0NS44NjIsNDczLjE1LDMzNi45MjZ6IE00NjEuNzE5LDM1Ny44OThjLTEuMjc0LDEuMjc0LTIuOTY4LDEuOTc3LTQuNzcsMS45NzcgICAgIGMtMS44MDEsMC0zLjQ5NS0wLjcwMi00Ljc2OS0xLjk3N2MtMi42MzEtMi42MjktMi42MzEtNi45MDktMC4wMDItOS41MzhjMS4yNzQtMS4yNzMsMi45NjgtMS45NzUsNC43NzEtMS45NzUgICAgIGMxLjgwMSwwLDMuNDk2LDAuNzAxLDQuNzcsMS45NzVDNDY0LjM0OSwzNTAuOTg5LDQ2NC4zNDksMzU1LjI2OSw0NjEuNzE5LDM1Ny44OTh6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0xODYuODkyLDkzLjI0NWM2LjEyLDAsMTEuODczLTIuMzgzLDE2LjIwMS02LjcxMWM0LjMyNy00LjMyOCw2LjcxMS0xMC4wODIsNi43MTEtMTYuMjAyICAgICBjMC02LjEyMS0yLjM4NC0xMS44NzQtNi43MTEtMTYuMmMtNC4zMjgtNC4zMjktMTAuMDgxLTYuNzEyLTE2LjIwMS02LjcxMmMtNi4xMjIsMC0xMS44NzQsMi4zODMtMTYuMjAyLDYuNzExICAgICBjLTQuMzI4LDQuMzI3LTYuNzEyLDEwLjA4LTYuNzEyLDE2LjIwMXMyLjM4NCwxMS44NzQsNi43MTEsMTYuMjAyQzE3NS4wMTgsOTAuODYxLDE4MC43Nyw5My4yNDUsMTg2Ljg5Miw5My4yNDV6ICAgICAgTTE4Mi4xMjIsNjUuNTYyYzEuMjczLTEuMjc0LDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1YzEuOCwwLDMuNDkzLDAuNzAxLDQuNzY5LDEuOTc2YzEuMjczLDEuMjczLDEuOTc3LDIuOTY3LDEuOTc3LDQuNzY5ICAgICBjMCwxLjgwMi0wLjcwMywzLjQ5NS0xLjk3Nyw0Ljc3MWMtMS4yNzQsMS4yNzMtMi45NjgsMS45NzUtNC43NjksMS45NzVjLTEuODAyLDAtMy40OTYtMC43MDItNC43NzEtMS45NzYgICAgIGMtMS4yNzQtMS4yNzQtMS45NzYtMi45NjctMS45NzYtNC43N0MxODAuMTQ2LDY4LjUzMSwxODAuODQ4LDY2LjgzNiwxODIuMTIyLDY1LjU2MnoiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPGNpcmNsZSBjeD0iNjQuNDA5IiBjeT0iMTYwLjIyIiByPSIxMC40OTYiIGZpbGw9IiNGRkZGRkYiLz4KCQkJPGNpcmNsZSBjeD0iNDExLjM5IiBjeT0iMzc0LjExNSIgcj0iMTAuNDk2IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxjaXJjbGUgY3g9IjczLjc1IiBjeT0iNDM5LjM0MyIgcj0iMTAuNDk3IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik0zODcuOTI5LDE0OC45NTFjMi4xMDcsMCw0LjIxMy0wLjgxOSw1Ljc5OS0yLjQ0OGwxMS4yMy0xMS41NTNjMy4xMTEtMy4yMDEsMy4wMzktOC4zMTktMC4xNjItMTEuNDMxICAgICBjLTMuMTk5LTMuMTEyLTguMzE4LTMuMDM5LTExLjQzMSwwLjE2MmwtMTEuMjMsMTEuNTUyYy0zLjExMSwzLjIwMS0zLjA0LDguMzE5LDAuMTYyLDExLjQzMSAgICAgQzM4My44NjgsMTQ4LjE5MiwzODUuODk5LDE0OC45NTEsMzg3LjkyOSwxNDguOTUxeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNMTQ4LjgyMiwxMzYuMTgybDE0LjkzNyw2LjA0YzAuOTkzLDAuNDAxLDIuMDIsMC41OTEsMy4wMjcsMC41OTFjMy4xOTcsMCw2LjIyNy0xLjkwOSw3LjQ5Ny01LjA1NiAgICAgYzEuNjc0LTQuMTM5LTAuMzI1LTguODUxLTQuNDY0LTEwLjUyNGwtMTQuOTM4LTYuMDRjLTQuMTQ2LTEuNjc2LTguODUxLDAuMzI2LTEwLjUyNCw0LjQ2NCAgICAgQzE0Mi42ODQsMTI5Ljc5NywxNDQuNjgzLDEzNC41MDgsMTQ4LjgyMiwxMzYuMTgyeiIgZmlsbD0iI0ZGRkZGRiIvPgoJCQk8cGF0aCBkPSJNOTYuMDMzLDM5Mi42NzNsLTE0LjkzOC02LjA0Yy00LjE0Ni0xLjY3NC04Ljg1MSwwLjMyNS0xMC41MjQsNC40NjRjLTEuNjczLDQuMTQsMC4zMjYsOC44NTIsNC40NjUsMTAuNTI0bDE0LjkzOCw2LjA0MSAgICAgYzAuOTkzLDAuNCwyLjAxOSwwLjU5MSwzLjAyNiwwLjU5MWMzLjE5NywwLDYuMjI3LTEuOTA4LDcuNDk3LTUuMDU2QzEwMi4xNzEsMzk5LjA1OSwxMDAuMTcyLDM5NC4zNDcsOTYuMDMzLDM5Mi42NzN6IiBmaWxsPSIjRkZGRkZGIi8+CgkJCTxwYXRoIGQ9Ik00MzYuOTQ1LDQyMC4yODRsLTE0LjkzNy02LjA0Yy00LjE0Ni0xLjY3My04Ljg1MiwwLjMyNi0xMC41MjQsNC40NjVjLTEuNjc0LDQuMTQsMC4zMjUsOC44NTIsNC40NjQsMTAuNTI0bDE0LjkzOCw2LjA0ICAgICBjMC45OTMsMC40LDIuMDE5LDAuNTkyLDMuMDI3LDAuNTkyYzMuMTk2LDAsNi4yMjYtMS45MSw3LjQ5Ny01LjA1N0M0NDMuMDgzLDQyNi42NjksNDQxLjA4NSw0MjEuOTU3LDQzNi45NDUsNDIwLjI4NHoiIGZpbGw9IiNGRkZGRkYiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==);url(data: image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MTIuMDAxIDUxMi4wMDEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMi4wMDEgNTEyLjAwMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiPgo8Zz4KCTxnPgoJCTxnPgoJCQk8cGF0aCBkPSJNMzY2LjkwNSwzNjUuMDcxbDg3LjkwMi04NS42ODNjNi4wODctNS45MzUsOC4yMzYtMTQuNjQzLDUuNjEtMjIuNzI5Yy0yLjYyOS04LjA4NS05LjQ4Ni0xMy44NjYtMTcuODk4LTE1LjA4NyAgICAgbC01NS44NzktOC4xMmMtNC40MTMtMC42NDctOC41MjEsMi40MTktOS4xNjEsNi44MzdjLTAuNjQzLDQuNDE5LDIuNDE4LDguNTIxLDYuODM3LDkuMTYzbDU1Ljg3OSw4LjEyICAgICBjMi4yNzgsMC4zMyw0LjEzNSwxLjg5Niw0Ljg0Nyw0LjA4M2MwLjcxMSwyLjE5LDAuMTI5LDQuNTQ4LTEuNTE5LDYuMTU0bC05MC45NDcsODguNjVjLTEuOTA1LDEuODU4LTIuNzczLDQuNTMzLTIuMzIzLDcuMTU1ICAgICBsMjEuNDY5LDEyNS4xNzhjMC4zODksMi4yNjgtMC41MjcsNC41MTgtMi4zODcsNS44NjljLTEuODE2LDEuMzE4LTQuMzM5LDEuNTAyLTYuMzIyLDAuNDU5bC0xMTIuNDE0LTU5LjEwMSAgICAgYy0yLjM1NS0xLjIzNy01LjE2OS0xLjIzNy03LjUyNCwwbC0xMTIuNDE0LDU5LjEwMWMtMi4wMzgsMS4wNy00LjQ2LDAuODkzLTYuMzIyLTAuNDU4Yy0xLjg2MS0xLjM1My0yLjc3NS0zLjYwMi0yLjM4OC01Ljg3ICAgICBsMjEuNDctMTI1LjE3N2MwLjQ1LTIuNjIyLTAuNDItNS4yOTctMi4zMjQtNy4xNTVsLTkwLjk0Ni04OC42NDljLTEuNjQ4LTEuNjA3LTIuMjI5LTMuOTY2LTEuNTItNi4xNTUgICAgIGMwLjcxMi0yLjE4OCwyLjU2Ny0zLjc1Myw0Ljg0Ni00LjA4M2wxMjUuNjg0LTE4LjI2M2MyLjYzMy0wLjM4Miw0LjkxLTIuMDM2LDYuMDg3LTQuNDIybDU2LjIwOS0xMTMuODkxICAgICBjMS4wMTktMi4wNjMsMy4wOC0zLjM0NSw1LjM4Mi0zLjM0NXM0LjM2NCwxLjI4MSw1LjM4MywzLjM0NWw1Ni4yMDcsMTEzLjg5YzEuMTc4LDIuMzg1LDMuNDUzLDQuMDM5LDYuMDg4LDQuNDIybDQyLjM5NSw2LjE2ICAgICBjNC40MDUsMC42NDEsOC41Mi0yLjQxOCw5LjE2MS02LjgzN2MwLjY0My00LjQxOC0yLjQxOC04LjUyMS02LjgzNy05LjE2MmwtMzguMTktNS41NDlsLTU0LjMyNi0xMTAuMDc3ICAgICBjLTMuNzYxLTcuNjI0LTExLjM3OS0xMi4zNTktMTkuODgtMTIuMzU5Yy04LjUwMSwwLTE2LjExOSw0LjczNi0xOS44NzksMTIuMzU4bC01NC4zMjgsMTEwLjA3OEw1MS4xNDksMjQxLjU3MiAgICAgYy04LjQxMiwxLjIyMi0xNS4yNyw3LjAwMy0xNy44OTcsMTUuMDg5Yy0yLjYyNiw4LjA4NC0wLjQ3OCwxNi43OTIsNS42MSwyMi43MjhsODcuOTAyLDg1LjY4MmwtMjAuNzUsMTIwLjk4OSAgICAgYy0xLjQzOCw4LjM3NywxLjk0LDE2LjY4NSw4LjgxOCwyMS42ODNjMy44ODgsMi44MjMsOC40MzQsNC4yNTgsMTMuMDExLDQuMjU4YzMuNTIzLDAsNy4wNjUtMC44NSwxMC4zMzctMi41NjlsMTA4LjY1NC01Ny4xMjIgICAgIGwxMDguNjU3LDU3LjEyNGMzLjE3LDEuNjYzLDYuNzM1LDIuNTQzLDEwLjMxMiwyLjU0M2M0LjcxNCwwLDkuMjE5LTEuNDY0LDEzLjAzNC00LjIzNGM2Ljg3Ni00Ljk5OCwxMC4yNTYtMTMuMzA3LDguODE3LTIxLjY4MyAgICAgTDM2Ni45MDUsMzY1LjA3MXoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTM4OS40MjgsMjAyLjMxM2MwLjcwNi01LjE3OSw3Ljc4LTEzLjU2NSwyOS44MTYtMTIuMTY1YzEuMzU1LDAuMDg2LDIuNjUxLDAuMTI4LDMuOTAxLDAuMTI4ICAgICBjMjcuNjk5LTAuMDAyLDMwLjA1NC0yMC42MzksMzEuNjMtMzQuNDk4YzAuODc0LTcuNjc3LDEuNjk5LTE0LjkyOCw1LjI3NS0yMC4wNTNjMi41NTMtMy42NjIsMS42NTMtOC43MDEtMi4wMDctMTEuMjU0ICAgICBjLTMuNjYyLTIuNTUyLTguNzAxLTEuNjU1LTExLjI1NSwyLjAwNmMtNS45MTQsOC40ODEtNy4wNjMsMTguNTctOC4wNzYsMjcuNDczYy0xLjc0NiwxNS4zNDMtMi40MSwyMS4wODctMTguNDM4LDIwLjA2MyAgICAgYy0xNy42NjQtMS4xMjctMzAuODYsMi42NTYtMzkuMjMyLDExLjI0MmMtNi44NTQsNy4wMjktNy42NDQsMTQuNzIyLTcuNzExLDE1LjU3NmwxNi4xMTcsMS4yNzUgICAgIEMzODkuNDQ5LDIwMi4xMDYsMzg5LjQ0NywyMDIuMTc5LDM4OS40MjgsMjAyLjMxM3oiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTI4Ni43NzUsOTEuMTdjMC4xNi0wLjA4NiwwLjI1NC0wLjExOSwwLjI1NC0wLjExOWw2LjUyMSwxNC43OTVjNy45MzQtMy40OTYsMTkuOTQ1LTE3LjE5Miw4LjYxNy00My45OTkgICAgIGMtNC4xMzUtOS43ODktMi4xMjUtMTEuMTMxLDkuMjUtMTYuNjE4YzExLjExLTUuMzYxLDI3LjkwMi0xMy40NjIsMjMuNDcxLTM4LjU1MWMtMC43NzUtNC4zOTctNC45NjItNy4zMjctOS4zNjctNi41NTUgICAgIGMtNC4zOTcsMC43NzctNy4zMyw0Ljk3MS02LjU1NCw5LjM2N2MyLjIwNSwxMi40OC0zLjE3NywxNS42NzgtMTQuNTc2LDIxLjE3N2MtMTAuMjM3LDQuOTM5LTI3LjM3LDEzLjIwNS0xNy4xMTYsMzcuNDc0ICAgICBDMjkzLjQ1OSw4Mi43NzksMjg5Ljg3MSw4OS41MDUsMjg2Ljc3NSw5MS4xN3oiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTgwLjI2OCw4NC43NDljMTIuMzE0LDIuNzk2LDE0LjU3NiwzLjY1MywxMi43NCwxNC4xMmMtNS4wMjgsMjguNjY1LDkuNzUsMzkuMzE5LDE4LjI2Niw0MC45NDYgICAgIGMwLjUxMywwLjA5OSwxLjAyMywwLjE0NiwxLjUyNywwLjE0NmMzLjgwMiwwLDcuMTktMi42OTUsNy45MzEtNi41NjdjMC44MzgtNC4zODYtMi4wMzctOC42Mi02LjQyMy05LjQ1OCAgICAgYy0wLjA4OS0wLjAxNy04LjgyNy0yLjYtNS4zNzYtMjIuMjczYzQuNTQ5LTI1Ljk1LTE0LjAwMS0zMC4xNjMtMjUuMDg1LTMyLjY4Yy0xMi4zNDEtMi44MDMtMTguMzAzLTQuNzEyLTE4Ljk1My0xNy4zNjkgICAgIGMtMC4yMjktNC40NTgtNC4wMDYtNy44OTQtOC40ODgtNy42NTljLTQuNDU4LDAuMjI5LTcuODg4LDQuMDI5LTcuNjU4LDguNDg4QzUwLjA1Niw3Ny44ODgsNjguMjM3LDgyLjAxNiw4MC4yNjgsODQuNzQ5eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMTA1LjIzOSwxODEuMTEzYzAsNi4xMjEsMi4zODIsMTEuODc0LDYuNzEsMTYuMjAxYzQuMzI4LDQuMzI4LDEwLjA4MSw2LjcxMSwxNi4yMDEsNi43MTEgICAgIGM2LjEyLDAsMTEuODc0LTIuMzgzLDE2LjIwMi02LjcxYzQuMzI4LTQuMzI4LDYuNzEyLTEwLjA4MSw2LjcxMi0xNi4yMDJzLTIuMzg0LTExLjg3NC02LjcxMS0xNi4yMDIgICAgIGMtNC4zMjktNC4zMjgtMTAuMDgyLTYuNzExLTE2LjIwMy02LjcxMXMtMTEuODczLDIuMzgzLTE2LjIwMSw2LjcxMUMxMDcuNjIxLDE2OS4yMzksMTA1LjIzOSwxNzQuOTkyLDEwNS4yMzksMTgxLjExM3ogICAgICBNMTIzLjM4MiwxNzYuMzQyYzEuMjczLTEuMjczLDIuOTY4LTEuOTc1LDQuNzY5LTEuOTc1YzEuODAyLDAsMy40OTUsMC43MDIsNC43NywxLjk3NmMxLjI3NSwxLjI3NCwxLjk3OCwyLjk2OCwxLjk3OCw0Ljc3ICAgICBzLTAuNzAyLDMuNDk0LTEuOTc2LDQuNzY5Yy0xLjI3NSwxLjI3NC0yLjk2OSwxLjk3Ni00Ljc3MiwxLjk3NmMtMS44LDAtMy40OTQtMC43MDItNC43Ny0xLjk3NiAgICAgYy0xLjI3My0xLjI3My0xLjk3NS0yLjk2Ny0xLjk3NS00Ljc2OUMxMjEuNDA1LDE3OS4zMTIsMTIyLjEwNiwxNzcuNjE4LDEyMy4zODIsMTc2LjM0MnoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTMxNS4yODUsMTI5LjE4OWMtOC45MzMsOC45MzQtOC45MzMsMjMuNDcsMC4wMDEsMzIuNDA0YzQuMzI4LDQuMzI4LDEwLjA4Miw2LjcxLDE2LjIwMSw2LjcxICAgICBjNi4xMTksMCwxMS44NzQtMi4zODIsMTYuMjAyLTYuNzFjOC45MzMtOC45MzQsOC45MzMtMjMuNDcsMC0zMi40MDNjLTQuMzI3LTQuMzI4LTEwLjA4My02LjcxMS0xNi4yMDItNi43MTEgICAgIEMzMjUuMzY4LDEyMi40NzksMzE5LjYxMywxMjQuODYsMzE1LjI4NSwxMjkuMTg5eiBNMzM2LjI1NCwxNTAuMTZjLTEuMjczLDEuMjczLTIuOTY3LDEuOTc0LTQuNzY5LDEuOTc0ICAgICBjLTEuODAyLDAtMy40OTUtMC43MDEtNC43Ny0xLjk3NGMtMi42My0yLjYzLTIuNjMtNi45MS0wLjAwMS05LjUzOWMxLjI3NC0xLjI3NCwyLjk2OC0xLjk3NSw0Ljc3MS0xLjk3NSAgICAgYzEuODAxLDAsMy40OTQsMC43MDEsNC43NjksMS45NzRDMzM4Ljg4NCwxNDMuMjUsMzM4Ljg4NCwxNDcuNTMsMzM2LjI1NCwxNTAuMTZ6IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxwYXRoIGQ9Ik03NS42OTUsMzM2LjkyNmMtNC4zMjktNC4zMjYtMTAuMDgyLTYuNzA5LTE2LjIwMi02LjcwOWMtNi4xMiwwLTExLjg3MywyLjM4My0xNi4yMDEsNi43MSAgICAgYy04LjkzNCw4LjkzNS04LjkzNCwyMy40NywwLDMyLjQwNGM0LjMyNyw0LjMyOCwxMC4wOCw2LjcxMiwxNi4yMDEsNi43MTJzMTEuODc0LTIuMzg0LDE2LjIwMy02LjcxMSAgICAgQzg0LjYyOSwzNjAuMzk2LDg0LjYyOSwzNDUuODYyLDc1LjY5NSwzMzYuOTI2eiBNNjQuMjYyLDM1Ny44OThjLTEuMjczLDEuMjc0LTIuOTY3LDEuOTc3LTQuNzcsMS45NzcgICAgIGMtMS44LDAtMy40OTQtMC43MDItNC43NjktMS45NzdjLTIuNjMxLTIuNjI5LTIuNjMxLTYuOTA5LTAuMDAxLTkuNTM4YzEuMjczLTEuMjczLDIuOTY3LTEuOTc1LDQuNzctMS45NzUgICAgIHMzLjQ5NiwwLjcwMSw0Ljc3LDEuOTc1QzY2Ljg5MywzNTAuOTg5LDY2Ljg5MywzNTUuMjY5LDY0LjI2MiwzNTcuODk4eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNNDczLjE1LDMzNi45MjZjLTQuMzI5LTQuMzI2LTEwLjA4Mi02LjcwOS0xNi4yMDEtNi43MDljLTYuMTIxLDAtMTEuODczLDIuMzgzLTE2LjIwMiw2LjcxICAgICBjLTguOTMzLDguOTM1LTguOTMzLDIzLjQ3LDAsMzIuNDA0YzQuMzI4LDQuMzI4LDEwLjA4MSw2LjcxMiwxNi4yMDIsNi43MTJjNi4xMiwwLDExLjg3My0yLjM4NCwxNi4yMDItNi43MTEgICAgIEM0ODIuMDg0LDM2MC4zOTYsNDgyLjA4NCwzNDUuODYyLDQ3My4xNSwzMzYuOTI2eiBNNDYxLjcxOSwzNTcuODk4Yy0xLjI3NCwxLjI3NC0yLjk2OCwxLjk3Ny00Ljc3LDEuOTc3ICAgICBjLTEuODAxLDAtMy40OTUtMC43MDItNC43NjktMS45NzdjLTIuNjMxLTIuNjI5LTIuNjMxLTYuOTA5LTAuMDAyLTkuNTM4YzEuMjc0LTEuMjczLDIuOTY4LTEuOTc1LDQuNzcxLTEuOTc1ICAgICBjMS44MDEsMCwzLjQ5NiwwLjcwMSw0Ljc3LDEuOTc1QzQ2NC4zNDksMzUwLjk4OSw0NjQuMzQ5LDM1NS4yNjksNDYxLjcxOSwzNTcuODk4eiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMTg2Ljg5Miw5My4yNDVjNi4xMiwwLDExLjg3My0yLjM4MywxNi4yMDEtNi43MTFjNC4zMjctNC4zMjgsNi43MTEtMTAuMDgyLDYuNzExLTE2LjIwMiAgICAgYzAtNi4xMjEtMi4zODQtMTEuODc0LTYuNzExLTE2LjJjLTQuMzI4LTQuMzI5LTEwLjA4MS02LjcxMi0xNi4yMDEtNi43MTJjLTYuMTIyLDAtMTEuODc0LDIuMzgzLTE2LjIwMiw2LjcxMSAgICAgYy00LjMyOCw0LjMyNy02LjcxMiwxMC4wOC02LjcxMiwxNi4yMDFzMi4zODQsMTEuODc0LDYuNzExLDE2LjIwMkMxNzUuMDE4LDkwLjg2MSwxODAuNzcsOTMuMjQ1LDE4Ni44OTIsOTMuMjQ1eiAgICAgIE0xODIuMTIyLDY1LjU2MmMxLjI3My0xLjI3NCwyLjk2OC0xLjk3NSw0Ljc3MS0xLjk3NWMxLjgsMCwzLjQ5MywwLjcwMSw0Ljc2OSwxLjk3NmMxLjI3MywxLjI3MywxLjk3NywyLjk2NywxLjk3Nyw0Ljc2OSAgICAgYzAsMS44MDItMC43MDMsMy40OTUtMS45NzcsNC43NzFjLTEuMjc0LDEuMjczLTIuOTY4LDEuOTc1LTQuNzY5LDEuOTc1Yy0xLjgwMiwwLTMuNDk2LTAuNzAyLTQuNzcxLTEuOTc2ICAgICBjLTEuMjc0LTEuMjc0LTEuOTc2LTIuOTY3LTEuOTc2LTQuNzdDMTgwLjE0Niw2OC41MzEsMTgwLjg0OCw2Ni44MzYsMTgyLjEyMiw2NS41NjJ6IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxjaXJjbGUgY3g9IjY0LjQwOSIgY3k9IjE2MC4yMiIgcj0iMTAuNDk2IiBmaWxsPSIjY2NjY2NjIi8+CgkJCTxjaXJjbGUgY3g9IjQxMS4zOSIgY3k9IjM3NC4xMTUiIHI9IjEwLjQ5NiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8Y2lyY2xlIGN4PSI3My43NSIgY3k9IjQzOS4zNDMiIHI9IjEwLjQ5NyIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNMzg3LjkyOSwxNDguOTUxYzIuMTA3LDAsNC4yMTMtMC44MTksNS43OTktMi40NDhsMTEuMjMtMTEuNTUzYzMuMTExLTMuMjAxLDMuMDM5LTguMzE5LTAuMTYyLTExLjQzMSAgICAgYy0zLjE5OS0zLjExMi04LjMxOC0zLjAzOS0xMS40MzEsMC4xNjJsLTExLjIzLDExLjU1MmMtMy4xMTEsMy4yMDEtMy4wNCw4LjMxOSwwLjE2MiwxMS40MzEgICAgIEMzODMuODY4LDE0OC4xOTIsMzg1Ljg5OSwxNDguOTUxLDM4Ny45MjksMTQ4Ljk1MXoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTE0OC44MjIsMTM2LjE4MmwxNC45MzcsNi4wNGMwLjk5MywwLjQwMSwyLjAyLDAuNTkxLDMuMDI3LDAuNTkxYzMuMTk3LDAsNi4yMjctMS45MDksNy40OTctNS4wNTYgICAgIGMxLjY3NC00LjEzOS0wLjMyNS04Ljg1MS00LjQ2NC0xMC41MjRsLTE0LjkzOC02LjA0Yy00LjE0Ni0xLjY3Ni04Ljg1MSwwLjMyNi0xMC41MjQsNC40NjQgICAgIEMxNDIuNjg0LDEyOS43OTcsMTQ0LjY4MywxMzQuNTA4LDE0OC44MjIsMTM2LjE4MnoiIGZpbGw9IiNjY2NjY2MiLz4KCQkJPHBhdGggZD0iTTk2LjAzMywzOTIuNjczbC0xNC45MzgtNi4wNGMtNC4xNDYtMS42NzQtOC44NTEsMC4zMjUtMTAuNTI0LDQuNDY0Yy0xLjY3Myw0LjE0LDAuMzI2LDguODUyLDQuNDY1LDEwLjUyNGwxNC45MzgsNi4wNDEgICAgIGMwLjk5MywwLjQsMi4wMTksMC41OTEsMy4wMjYsMC41OTFjMy4xOTcsMCw2LjIyNy0xLjkwOCw3LjQ5Ny01LjA1NkMxMDIuMTcxLDM5OS4wNTksMTAwLjE3MiwzOTQuMzQ3LDk2LjAzMywzOTIuNjczeiIgZmlsbD0iI2NjY2NjYyIvPgoJCQk8cGF0aCBkPSJNNDM2Ljk0NSw0MjAuMjg0bC0xNC45MzctNi4wNGMtNC4xNDYtMS42NzMtOC44NTIsMC4zMjYtMTAuNTI0LDQuNDY1Yy0xLjY3NCw0LjE0LDAuMzI1LDguODUyLDQuNDY0LDEwLjUyNGwxNC45MzgsNi4wNCAgICAgYzAuOTkzLDAuNCwyLjAxOSwwLjU5MiwzLjAyNywwLjU5MmMzLjE5NiwwLDYuMjI2LTEuOTEsNy40OTctNS4wNTdDNDQzLjA4Myw0MjYuNjY5LDQ0MS4wODUsNDIxLjk1Nyw0MzYuOTQ1LDQyMC4yODR6IiBmaWxsPSIjY2NjY2NjIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);background-size: 34px;background-repeat: no-repeat;text-align: right;background-position: 16px 17px;
198
+ }
199
+ .amp-update-notice-review-box a{
200
+ color: #fff;
201
+ text-decoration: none;
202
+ font-size: 16px;
203
+ line-height: 23px; font-weight: 300;
204
+ }
205
+ .amp-update-notice-review-box span{
206
+ font-size: 11px;text-transform: uppercase;
207
+ }
208
+ li.first{
209
+ position: relative;
210
+ }
211
+ .active.valid:before{
212
+ content: "✓";
213
+ display: inline-block;
214
+ position: absolute;
215
+ color: #fff;
216
+ left: 20px;
217
+ background: green;
218
+ top: 15px;
219
+ padding: 4px 7px;
220
+ border-radius: 100%;
221
+ }
222
+ .not-active.invalid:before{
223
+ content: "X";
224
+ display: inline-block;
225
+ position: absolute;
226
+ color: #fff;
227
+ left: 20px;
228
+ background: #f32a56;
229
+ top: 15px;
230
+ padding: 4px 7px;
231
+ border-radius: 100%;
232
+ }
233
+
234
+
235
+
236
+
237
+
238
+
239
+ .a-f-wp-help-message {
240
+ width: 0em;
241
+ position: fixed;
242
+ right:0; z-index: 99999;
243
+ border: 0;
244
+ -webkit-transform: translateX(-50%);
245
+ -moz-transform: translateX(-50%);
246
+ -ms-transform: translateX(-50%);
247
+ -o-transform: translateX(-50%);
248
+ transform: translateX(-50%);
249
+ padding: 0;
250
+ color: #333;
251
+ opacity: 0;
252
+ -webkit-transition: 0.5s;
253
+ -moz-transition: 0.5s;
254
+ transition: 0.5s;
255
+ bottom: 85px;
256
+ }
257
+ .a-f-wp-help-message img{
258
+ width: 250px;
259
+ }
260
+
261
+ .a-f-wp-help-message:focus {
262
+ outline: none;
263
+ }
264
+ .a-f-wp-help-message.active {
265
+ opacity: 1;
266
+ -webkit-transition: 1s;
267
+ -moz-transition: 1s;
268
+ transition: 1s;
269
+ width: 170px;
270
+ }
271
+
272
+ .a-f-wp-help-container {
273
+ display: flex;
274
+ align-items: center;
275
+ justify-content: center;
276
+ position: fixed;
277
+ z-index: 9999;
278
+ bottom: 0px;
279
+ right: 0pc;
280
+ }
281
+ .dashicons-admin-comments:before, .dashicons-no-alt{
282
+ font-family: dashicons;
283
+ font-style: normal;
284
+ }
285
+ .a-f-wp-help-container .a-f-wp-help-tear {
286
+ width: 4em;
287
+ height: 4em;
288
+ right: 26px;
289
+ bottom: 27px;
290
+ border-radius: 0 50% 50% 50%;
291
+ border-radius: 50%;
292
+ cursor: pointer;
293
+ transform: rotate(0deg);
294
+ -webkit-transition: 0.5s;
295
+ -moz-transition: 0.5s;
296
+ transition: 0.5s;
297
+ background: dodgerblue;
298
+ box-shadow: 4px 4px 10px #b3b3b3;
299
+ position: relative;
300
+ }
301
+ .a-f-wp-help-container .a-f-wp-help-tear.active {
302
+ border-radius: 0 50% 50% 50%;
303
+ transform: rotate(45deg);
304
+ background: black;
305
+ }
306
+ .a-f-wp-help-container .a-f-wp-help-tear.active span {
307
+ position: absolute;
308
+ left: 12px;
309
+ top: 17px;
310
+ font-size: 2em;
311
+ color: white;
312
+ -webkit-transform: rotate(45deg);
313
+ -moz-transform: rotate(45deg);
314
+ -ms-transform: rotate(45deg);
315
+ -o-transform: rotate(45deg);
316
+ transform: rotate(45deg);
317
+ }
318
+ .a-f-wp-help-container span {
319
+ position: absolute;
320
+ left: 26px;
321
+ top: 29px;
322
+ -webkit-transform: translateX(-50%) translateY(-50%);
323
+ -moz-transform: translateX(-50%) translateY(-50%);
324
+ -ms-transform: translateX(-50%) translateY(-50%);
325
+ -o-transform: translateX(-50%) translateY(-50%);
326
+ transform: translateX(-50%) translateY(-50%);
327
+ font-size: 2em;
328
+ color: white;
329
+ }
330
+ .amp_layout_upcomming .amppb-layout-button .button{
331
+ background: #455A64;
332
+ color: #fff;
333
+ width: 100%;
334
+ text-align: center;
335
+ padding: 5px 3px;
336
+ height: 37px;
337
+ border-radius: 0;
338
+ color: #fff;
339
+ border: 0;
340
+ }
341
+
342
+ #redux_builder_amp-ampforwp_layouts_core {
343
+ position: relative
344
+ }
345
+ #redux_builder_amp-ampforwp_layouts_core .redux_field_th{
346
+ text-transform: uppercase;
347
+ line-height: 0;
348
+ border-bottom: 1px solid #E7E7E7;
349
+ margin-bottom: 30px;
350
+ padding-bottom: 15px !important;
351
+ }
352
+ /*** Layout Screenshot-Image CSS ***/
353
+ #redux_builder_amp-ampforwp_layouts_core .amppb_ad-layout-layout {
354
+ margin-bottom: 30px;
355
+ }
356
+
357
+ /*** Layout Screenshot-Image CSS End ***/
358
+ .amp-layouts-desc{
359
+ position: absolute;
360
+ font-size: 13px;
361
+ right: 22px;
362
+ text-transform: none;
363
+ top: -6px;
364
+ text-decoration: none;
365
+ }
366
+ .ampforwp-new-element .form-table tr{
367
+ border-top: 0px;
368
+ }
369
+ .amp-design-selector th, .amp-design-selector td {
370
+ padding-top: 40px;
371
+ }
372
+ .amppb_ad-layout-layout .amppb_ad-layout-wrapper{
373
+ padding: 0px;
374
+ background: #F7F7F7;
375
+ position: relative;
376
+ -webkit-transition: .3s ease-in-out;
377
+ transition: .3s ease-in-out;
378
+ }
379
+ .amppb_ad-layout-library-wrapper .amppb_ad-layout-layout:hover .amppb_ad-layout-title{
380
+ color:#000;
381
+
382
+ }
383
+ .amppb_ad-layout-layout .amppb_ad-layout-wrapper .amppb_ad-layout-screenshot{
384
+ background: #ffffff;
385
+ }
386
+ .amppb_ad-layout-screenshot img{
387
+ display: block;
388
+ width: 100%;
389
+ height: auto;
390
+ cursor:pointer;
391
+ }
392
+ .amppb_ad-layout-bottom{
393
+ position: relative;
394
+ margin: 10px 0px 0px 0px;
395
+ text-align: center
396
+ }
397
+ .amppb_ad-layout-button .button {
398
+ width: 100%;
399
+ text-align: center;
400
+ padding: 5px 3px;
401
+ height: 37px;
402
+ border-radius: 0;
403
+ background: #455A64;
404
+ color: #fff;
405
+ border: 0;
406
+ }
407
+ .amppb_ad-layout-title {
408
+ margin: 0;
409
+ padding: 10px 0px 10px 0px;
410
+ text-align: center;
411
+ border-bottom: 1px solid #eee;
412
+ font-size: 16px;
413
+ background: #fcfcfc;
414
+ }
415
+ .amppb_ad-layout-button{
416
+ z-index: 2;
417
+ top: 0;
418
+ bottom: 0;
419
+ right: 0;
420
+ height: 100%;
421
+ visibility: visible;
422
+ -ms-box-sizing: border-box;
423
+ -moz-box-sizing: border-box;
424
+ -webkit-box-sizing: border-box;
425
+ box-sizing: border-box;
426
+ padding: 0;
427
+ background: #f6f6f6;
428
+ -webkit-box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
429
+ -moz-box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
430
+ box-shadow: -1px 0 1px rgba(0, 0, 0, 0.05);
431
+ }
432
+ .amppb_ad-layout-wrapper:hover{
433
+ box-shadow: 0 0px 30px 0px rgba(0, 0, 0, 0.30);
434
+ }
435
+ .amppb_ad-layout-layout .amppb_ad-layout-button .button:hover{
436
+ background: #455A64;
437
+ color:#fff;
438
+ }
439
+ .amppb_ad-layout-layout {
440
+ -ms-box-sizing: border-box;
441
+ -moz-box-sizing: border-box;
442
+ -webkit-box-sizing: border-box;
443
+ box-sizing: border-box;
444
+ float: left;
445
+ padding: 0;
446
+ width: 30%;
447
+ margin-right: 30px;
448
+ }
449
+ .layouts_pro_lbl, .amppb_ad-layout_pro a{
450
+ position: absolute;
451
+ right: -3px;
452
+ color: #fff;
453
+ text-decoration: none;
454
+ text-align: center;
455
+ font-size: 12px;
456
+ font-weight: normal;
457
+ background: #43A047;
458
+ border-radius: 40px;
459
+ top: 28px;
460
+ line-height: 3.3;
461
+ height: 40px;
462
+ width: 40px;
463
+ }
464
+ .extension-menu-call .dashicons-admin-generic:before{
465
+ font-size: 18px;
466
+ }
467
+
468
+
469
+ /*
470
+ Accordion
471
+ */
472
+
473
+ .afw-accordion-header > h3{
474
+ border-radius: 3px 3px 0px 0px;
475
+ padding-top: 0px;
476
+ margin-top: 20px;
477
+ font-size: 13px;
478
+ text-transform: none;
479
+ padding: 0 16px;
480
+ background: #f9f9f9 !important;
481
+ border-width: 1px 1px 0 1px !important;
482
+ padding: 5px 16px;
483
+ border: solid #e5e5e5;
484
+ font-weight: 600;
485
+ color: #333;
486
+ border-bottom: 1px solid #eee !important;
487
+ }
488
+ .afw-accordion-header{
489
+ position: relative;
490
+ background: #fff;
491
+ width: 100%;
492
+ margin-top: 20px;}
493
+ .afw-accordion-header:hover .redux_field_th{
494
+ color: red
495
+ }
496
+ .afw-accordion-header:hover{
497
+ cursor: pointer;
498
+ }
499
+ .afw-accordion-header:hover .afw-accordion-tab-open:after{
500
+ content: "\f142";
501
+ color: #222;
502
+ }
503
+ .afw-accordion-tab-open:after{
504
+ right: 12px;
505
+ color: #72777c;
506
+ top: 12px;
507
+ border-radius: 1000px;
508
+ position: absolute;
509
+ content: "\f142";
510
+ transform: rotate(0deg);
511
+ display: inline-block;
512
+ font: 400 16px/1 dashicons;
513
+ z-index: 30;
514
+ }
515
+ .afw-accordion-tab-close:after{
516
+ right: 8px;
517
+ color: #333;
518
+ top: 10px;
519
+ border-radius: 1000px;
520
+ position: absolute;
521
+ transform: rotate(180deg);
522
+ content: "\f142";
523
+ display: inline-block;
524
+ font: 400 20px/1 dashicons;
525
+ z-index: 30;
526
+ }
527
+
528
+
529
+ .afw-accordion-tab-close:before {
530
+ content: "";
531
+ border: 1px solid #eee;
532
+ width: 99%;
533
+ display: inline-block;
534
+ height: 10px;
535
+ border-radius: 2px;
536
+ left: -1px;
537
+ transition: 0.4s;
538
+ z-index: 4;
539
+ left: 0.5%;
540
+ top: 30px;
541
+ position: absolute;
542
+ }
543
+
544
+
545
+ .afw-accordion-tab-close:hover:before{
546
+ top: 36px;
547
+ }
548
+ /*TOOltip*/
549
+
550
+ .afw-tooltip {
551
+ position: relative;
552
+ display: inline !important;
553
+ margin-left: 5px;
554
+ color: #d8d8d8 !important;
555
+ }
556
+
557
+ .redux-main .afw-tooltip .afw-help-subtitle {
558
+ visibility: hidden;
559
+ max-width: 250px;
560
+ width: max-content;
561
+ background-color: #333;
562
+ box-shadow: 0px 0px 10px 0px #999;
563
+ color: #fff;
564
+ line-height: 1.45;
565
+ text-align: center;
566
+ border-radius: 3px;
567
+ padding: 8px 10px;
568
+ position: absolute;
569
+ z-index: 100;
570
+ bottom: 100%;
571
+ right: -26px;
572
+ margin-bottom: 6px !important;
573
+ opacity: 0;
574
+ transition: opacity 0.3s;}
575
+
576
+ .afw-tooltip .afw-help-subtitle::after {
577
+ content: "";
578
+ position: absolute;
579
+ top: 100%;
580
+ right: 28px;
581
+ margin-left: -5px;
582
+ border-width: 5px;
583
+ border-style: solid;
584
+ border-color: #111 transparent transparent transparent;
585
+ }
586
+
587
+ .afw-tooltip:hover .afw-help-subtitle {
588
+ visibility: visible;
589
+ opacity: 1;
590
+ }
591
+ .afw-tooltip .afw-help-subtitle .afw-tootip-bottom{
592
+ position: absolute;
593
+ bottom: 3px;
594
+ border-top: 1px solid #fff;
595
+ left: 0px;
596
+ right: 0px;
597
+ top: auto;
598
+ padding: 3px 0px 0px;
599
+ }
600
+ .afw-tooltip .afw-help-subtitle .afw-tootip-bottom .help-wrap{
601
+ width: 49%;
602
+ float: left;
603
+ border-right: 1px solid #fff;
604
+ color:#fff;
605
+ }
606
+ .afw-tooltip .afw-help-subtitle .afw-tootip-bottom .help-wrap:last-child{
607
+ border:none;
608
+ }
609
+ .afw-tootip-bottom i:before{
610
+ font-size: 15px;
611
+ }
612
+ .redux-main .child_opt .afw-tooltip{
613
+ margin-top: -8px;
614
+ }
615
+ .redux-main .child_opt .redux_field_th{ background: #f9f9f9;padding:23px 10px 23px 20px;
616
+ margin-right: -16px;}
617
+
618
+ .child_opt_last fieldset {
619
+ margin-bottom: 15px;
620
+ }
621
+ .child_opt_arrow .redux_field_th:before{
622
+ position: absolute;
623
+ content: "\f142";
624
+ transform: rotate(0deg);
625
+ display: inline-block;
626
+ font: 400 40px/1 dashicons;
627
+ color: #f9f9f9;
628
+ margin-top: -48px;
629
+ margin-left: -10px
630
+ }
631
+ .redux-main .child_opt fieldset{ background: #f9f9f9;
632
+ min-height: 30px;
633
+ right: 20px;
634
+ position: relative;
635
+ padding: 8px 10px 8px 20px;
636
+ }
637
+ .redux-main .child_opt .redux-container-textarea{
638
+ padding-top: 40px;
639
+ }
640
+ .redux-main .form-table tr:hover .afw-tooltip{color: #666 !important;}
641
+ /**Option panel css For extension**/
642
+ .backtoextensionlist{
643
+ cursor: pointer;
644
+ }
645
+ .redux-main #redux-sticky{display: none}
646
+
647
+ #info-ampforwp-beta-mode-notice{color: #263238; margin: 20px; background: #FFF9C4;border-color: #908204;}
648
+
649
+ .redux-container #redux-intro-text .dashicons-admin-generic:before, .activated-plugins { color: #666 }
650
+
651
+ /*** RTL CSS ***/
652
+ .rtl .redux_field_th span:first-child {
653
+ right: auto;
654
+ left: 2%;
655
+ }
656
+ .rtl .redux-main .redux-field-container{
657
+ margin-left: 50px;
658
+ width: 90%;
659
+ }
660
+ .rtl .redux-main .button.remove-image{
661
+ margin-right: 10px;
662
+ }
663
+ .rtl .redux-sidebar .redux-group-tab-link-a i {
664
+ right: auto;
665
+ left: 10px;
666
+ }
667
+ .rtl .redux-main .child_opt .redux_field_th {
668
+ margin-right: 10px;
669
+ }
670
+ .rtl .redux_field_th {
671
+ padding: 20px 20px 20px 10px !important;
672
+ }
673
+ .rtl .redux-container #redux-header .display_header{
674
+ float: right;
675
+ }
676
+ .rtl .redux-container #redux-intro-text {
677
+ left: 5px;
678
+ right: auto;
679
+ }
680
+ .rtl .redux-amp-search-icon .dashicons-before:before{
681
+ vertical-align:middle;
682
+ }
683
+ .rtl .redux-container-switch .switch-options{
684
+ text-align:right;
685
+ }
686
+ .rtl .redux-main .child_opt fieldset {
687
+ padding: 8px 25px 8px 10px;
688
+ }
689
+ .rtl .redux-main .child_opt th, .rtl .redux-main .child_opt td {
690
+ padding: 0px 0px 0px 0px !important;
691
+ }
692
+ .rtl .redux-main .child_opt fieldset {
693
+ right: 0;
694
+ }
695
+ .rtl .redux-main .redux-field-container {
696
+ padding: 18px 15px 18px 0;
697
+ }
698
+ .rtl .redux-main .afw-tooltip .afw-help-subtitle{
699
+ left: -16px;
700
+ }
701
+ .rtl .afw-tooltip .afw-help-subtitle::after{
702
+ display: none
703
+ }
704
+ /*** Free Vs Pro CSS ***/
705
+ .rtl .fr h1, .rtl .pr h1{
706
+ padding: 0px 35px 20px 0px;
707
+ }
708
+ .rtl .ext{
709
+ padding: 45px 50px 45px 0px;
710
+ }
711
+ .rtl .fe-t h4{
712
+ padding:0px 8px 0px 0px;
713
+ }
714
+ .rtl .lt {
715
+ padding-right: 50px;
716
+ padding-left:0;
717
+ }
718
+
719
+ #redux_builder_amp-hide-amp-categories .inner-child span:before{
720
+ content: "- "
721
+ }
722
+ span.switch-text {
723
+ margin-left: 5px;
724
  }
includes/amp-consent/consent.php CHANGED
@@ -1,3 +1,3 @@
1
- <?php
2
- echo '{"promptIfUnknown": true}' ;
3
  ?>
1
+ <?php
2
+ echo '{"promptIfUnknown": true}' ;
3
  ?>
includes/disqus.html CHANGED
@@ -1,92 +1,92 @@
1
- <div id="disqus_thread"></div>
2
- <script>
3
-
4
- var QueryString = function () {
5
- var query_string = {};
6
- var query = window.location.search.substring(1);
7
- var vars = query.split("&");
8
- for (var i=0;i<vars.length;i++) {
9
- var pair = vars[i].split("=");
10
- if (typeof query_string[pair[0]] === "undefined") {
11
- query_string[pair[0]] = decodeURIComponent(pair[1]);
12
- } else if (typeof query_string[pair[0]] === "string") {
13
- var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
14
- query_string[pair[0]] = arr;
15
- } else {
16
- query_string[pair[0]].push(decodeURIComponent(pair[1]));
17
- }
18
- }
19
- return query_string;
20
- }();
21
-
22
- var url = QueryString.url;
23
- var identifier = QueryString.identifier;
24
- var disqus_name = QueryString.disqus_name;
25
- var disqus_title = QueryString.disqus_title;
26
-
27
- var disqus_config = function () {
28
- this.page.url = url;
29
- this.page.title = disqus_title;
30
- this.page.identifier = identifier || url;
31
- };
32
-
33
- (function () {
34
- var d = document, s = d.createElement('script');
35
- s.src = disqus_name;
36
- s.setAttribute('data-timestamp', +new Date());
37
- (d.head || d.body).appendChild(s);
38
- })();
39
-
40
- (function () {
41
- function checkSizeChange() {
42
- var viewportHeight = window.innerHeight;
43
- var contentHeight = document.getElementById('disqus_thread').clientHeight;
44
- if (viewportHeight !== contentHeight && contentHeight > 100) {
45
- window.parent.postMessage({
46
- sentinel: 'amp',
47
- type: 'embed-size',
48
- height: contentHeight
49
- }, '*')
50
- }
51
- }
52
-
53
- var mutationObserverAvailable = typeof window.MutationObserver === 'function';
54
-
55
- function bindObserver() {
56
- var foundframe = false,
57
- frame, framename,
58
- frames = document.getElementsByTagName('iframe');
59
-
60
- for (var i=0; i < frames.length; ++i) {
61
- frame = frames[i];
62
- framename = frame.getAttribute("name");
63
- if ( framename && /dsq/.test(framename) ) {
64
- // check the size now since the frame is now available
65
- checkSizeChange();
66
-
67
- var resizeObserver = new MutationObserver(checkSizeChange);
68
- resizeObserver.observe(frame, {
69
- attributes: true,
70
- attributeFilter: ['style']
71
- });
72
- foundframe = true;
73
- break;
74
- }
75
- }
76
-
77
- // if the frame is not available yet try again later
78
- if (foundframe === false) {
79
- setTimeout(bindObserver, 200);
80
- return;
81
- }
82
- }
83
-
84
- // use mutation observers to quickly change the size of the iframe
85
- if (mutationObserverAvailable) {
86
- bindObserver();
87
- }
88
-
89
- // also check periodically for the size of the frame
90
- setInterval(checkSizeChange, mutationObserverAvailable ? 5000 : 500);
91
- })();
92
  </script>
1
+ <div id="disqus_thread"></div>
2
+ <script>
3
+
4
+ var QueryString = function () {
5
+ var query_string = {};
6
+ var query = window.location.search.substring(1);
7
+ var vars = query.split("&");
8
+ for (var i=0;i<vars.length;i++) {
9
+ var pair = vars[i].split("=");
10
+ if (typeof query_string[pair[0]] === "undefined") {
11
+ query_string[pair[0]] = decodeURIComponent(pair[1]);
12
+ } else if (typeof query_string[pair[0]] === "string") {
13
+ var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
14
+ query_string[pair[0]] = arr;
15
+ } else {
16
+ query_string[pair[0]].push(decodeURIComponent(pair[1]));
17
+ }
18
+ }
19
+ return query_string;
20
+ }();
21
+
22
+ var url = QueryString.url;
23
+ var identifier = QueryString.identifier;
24
+ var disqus_name = QueryString.disqus_name;
25
+ var disqus_title = QueryString.disqus_title;
26
+
27
+ var disqus_config = function () {
28
+ this.page.url = url;
29
+ this.page.title = disqus_title;
30
+ this.page.identifier = identifier || url;
31
+ };
32
+
33
+ (function () {
34
+ var d = document, s = d.createElement('script');
35
+ s.src = disqus_name;
36
+ s.setAttribute('data-timestamp', +new Date());
37
+ (d.head || d.body).appendChild(s);
38
+ })();
39
+
40
+ (function () {
41
+ function checkSizeChange() {
42
+ var viewportHeight = window.innerHeight;
43
+ var contentHeight = document.getElementById('disqus_thread').clientHeight;
44
+ if (viewportHeight !== contentHeight && contentHeight > 100) {
45
+ window.parent.postMessage({
46
+ sentinel: 'amp',
47
+ type: 'embed-size',
48
+ height: contentHeight
49
+ }, '*')
50
+ }
51
+ }
52
+
53
+ var mutationObserverAvailable = typeof window.MutationObserver === 'function';
54
+
55
+ function bindObserver() {
56
+ var foundframe = false,
57
+ frame, framename,
58
+ frames = document.getElementsByTagName('iframe');
59
+
60
+ for (var i=0; i < frames.length; ++i) {
61
+ frame = frames[i];
62
+ framename = frame.getAttribute("name");
63
+ if ( framename && /dsq/.test(framename) ) {
64
+ // check the size now since the frame is now available
65
+ checkSizeChange();
66
+
67
+ var resizeObserver = new MutationObserver(checkSizeChange);
68
+ resizeObserver.observe(frame, {
69
+ attributes: true,
70
+ attributeFilter: ['style']
71
+ });
72
+ foundframe = true;
73
+ break;
74
+ }
75
+ }
76
+
77
+ // if the frame is not available yet try again later
78
+ if (foundframe === false) {
79
+ setTimeout(bindObserver, 200);
80
+ return;
81
+ }
82
+ }
83
+
84
+ // use mutation observers to quickly change the size of the iframe
85
+ if (mutationObserverAvailable) {
86
+ bindObserver();
87
+ }
88
+
89
+ // also check periodically for the size of the frame
90
+ setInterval(checkSizeChange, mutationObserverAvailable ? 5000 : 500);
91
+ })();
92
  </script>
includes/icons/amp-icons.php CHANGED
@@ -1,781 +1,781 @@
1
- <?php
2
- return array( 'widgets' => '.icon-widgets:before { content: "\e1bd";}',
3
- 'search' => '.icon-search:after{ content: "\e8b6"; }',
4
- 'shopping-cart' => '.icon-shopping-cart:after {content: "\e8cc";}',
5
- '3d_rotation' => '.icon-3d_rotation:before {content: "\e84d";}',
6
- 'ac_unit' => '.icon-ac_unit:before {content: "\eb3b";}',
7
- 'alarm' => '.icon-alarm:before {content: "\e855";}',
8
- 'access_alarms' => '.icon-access_alarms:before {content: "\e191";}',
9
- 'schedule' => '.icon-schedule:before {content: "\e8b5";}',
10
- 'accessibility' => '.icon-accessibility:before {content: "\e84e";}',
11
- 'accessible' => '.icon-accessible:before {content: "\e914";}',
12
- 'account_balance' => '.icon-account_balance:before {content: "\e84f";}',
13
- 'account_balance_wallet' => '.icon-account_balance_wallet:before {content: "\e850";}',
14
- 'account_box' => '.icon-account_box:before {content: "\e851";}',
15
- 'account_circle' => '.icon-account_circle:before {content: "\e853";}',
16
- 'add' => '.icon-add:before {content: "\e145";}',
17
- 'add_a_photo' => '.icon-add_a_photo:before {content: "\e439";}',
18
- 'alarm_add' => '.icon-alarm_add:before {content: "\e856";}',
19
- 'add_alert' => '.icon-add_alert:before {content: "\e003";}',
20
- 'add_box' => '.icon-add_box:before {content: "\e146";}',
21
- 'add_circle' => '.icon-add_circle:before {content: "\e147";}',
22
- 'control_point ' => '.icon-control_point:before {content: "\e3ba";}',
23
- 'add_location ' => '.icon-add_location:before {content: "\e567";}',
24
- 'add_shopping_cart ' => '.icon-add_shopping_cart:before {content: "\e854";}',
25
- 'queue ' => '.icon-queue:before {content: "\e03c";}',
26
- 'add_to_queue ' => '.icon-add_to_queue:before {content: "\e05c";}',
27
- 'adjust ' => '.icon-adjust:before {content: "\e39e";}',
28
- 'flight ' => '.icon-flight:before {content: "\e539";}',
29
- 'airplay ' => '.icon-airplay:before {content: "\e055";}',
30
- 'airport_shuttle ' => '.icon-airport_shuttle:before {content: "\eb3c";}',
31
- 'alarm_off ' => '.icon-alarm_off:before {content: "\e857";}',
32
- 'alarm_on ' => '.icon-alarm_on:before {content: "\e858";}',
33
- 'album ' => '.icon-album:before {content: "\e019";}',
34
- 'all_inclusive ' => '.icon-all_inclusive:before {content: "\eb3d";}',
35
- 'all_out' => '.icon-all_out:before {content: "\e90b";}',
36
- 'android' => '.icon-android:before {content: "\e859";}',
37
- 'announcement' => '.icon-announcement:before {content: "\e85a";}',
38
- 'apps' => '.icon-apps:before {content: "\e5c3";}',
39
- 'archive' => '.icon-archive:before {content: "\e149";}',
40
- 'arrow_back' => '.icon-arrow_back:before {content: "\e5c4";}',
41
- 'arrow_downward' => '.icon-arrow_downward:before {content: "\e5db";}',
42
- 'arrow_drop_down' => '.icon-arrow_drop_down:before {content: "\e5c5";}',
43
- 'arrow_drop_down_circle' => '.icon-arrow_drop_down_circle:before {content: "\e5c6";}',
44
- 'arrow_drop_up' => '.icon-arrow_drop_up:before {content: "\e5c7";}',
45
- 'arrow_forward' => '.icon-arrow_forward:before {content: "\e5c8";}',
46
- 'arrow_upward' => '.icon-arrow_upward:before {content: "\e5d8";}',
47
- 'art_track' => '.icon-art_track:before {content: "\e060";}',
48
- 'aspect_ratio' => '.icon-aspect_ratio:before {content: "\e85b";}',
49
- 'poll' => '.icon-poll:before {content: "\e801";}',
50
- 'assignment' => '.icon-assignment:before {content: "\e85d";}',
51
- 'assignment_ind' => '.icon-assignment_ind:before {content: "\e85e";}',
52
- 'assignment_late' => '.icon-assignment_late:before {content: "\e85f";}',
53
- 'assignment_return' => '.icon-assignment_return:before {content: "\e860";}',
54
- 'assignment_returned' => '.icon-assignment_returned:before {content: "\e861";}',
55
- 'assignment_turned_in' => '.icon-assignment_turned_in:before {content: "\e862";}',
56
- 'assistant' => '.icon-assistant:before {content: "\e39f";}',
57
- 'flag' => '.icon-flag:before {content: "\e153";}',
58
- 'attach_file' => '.icon-attach_file:before {content: "\e226";}',
59
- 'attach_money' => '.icon-attach_money:before {content: "\e227";}',
60
- 'attachment' => '.icon-attachment:before {content: "\e2bc";}',
61
- 'audiotrack' => '.icon-audiotrack:before {content: "\e3a1";}',
62
- 'autorenew' => '.icon-autorenew:before {content: "\e863";}',
63
- 'av_timer' => '.icon-av_timer:before {content: "\e01b";}',
64
- 'backspace' => '.icon-backspace:before {content: "\e14a";}',
65
- 'cloud_upload' => '.icon-cloud_upload:before {content: "\e2c3";}',
66
- 'battery_alert' => '.icon-battery_alert:before {content: "\e19c";}',
67
- 'battery_charging_full' => '.icon-battery_charging_full:before {content: "\e1a3";}',
68
- 'battery_std' => '.icon-battery_std:before {content: "\e1a5";}',
69
- 'battery_unknown' => '.icon-battery_unknown:before {content: "\e1a6";}',
70
- 'beach_access' => '.icon-beach_access:before {content: "\eb3e";}',
71
- 'beenhere' => '.icon-beenhere:before {content: "\e52d";}',
72
- 'block' => '.icon-block:before {content: "\e14b";}',
73
- 'bluetooth' => '.icon-bluetooth:before {content: "\e1a7";}',
74
- 'blur_circular' => '.icon-blur_circular:before {content: "\e3a2";}',
75
- 'blur_linear' => '.icon-blur_linear:before {content: "\e3a3";}',
76
- 'blur_on' => '.icon-blur_on:before {content: "\e3a5";}',
77
- 'class' => '.icon-class:before {content: "\e86e";}',
78
- 'turned_in' => '.icon-turned_in:before {content: "\e8e6";}',
79
- 'turned_in_not' => '.icon-turned_in_not:before {content: "\e8e7";}',
80
- 'border_color' => '.icon-border_color:before {content: "\e22b";}',
81
- 'branding_watermark' => '.icon-branding_watermark:before {content: "\e06b";}',
82
- 'brightness_1' => '.icon-brightness_1:before {content: "\e3a6";}',
83
- 'brightness_2' => '.icon-brightness_2:before {content: "\e3a7";}',
84
- 'brightness_3' => '.icon-brightness_3:before {content: "\e3a8";}',
85
- 'brightness_4' => '.icon-brightness_4:before {content: "\e3a9";}',
86
- 'brightness_low' => '.icon-brightness_low:before {content: "\e1ad";}',
87
- 'brightness_high' => '.icon-brightness_high:before {content: "\e1ac";}',
88
- 'brightness_auto' => '.icon-brightness_auto:before {content: "\e1ab";}',
89
- 'broken_image' => '.icon-broken_image:before {content: "\e3ad";}',
90
- 'brush' => '.icon-brush:before {content: "\e3ae";}',
91
- 'bubble_chart' => '.icon-bubble_chart:before {content: "\e6dd";}',
92
- 'bug_report' => '.icon-bug_report:before {content: "\e868";}',
93
- 'build' => '.icon-build:before {content: "\e869";}',
94
- 'burst_mode' => '.icon-burst_mode:before {content: "\e43c";}',
95
- 'domain' => '.icon-domain:before {content: "\e7ee";}',
96
- 'business_center' => '.icon-business_center:before {content: "\eb3f";}',
97
- 'cached' => '.icon-cached:before {content: "\e86a";}',
98
- 'cake' => '.icon-cake:before {content: "\e7e9";}',
99
- 'phone' => '.icon-phone:before {content: "\e0cd";}',
100
- 'call_end' => '.icon-call_end:before {content: "\e0b1";}',
101
- 'call_made' => '.icon-call_made:before {content: "\e0b2";}',
102
- 'merge_type' => '.icon-merge_type:before {content: "\e252";}',
103
- 'call_missed' => '.icon-call_missed:before {content: "\e0b4";}',
104
- 'call_missed_outgoing' => '.icon-call_missed_outgoing:before {content: "\e0e4";}',
105
- 'call_received' => '.icon-call_received:before {content: "\e0b5";}',
106
- 'call_split' => '.icon-call_split:before {content: "\e0b6";}',
107
- 'call_to_action' => '.icon-call_to_action:before {content: "\e06c";}',
108
- 'camera' => '.icon-camera:before {content: "\e3af";}',
109
- 'photo_camera' => '.icon-photo_camera:before {content: "\e412";}',
110
- 'camera_enhance' => '.icon-camera_enhance:before {content: "\e8fc";}',
111
- 'camera_front' => '.icon-camera_front:before {content: "\e3b1";}',
112
- 'camera_roll' => '.icon-camera_roll:before {content: "\e3b3";}',
113
- 'cancel' => '.icon-cancel:before {content: "\e5c9";}',
114
- 'redeem' => '.icon-redeem:before {content: "\e8b1";}',
115
- 'card_membership' => '.icon-card_membership:before {content: "\e8f7";}',
116
- 'card_travel' => '.icon-card_travel:before {content: "\e8f8";}',
117
- 'casino' => '.icon-casino:before {content: "\eb40";}',
118
- 'center_focus_strong' => '.icon-center_focus_strong:before {content: "\e3b4";}',
119
- 'center_focus_weak' => '.icon-center_focus_weak:before {content: "\e3b5";}',
120
- 'change_history' => '.icon-change_history:before {content: "\e86b";}',
121
- 'chat' => '.icon-chat:before {content: "\e0b7";}',
122
- 'chat_bubble' => '.icon-chat_bubble:before {content: "\e0ca";}',
123
- 'check' => '.icon-check:before {content: "\e5ca";}',
124
- 'check_box' => '.icon-check_box:before {content: "\e834";}',
125
- 'check_box_outline_blank' => '.icon-check_box_outline_blank:before {content:"\e835";}',
126
- 'check_circle' => '.icon-check_circle:before {content: "\e86c";}',
127
- 'navigate_before' => '.icon-navigate_before:before {content: "\e408";}',
128
- 'navigate_next' => '.icon-navigate_next:before {content: "\e409";}',
129
- 'child_care' => '.icon-child_care:before {content: "\eb41";}',
130
- 'child_friendly' => '.icon-child_friendly:before {content: "\eb42";}',
131
- 'chrome_reader_mode' => '.icon-chrome_reader_mode:before {content: "\e86d";}',
132
- 'close' => '.icon-close:before {content: "\e5cd";}',
133
- 'clear_all' => '.icon-clear_all:before {content: "\e0b8";}',
134
- 'closed_caption' => '.icon-closed_caption:before {content: "\e01c";}',
135
- 'wb_cloudy' => '.icon-wb_cloudy:before {content: "\e42d";}',
136
- 'cloud_circle' => '.icon-cloud_circle:before {content: "\e2be";}',
137
- 'cloud_done' => '.icon-cloud_done:before {content: "\e2bf";}',
138
- 'cloud_download' => '.icon-cloud_download:before {content: "\e2c0";}',
139
- 'cloud_off' => '.icon-cloud_off:before {content: "\e2c1";}',
140
- 'cloud_queue' => '.icon-cloud_queue:before {content: "\e2c2";}',
141
- 'code' => '.icon-code:before {content: "\e86f";}',
142
- 'photo_library' => '.icon-photo_library:before {content: "\e413";}',
143
- 'collections_bookmark' => '.icon-collections_bookmark:before {content: "\e431";}',
144
- 'palette' => '.icon-palette:before {content: "\e40a";}',
145
- 'colorize' => '.icon-colorize:before {content: "\e3b8";}',
146
- 'comment' => '.icon-comment:before {content: "\e0b9";}',
147
- 'compare' => '.icon-compare:before {content: "\e3b9";}',
148
- 'compare_arrows' => '.icon-compare_arrows:before {content: "\e915";}',
149
- 'laptop' => '.icon-laptop:before {content: "\e31e";}',
150
- 'confirmation_number' => '.icon-confirmation_number:before {content: "\e638";}',
151
- 'contact_email' => '.icon-contact_email:before {content: "\e0d0";}',
152
- 'contact_phone' => '.icon-contact_phone:before {content: "\e0cf";}',
153
- 'contacts' => '.icon-contacts:before {content: "\e0ba";}',
154
- 'content_copy' => '.icon-content_copy:before {content: "\e14d";}',
155
- 'content_cut' => '.icon-content_cut:before {content: "\e14e";}',
156
- 'content_paste' => '.icon-content_paste:before {content: "\e14f";}',
157
- 'control_point' => '.icon-control_point:before {content: "\e3bb";}',
158
- 'copyright' => '.icon-copyright:before {content: "\e90c";}',
159
- 'mode_edit' => '.icon-mode_edit:before {content: "\e254";}',
160
- 'create_new_folder' => '.icon-create_new_folder:before {content: "\e2cc";}',
161
- 'payment' => '.icon-payment:before {content: "\e8a1";}',
162
- 'crop' => '.icon-crop:before {content: "\e3be";}',
163
- 'crop_16_9' => '.icon-crop_16_9:before {content: "\e3bc";}',
164
- 'crop_3_2' => '.icon-crop_3_2:before {content: "\e3bd";}',
165
- 'crop_landscape' => '.icon-crop_landscape:before {content: "\e3c3";}',
166
- 'crop_7_5' => '.icon-crop_7_5:before {content: "\e3c0";}',
167
- 'crop_din' => '.icon-crop_din:before {content: "\e3c1";}',
168
- 'crop_free' => '.icon-crop_free:before {content: "\e3c2";}',
169
- 'crop_original' => '.icon-crop_original:before {content: "\e3c4";}',
170
- 'crop_portrait' => '.icon-crop_portrait:before {content: "\e3c5";}',
171
- 'crop_rotate' => '.icon-crop_rotate:before {content: "\e437";}',
172
- 'crop_square' => '.icon-crop_square:before {content: "\e3c6";}',
173
- 'dashboard' => '.icon-dashboard:before {content: "\e871";}',
174
- 'data_usage' => '.icon-data_usage:before {content: "\e1af";}',
175
- 'data_range' => '.icon-data_range:before {content: "\e916";}',
176
- 'dehaze' => '.icon-dehaze:before {content: "\e3c7";}',
177
- 'delete' => '.icon-delete:before {content: "\e872";}',
178
- 'delete_forever' => '.icon-delete_forever:before {content: "\e92b";}',
179
- 'delete_sweep' => '.icon-delete_sweep:before {content: "\e16c";}',
180
- 'description' => '.icon-description:before {content: "\e873";}',
181
- 'desktop_mac' => '.icon-desktop_mac:before {content: "\e30b";}',
182
- 'desktop_windows' => '.icon-desktop_windows:before {content: "\e30c";}',
183
- 'details' => '.icon-details:before {content: "\e3c8";}',
184
- 'developer_board' => '.icon-developer_board:before {content: "\e30d";}',
185
- 'developer_mode' => '.icon-developer_mode:before {content: "\e1b0";}',
186
- 'device_hub' => '.icon-device_hub:before {content: "\e335";}',
187
- 'phonelink' => '.icon-phonelink:before {content: "\e326";}',
188
- 'devices_other' => '.icon-devices_other:before {content: "\e337";}',
189
- 'dialer_sip' => '.icon-dialer_sip:before {content: "\e0bb";}',
190
- 'dialerpad' => '.icon-dialerpad:before {content: "\e0bc";}',
191
- 'directions' => '.icon-directions:before {content: "\e52e";}',
192
- 'directions_bike' => '.icon-directions_bike:before {content: "\e52f";}',
193
- 'directions_boat' => '.icon-directions_boat:before {content: "\e532";}',
194
- 'directions_bus' => '.icon-directions_bus:before {content: "\e530";}',
195
- 'directions_car' => '.icon-directions_car:before {content: "\e531";}',
196
- 'directions_run' => '.icon-directions_run:before {content: "\e566";}',
197
- 'directions_transit' => '.icon-directions_transit:before {content: "\e535";}',
198
- 'directions_walk' => '.icon-directions_walk:before {content: "\e536";}',
199
- 'disc_full' => '.icon-disc_full:before {content: "\e610";}',
200
- 'dns' => '.icon-dns:before {content: "\e875";}',
201
- 'not_interested' => '.icon-not_interested:before {content: "\e033";}',
202
- 'do_not_disturb_alt' => '.icon-do_not_disturb_alt:before {content: "\e611";}',
203
- 'do_not_disturb_off' => '.icon-do_not_disturb_off:before {content: "\e643";}',
204
- 'remove_circle' => '.icon-remove_circle:before {content: "\e15c";}',
205
- 'dock' => '.icon-dock:before {content: "\e30c";}',
206
- 'done' => '.icon-done:before {content: "\e876";}',
207
- 'done_all' => '.icon-done_all:before {content: "\e877";}',
208
- 'donut_large' => '.icon-donut_large:before {content: "\e917";}',
209
- 'donut_small' => '.icon-donut_small:before {content: "\e918";}',
210
- 'drafts' => '.icon-drafts:before {content: "\e151";}',
211
- 'drag_handle' => '.icon-drag_handle:before {content: "\e25d";}',
212
- 'time_to_leave' => '.icon-time_to_leave:before {content: "\e62c";}',
213
- 'dvr' => '.icon-dvr:before {content: "\e1b2";}',
214
- 'edit_location' => '.icon-edit_location:before {content: "\e568";}',
215
- 'eject' => '.icon-eject:before {content: "\e8fb";}',
216
- 'markunread' => '.icon-markunread:before {content: "\e159";}',
217
- 'enhanced_encryption' => '.icon-enhanced_encryption:before {content: "\e63f";}',
218
- 'equalizer' => '.icon-equalizer:before {content: "\e01d";}',
219
- 'error '=> '.icon-error:before {content: "\e000";}',
220
- 'error_outline '=> '.icon-error_outline:before {content: "\e001";}',
221
- 'euro_symbol '=> '.icon-euro_symbol:before {content: "\e926";}',
222
- 'ev_station '=> '.icon-ev_station:before {content: "\e56d";}',
223
- 'insert_invitation '=> '.icon-insert_invitation:before {content: "\e24f";}',
224
- 'event_available '=> '.icon-event_available:before {content: "\e614";}',
225
- 'event_busy '=> '.icon-event_busy:before {content: "\e615";}',
226
- 'event_note '=> '.icon-event_note:before {content: "\e616";}',
227
- 'event_seat '=> '.icon-event_seat:before {content: "\e903";}',
228
- 'exit_to_app '=> '.icon-exit_to_app:before {content: "\e879";}',
229
- 'expand_less '=> '.icon-expand_less:before {content: "\e5ce";}',
230
- 'expand_more '=> '.icon-expand_more:before {content: "\e5cf";}',
231
- 'explicit '=> '.icon-explicit:before {content: "\e01e";}',
232
- 'explore '=> '.icon-explore:before {content: "\e87a";}',
233
- 'exposure '=> '.icon-exposure:before {content: "\e3ca";}',
234
- 'exposure_zero '=> '.icon-exposure_zero:before {content: "\e3cf";}',
235
- 'extension '=> '.icon-extension:before {content: "\e87b";}',
236
- 'face '=> '.icon-face:before {content: "\e87c";}',
237
- 'fast_forward '=> '.icon-fast_forward:before {content: "\e01f";}',
238
- 'fast_rewind '=> '.icon-fast_rewind:before {content: "\e020";}',
239
- 'favorite '=> '.icon-favorite:before {content: "\e87d";}',
240
- 'favorite_border '=> '.icon-favorite_border:before {content: "\e87e";}',
241
- 'featured_play_list '=> '.icon-featured_play_list:before {content: "\e06d";}',
242
- 'featured_video '=> '.icon-featured_video:before {content: "\e06e";}',
243
- 'sms_failed '=> '.icon-sms_failed:before {content: "\e626";}',
244
- 'fiber_manual_record '=> '.icon-fiber_manual_record:before {content: "\e061";}',
245
- 'fiber_new '=> '.icon-fiber_new:before {content: "\e05e";}',
246
- 'fiber_smart_record '=> '.icon-fiber_smart_record:before {content: "\e062";}',
247
- 'get_app '=> '.icon-get_app:before {content: "\e884";}',
248
- 'file_upload'=> '.icon-file_upload:before {content: "\e2c6";}',
249
- 'filter'=> '.icon-filter:before {content: "\e3d3";}',
250
- 'filter_9_plus'=> '.icon-filter_9_plus:before {content: "\e3da";}',
251
- 'filter_b_and_w'=> '.icon-filter_b_and_w:before {content: "\e3db";}',
252
- 'filter_center_focus'=> '.icon-filter_center_focus:before {content: "\e3dc";}',
253
- 'filter_drama'=> '.icon-filter_drama:before {content: "\e3dd";}',
254
- 'filter_frames'=> '.icon-filter_frames:before {content: "\e3de";}',
255
- 'terrain'=> '.icon-terrain:before {content: "\e564";}',
256
- 'filter_list'=> '.icon-filter_list:before {content: "\e152";}',
257
- 'filter_none'=> '.icon-filter_none:before {content: "\e3e0";}',
258
- 'filter_tilt_shift'=> '.icon-filter_tilt_shift:before {content: "\e3e2";}',
259
- 'filter_vintage'=> '.icon-filter_vintage:before {content: "\e3e3";}',
260
- 'find_in_page'=> '.icon-find_in_page:before {content: "\e880";}',
261
- 'find_replace'=> '.icon-find_replace:before {content: "\e881";}',
262
- 'fingerprint'=> '.icon-fingerprint:before {content: "\e3e3";}',
263
- 'first_page'=> '.icon-first_page:before {content: "\e5dc";}',
264
- 'fitness_center'=> '.icon-fitness_center:before {content: "\eb43";}',
265
- 'flare'=> '.icon-flare:before {content: "\e3e4";}',
266
- 'flash_on'=> '.icon-flash_on:before {content: "\e3e7";}',
267
- 'flight_land'=> '.icon-flight_land:before {content: "\e904";}',
268
- 'flight_takeoff'=> '.icon-flight_takeoff:before {content: "\e905";}',
269
- 'folder'=> '.icon-folder:before {content: "\e2c7";}',
270
- 'folder_open'=> '.icon-folder_open:before {content: "\e2c8";}',
271
- 'folder_shared'=> '.icon-folder_shared:before {content: "\e2c9";}',
272
- 'folder_special'=> '.icon-folder_special:before {content: "\e617";}',
273
- 'font_download'=> '.icon-font_download:before {content: "\e167";}',
274
- 'format_align_center'=> '.icon-format_align_center:before {content: "\e234";}',
275
- 'format_align_justify'=> '.icon-format_align_justify:before {content: "\e235";}',
276
- 'format_align_left'=> '.icon-format_align_left:before {content: "\e236";}',
277
- 'format_align_right'=> '.icon-format_align_right:before {content: "\e237";}',
278
- 'format_bold'=> '.icon-format_bold:before {content: "\e238";}',
279
- 'format_clear'=> '.icon-format_clear:before {content: "\e239";}',
280
- 'format_color_fill'=> '.icon-format_color_fill:before {content: "\e23a";}',
281
- 'format_color_reset'=> '.icon-format_color_reset:before {content: "\e23b";}',
282
- 'format_color_text'=> '.icon-format_color_text:before {content: "\e23c";}',
283
- 'format_indent_decrease'=> '.icon-format_indent_decrease:before {content: "\e23d";}',
284
- 'format_indent_increase'=> '.icon-format_indent_increase:before {content: "\e23e";}',
285
- 'format_italic'=> '.icon-format_italic:before {content: "\e23f";}',
286
- 'format_line_spacing'=> '.icon-format_line_spacing:before {content: "\e240";}',
287
- 'format_line_bulleted'=> '.icon-format_line_bulleted:before {content: "\e241";}',
288
- 'format_list_numbered'=> '.icon-format_list_numbered:before {content: "\e242";}',
289
- 'format_paint'=> '.icon-format_paint:before {content: "\e243";}',
290
- 'format_quote'=> '.icon-format_quote:before {content: "\e244";}',
291
- 'format_shapes'=> '.icon-format_shapes:before {content: "\e25e";}',
292
- 'format_size'=> '.icon-format_size:before {content: "\e245";}',
293
- 'format_strikethrough'=> '.icon-format_strikethrough:before {content: "\e246";}',
294
- 'format_textdirection_l_to_r'=> '.icon-format_textdirection_l_to_r:before {content: "\e247";}',
295
- 'format_textdirection_r_to_l'=> '.icon-format_textdirection_r_to_l:before {content: "\e248";}',
296
- 'format_underlined'=> '.icon-format_underlined:before {content: "\e249";}',
297
- 'question_answer'=> '.icon-question_answer:before {content: "\e8af";}',
298
- 'forward'=> '.icon-forward:before {content: "\e154";}',
299
- 'forward_10'=> '.icon-forward_10:before {content: "\e056";}',
300
- 'forward_30'=> '.icon-forward_30:before {content: "\e057";}',
301
- 'forward_5'=> '.icon-forward_5:before {content: "\e058";}',
302
- 'free_breakfast'=> '.icon-free_breakfast:before {content: "\eb44";}',
303
- 'full_screen'=> '.icon-full_screen:before {content: "\e5d0";}',
304
- 'full_screen_exit'=> '.icon-full_screen_exit:before {content: "\e5d1";}',
305
- 'functions'=> '.icon-functions:before {content: "\e24a";}',
306
- 'g_translate'=> '.icon-g_translate:before {content: "\e927";}',
307
- 'games'=> '.icon-games:before {content: "\e021";}',
308
- 'gavel'=> '.icon-gavel:before {content: "\e90e";}',
309
- 'gesture'=> '.icon-gesture:before {content: "\e155";}',
310
- 'gif'=> '.icon-gif:before {content: "\e908";}',
311
- 'goat'=> '.icon-goat:before {content: "\e900";}',
312
- 'golf_course'=> '.icon-golf_course:before {content: "\eb45";}',
313
- 'my_location'=> '.icon-my_location:before {content: "\e55c";}',
314
- 'location_searching'=> '.icon-location_searching:before {content: "\e1b7";}',
315
- 'location_disabled'=> '.icon-location_disabled:before {content: "\e1b6";}',
316
- 'star'=> '.icon-star:before {content: "\e838";}',
317
- 'gradient'=> '.icon-gradient:before {content: "\e3e9";}',
318
- 'grain'=> '.icon-grain:before {content: "\e3ea";}',
319
- 'graphic_eq'=> '.icon-graphic_eq:before {content: "\e1b8";}',
320
- 'grid_off'=> '.icon-grid_off:before {content: "\e3eb";}',
321
- 'grid_on'=> '.icon-grid_on:before {content: "\e3ec";}',
322
- 'people'=> '.icon-people:before {content: "\e7fb";}',
323
- 'group_add'=> '.icon-group_add:before {content: "\e7f0";}',
324
- 'group_work'=> '.icon-group_work:before {content: "\e886";}',
325
- 'hd'=> '.icon-hd:before {content: "\e052";}',
326
- 'hdr_strong'=> '.icon-hdr_strong:before {content: "\e3f1";}',
327
- 'hdr_weak'=> '.icon-hdr_weak:before {content: "\e3f2";}',
328
- 'headset'=> '.icon-headset:before {content: "\e310";}',
329
- 'healing'=> '.icon-healing:before {content: "\e3f3";}',
330
- 'hearing'=> '.icon-hearing:before {content: "\e023";}',
331
- 'help'=> '.icon-help:before {content: "\e887";}',
332
- 'help_outline'=> '.icon-help_outline:before {content: "\e8fd";}',
333
- 'high_quality'=> '.icon-high_quality:before {content: "\e024";}',
334
- 'highlight'=> '.icon-highlight:before {content: "\e25f";}',
335
- 'highlight_off'=> '.icon-highlight_off:before {content: "\e888";}',
336
- 'restore'=> '.icon-restore:before {content: "\e8b3";}',
337
- 'home'=> '.icon-home:before {content: "\e88a";}',
338
- 'hot_tub'=> '.icon-hot_tub:before {content: "\eb46";}',
339
- 'local_hotel'=> '.icon-local_hotel:before {content: "\e549";}',
340
- 'hourglass_empty'=> '.icon-hourglass_empty:before {content: "\e88b";}',
341
- 'hourglass_full'=> '.icon-hourglass_full:before {content: "\e88c";}',
342
- 'lock'=> '.icon-lock:before {content: "\e897";}',
343
- 'photo'=> '.icon-photo:before {content: "\e410";}',
344
- 'image_aspect_ratio'=> '.icon-image_aspect_ratio:before {content: "\e3f5";}',
345
- 'import_contact'=> '.icon-import_contact:before {content: "\e0e0";}',
346
- 'import_export'=> '.icon-import_export:before {content: "\e0c3";}',
347
- 'important_device'=> '.icon-important_device:before {content: "\e912";}',
348
- 'inbox'=> '.icon-inbox:before {content: "\e156";}',
349
- 'indeterminate_check_box'=> '.icon-indeterminate_check_box:before {content: "\e909";}',
350
- 'info'=> '.icon-info:before {content: "\e88e";}',
351
- 'info_outline'=> '.icon-info_outline:before {content: "\e88f";}',
352
- 'input'=> '.icon-input:before {content: "\e890";}',
353
- 'insert_comment'=> '.icon-insert_comment:before {content: "\e24c";}',
354
- 'insert_drive_file'=> '.icon-insert_drive_file:before {content: "\e24d";}',
355
- 'tag_faces'=> '.icon-tag_faces:before {content: "\e420";}',
356
- 'link'=> '.icon-link:before {content: "\e157";}',
357
- 'invert_colors'=> '.icon-invert_colors:before {content: "\e891";}',
358
- 'invert_colors_off'=> '.icon-invert_colors_off:before {content: "\e0c4";}',
359
- 'iso'=> '.icon-iso:before {content: "\e3f6";}',
360
- 'keyboard'=> '.icon-keyboard:before {content: "\e312";}',
361
- 'keyboard_arrow_down'=> '.icon-keyboard_arrow_down:before {content: "\e313";}',
362
- 'keyboard_arrow_left'=> '.icon-keyboard_arrow_left:before {content: "\e314";}',
363
- 'keyboard_arrow_right'=> '.icon-keyboard_arrow_right:before {content: "\e315";}',
364
- 'keyboard_arrow_up'=> '.icon-keyboard_arrow_up:before {content: "\e316";}',
365
- 'keyboard_backspace'=> '.icon-keyboard_backspace:before {content: "\e317";}',
366
- 'keyboard_capslock'=> '.icon-keyboard_capslock:before {content: "\e318";}',
367
- 'keyboard_return'=> '.icon-keyboard_return:before {content: "\e31b";}',
368
- 'keyboard_tab'=> '.icon-keyboard_tab:before {content: "\e31c";}',
369
- 'keyboard_voice'=> '.icon-keyboard_voice:before {content: "\e31d";}',
370
- 'kitchen'=> '.icon-kitchen:before {content: "\eb47";}',
371
- 'lable'=> '.icon-lable:before {content: "\e892";}',
372
- 'lable_outline'=> '.icon-lable_outline:before {content: "\e893";}',
373
- 'language'=> '.icon-language:before {content: "\e894";}',
374
- 'laptop_chromebook'=> '.icon-laptop_chromebook:before {content: "\e31f";}',
375
- 'laptop_mac'=> '.icon-laptop_mac:before {content: "\e320";}',
376
- 'last_page'=> '.icon-last_page:before {content: "\e5dd";}',
377
- 'open_in_new'=> '.icon-open_in_new:before {content: "\e89e";}',
378
- 'layers'=> '.icon-layers:before {content: "\e53b";}',
379
- 'layers_clear'=> '.icon-layers_clear:before {content: "\e53c";}',
380
- 'leak_add'=> '.icon-leak_add:before {content: "\e3f8";}',
381
- 'lens'=> '.icon-lens:before {content: "\e3fa";}',
382
- 'library_books'=> '.icon-library_books:before {content: "\e02f";}',
383
- 'library_music'=> '.icon-library_music:before {content: "\e030";}',
384
- 'lightbulb_outline'=> '.icon-lightbulb_outline:before {content: "\e90f";}',
385
- 'line_weight'=> '.icon-line_weight:before {content: "\e91a";}',
386
- 'linear_scale'=> '.icon-linear_scale:before {content: "\e260";}',
387
- 'linked_camera'=> '.icon-linked_camera:before {content: "\e438";}',
388
- 'list'=> '.icon-list:before {content: "\e896";}',
389
- 'live_help'=> '.icon-live_help:before {content: "\e0c6";}',
390
- 'live_tv'=> '.icon-live_tv:before {content: "\e639";}',
391
- 'local_play'=> '.icon-local_play:before {content: "\e553";}',
392
- 'local_airport'=> '.icon-local_airport:before {content: "\e55d";}',
393
- 'local_atm'=> '.icon-local_atm:before {content: "\e53e";}',
394
- 'local_bar'=> '.icon-local_bar:before {content: "\e540";}',
395
- 'local_cafe'=> '.icon-local_cafe:before {content: "\e541";}',
396
- 'local_car_wash'=> '.icon-local_car_wash:before {content: "\e542";}',
397
- 'local_convenience_store'=> '.icon-local_convenience_store:before {content: "\e543";}',
398
- 'restaurant_menu'=> '.icon-restaurant_menu:before {content: "\e561";}',
399
- 'local_drink'=> '.icon-local_drink:before {content: "\e544";}',
400
- 'local_florist'=> '.icon-local_florist:before {content: "\e545";}',
401
- 'local_gas_station'=> '.icon-local_gas_station:before {content: "\e546";}',
402
- 'shopping_cart'=> '.icon-shopping_cart:before {content: "\e8cc";}',
403
- 'local_hospital'=> '.icon-local_hospital:before {content: "\e548";}',
404
- 'local_laundry_service'=> '.icon-local_laundry_service:before {content: "\e54a";}',
405
- 'local_library'=> '.icon-local_library:before {content: "\e54b";}',
406
- 'local_mall'=> '.icon-local_mall:before {content: "\e54c";}',
407
- 'theaters'=> '.icon-theaters:before {content: "\e8da";}',
408
- 'local_offer'=> '.icon-local_offer:before {content: "\e54e";}',
409
- 'local_parking'=> '.icon-local_parking:before {content: "\e54f";}',
410
- 'local_pharmacy'=> '.icon-local_pharmacy:before {content: "\e550";}',
411
- 'local_pizza'=> '.icon-local_pizza:before {content: "\e552";}',
412
- 'print'=> '.icon-print:before {content: "\e8ad";}',
413
- 'local_shipping'=> '.icon-local_shipping:before {content: "\e558";}',
414
- 'local_taxi'=> '.icon-local_taxi:before {content: "\e559";}',
415
- 'local_city'=> '.icon-local_city:before {content: "\e7f1";}',
416
- 'location_off'=> '.icon-location_off:before {content: "\e0c7";}',
417
- 'room'=> '.icon-room:before {content: "\e8b4";}',
418
- 'lock_open'=> '.icon-lock_open:before {content: "\e898";}',
419
- 'lock_outline'=> '.icon-lock_outline:before {content: "\e899";}',
420
- 'looks'=> '.icon-looks:before {content: "\e3fc";}',
421
- 'sync'=> '.icon-sync:before {content: "\e627";}',
422
- 'loupe'=> '.icon-loupe:before {content: "\e402";}',
423
- 'low_priority'=> '.icon-low_priority:before {content: "\e16d";}',
424
- 'loyalty'=> '.icon-loyalty:before {content: "\e89a";}',
425
- 'mail_outline'=> '.icon-mail_outline:before {content: "\e0e1";}',
426
- 'map'=> '.icon-map:before {content: "\e55b";}',
427
- 'markunread_mailbox'=> '.icon-markunread_mailbox:before {content: "\e89b";}',
428
- 'memory'=> '.icon-memory:before {content: "\e322";}',
429
- 'menu'=> '.icon-menu:before {content: "\e5d2";}',
430
- 'message'=> '.icon-message:before {content: "\e0c9";}',
431
- 'mic'=> '.icon-mic:before {content: "\e029";}',
432
- 'mic_none'=> '.icon-mic_none:before {content: "\e02a";}',
433
- 'mic_off'=> '.icon-mic_off:before {content: "\e02b";}',
434
- 'mms'=> '.icon-mms:before {content: "\e618";}',
435
- 'mode_comment'=> '.icon-mode_comment:before {content: "\e253";}',
436
- 'monetization_on'=> '.icon-monetization_on:before {content: "\e263";}',
437
- 'money_off'=> '.icon-money_off:before {content: "\e25c";}',
438
- 'monochrome_photos'=> '.icon-monochrome_photos:before {content: "\e403";}',
439
- 'mood_bad'=> '.icon-mood_bad:before {content: "\e7f3";}',
440
- 'more'=> '.icon-more:before {content: "\e619";}',
441
- 'more_horiz'=> '.icon-more_horiz:before {content: "\e5d3";}',
442
- 'more_vert'=> '.icon-more_vert:before {content: "\e5d4";}',
443
- 'motorcycle'=> '.icon-motorcycle:before {content: "\e91b";}',
444
- 'mouse'=> '.icon-mouse:before {content: "\e323";}',
445
- 'move_to_inbox'=> '.icon-move_to_inbox:before {content: "\e168";}',
446
- 'movie_creation'=> '.icon-movie_creation:before {content: "\e404";}',
447
- 'movie_filter'=> '.icon-movie_filter:before {content: "\e43a";}',
448
- 'multiline_chart'=> '.icon-multiline_chart:before {content: "\e6df";}',
449
- 'music_note'=> '.icon-music_note:before {content: "\e405";}',
450
- 'music_video'=> '.icon-music_video:before {content: "\e063";}',
451
- 'nature'=> '.icon-nature:before {content: "\e406";}',
452
- 'nature_people'=> '.icon-nature_people:before {content: "\e407";}',
453
- 'navigation'=> '.icon-navigation:before {content: "\e55d";}',
454
- 'near_me'=> '.icon-near_me:before {content: "\e569";}',
455
- 'network_cell'=> '.icon-network_cell:before {content: "\e1b9";}',
456
- 'network_check'=> '.icon-network_check:before {content: "\e640";}',
457
- 'new_releases'=> '.icon-new_releases:before {content: "\e031";}',
458
- 'next_week'=> '.icon-next_week:before {content: "\e16a";}',
459
- 'nfc'=> '.icon-nfc:before {content: "\e1bb";}',
460
- 'no_encryption'=> '.icon-no_encryption:before {content: "\e641";}',
461
- 'note'=> '.icon-note:before {content: "\e06f";}',
462
- 'note_add'=> '.icon-note_add:before {content: "\e89c";}',
463
- 'notifications'=> '.icon-notifications:before {content: "\e7f4";}',
464
- 'notifications_active'=> '.icon-notifications_active:before {content: "\e7f7";}',
465
- 'notifications_none'=> '.icon-notifications_none:before {content: "\e7f5";}',
466
- 'notifications_off'=> '.icon-notifications_off:before {content: "\e7f6";}',
467
- 'notifications_paused'=> '.icon-notifications_paused:before {content: "\e7f8";}',
468
- 'offline_pin'=> '.icon-offline_pin:before {content: "\e90a";}',
469
- 'ondemand_video'=> '.icon-ondemand_video:before {content: "\e63a";}',
470
- 'opacity'=> '.icon-opacity:before {content: "\e91c";}',
471
- 'open_in_browser'=> '.icon-open_in_browser:before {content: "\e89d";}',
472
- 'open_with'=> '.icon-open_with:before {content: "\e89f";}',
473
- 'pages'=> '.icon-pages:before {content: "\e7f9";}',
474
- 'pageview'=> '.icon-pageview:before {content: "\e8a0";}',
475
- 'pan_tool'=> '.icon-pan_tool:before {content: "\e925";}',
476
- 'panorama'=> '.icon-panorama:before {content: "\e40b";}',
477
- 'radio_button_unchecked'=> '.icon-radio_button_unchecked:before {content: "\e836";}',
478
- 'panorama_horizontal'=> '.icon-panorama_horizontal:before {content: "\e40d";}',
479
- 'panorama_vertical'=> '.icon-panorama_vertical:before {content: "\e40e";}',
480
- 'panorama_wide_angle'=> '.icon-panorama_wide_angle:before {content: "\e40f";}',
481
- 'party_mode'=> '.icon-party_mode:before {content: "\e7fa";}',
482
- 'pause'=> '.icon-pause:before {content: "\e034";}',
483
- 'pause_circle_filled'=> '.icon-pause_circle_filled:before {content: "\e035";}',
484
- 'pause_circle_outline'=> '.icon-pause_circle_outline:before {content: "\e036";}',
485
- 'people_outline'=> '.icon-people_outline:before {content: "\e7fc";}',
486
- 'perm_camera_mic'=> '.icon-perm_camera_mic:before {content: "\e8a2";}',
487
- 'perm_contact_calendar'=> '.icon-perm_contact_calendar:before {content: "\e8a3";}',
488
- 'perm_device_information'=> '.icon-perm_device_information:before {content: "\e8a5";}',
489
- 'person_outline'=> '.icon-person_outline:before {content: "\e7ff";}',
490
- 'perm_media'=> '.icon-perm_media:before {content: "\e8a7";}',
491
- 'person'=> '.icon-person:before {content: "\e7fd";}',
492
- 'person_add'=> '.icon-person_add:before {content: "\e7fe";}',
493
- 'person_pin'=> '.icon-person_pin:before {content: "\e55a";}',
494
- 'person_pin_circle'=> '.icon-person_pin_circle:before {content: "\e56a";}',
495
- 'personal_video'=> '.icon-personal_video:before {content: "\e63b";}',
496
- 'pets'=> '.icon-pets:before {content: "\e91d";}',
497
- 'phone_android'=> '.icon-phone_android:before {content: "\e324";}',
498
- 'phone_bluetooth_speaker'=> '.icon-phone_bluetooth_speaker:before {content: "\e61b";}',
499
- 'phone_forwarded'=> '.icon-phone_forwarded:before {content: "\e61c";}',
500
- 'phone_in_talk'=> '.icon-phone_in_talk:before {content: "\e61d";}',
501
- 'phone_iphone'=> '.icon-phone_iphone:before {content: "\e325";}',
502
- 'phone_locked'=> '.icon-phone_locked:before {content: "\e61e";}',
503
- 'phone_missed'=> '.icon-phone_missed:before {content: "\e61f";}',
504
- 'phone_paused'=> '.icon-phone_paused:before {content: "\e620";}',
505
- 'phonelink_erase'=> '.icon-phonelink_erase:before {content: "\e0db";}',
506
- 'phonelink_lock'=> '.icon-phonelink_lock:before {content: "\e0dc";}',
507
- 'phonelink_off'=> '.icon-phonelink_off:before {content: "\e327";}',
508
- 'phonelink_ring'=> '.icon-phonelink_ring:before {content: "\e0dd";}',
509
- 'phonelink_setup'=> '.icon-phonelink_setup:before {content: "\e0de";}',
510
- 'photo_album'=> '.icon-photo_album:before {content: "\e411";}',
511
- 'photo_size_select_actual'=> '.icon-photo_size_select_actual:before {content: "\e432";}',
512
- 'picture_in_picture'=> '.icon-picture_in_picture:before {content: "\e8aa";}',
513
- 'picture_in_picture_alt'=> '.icon-picture_in_picture_alt:before {content: "\e911";}',
514
- 'pie_chart'=> '.icon-pie_chart:before {content: "\e6c4";}',
515
- 'pie_chart_outlined'=> '.icon-pie_chart_outlined:before {content: "\e6c5";}',
516
- 'pin_drop'=> '.icon-pin_drop:before {content: "\e55e";}',
517
- 'play_arrow'=> '.icon-play_arrow:before {content: "\e037";}',
518
- 'play_circle_filled'=> '.icon-play_circle_filled:before {content: "\e038";}',
519
- 'play_circle_outline'=> '.icon-play_circle_outline:before {content: "\e039";}',
520
- 'play_for_work'=> '.icon-play_for_work:before {content: "\e906";}',
521
- 'playlist_add'=> '.icon-playlist_add:before {content: "\e03b";}',
522
- 'playlist_add_check'=> '.icon-playlist_add_check:before {content: "\e065";}',
523
- 'playlist_play'=> '.icon-playlist_play:before {content: "\e05f";}',
524
- 'polymer'=> '.icon-polymer:before {content: "\e8ab";}',
525
- 'pool'=> '.icon-pool:before {content: "\eb48";}',
526
- 'portable_wifi_off'=> '.icon-portable_wifi_off:before {content: "\e0ce";}',
527
- 'portrait'=> '.icon-portrait:before {content: "\e416";}',
528
- 'power'=> '.icon-power:before {content: "\e63c";}',
529
- 'power_input'=> '.icon-power_input:before {content: "\e336";}',
530
- 'power_settings_new'=> '.icon-power_settings_new:before {content: "\e8ac";}',
531
- 'pregnant_woman'=> '.icon-pregnant_woman:before {content: "\e91e";}',
532
- 'present_to_all'=> '.icon-present_to_all:before {content: "\e0df";}',
533
- 'priority_high'=> '.icon-priority_high:before {content: "\e645";}',
534
- 'public'=> '.icon-public:before {content: "\e80b";}',
535
- 'publish'=> '.icon-publish:before {content: "\e255";}',
536
- 'queue_music'=> '.icon-queue_music:before {content: "\e03d";}',
537
- 'queue_play_next'=> '.icon-queue_play_next:before {content: "\e066";}',
538
- 'radio'=> '.icon-radio:before {content: "\e03e";}',
539
- 'radio_button_checked'=> '.icon-radio_button_checked:before {content: "\e837";}',
540
- 'rate_review'=> '.icon-rate_review:before {content: "\e560";}',
541
- 'receipt'=> '.icon-receipt:before {content: "\e8b0";}',
542
- 'recent_actors'=> '.icon-recent_actors:before {content: "\e03f";}',
543
- 'record_voice_over'=> '.icon-record_voice_over:before {content: "\e91f";}',
544
- 'redo'=> '.icon-redo:before {content: "\e15a";}',
545
- 'refresh'=> '.icon-refresh:before {content: "\e5d5";}',
546
- 'remove'=> '.icon-remove:before {content: "\e15b";}',
547
- 'remove_circle_outline'=> '.icon-remove_circle_outline:before {content: "\e15d";}',
548
- 'remove_from_queue'=> '.icon-remove_from_queue:before {content: "\e067";}',
549
- 'visibility'=> '.icon-visibility:before {content: "\e8f4";}',
550
- 'remove_shopping_cart'=> '.icon-remove_shopping_cart:before {content: "\e928";}',
551
- 'reorder'=> '.icon-reorder:before {content: "\e8fe";}',
552
- 'repeat'=> '.icon-repeat:before {content: "\e040";}',
553
- 'replay'=> '.icon-replay:before {content: "\e042";}',
554
- 'replay_30'=> '.icon-replay_30:before {content: "\e05a";}',
555
- 'reply'=> '.icon-reply:before {content: "\e15e";}',
556
- 'reply_all'=> '.icon-reply_all:before {content: "\e15f";}',
557
- 'report'=> '.icon-report:before {content: "\e160";}',
558
- 'warning'=> '.icon-warning:before {content: "\e002";}',
559
- 'restaurant'=> '.icon-restaurant:before {content: "\e56c";}',
560
- 'restore_page'=> '.icon-restore_page:before {content: "\e929";}',
561
- 'ring_volume'=> '.icon-ring_volume:before {content: "\e0d1";}',
562
- 'room_service'=> '.icon-room_service:before {content: "\eb49";}',
563
- 'rotate_90_degrees_ccw'=> '.icon-rotate_90_degrees_ccw:before {content: "\e418";}',
564
- 'rotate_left'=> '.icon-rotate_left:before {content: "\e419";}',
565
- 'rotate_right'=> '.icon-rotate_right:before {content: "\e41a";}',
566
- 'router'=> '.icon-router:before {content: "\e328";}',
567
- 'rowing'=> '.icon-rowing:before {content: "\e921";}',
568
- 'rss_feed'=> '.icon-rss_feed:before {content: "\e0e5";}',
569
- 'rv_hookup'=> '.icon-rv_hookup:before {content: "\e642";}',
570
- 'satellite'=> '.icon-satellite:before {content: "\e562";}',
571
- 'save'=> '.icon-save:before {content: "\e161";}',
572
- 'scanner'=> '.icon-scanner:before {content: "\e329";}',
573
- 'school'=> '.icon-school:before {content: "\e80c";}',
574
- 'screen_lock_landscape'=> '.icon-screen_lock_landscape:before {content: "\e1be";}',
575
- 'screen_lock_portrait'=> '.icon-screen_lock_portrait:before {content: "\e1bf";}',
576
- 'screen_share'=> '.icon-screen_share:before {content: "\e0e2";}',
577
- 'search'=> '.icon-search:before {content: "\e8b6";}',
578
- 'security'=> '.icon-security:before {content: "\e32a";}',
579
- 'select_all'=> '.icon-select_all:before {content: "\e162";}',
580
- 'send'=> '.icon-send:before {content: "\e163";}',
581
- 'sentiment_dissatisfied'=> '.icon-sentiment_dissatisfied:before {content: "\e811";}',
582
- 'sentiment_neutral'=> '.icon-sentiment_neutral:before {content: "\e812";}',
583
- 'sentiment_satisfied'=> '.icon-sentiment_satisfied:before {content: "\e813";}',
584
- 'sentiment_very_dissatisfied'=> '.icon-sentiment_very_dissatisfied:before {content: "\e814";}',
585
- 'sentiment_very_satisfied'=> '.icon-sentiment_very_satisfied:before {content: "\e815";}',
586
- 'settings'=> '.icon-settings:before {content: "\e8b8";}',
587
- 'settings_applications'=> '.icon-settings_applications:before {content: "\e8b9";}',
588
- 'settings_backup_restore'=> '.icon-settings_backup_restore:before {content: "\e8ba";}',
589
- 'settings_brightness'=> '.icon-settings_brightness:before {content: "\e8bd";}',
590
- 'settings_cell'=> '.icon-settings_cell:before {content: "\e8bc";}',
591
- 'settings_ethernet'=> '.icon-settings_ethernet:before {content: "\e8be";}',
592
- 'settings_input_antenna'=> '.icon-settings_input_antenna:before {content: "\e8bf";}',
593
- 'settings_input_composite'=> '.icon-settings_input_composite:before {content: "\e8c1";}',
594
- 'settings_input_hdmi'=> '.icon-settings_input_hdmi:before {content: "\e8c2";}',
595
- 'settings_input_svideo'=> '.icon-settings_input_svideo:before {content: "\e8c3";}',
596
- 'settings_overscan'=> '.icon-settings_overscan:before {content: "\e8c4";}',
597
- 'settings_phone'=> '.icon-settings_phone:before {content: "\e8c5";}',
598
- 'settings_power'=> '.icon-settings_power:before {content: "\e8c6";}',
599
- 'settings_remote'=> '.icon-settings_remote:before {content: "\e8c7";}',
600
- 'settings_system_daydream'=> '.icon-settings_system_daydream:before {content: "\e8c8";}',
601
- 'share'=> '.icon-share:before {content: "\e80d";}',
602
- 'shop'=> '.icon-shop:before {content: "\e8c9";}',
603
- 'shop_two'=> '.icon-shop_two:before {content: "\e8ca";}',
604
- 'shopping_basket'=> '.icon-shopping_basket:before {content: "\e8cb";}',
605
- 'short_text'=> '.icon-short_text:before {content: "\e261";}',
606
- 'show_chart'=> '.icon-show_chart:before {content: "\e6e1";}',
607
- 'shuffle'=> '.icon-shuffle:before {content: "\e043";}',
608
- 'signal_cellular_4_bar'=> '.icon-signal_cellular_4_bar:before {content: "\e1c8";}',
609
- 'signal_wifi_4_bar'=> '.icon-signal_wifi_4_bar:before {content: "\e1d8";}',
610
- 'skip_next'=> '.icon-skip_next:before {content: "\e044";}',
611
- 'skip_previous'=> '.icon-skip_previous:before {content: "\e045";}',
612
- 'slideshow'=> '.icon-slideshow:before {content: "\e41b";}',
613
- 'slow_motion_video'=> '.icon-slow_motion_video:before {content: "\e068";}',
614
- 'stay_primary_portrait'=> '.icon-stay_primary_portrait:before {content: "\e0d6";}',
615
- 'smoke_free'=> '.icon-smoke_free:before {content: "\eb4a";}',
616
- 'smoking_rooms'=> '.icon-smoking_rooms:before {content: "\eb4b";}',
617
- 'textsms'=> '.icon-textsms:before {content: "\e0d8";}',
618
- 'snooze'=> '.icon-snooze:before {content: "\e046";}',
619
- 'sort'=> '.icon-sort:before {content: "\e164";}',
620
- 'sort_by_alpha'=> '.icon-sort_by_alpha:before {content: "\e053";}',
621
- 'spa'=> '.icon-spa:before {content: "\eb4c";}',
622
- 'space_bar'=> '.icon-space_bar:before {content: "\e256";}',
623
- 'speaker'=> '.icon-speaker:before {content: "\e32d";}',
624
- 'speaker_group'=> '.icon-speaker_group:before {content: "\e32e";}',
625
- 'speaker_notes'=> '.icon-speaker_notes:before {content: "\e8cd";}',
626
- 'speaker_phone'=> '.icon-speaker_phone:before {content: "\e0d2";}',
627
- 'spellcheck'=> '.icon-spellcheck:before {content: "\e8ce";}',
628
- 'star_border'=> '.icon-star_border:before {content: "\e83a";}',
629
- 'star_half'=> '.icon-star_half:before {content: "\e839";}',
630
- 'stars'=> '.icon-stars:before {content: "\e8d0";}',
631
- 'stay_primary_landscape'=> '.icon-stay_primary_landscape:before {content: "\e0d5";}',
632
- 'stop'=> '.icon-stop:before {content: "\e047";}',
633
- 'stop_screen_share'=> '.icon-stop_screen_share:before {content: "\e0e3";}',
634
- 'storage'=> '.icon-storage:before {content: "\e1db";}',
635
- 'store_mall_directory'=> '.icon-store_mall_directory:before {content: "\e563";}',
636
- 'straighten'=> '.icon-straighten:before {content: "\e41c";}',
637
- 'streetview'=> '.icon-streetview:before {content: "\e56e";}',
638
- 'format_strikethrough_s'=> '.icon-format_strikethrough_s:before {content: "\e257";}',
639
- 'style'=> '.icon-style:before {content: "\e41d";}',
640
- 'subdirectory_arrow_left'=> '.icon-subdirectory_arrow_left:before {content: "\e5d9";}',
641
- 'subdirectory_arrow_right'=> '.icon-subdirectory_arrow_right:before {content: "\e5da";}',
642
- 'subject'=> '.icon-subject:before {content: "\e8d2";}',
643
- 'subscriptions'=> '.icon-subscriptions:before {content: "\e064";}',
644
- 'subtitles'=> '.icon-subtitles:before {content: "\e048";}',
645
- 'subway'=> '.icon-subway:before {content: "\e56f";}',
646
- 'supervisor_account'=> '.icon-supervisor_account:before {content: "\e8d3";}',
647
- 'surround_sound'=> '.icon-surround_sound:before {content: "\e049";}',
648
- 'swap_calls'=> '.icon-swap_calls:before {content: "\e0d7";}',
649
- 'swap_horiz'=> '.icon-swap_horiz:before {content: "\e8d4";}',
650
- 'swap_vert'=> '.icon-swap_vert:before {content: "\e8d5";}',
651
- 'swap_vertical_circle'=> '.icon-swap_vertical_circle:before {content: "\e8d6";}',
652
- 'switch_camera'=> '.icon-switch_camera:before {content: "\e41e";}',
653
- 'switch_video'=> '.icon-switch_video:before {content: "\e41f";}',
654
- 'sync_problem'=> '.icon-sync_problem:before {content: "\e629";}',
655
- 'system_update'=> '.icon-system_update:before {content: "\e62a";}',
656
- 'system_update_alt'=> '.icon-system_update_alt:before {content: "\e8d7";}',
657
- 'tab'=> '.icon-tab:before {content: "\e8d8";}',
658
- 'tablet'=> '.icon-tablet:before {content: "\e32f";}',
659
- 'tablet_android'=> '.icon-tablet_android:before {content: "\e330";}',
660
- 'tablet_mac'=> '.icon-tablet_mac:before {content: "\e331";}',
661
- 'text_fields'=> '.icon-text_fields:before {content: "\e262";}',
662
- 'text_format'=> '.icon-text_format:before {content: "\e165";}',
663
- 'texture'=> '.icon-texture:before {content: "\e421";}',
664
- 'thumb_down'=> '.icon-thumb_down:before {content: "\e8db";}',
665
- 'thumb_up'=> '.icon-thumb_up:before {content: "\e8dc";}',
666
- 'thumb_up_down'=> '.icon-thumb_up_down:before {content: "\e8dd";}',
667
- 'timelapse'=> '.icon-timelapse:before {content: "\e422";}',
668
- 'timeline'=> '.icon-timeline:before {content: "\e922";}',
669
- 'timer'=> '.icon-timer:before {content: "\e425";}',
670
- 'timer_off'=> '.icon-timer_off:before {content: "\e426";}',
671
- 'title'=> '.icon-title:before {content: "\e264";}',
672
- 'toc'=> '.icon-toc:before {content: "\e8de";}',
673
- 'today'=> '.icon-today:before {content: "\e8df";}',
674
- 'toll'=> '.icon-toll:before {content: "\e8e0";}',
675
- 'tonality'=> '.icon-tonality:before {content: "\e427";}',
676
- 'touch_app'=> '.icon-touch_app:before {content: "\e913";}',
677
- 'toys'=> '.icon-toys:before {content: "\e332";}',
678
- 'track'=> '.icon-track:before {content: "\e8e1";}',
679
- 'traffic'=> '.icon-traffic:before {content: "\e565";}',
680
- 'train'=> '.icon-train:before {content: "\e570";}',
681
- 'tram'=> '.icon-tram:before {content: "\e571";}',
682
- 'transfer_within_a_station'=> '.icon-transfer_within_a_station:before {content: "\e572";}',
683
- 'transform'=> '.icon-transform:before {content: "\e428";}',
684
- 'translate'=> '.icon-translate:before {content: "\e8e2";}',
685
- 'trending_down'=> '.icon-trending_down:before {content: "\e8e3";}',
686
- 'trending_flat'=> '.icon-trending_flat:before {content: "\e8e4";}',
687
- 'trending_up'=> '.icon-trending_up:before {content: "\e8e5";}',
688
- 'tune'=> '.icon-tune:before {content: "\e429";}',
689
- 'tv'=> '.icon-tv:before {content: "\e333";}',
690
- 'unarchive'=> '.icon-unarchive:before {content: "\e169";}',
691
- 'undo'=> '.icon-undo:before {content: "\e166";}',
692
- 'unfold_less'=> '.icon-unfold_less:before {content: "\e5d6";}',
693
- 'unfold_more'=> '.icon-unfold_more:before {content: "\e5d7";}',
694
- 'update'=> '.icon-update:before {content: "\e923";}',
695
- 'usb'=> '.icon-usb:before {content: "\e1e0";}',
696
- 'verified_user'=> '.icon-verified_user:before {content: "\e8e8";}',
697
- 'vertical_align_center'=> '.icon-vertical_align_center:before {content: "\e259";}',
698
- 'vertical_align_top'=> '.icon-vertical_align_top:before {content: "\e25a";}',
699
- 'vibration'=> '.icon-vibration:before {content: "\e52d";}',
700
- 'video_call'=> '.icon-video_call:before {content: "\e070";}',
701
- 'video_label'=> '.icon-video_label:before {content: "\e071";}',
702
- 'video_library'=> '.icon-video_library:before {content: "\e04a";}',
703
- 'videocam'=> '.icon-videocam:before {content: "\e04b";}',
704
- 'videocam_off'=> '.icon-videocam_off:before {content: "\e04c";}',
705
- 'videogame_asset'=> '.icon-videogame_asset:before {content: "\e338";}',
706
- 'view_agenda'=> '.icon-view_agenda:before {content: "\e8e9";}',
707
- 'view_array'=> '.icon-view_array:before {content: "\e8ea";}',
708
- 'view_carousel'=> '.icon-view_carousel:before {content: "\e8eb";}',
709
- 'view_column'=> '.icon-view_column:before {content: "\e8ec";}',
710
- 'view_comfy'=> '.icon-view_comfy:before {content: "\e42a";}',
711
- 'view_compact'=> '.icon-view_compact:before {content: "\e42b";}',
712
- 'view_day'=> '.icon-view_day:before {content: "\e8ed";}',
713
- 'view_headline'=> '.icon-view_headline:before {content: "\e8ee";}',
714
- 'view_list'=> '.icon-view_list:before {content: "\e8ef";}',
715
- 'view_module'=> '.icon-view_module:before {content: "\e8f0";}',
716
- 'view_quilt'=> '.icon-view_quilt:before {content: "\e8f1";}',
717
- 'view_stream'=> '.icon-view_stream:before {content: "\e8f2";}',
718
- 'view_week'=> '.icon-view_week:before {content: "\e8f3";}',
719
- 'vignette'=> '.icon-vignette:before {content: "\e435";}',
720
- 'visibility_off'=> '.icon-visibility_off:before {content: "\e8f5";}',
721
- 'voice_chat'=> '.icon-voice_chat:before {content: "\e62e";}',
722
- 'voicemail'=> '.icon-voicemail:before {content: "\e0d9";}',
723
- 'vpn_key'=> '.icon-vpn_key:before {content: "\e0da";}',
724
- 'vpn_lock'=> '.icon-vpn_lock:before {content: "\e62f";}',
725
- 'wallpaper'=> '.icon-wallpaper:before {content: "\e1bc";}',
726
- 'watch'=> '.icon-watch:before {content: "\e334";}',
727
- 'watch_later'=> '.icon-watch_later:before {content: "\e924";}',
728
- 'wb_iridescent'=> '.icon-wb_iridescent:before {content: "\e436";}',
729
- 'wb_sunny'=> '.icon-wb_sunny:before {content: "\e430";}',
730
- 'wc'=> '.icon-wc:before {content: "\e63d";}',
731
- 'web'=> '.icon-web:before {content: "\e051";}',
732
- 'web_asset'=> '.icon-web_asset:before {content: "\e069";}',
733
- 'weekend'=> '.icon-weekend:before {content: "\e16b";}',
734
- 'whatshot'=> '.icon-whatshot:before {content: "\e80e";}',
735
- 'widgets'=> '.icon-widgets:before {content: "\e1bd";}',
736
- 'wifi'=> '.icon-wifi:before {content: "\e63e";}',
737
- 'work'=> '.icon-work:before {content: "\e8f9";}',
738
- 'wrap_text'=> '.icon-wrap_text:before {content: "\e25b";}',
739
- 'youtube_searched_for'=> '.icon-youtube_searched_for:before {content: "\e8fa";}',
740
- 'zoom_in'=> '.icon-zoom_in:before {content: "\e8ff";}',
741
- 'zoom_out'=> '.icon-zoom_out:before {content: "\e901";}',
742
- 'zoom_out_map'=> '.icon-zoom_out_map:before {content: "\e56b";}',
743
- 'apple'=> '.icon-apple:before {content: "\e902";}',
744
- 'bitcoin'=> '.icon-bitcoin:before {content: "\e907";}',
745
- 'buffer'=> '.icon-buffer:before {content: "\e910";}',
746
- 'digg'=> '.icon-digg:before {content: "\e919";}',
747
- 'dribbble'=> '.icon-dribbble:before {content: "\e920";}',
748
- 'dropbox'=> '.icon-dropbox:before {content: "\e92a";}',
749
- 'evernote'=> '.icon-evernote:before {content: "\e92c";}',
750
- 'facebook'=> '.icon-facebook:before {content: "\e92d";}',
751
- 'feedly'=> '.icon-feedly:before {content: "\e92e";}',
752
- 'github'=> '.icon-github:before {content: "\e92f";}',
753
- 'gmail'=> '.icon-gmail:before {content: "\e930";}',
754
- 'gplus'=> '.icon-gplus:before {content: "\e931";}',
755
- 'instagram'=> '.icon-instagram:before {content: "\e932";}',
756
- 'sharing-line'=> '.icon-sharing-line:before {content: "\e933";}',
757
- 'linkedin'=> '.icon-linkedin:before {content: "\e934";}',
758
- 'messanger'=> '.icon-messanger:before {content: "\e935";}',
759
- 'odnoklassniki'=> '.icon-odnoklassniki:before {content: "\e936";}',
760
- 'pinterest'=> '.icon-pinterest:before {content: "\e937";}',
761
- 'reddit'=> '.icon-reddit:before {content: "\e938";}',
762
- 'shopify'=> '.icon-shopify:before {content: "\e93a";}',
763
- 'weibo'=> '.icon-weibo:before {content: "\e93a";}',
764
- 'skype'=> '.icon-skype:before {content: "\e93b";}',
765
- 'slack'=> '.icon-slack:before {content: "\e93c";}',
766
- 'soundcloud'=> '.icon-soundcloud:before {content: "\e93d";}',
767
- 'stumbleupon'=> '.icon-stumbleupon:before {content: "\e93e";}',
768
- 'telegram'=> '.icon-telegram:before {content: "\e93f";}',
769
- 'tumblr'=> '.icon-tumblr:before {content: "\e940";}',
770
- 'twitch'=> '.icon-twitch:before {content: "\e941";}',
771
- 'twitter'=> '.icon-twitter:before {content: "\e942";}',
772
- 'viber'=> '.icon-viber:before {content: "\e943";}',
773
- 'vk'=> '.icon-vk:before {content: "\e944";}',
774
- 'wechat'=> '.icon-wechat:before {content: "\e945";}',
775
- 'whatsapp'=> '.icon-whatsapp:before {content: "\e946";}',
776
- 'youtube'=> '.icon-youtube:before {content: "\e947";}',
777
- 'hatenabookmark'=> '.icon-hatenabookmark:before {content: "\e948";}',
778
- 'pocket'=> '.icon-pocket:before {content: "\e949";}',
779
- );
780
-
781
  ?>
1
+ <?php
2
+ return array( 'widgets' => '.icon-widgets:before { content: "\e1bd";}',
3
+ 'search' => '.icon-search:after{ content: "\e8b6"; }',
4
+ 'shopping-cart' => '.icon-shopping-cart:after {content: "\e8cc";}',
5
+ '3d_rotation' => '.icon-3d_rotation:before {content: "\e84d";}',
6
+ 'ac_unit' => '.icon-ac_unit:before {content: "\eb3b";}',
7
+ 'alarm' => '.icon-alarm:before {content: "\e855";}',
8
+ 'access_alarms' => '.icon-access_alarms:before {content: "\e191";}',
9
+ 'schedule' => '.icon-schedule:before {content: "\e8b5";}',
10
+ 'accessibility' => '.icon-accessibility:before {content: "\e84e";}',
11
+ 'accessible' => '.icon-accessible:before {content: "\e914";}',
12
+ 'account_balance' => '.icon-account_balance:before {content: "\e84f";}',
13
+ 'account_balance_wallet' => '.icon-account_balance_wallet:before {content: "\e850";}',
14
+ 'account_box' => '.icon-account_box:before {content: "\e851";}',
15
+ 'account_circle' => '.icon-account_circle:before {content: "\e853";}',
16
+ 'add' => '.icon-add:before {content: "\e145";}',
17
+ 'add_a_photo' => '.icon-add_a_photo:before {content: "\e439";}',
18
+ 'alarm_add' => '.icon-alarm_add:before {content: "\e856";}',
19
+ 'add_alert' => '.icon-add_alert:before {content: "\e003";}',
20
+ 'add_box' => '.icon-add_box:before {content: "\e146";}',
21
+ 'add_circle' => '.icon-add_circle:before {content: "\e147";}',
22
+ 'control_point ' => '.icon-control_point:before {content: "\e3ba";}',
23
+ 'add_location ' => '.icon-add_location:before {content: "\e567";}',
24
+ 'add_shopping_cart ' => '.icon-add_shopping_cart:before {content: "\e854";}',
25
+ 'queue ' => '.icon-queue:before {content: "\e03c";}',
26
+ 'add_to_queue ' => '.icon-add_to_queue:before {content: "\e05c";}',
27
+ 'adjust ' => '.icon-adjust:before {content: "\e39e";}',
28
+ 'flight ' => '.icon-flight:before {content: "\e539";}',
29
+ 'airplay ' => '.icon-airplay:before {content: "\e055";}',
30
+ 'airport_shuttle ' => '.icon-airport_shuttle:before {content: "\eb3c";}',
31
+ 'alarm_off ' => '.icon-alarm_off:before {content: "\e857";}',
32
+ 'alarm_on ' => '.icon-alarm_on:before {content: "\e858";}',
33
+ 'album ' => '.icon-album:before {content: "\e019";}',
34
+ 'all_inclusive ' => '.icon-all_inclusive:before {content: "\eb3d";}',
35
+ 'all_out' => '.icon-all_out:before {content: "\e90b";}',
36
+ 'android' => '.icon-android:before {content: "\e859";}',
37
+ 'announcement' => '.icon-announcement:before {content: "\e85a";}',
38
+ 'apps' => '.icon-apps:before {content: "\e5c3";}',
39
+ 'archive' => '.icon-archive:before {content: "\e149";}',
40
+ 'arrow_back' => '.icon-arrow_back:before {content: "\e5c4";}',
41
+ 'arrow_downward' => '.icon-arrow_downward:before {content: "\e5db";}',
42
+ 'arrow_drop_down' => '.icon-arrow_drop_down:before {content: "\e5c5";}',
43
+ 'arrow_drop_down_circle' => '.icon-arrow_drop_down_circle:before {content: "\e5c6";}',
44
+ 'arrow_drop_up' => '.icon-arrow_drop_up:before {content: "\e5c7";}',
45
+ 'arrow_forward' => '.icon-arrow_forward:before {content: "\e5c8";}',
46
+ 'arrow_upward' => '.icon-arrow_upward:before {content: "\e5d8";}',
47
+ 'art_track' => '.icon-art_track:before {content: "\e060";}',
48
+ 'aspect_ratio' => '.icon-aspect_ratio:before {content: "\e85b";}',
49
+ 'poll' => '.icon-poll:before {content: "\e801";}',
50
+ 'assignment' => '.icon-assignment:before {content: "\e85d";}',
51
+ 'assignment_ind' => '.icon-assignment_ind:before {content: "\e85e";}',
52
+ 'assignment_late' => '.icon-assignment_late:before {content: "\e85f";}',
53
+ 'assignment_return' => '.icon-assignment_return:before {content: "\e860";}',
54
+ 'assignment_returned' => '.icon-assignment_returned:before {content: "\e861";}',
55
+ 'assignment_turned_in' => '.icon-assignment_turned_in:before {content: "\e862";}',
56
+ 'assistant' => '.icon-assistant:before {content: "\e39f";}',
57
+ 'flag' => '.icon-flag:before {content: "\e153";}',
58
+ 'attach_file' => '.icon-attach_file:before {content: "\e226";}',
59
+ 'attach_money' => '.icon-attach_money:before {content: "\e227";}',
60
+ 'attachment' => '.icon-attachment:before {content: "\e2bc";}',
61
+ 'audiotrack' => '.icon-audiotrack:before {content: "\e3a1";}',
62
+ 'autorenew' => '.icon-autorenew:before {content: "\e863";}',
63
+ 'av_timer' => '.icon-av_timer:before {content: "\e01b";}',
64
+ 'backspace' => '.icon-backspace:before {content: "\e14a";}',
65
+ 'cloud_upload' => '.icon-cloud_upload:before {content: "\e2c3";}',
66
+ 'battery_alert' => '.icon-battery_alert:before {content: "\e19c";}',
67
+ 'battery_charging_full' => '.icon-battery_charging_full:before {content: "\e1a3";}',
68
+ 'battery_std' => '.icon-battery_std:before {content: "\e1a5";}',
69
+ 'battery_unknown' => '.icon-battery_unknown:before {content: "\e1a6";}',
70
+ 'beach_access' => '.icon-beach_access:before {content: "\eb3e";}',
71
+ 'beenhere' => '.icon-beenhere:before {content: "\e52d";}',
72
+ 'block' => '.icon-block:before {content: "\e14b";}',
73
+ 'bluetooth' => '.icon-bluetooth:before {content: "\e1a7";}',
74
+ 'blur_circular' => '.icon-blur_circular:before {content: "\e3a2";}',
75
+ 'blur_linear' => '.icon-blur_linear:before {content: "\e3a3";}',
76
+ 'blur_on' => '.icon-blur_on:before {content: "\e3a5";}',
77
+ 'class' => '.icon-class:before {content: "\e86e";}',
78
+ 'turned_in' => '.icon-turned_in:before {content: "\e8e6";}',
79
+ 'turned_in_not' => '.icon-turned_in_not:before {content: "\e8e7";}',
80
+ 'border_color' => '.icon-border_color:before {content: "\e22b";}',
81
+ 'branding_watermark' => '.icon-branding_watermark:before {content: "\e06b";}',
82
+ 'brightness_1' => '.icon-brightness_1:before {content: "\e3a6";}',
83
+ 'brightness_2' => '.icon-brightness_2:before {content: "\e3a7";}',
84
+ 'brightness_3' => '.icon-brightness_3:before {content: "\e3a8";}',
85
+ 'brightness_4' => '.icon-brightness_4:before {content: "\e3a9";}',
86
+ 'brightness_low' => '.icon-brightness_low:before {content: "\e1ad";}',
87
+ 'brightness_high' => '.icon-brightness_high:before {content: "\e1ac";}',
88
+ 'brightness_auto' => '.icon-brightness_auto:before {content: "\e1ab";}',
89
+ 'broken_image' => '.icon-broken_image:before {content: "\e3ad";}',
90
+ 'brush' => '.icon-brush:before {content: "\e3ae";}',
91
+ 'bubble_chart' => '.icon-bubble_chart:before {content: "\e6dd";}',
92
+ 'bug_report' => '.icon-bug_report:before {content: "\e868";}',
93
+ 'build' => '.icon-build:before {content: "\e869";}',
94
+ 'burst_mode' => '.icon-burst_mode:before {content: "\e43c";}',
95
+ 'domain' => '.icon-domain:before {content: "\e7ee";}',
96
+ 'business_center' => '.icon-business_center:before {content: "\eb3f";}',
97
+ 'cached' => '.icon-cached:before {content: "\e86a";}',
98
+ 'cake' => '.icon-cake:before {content: "\e7e9";}',
99
+ 'phone' => '.icon-phone:before {content: "\e0cd";}',
100
+ 'call_end' => '.icon-call_end:before {content: "\e0b1";}',
101
+ 'call_made' => '.icon-call_made:before {content: "\e0b2";}',
102
+ 'merge_type' => '.icon-merge_type:before {content: "\e252";}',
103
+ 'call_missed' => '.icon-call_missed:before {content: "\e0b4";}',
104
+ 'call_missed_outgoing' => '.icon-call_missed_outgoing:before {content: "\e0e4";}',
105
+ 'call_received' => '.icon-call_received:before {content: "\e0b5";}',
106
+ 'call_split' => '.icon-call_split:before {content: "\e0b6";}',
107
+ 'call_to_action' => '.icon-call_to_action:before {content: "\e06c";}',
108
+ 'camera' => '.icon-camera:before {content: "\e3af";}',
109
+ 'photo_camera' => '.icon-photo_camera:before {content: "\e412";}',
110
+ 'camera_enhance' => '.icon-camera_enhance:before {content: "\e8fc";}',
111
+ 'camera_front' => '.icon-camera_front:before {content: "\e3b1";}',
112
+ 'camera_roll' => '.icon-camera_roll:before {content: "\e3b3";}',
113
+ 'cancel' => '.icon-cancel:before {content: "\e5c9";}',
114
+ 'redeem' => '.icon-redeem:before {content: "\e8b1";}',
115
+ 'card_membership' => '.icon-card_membership:before {content: "\e8f7";}',
116
+ 'card_travel' => '.icon-card_travel:before {content: "\e8f8";}',
117
+ 'casino' => '.icon-casino:before {content: "\eb40";}',
118
+ 'center_focus_strong' => '.icon-center_focus_strong:before {content: "\e3b4";}',
119
+ 'center_focus_weak' => '.icon-center_focus_weak:before {content: "\e3b5";}',
120
+ 'change_history' => '.icon-change_history:before {content: "\e86b";}',
121
+ 'chat' => '.icon-chat:before {content: "\e0b7";}',
122
+ 'chat_bubble' => '.icon-chat_bubble:before {content: "\e0ca";}',
123
+ 'check' => '.icon-check:before {content: "\e5ca";}',
124
+ 'check_box' => '.icon-check_box:before {content: "\e834";}',
125
+ 'check_box_outline_blank' => '.icon-check_box_outline_blank:before {content:"\e835";}',
126
+ 'check_circle' => '.icon-check_circle:before {content: "\e86c";}',
127
+ 'navigate_before' => '.icon-navigate_before:before {content: "\e408";}',
128
+ 'navigate_next' => '.icon-navigate_next:before {content: "\e409";}',
129
+ 'child_care' => '.icon-child_care:before {content: "\eb41";}',
130
+ 'child_friendly' => '.icon-child_friendly:before {content: "\eb42";}',
131
+ 'chrome_reader_mode' => '.icon-chrome_reader_mode:before {content: "\e86d";}',
132
+ 'close' => '.icon-close:before {content: "\e5cd";}',
133
+ 'clear_all' => '.icon-clear_all:before {content: "\e0b8";}',
134
+ 'closed_caption' => '.icon-closed_caption:before {content: "\e01c";}',
135
+ 'wb_cloudy' => '.icon-wb_cloudy:before {content: "\e42d";}',
136
+ 'cloud_circle' => '.icon-cloud_circle:before {content: "\e2be";}',
137
+ 'cloud_done' => '.icon-cloud_done:before {content: "\e2bf";}',
138
+ 'cloud_download' => '.icon-cloud_download:before {content: "\e2c0";}',
139
+ 'cloud_off' => '.icon-cloud_off:before {content: "\e2c1";}',
140
+ 'cloud_queue' => '.icon-cloud_queue:before {content: "\e2c2";}',
141
+ 'code' => '.icon-code:before {content: "\e86f";}',
142
+ 'photo_library' => '.icon-photo_library:before {content: "\e413";}',
143
+ 'collections_bookmark' => '.icon-collections_bookmark:before {content: "\e431";}',
144
+ 'palette' => '.icon-palette:before {content: "\e40a";}',
145
+ 'colorize' => '.icon-colorize:before {content: "\e3b8";}',
146
+ 'comment' => '.icon-comment:before {content: "\e0b9";}',
147
+ 'compare' => '.icon-compare:before {content: "\e3b9";}',
148
+ 'compare_arrows' => '.icon-compare_arrows:before {content: "\e915";}',
149
+ 'laptop' => '.icon-laptop:before {content: "\e31e";}',
150
+ 'confirmation_number' => '.icon-confirmation_number:before {content: "\e638";}',
151
+ 'contact_email' => '.icon-contact_email:before {content: "\e0d0";}',
152
+ 'contact_phone' => '.icon-contact_phone:before {content: "\e0cf";}',
153
+ 'contacts' => '.icon-contacts:before {content: "\e0ba";}',
154
+ 'content_copy' => '.icon-content_copy:before {content: "\e14d";}',
155
+ 'content_cut' => '.icon-content_cut:before {content: "\e14e";}',
156
+ 'content_paste' => '.icon-content_paste:before {content: "\e14f";}',
157
+ 'control_point' => '.icon-control_point:before {content: "\e3bb";}',
158
+ 'copyright' => '.icon-copyright:before {content: "\e90c";}',
159
+ 'mode_edit' => '.icon-mode_edit:before {content: "\e254";}',
160
+ 'create_new_folder' => '.icon-create_new_folder:before {content: "\e2cc";}',
161
+ 'payment' => '.icon-payment:before {content: "\e8a1";}',
162
+ 'crop' => '.icon-crop:before {content: "\e3be";}',
163
+ 'crop_16_9' => '.icon-crop_16_9:before {content: "\e3bc";}',
164
+ 'crop_3_2' => '.icon-crop_3_2:before {content: "\e3bd";}',
165
+ 'crop_landscape' => '.icon-crop_landscape:before {content: "\e3c3";}',
166
+ 'crop_7_5' => '.icon-crop_7_5:before {content: "\e3c0";}',
167
+ 'crop_din' => '.icon-crop_din:before {content: "\e3c1";}',
168
+ 'crop_free' => '.icon-crop_free:before {content: "\e3c2";}',
169
+ 'crop_original' => '.icon-crop_original:before {content: "\e3c4";}',
170
+ 'crop_portrait' => '.icon-crop_portrait:before {content: "\e3c5";}',
171
+ 'crop_rotate' => '.icon-crop_rotate:before {content: "\e437";}',
172
+ 'crop_square' => '.icon-crop_square:before {content: "\e3c6";}',
173
+ 'dashboard' => '.icon-dashboard:before {content: "\e871";}',
174
+ 'data_usage' => '.icon-data_usage:before {content: "\e1af";}',
175
+ 'data_range' => '.icon-data_range:before {content: "\e916";}',
176
+ 'dehaze' => '.icon-dehaze:before {content: "\e3c7";}',
177
+ 'delete' => '.icon-delete:before {content: "\e872";}',
178
+ 'delete_forever' => '.icon-delete_forever:before {content: "\e92b";}',
179
+ 'delete_sweep' => '.icon-delete_sweep:before {content: "\e16c";}',
180
+ 'description' => '.icon-description:before {content: "\e873";}',
181
+ 'desktop_mac' => '.icon-desktop_mac:before {content: "\e30b";}',
182
+ 'desktop_windows' => '.icon-desktop_windows:before {content: "\e30c";}',
183
+ 'details' => '.icon-details:before {content: "\e3c8";}',
184
+ 'developer_board' => '.icon-developer_board:before {content: "\e30d";}',
185
+ 'developer_mode' => '.icon-developer_mode:before {content: "\e1b0";}',
186
+ 'device_hub' => '.icon-device_hub:before {content: "\e335";}',
187
+ 'phonelink' => '.icon-phonelink:before {content: "\e326";}',
188
+ 'devices_other' => '.icon-devices_other:before {content: "\e337";}',
189
+ 'dialer_sip' => '.icon-dialer_sip:before {content: "\e0bb";}',
190
+ 'dialerpad' => '.icon-dialerpad:before {content: "\e0bc";}',
191
+ 'directions' => '.icon-directions:before {content: "\e52e";}',
192
+ 'directions_bike' => '.icon-directions_bike:before {content: "\e52f";}',
193
+ 'directions_boat' => '.icon-directions_boat:before {content: "\e532";}',
194
+ 'directions_bus' => '.icon-directions_bus:before {content: "\e530";}',
195
+ 'directions_car' => '.icon-directions_car:before {content: "\e531";}',
196
+ 'directions_run' => '.icon-directions_run:before {content: "\e566";}',
197
+ 'directions_transit' => '.icon-directions_transit:before {content: "\e535";}',
198
+ 'directions_walk' => '.icon-directions_walk:before {content: "\e536";}',
199
+ 'disc_full' => '.icon-disc_full:before {content: "\e610";}',
200
+ 'dns' => '.icon-dns:before {content: "\e875";}',
201
+ 'not_interested' => '.icon-not_interested:before {content: "\e033";}',
202
+ 'do_not_disturb_alt' => '.icon-do_not_disturb_alt:before {content: "\e611";}',
203
+ 'do_not_disturb_off' => '.icon-do_not_disturb_off:before {content: "\e643";}',
204
+ 'remove_circle' => '.icon-remove_circle:before {content: "\e15c";}',
205
+ 'dock' => '.icon-dock:before {content: "\e30c";}',
206
+ 'done' => '.icon-done:before {content: "\e876";}',
207
+ 'done_all' => '.icon-done_all:before {content: "\e877";}',
208
+ 'donut_large' => '.icon-donut_large:before {content: "\e917";}',
209
+ 'donut_small' => '.icon-donut_small:before {content: "\e918";}',
210
+ 'drafts' => '.icon-drafts:before {content: "\e151";}',
211
+ 'drag_handle' => '.icon-drag_handle:before {content: "\e25d";}',
212
+ 'time_to_leave' => '.icon-time_to_leave:before {content: "\e62c";}',
213
+ 'dvr' => '.icon-dvr:before {content: "\e1b2";}',
214
+ 'edit_location' => '.icon-edit_location:before {content: "\e568";}',
215
+ 'eject' => '.icon-eject:before {content: "\e8fb";}',
216
+ 'markunread' => '.icon-markunread:before {content: "\e159";}',
217
+ 'enhanced_encryption' => '.icon-enhanced_encryption:before {content: "\e63f";}',
218
+ 'equalizer' => '.icon-equalizer:before {content: "\e01d";}',
219
+ 'error '=> '.icon-error:before {content: "\e000";}',
220
+ 'error_outline '=> '.icon-error_outline:before {content: "\e001";}',
221
+ 'euro_symbol '=> '.icon-euro_symbol:before {content: "\e926";}',
222
+ 'ev_station '=> '.icon-ev_station:before {content: "\e56d";}',
223
+ 'insert_invitation '=> '.icon-insert_invitation:before {content: "\e24f";}',
224
+ 'event_available '=> '.icon-event_available:before {content: "\e614";}',
225
+ 'event_busy '=> '.icon-event_busy:before {content: "\e615";}',
226
+ 'event_note '=> '.icon-event_note:before {content: "\e616";}',
227
+ 'event_seat '=> '.icon-event_seat:before {content: "\e903";}',
228
+ 'exit_to_app '=> '.icon-exit_to_app:before {content: "\e879";}',
229
+ 'expand_less '=> '.icon-expand_less:before {content: "\e5ce";}',
230
+ 'expand_more '=> '.icon-expand_more:before {content: "\e5cf";}',
231
+ 'explicit '=> '.icon-explicit:before {content: "\e01e";}',
232
+ 'explore '=> '.icon-explore:before {content: "\e87a";}',
233
+ 'exposure '=> '.icon-exposure:before {content: "\e3ca";}',
234
+ 'exposure_zero '=> '.icon-exposure_zero:before {content: "\e3cf";}',
235
+ 'extension '=> '.icon-extension:before {content: "\e87b";}',
236
+ 'face '=> '.icon-face:before {content: "\e87c";}',
237
+ 'fast_forward '=> '.icon-fast_forward:before {content: "\e01f";}',
238
+ 'fast_rewind '=> '.icon-fast_rewind:before {content: "\e020";}',
239
+ 'favorite '=> '.icon-favorite:before {content: "\e87d";}',
240
+ 'favorite_border '=> '.icon-favorite_border:before {content: "\e87e";}',
241
+ 'featured_play_list '=> '.icon-featured_play_list:before {content: "\e06d";}',
242
+ 'featured_video '=> '.icon-featured_video:before {content: "\e06e";}',
243
+ 'sms_failed '=> '.icon-sms_failed:before {content: "\e626";}',
244
+ 'fiber_manual_record '=> '.icon-fiber_manual_record:before {content: "\e061";}',
245
+ 'fiber_new '=> '.icon-fiber_new:before {content: "\e05e";}',
246
+ 'fiber_smart_record '=> '.icon-fiber_smart_record:before {content: "\e062";}',
247
+ 'get_app '=> '.icon-get_app:before {content: "\e884";}',
248
+ 'file_upload'=> '.icon-file_upload:before {content: "\e2c6";}',
249
+ 'filter'=> '.icon-filter:before {content: "\e3d3";}',
250
+ 'filter_9_plus'=> '.icon-filter_9_plus:before {content: "\e3da";}',
251
+ 'filter_b_and_w'=> '.icon-filter_b_and_w:before {content: "\e3db";}',
252
+ 'filter_center_focus'=> '.icon-filter_center_focus:before {content: "\e3dc";}',
253
+ 'filter_drama'=> '.icon-filter_drama:before {content: "\e3dd";}',
254
+ 'filter_frames'=> '.icon-filter_frames:before {content: "\e3de";}',
255
+ 'terrain'=> '.icon-terrain:before {content: "\e564";}',
256
+ 'filter_list'=> '.icon-filter_list:before {content: "\e152";}',
257
+ 'filter_none'=> '.icon-filter_none:before {content: "\e3e0";}',
258
+ 'filter_tilt_shift'=> '.icon-filter_tilt_shift:before {content: "\e3e2";}',
259
+ 'filter_vintage'=> '.icon-filter_vintage:before {content: "\e3e3";}',
260
+ 'find_in_page'=> '.icon-find_in_page:before {content: "\e880";}',
261
+ 'find_replace'=> '.icon-find_replace:before {content: "\e881";}',
262
+ 'fingerprint'=> '.icon-fingerprint:before {content: "\e3e3";}',
263
+ 'first_page'=> '.icon-first_page:before {content: "\e5dc";}',
264
+ 'fitness_center'=> '.icon-fitness_center:before {content: "\eb43";}',
265
+ 'flare'=> '.icon-flare:before {content: "\e3e4";}',
266
+ 'flash_on'=> '.icon-flash_on:before {content: "\e3e7";}',
267
+ 'flight_land'=> '.icon-flight_land:before {content: "\e904";}',
268
+ 'flight_takeoff'=> '.icon-flight_takeoff:before {content: "\e905";}',
269
+ 'folder'=> '.icon-folder:before {content: "\e2c7";}',
270
+ 'folder_open'=> '.icon-folder_open:before {content: "\e2c8";}',
271
+ 'folder_shared'=> '.icon-folder_shared:before {content: "\e2c9";}',
272
+ 'folder_special'=> '.icon-folder_special:before {content: "\e617";}',
273
+ 'font_download'=> '.icon-font_download:before {content: "\e167";}',
274
+ 'format_align_center'=> '.icon-format_align_center:before {content: "\e234";}',
275
+ 'format_align_justify'=> '.icon-format_align_justify:before {content: "\e235";}',
276
+ 'format_align_left'=> '.icon-format_align_left:before {content: "\e236";}',
277
+ 'format_align_right'=> '.icon-format_align_right:before {content: "\e237";}',
278
+ 'format_bold'=> '.icon-format_bold:before {content: "\e238";}',
279
+ 'format_clear'=> '.icon-format_clear:before {content: "\e239";}',
280
+ 'format_color_fill'=> '.icon-format_color_fill:before {content: "\e23a";}',
281
+ 'format_color_reset'=> '.icon-format_color_reset:before {content: "\e23b";}',
282
+ 'format_color_text'=> '.icon-format_color_text:before {content: "\e23c";}',
283
+ 'format_indent_decrease'=> '.icon-format_indent_decrease:before {content: "\e23d";}',
284
+ 'format_indent_increase'=> '.icon-format_indent_increase:before {content: "\e23e";}',
285
+ 'format_italic'=> '.icon-format_italic:before {content: "\e23f";}',
286
+ 'format_line_spacing'=> '.icon-format_line_spacing:before {content: "\e240";}',
287
+ 'format_line_bulleted'=> '.icon-format_line_bulleted:before {content: "\e241";}',
288
+ 'format_list_numbered'=> '.icon-format_list_numbered:before {content: "\e242";}',
289
+ 'format_paint'=> '.icon-format_paint:before {content: "\e243";}',
290
+ 'format_quote'=> '.icon-format_quote:before {content: "\e244";}',
291
+ 'format_shapes'=> '.icon-format_shapes:before {content: "\e25e";}',
292
+ 'format_size'=> '.icon-format_size:before {content: "\e245";}',
293
+ 'format_strikethrough'=> '.icon-format_strikethrough:before {content: "\e246";}',
294
+ 'format_textdirection_l_to_r'=> '.icon-format_textdirection_l_to_r:before {content: "\e247";}',
295
+ 'format_textdirection_r_to_l'=> '.icon-format_textdirection_r_to_l:before {content: "\e248";}',
296
+ 'format_underlined'=> '.icon-format_underlined:before {content: "\e249";}',
297
+ 'question_answer'=> '.icon-question_answer:before {content: "\e8af";}',
298
+ 'forward'=> '.icon-forward:before {content: "\e154";}',
299
+ 'forward_10'=> '.icon-forward_10:before {content: "\e056";}',
300
+ 'forward_30'=> '.icon-forward_30:before {content: "\e057";}',
301
+ 'forward_5'=> '.icon-forward_5:before {content: "\e058";}',
302
+ 'free_breakfast'=> '.icon-free_breakfast:before {content: "\eb44";}',
303
+ 'full_screen'=> '.icon-full_screen:before {content: "\e5d0";}',
304
+ 'full_screen_exit'=> '.icon-full_screen_exit:before {content: "\e5d1";}',
305
+ 'functions'=> '.icon-functions:before {content: "\e24a";}',
306
+ 'g_translate'=> '.icon-g_translate:before {content: "\e927";}',
307
+ 'games'=> '.icon-games:before {content: "\e021";}',
308
+ 'gavel'=> '.icon-gavel:before {content: "\e90e";}',
309
+ 'gesture'=> '.icon-gesture:before {content: "\e155";}',
310
+ 'gif'=> '.icon-gif:before {content: "\e908";}',
311
+ 'goat'=> '.icon-goat:before {content: "\e900";}',
312
+ 'golf_course'=> '.icon-golf_course:before {content: "\eb45";}',
313
+ 'my_location'=> '.icon-my_location:before {content: "\e55c";}',
314
+ 'location_searching'=> '.icon-location_searching:before {content: "\e1b7";}',
315
+ 'location_disabled'=> '.icon-location_disabled:before {content: "\e1b6";}',
316
+ 'star'=> '.icon-star:before {content: "\e838";}',
317
+ 'gradient'=> '.icon-gradient:before {content: "\e3e9";}',
318
+ 'grain'=> '.icon-grain:before {content: "\e3ea";}',
319
+ 'graphic_eq'=> '.icon-graphic_eq:before {content: "\e1b8";}',
320
+ 'grid_off'=> '.icon-grid_off:before {content: "\e3eb";}',
321
+ 'grid_on'=> '.icon-grid_on:before {content: "\e3ec";}',
322
+ 'people'=> '.icon-people:before {content: "\e7fb";}',
323
+ 'group_add'=> '.icon-group_add:before {content: "\e7f0";}',
324
+ 'group_work'=> '.icon-group_work:before {content: "\e886";}',
325
+ 'hd'=> '.icon-hd:before {content: "\e052";}',
326
+ 'hdr_strong'=> '.icon-hdr_strong:before {content: "\e3f1";}',
327
+ 'hdr_weak'=> '.icon-hdr_weak:before {content: "\e3f2";}',
328
+ 'headset'=> '.icon-headset:before {content: "\e310";}',
329
+ 'healing'=> '.icon-healing:before {content: "\e3f3";}',
330
+ 'hearing'=> '.icon-hearing:before {content: "\e023";}',
331
+ 'help'=> '.icon-help:before {content: "\e887";}',
332
+ 'help_outline'=> '.icon-help_outline:before {content: "\e8fd";}',
333
+ 'high_quality'=> '.icon-high_quality:before {content: "\e024";}',
334
+ 'highlight'=> '.icon-highlight:before {content: "\e25f";}',
335
+ 'highlight_off'=> '.icon-highlight_off:before {content: "\e888";}',
336
+ 'restore'=> '.icon-restore:before {content: "\e8b3";}',
337
+ 'home'=> '.icon-home:before {content: "\e88a";}',
338
+ 'hot_tub'=> '.icon-hot_tub:before {content: "\eb46";}',
339
+ 'local_hotel'=> '.icon-local_hotel:before {content: "\e549";}',
340
+ 'hourglass_empty'=> '.icon-hourglass_empty:before {content: "\e88b";}',
341
+ 'hourglass_full'=> '.icon-hourglass_full:before {content: "\e88c";}',
342
+ 'lock'=> '.icon-lock:before {content: "\e897";}',
343
+ 'photo'=> '.icon-photo:before {content: "\e410";}',
344
+ 'image_aspect_ratio'=> '.icon-image_aspect_ratio:before {content: "\e3f5";}',
345
+ 'import_contact'=> '.icon-import_contact:before {content: "\e0e0";}',
346
+ 'import_export'=> '.icon-import_export:before {content: "\e0c3";}',
347
+ 'important_device'=> '.icon-important_device:before {content: "\e912";}',
348
+ 'inbox'=> '.icon-inbox:before {content: "\e156";}',
349
+ 'indeterminate_check_box'=> '.icon-indeterminate_check_box:before {content: "\e909";}',
350
+ 'info'=> '.icon-info:before {content: "\e88e";}',
351
+ 'info_outline'=> '.icon-info_outline:before {content: "\e88f";}',
352
+ 'input'=> '.icon-input:before {content: "\e890";}',
353
+ 'insert_comment'=> '.icon-insert_comment:before {content: "\e24c";}',
354
+ 'insert_drive_file'=> '.icon-insert_drive_file:before {content: "\e24d";}',
355
+ 'tag_faces'=> '.icon-tag_faces:before {content: "\e420";}',
356
+ 'link'=> '.icon-link:before {content: "\e157";}',
357
+ 'invert_colors'=> '.icon-invert_colors:before {content: "\e891";}',
358
+ 'invert_colors_off'=> '.icon-invert_colors_off:before {content: "\e0c4";}',
359
+ 'iso'=> '.icon-iso:before {content: "\e3f6";}',
360
+ 'keyboard'=> '.icon-keyboard:before {content: "\e312";}',
361
+ 'keyboard_arrow_down'=> '.icon-keyboard_arrow_down:before {content: "\e313";}',
362
+ 'keyboard_arrow_left'=> '.icon-keyboard_arrow_left:before {content: "\e314";}',
363
+ 'keyboard_arrow_right'=> '.icon-keyboard_arrow_right:before {content: "\e315";}',
364
+ 'keyboard_arrow_up'=> '.icon-keyboard_arrow_up:before {content: "\e316";}',
365
+ 'keyboard_backspace'=> '.icon-keyboard_backspace:before {content: "\e317";}',
366
+ 'keyboard_capslock'=> '.icon-keyboard_capslock:before {content: "\e318";}',
367
+ 'keyboard_return'=> '.icon-keyboard_return:before {content: "\e31b";}',
368
+ 'keyboard_tab'=> '.icon-keyboard_tab:before {content: "\e31c";}',
369
+ 'keyboard_voice'=> '.icon-keyboard_voice:before {content: "\e31d";}',
370
+ 'kitchen'=> '.icon-kitchen:before {content: "\eb47";}',
371
+ 'lable'=> '.icon-lable:before {content: "\e892";}',
372
+ 'lable_outline'=> '.icon-lable_outline:before {content: "\e893";}',
373
+ 'language'=> '.icon-language:before {content: "\e894";}',
374
+ 'laptop_chromebook'=> '.icon-laptop_chromebook:before {content: "\e31f";}',
375
+ 'laptop_mac'=> '.icon-laptop_mac:before {content: "\e320";}',
376
+ 'last_page'=> '.icon-last_page:before {content: "\e5dd";}',
377
+ 'open_in_new'=> '.icon-open_in_new:before {content: "\e89e";}',
378
+ 'layers'=> '.icon-layers:before {content: "\e53b";}',
379
+ 'layers_clear'=> '.icon-layers_clear:before {content: "\e53c";}',
380
+ 'leak_add'=> '.icon-leak_add:before {content: "\e3f8";}',
381
+ 'lens'=> '.icon-lens:before {content: "\e3fa";}',
382
+ 'library_books'=> '.icon-library_books:before {content: "\e02f";}',
383
+ 'library_music'=> '.icon-library_music:before {content: "\e030";}',
384
+ 'lightbulb_outline'=> '.icon-lightbulb_outline:before {content: "\e90f";}',
385
+ 'line_weight'=> '.icon-line_weight:before {content: "\e91a";}',
386
+ 'linear_scale'=> '.icon-linear_scale:before {content: "\e260";}',
387
+ 'linked_camera'=> '.icon-linked_camera:before {content: "\e438";}',
388
+ 'list'=> '.icon-list:before {content: "\e896";}',
389
+ 'live_help'=> '.icon-live_help:before {content: "\e0c6";}',
390
+ 'live_tv'=> '.icon-live_tv:before {content: "\e639";}',
391
+ 'local_play'=> '.icon-local_play:before {content: "\e553";}',
392
+ 'local_airport'=> '.icon-local_airport:before {content: "\e55d";}',
393
+ 'local_atm'=> '.icon-local_atm:before {content: "\e53e";}',
394
+ 'local_bar'=> '.icon-local_bar:before {content: "\e540";}',
395
+ 'local_cafe'=> '.icon-local_cafe:before {content: "\e541";}',
396
+ 'local_car_wash'=> '.icon-local_car_wash:before {content: "\e542";}',
397
+ 'local_convenience_store'=> '.icon-local_convenience_store:before {content: "\e543";}',
398
+ 'restaurant_menu'=> '.icon-restaurant_menu:before {content: "\e561";}',
399
+ 'local_drink'=> '.icon-local_drink:before {content: "\e544";}',
400
+ 'local_florist'=> '.icon-local_florist:before {content: "\e545";}',
401
+ 'local_gas_station'=> '.icon-local_gas_station:before {content: "\e546";}',
402
+ 'shopping_cart'=> '.icon-shopping_cart:before {content: "\e8cc";}',
403
+ 'local_hospital'=> '.icon-local_hospital:before {content: "\e548";}',
404
+ 'local_laundry_service'=> '.icon-local_laundry_service:before {content: "\e54a";}',
405
+ 'local_library'=> '.icon-local_library:before {content: "\e54b";}',
406
+ 'local_mall'=> '.icon-local_mall:before {content: "\e54c";}',
407
+ 'theaters'=> '.icon-theaters:before {content: "\e8da";}',
408
+ 'local_offer'=> '.icon-local_offer:before {content: "\e54e";}',
409
+ 'local_parking'=> '.icon-local_parking:before {content: "\e54f";}',
410
+ 'local_pharmacy'=> '.icon-local_pharmacy:before {content: "\e550";}',
411
+ 'local_pizza'=> '.icon-local_pizza:before {content: "\e552";}',
412
+ 'print'=> '.icon-print:before {content: "\e8ad";}',
413
+ 'local_shipping'=> '.icon-local_shipping:before {content: "\e558";}',
414
+ 'local_taxi'=> '.icon-local_taxi:before {content: "\e559";}',
415
+ 'local_city'=> '.icon-local_city:before {content: "\e7f1";}',
416
+ 'location_off'=> '.icon-location_off:before {content: "\e0c7";}',
417
+ 'room'=> '.icon-room:before {content: "\e8b4";}',
418
+ 'lock_open'=> '.icon-lock_open:before {content: "\e898";}',
419
+ 'lock_outline'=> '.icon-lock_outline:before {content: "\e899";}',
420
+ 'looks'=> '.icon-looks:before {content: "\e3fc";}',
421
+ 'sync'=> '.icon-sync:before {content: "\e627";}',
422
+ 'loupe'=> '.icon-loupe:before {content: "\e402";}',
423
+ 'low_priority'=> '.icon-low_priority:before {content: "\e16d";}',
424
+ 'loyalty'=> '.icon-loyalty:before {content: "\e89a";}',
425
+ 'mail_outline'=> '.icon-mail_outline:before {content: "\e0e1";}',
426
+ 'map'=> '.icon-map:before {content: "\e55b";}',
427
+ 'markunread_mailbox'=> '.icon-markunread_mailbox:before {content: "\e89b";}',
428
+ 'memory'=> '.icon-memory:before {content: "\e322";}',
429
+ 'menu'=> '.icon-menu:before {content: "\e5d2";}',
430
+ 'message'=> '.icon-message:before {content: "\e0c9";}',
431
+ 'mic'=> '.icon-mic:before {content: "\e029";}',
432
+ 'mic_none'=> '.icon-mic_none:before {content: "\e02a";}',
433
+ 'mic_off'=> '.icon-mic_off:before {content: "\e02b";}',
434
+ 'mms'=> '.icon-mms:before {content: "\e618";}',
435
+ 'mode_comment'=> '.icon-mode_comment:before {content: "\e253";}',
436
+ 'monetization_on'=> '.icon-monetization_on:before {content: "\e263";}',
437
+ 'money_off'=> '.icon-money_off:before {content: "\e25c";}',
438
+ 'monochrome_photos'=> '.icon-monochrome_photos:before {content: "\e403";}',
439
+ 'mood_bad'=> '.icon-mood_bad:before {content: "\e7f3";}',
440
+ 'more'=> '.icon-more:before {content: "\e619";}',
441
+ 'more_horiz'=> '.icon-more_horiz:before {content: "\e5d3";}',
442
+ 'more_vert'=> '.icon-more_vert:before {content: "\e5d4";}',
443
+ 'motorcycle'=> '.icon-motorcycle:before {content: "\e91b";}',
444
+ 'mouse'=> '.icon-mouse:before {content: "\e323";}',
445
+ 'move_to_inbox'=> '.icon-move_to_inbox:before {content: "\e168";}',
446
+ 'movie_creation'=> '.icon-movie_creation:before {content: "\e404";}',
447
+ 'movie_filter'=> '.icon-movie_filter:before {content: "\e43a";}',
448
+ 'multiline_chart'=> '.icon-multiline_chart:before {content: "\e6df";}',
449
+ 'music_note'=> '.icon-music_note:before {content: "\e405";}',
450
+ 'music_video'=> '.icon-music_video:before {content: "\e063";}',
451
+ 'nature'=> '.icon-nature:before {content: "\e406";}',
452
+ 'nature_people'=> '.icon-nature_people:before {content: "\e407";}',
453
+ 'navigation'=> '.icon-navigation:before {content: "\e55d";}',
454
+ 'near_me'=> '.icon-near_me:before {content: "\e569";}',
455
+ 'network_cell'=> '.icon-network_cell:before {content: "\e1b9";}',
456
+ 'network_check'=> '.icon-network_check:before {content: "\e640";}',
457
+ 'new_releases'=> '.icon-new_releases:before {content: "\e031";}',
458
+ 'next_week'=> '.icon-next_week:before {content: "\e16a";}',
459
+ 'nfc'=> '.icon-nfc:before {content: "\e1bb";}',
460
+ 'no_encryption'=> '.icon-no_encryption:before {content: "\e641";}',
461
+ 'note'=> '.icon-note:before {content: "\e06f";}',
462
+ 'note_add'=> '.icon-note_add:before {content: "\e89c";}',
463
+ 'notifications'=> '.icon-notifications:before {content: "\e7f4";}',
464
+ 'notifications_active'=> '.icon-notifications_active:before {content: "\e7f7";}',
465
+ 'notifications_none'=> '.icon-notifications_none:before {content: "\e7f5";}',
466
+ 'notifications_off'=> '.icon-notifications_off:before {content: "\e7f6";}',
467
+ 'notifications_paused'=> '.icon-notifications_paused:before {content: "\e7f8";}',
468
+ 'offline_pin'=> '.icon-offline_pin:before {content: "\e90a";}',
469
+ 'ondemand_video'=> '.icon-ondemand_video:before {content: "\e63a";}',
470
+ 'opacity'=> '.icon-opacity:before {content: "\e91c";}',
471
+ 'open_in_browser'=> '.icon-open_in_browser:before {content: "\e89d";}',
472
+ 'open_with'=> '.icon-open_with:before {content: "\e89f";}',
473
+ 'pages'=> '.icon-pages:before {content: "\e7f9";}',
474
+ 'pageview'=> '.icon-pageview:before {content: "\e8a0";}',
475
+ 'pan_tool'=> '.icon-pan_tool:before {content: "\e925";}',
476
+ 'panorama'=> '.icon-panorama:before {content: "\e40b";}',
477
+ 'radio_button_unchecked'=> '.icon-radio_button_unchecked:before {content: "\e836";}',
478
+ 'panorama_horizontal'=> '.icon-panorama_horizontal:before {content: "\e40d";}',
479
+ 'panorama_vertical'=> '.icon-panorama_vertical:before {content: "\e40e";}',
480
+ 'panorama_wide_angle'=> '.icon-panorama_wide_angle:before {content: "\e40f";}',
481
+ 'party_mode'=> '.icon-party_mode:before {content: "\e7fa";}',
482
+ 'pause'=> '.icon-pause:before {content: "\e034";}',
483
+ 'pause_circle_filled'=> '.icon-pause_circle_filled:before {content: "\e035";}',
484
+ 'pause_circle_outline'=> '.icon-pause_circle_outline:before {content: "\e036";}',
485
+ 'people_outline'=> '.icon-people_outline:before {content: "\e7fc";}',
486
+ 'perm_camera_mic'=> '.icon-perm_camera_mic:before {content: "\e8a2";}',
487
+ 'perm_contact_calendar'=> '.icon-perm_contact_calendar:before {content: "\e8a3";}',
488
+ 'perm_device_information'=> '.icon-perm_device_information:before {content: "\e8a5";}',
489
+ 'person_outline'=> '.icon-person_outline:before {content: "\e7ff";}',
490
+ 'perm_media'=> '.icon-perm_media:before {content: "\e8a7";}',
491
+ 'person'=> '.icon-person:before {content: "\e7fd";}',
492
+ 'person_add'=> '.icon-person_add:before {content: "\e7fe";}',
493
+ 'person_pin'=> '.icon-person_pin:before {content: "\e55a";}',
494
+ 'person_pin_circle'=> '.icon-person_pin_circle:before {content: "\e56a";}',
495
+ 'personal_video'=> '.icon-personal_video:before {content: "\e63b";}',
496
+ 'pets'=> '.icon-pets:before {content: "\e91d";}',
497
+ 'phone_android'=> '.icon-phone_android:before {content: "\e324";}',
498
+ 'phone_bluetooth_speaker'=> '.icon-phone_bluetooth_speaker:before {content: "\e61b";}',
499
+ 'phone_forwarded'=> '.icon-phone_forwarded:before {content: "\e61c";}',
500
+ 'phone_in_talk'=> '.icon-phone_in_talk:before {content: "\e61d";}',
501
+ 'phone_iphone'=> '.icon-phone_iphone:before {content: "\e325";}',
502
+ 'phone_locked'=> '.icon-phone_locked:before {content: "\e61e";}',
503
+ 'phone_missed'=> '.icon-phone_missed:before {content: "\e61f";}',
504
+ 'phone_paused'=> '.icon-phone_paused:before {content: "\e620";}',
505
+ 'phonelink_erase'=> '.icon-phonelink_erase:before {content: "\e0db";}',
506
+ 'phonelink_lock'=> '.icon-phonelink_lock:before {content: "\e0dc";}',
507
+ 'phonelink_off'=> '.icon-phonelink_off:before {content: "\e327";}',
508
+ 'phonelink_ring'=> '.icon-phonelink_ring:before {content: "\e0dd";}',
509
+ 'phonelink_setup'=> '.icon-phonelink_setup:before {content: "\e0de";}',
510
+ 'photo_album'=> '.icon-photo_album:before {content: "\e411";}',
511
+ 'photo_size_select_actual'=> '.icon-photo_size_select_actual:before {content: "\e432";}',
512
+ 'picture_in_picture'=> '.icon-picture_in_picture:before {content: "\e8aa";}',
513
+ 'picture_in_picture_alt'=> '.icon-picture_in_picture_alt:before {content: "\e911";}',
514
+ 'pie_chart'=> '.icon-pie_chart:before {content: "\e6c4";}',
515
+ 'pie_chart_outlined'=> '.icon-pie_chart_outlined:before {content: "\e6c5";}',
516
+ 'pin_drop'=> '.icon-pin_drop:before {content: "\e55e";}',
517
+ 'play_arrow'=> '.icon-play_arrow:before {content: "\e037";}',
518
+ 'play_circle_filled'=> '.icon-play_circle_filled:before {content: "\e038";}',
519
+ 'play_circle_outline'=> '.icon-play_circle_outline:before {content: "\e039";}',
520
+ 'play_for_work'=> '.icon-play_for_work:before {content: "\e906";}',
521
+ 'playlist_add'=> '.icon-playlist_add:before {content: "\e03b";}',
522
+ 'playlist_add_check'=> '.icon-playlist_add_check:before {content: "\e065";}',
523
+ 'playlist_play'=> '.icon-playlist_play:before {content: "\e05f";}',
524
+ 'polymer'=> '.icon-polymer:before {content: "\e8ab";}',
525
+ 'pool'=> '.icon-pool:before {content: "\eb48";}',
526
+ 'portable_wifi_off'=> '.icon-portable_wifi_off:before {content: "\e0ce";}',
527
+ 'portrait'=> '.icon-portrait:before {content: "\e416";}',
528
+ 'power'=> '.icon-power:before {content: "\e63c";}',
529
+ 'power_input'=> '.icon-power_input:before {content: "\e336";}',
530
+ 'power_settings_new'=> '.icon-power_settings_new:before {content: "\e8ac";}',
531
+ 'pregnant_woman'=> '.icon-pregnant_woman:before {content: "\e91e";}',
532
+ 'present_to_all'=> '.icon-present_to_all:before {content: "\e0df";}',
533
+ 'priority_high'=> '.icon-priority_high:before {content: "\e645";}',
534
+ 'public'=> '.icon-public:before {content: "\e80b";}',
535
+ 'publish'=> '.icon-publish:before {content: "\e255";}',
536
+ 'queue_music'=> '.icon-queue_music:before {content: "\e03d";}',
537
+ 'queue_play_next'=> '.icon-queue_play_next:before {content: "\e066";}',
538
+ 'radio'=> '.icon-radio:before {content: "\e03e";}',
539
+ 'radio_button_checked'=> '.icon-radio_button_checked:before {content: "\e837";}',
540
+ 'rate_review'=> '.icon-rate_review:before {content: "\e560";}',
541
+ 'receipt'=> '.icon-receipt:before {content: "\e8b0";}',
542
+ 'recent_actors'=> '.icon-recent_actors:before {content: "\e03f";}',
543
+ 'record_voice_over'=> '.icon-record_voice_over:before {content: "\e91f";}',
544
+ 'redo'=> '.icon-redo:before {content: "\e15a";}',
545
+ 'refresh'=> '.icon-refresh:before {content: "\e5d5";}',
546
+ 'remove'=> '.icon-remove:before {content: "\e15b";}',
547
+ 'remove_circle_outline'=> '.icon-remove_circle_outline:before {content: "\e15d";}',
548
+ 'remove_from_queue'=> '.icon-remove_from_queue:before {content: "\e067";}',
549
+ 'visibility'=> '.icon-visibility:before {content: "\e8f4";}',
550
+ 'remove_shopping_cart'=> '.icon-remove_shopping_cart:before {content: "\e928";}',
551
+ 'reorder'=> '.icon-reorder:before {content: "\e8fe";}',
552
+ 'repeat'=> '.icon-repeat:before {content: "\e040";}',
553
+ 'replay'=> '.icon-replay:before {content: "\e042";}',
554
+ 'replay_30'=> '.icon-replay_30:before {content: "\e05a";}',
555
+ 'reply'=> '.icon-reply:before {content: "\e15e";}',
556
+ 'reply_all'=> '.icon-reply_all:before {content: "\e15f";}',
557
+ 'report'=> '.icon-report:before {content: "\e160";}',
558
+ 'warning'=> '.icon-warning:before {content: "\e002";}',
559
+ 'restaurant'=> '.icon-restaurant:before {content: "\e56c";}',
560
+ 'restore_page'=> '.icon-restore_page:before {content: "\e929";}',
561
+ 'ring_volume'=> '.icon-ring_volume:before {content: "\e0d1";}',
562
+ 'room_service'=> '.icon-room_service:before {content: "\eb49";}',
563
+ 'rotate_90_degrees_ccw'=> '.icon-rotate_90_degrees_ccw:before {content: "\e418";}',
564
+ 'rotate_left'=> '.icon-rotate_left:before {content: "\e419";}',
565
+ 'rotate_right'=> '.icon-rotate_right:before {content: "\e41a";}',
566
+ 'router'=> '.icon-router:before {content: "\e328";}',
567
+ 'rowing'=> '.icon-rowing:before {content: "\e921";}',
568
+ 'rss_feed'=> '.icon-rss_feed:before {content: "\e0e5";}',
569
+ 'rv_hookup'=> '.icon-rv_hookup:before {content: "\e642";}',
570
+ 'satellite'=> '.icon-satellite:before {content: "\e562";}',
571
+ 'save'=> '.icon-save:before {content: "\e161";}',
572
+ 'scanner'=> '.icon-scanner:before {content: "\e329";}',
573
+ 'school'=> '.icon-school:before {content: "\e80c";}',
574
+ 'screen_lock_landscape'=> '.icon-screen_lock_landscape:before {content: "\e1be";}',
575
+ 'screen_lock_portrait'=> '.icon-screen_lock_portrait:before {content: "\e1bf";}',
576
+ 'screen_share'=> '.icon-screen_share:before {content: "\e0e2";}',
577
+ 'search'=> '.icon-search:before {content: "\e8b6";}',
578
+ 'security'=> '.icon-security:before {content: "\e32a";}',
579
+ 'select_all'=> '.icon-select_all:before {content: "\e162";}',
580
+ 'send'=> '.icon-send:before {content: "\e163";}',
581
+ 'sentiment_dissatisfied'=> '.icon-sentiment_dissatisfied:before {content: "\e811";}',
582
+ 'sentiment_neutral'=> '.icon-sentiment_neutral:before {content: "\e812";}',
583
+ 'sentiment_satisfied'=> '.icon-sentiment_satisfied:before {content: "\e813";}',
584
+ 'sentiment_very_dissatisfied'=> '.icon-sentiment_very_dissatisfied:before {content: "\e814";}',
585
+ 'sentiment_very_satisfied'=> '.icon-sentiment_very_satisfied:before {content: "\e815";}',
586
+ 'settings'=> '.icon-settings:before {content: "\e8b8";}',
587
+ 'settings_applications'=> '.icon-settings_applications:before {content: "\e8b9";}',
588
+ 'settings_backup_restore'=> '.icon-settings_backup_restore:before {content: "\e8ba";}',
589
+ 'settings_brightness'=> '.icon-settings_brightness:before {content: "\e8bd";}',
590
+ 'settings_cell'=> '.icon-settings_cell:before {content: "\e8bc";}',
591
+ 'settings_ethernet'=> '.icon-settings_ethernet:before {content: "\e8be";}',
592
+ 'settings_input_antenna'=> '.icon-settings_input_antenna:before {content: "\e8bf";}',
593
+ 'settings_input_composite'=> '.icon-settings_input_composite:before {content: "\e8c1";}',
594
+ 'settings_input_hdmi'=> '.icon-settings_input_hdmi:before {content: "\e8c2";}',
595
+ 'settings_input_svideo'=> '.icon-settings_input_svideo:before {content: "\e8c3";}',
596
+ 'settings_overscan'=> '.icon-settings_overscan:before {content: "\e8c4";}',
597
+ 'settings_phone'=> '.icon-settings_phone:before {content: "\e8c5";}',
598
+ 'settings_power'=> '.icon-settings_power:before {content: "\e8c6";}',
599
+ 'settings_remote'=> '.icon-settings_remote:before {content: "\e8c7";}',
600
+ 'settings_system_daydream'=> '.icon-settings_system_daydream:before {content: "\e8c8";}',
601
+ 'share'=> '.icon-share:before {content: "\e80d";}',
602
+ 'shop'=> '.icon-shop:before {content: "\e8c9";}',
603
+ 'shop_two'=> '.icon-shop_two:before {content: "\e8ca";}',
604
+ 'shopping_basket'=> '.icon-shopping_basket:before {content: "\e8cb";}',
605
+ 'short_text'=> '.icon-short_text:before {content: "\e261";}',
606
+ 'show_chart'=> '.icon-show_chart:before {content: "\e6e1";}',
607
+ 'shuffle'=> '.icon-shuffle:before {content: "\e043";}',
608
+ 'signal_cellular_4_bar'=> '.icon-signal_cellular_4_bar:before {content: "\e1c8";}',
609
+ 'signal_wifi_4_bar'=> '.icon-signal_wifi_4_bar:before {content: "\e1d8";}',
610
+ 'skip_next'=> '.icon-skip_next:before {content: "\e044";}',
611
+ 'skip_previous'=> '.icon-skip_previous:before {content: "\e045";}',
612
+ 'slideshow'=> '.icon-slideshow:before {content: "\e41b";}',
613
+ 'slow_motion_video'=> '.icon-slow_motion_video:before {content: "\e068";}',
614
+ 'stay_primary_portrait'=> '.icon-stay_primary_portrait:before {content: "\e0d6";}',
615
+ 'smoke_free'=> '.icon-smoke_free:before {content: "\eb4a";}',
616
+ 'smoking_rooms'=> '.icon-smoking_rooms:before {content: "\eb4b";}',
617
+ 'textsms'=> '.icon-textsms:before {content: "\e0d8";}',
618
+ 'snooze'=> '.icon-snooze:before {content: "\e046";}',
619
+ 'sort'=> '.icon-sort:before {content: "\e164";}',
620
+ 'sort_by_alpha'=> '.icon-sort_by_alpha:before {content: "\e053";}',
621
+ 'spa'=> '.icon-spa:before {content: "\eb4c";}',
622
+ 'space_bar'=> '.icon-space_bar:before {content: "\e256";}',
623
+ 'speaker'=> '.icon-speaker:before {content: "\e32d";}',
624
+ 'speaker_group'=> '.icon-speaker_group:before {content: "\e32e";}',
625
+ 'speaker_notes'=> '.icon-speaker_notes:before {content: "\e8cd";}',
626
+ 'speaker_phone'=> '.icon-speaker_phone:before {content: "\e0d2";}',
627
+ 'spellcheck'=> '.icon-spellcheck:before {content: "\e8ce";}',
628
+ 'star_border'=> '.icon-star_border:before {content: "\e83a";}',
629
+ 'star_half'=> '.icon-star_half:before {content: "\e839";}',
630
+ 'stars'=> '.icon-stars:before {content: "\e8d0";}',
631
+ 'stay_primary_landscape'=> '.icon-stay_primary_landscape:before {content: "\e0d5";}',
632
+ 'stop'=> '.icon-stop:before {content: "\e047";}',
633
+ 'stop_screen_share'=> '.icon-stop_screen_share:before {content: "\e0e3";}',
634
+ 'storage'=> '.icon-storage:before {content: "\e1db";}',
635
+ 'store_mall_directory'=> '.icon-store_mall_directory:before {content: "\e563";}',
636
+ 'straighten'=> '.icon-straighten:before {content: "\e41c";}',
637
+ 'streetview'=> '.icon-streetview:before {content: "\e56e";}',
638
+ 'format_strikethrough_s'=> '.icon-format_strikethrough_s:before {content: "\e257";}',
639
+ 'style'=> '.icon-style:before {content: "\e41d";}',
640
+ 'subdirectory_arrow_left'=> '.icon-subdirectory_arrow_left:before {content: "\e5d9";}',
641
+ 'subdirectory_arrow_right'=> '.icon-subdirectory_arrow_right:before {content: "\e5da";}',
642
+ 'subject'=> '.icon-subject:before {content: "\e8d2";}',
643
+ 'subscriptions'=> '.icon-subscriptions:before {content: "\e064";}',
644
+ 'subtitles'=> '.icon-subtitles:before {content: "\e048";}',
645
+ 'subway'=> '.icon-subway:before {content: "\e56f";}',
646
+ 'supervisor_account'=> '.icon-supervisor_account:before {content: "\e8d3";}',
647
+ 'surround_sound'=> '.icon-surround_sound:before {content: "\e049";}',
648
+ 'swap_calls'=> '.icon-swap_calls:before {content: "\e0d7";}',
649
+ 'swap_horiz'=> '.icon-swap_horiz:before {content: "\e8d4";}',
650
+ 'swap_vert'=> '.icon-swap_vert:before {content: "\e8d5";}',
651
+ 'swap_vertical_circle'=> '.icon-swap_vertical_circle:before {content: "\e8d6";}',
652
+ 'switch_camera'=> '.icon-switch_camera:before {content: "\e41e";}',
653
+ 'switch_video'=> '.icon-switch_video:before {content: "\e41f";}',
654
+ 'sync_problem'=> '.icon-sync_problem:before {content: "\e629";}',
655
+ 'system_update'=> '.icon-system_update:before {content: "\e62a";}',
656
+ 'system_update_alt'=> '.icon-system_update_alt:before {content: "\e8d7";}',
657
+ 'tab'=> '.icon-tab:before {content: "\e8d8";}',
658
+ 'tablet'=> '.icon-tablet:before {content: "\e32f";}',
659
+ 'tablet_android'=> '.icon-tablet_android:before {content: "\e330";}',
660
+ 'tablet_mac'=> '.icon-tablet_mac:before {content: "\e331";}',
661
+ 'text_fields'=> '.icon-text_fields:before {content: "\e262";}',
662
+ 'text_format'=> '.icon-text_format:before {content: "\e165";}',
663
+ 'texture'=> '.icon-texture:before {content: "\e421";}',
664
+ 'thumb_down'=> '.icon-thumb_down:before {content: "\e8db";}',
665
+ 'thumb_up'=> '.icon-thumb_up:before {content: "\e8dc";}',
666
+ 'thumb_up_down'=> '.icon-thumb_up_down:before {content: "\e8dd";}',
667
+ 'timelapse'=> '.icon-timelapse:before {content: "\e422";}',
668
+ 'timeline'=> '.icon-timeline:before {content: "\e922";}',
669
+ 'timer'=> '.icon-timer:before {content: "\e425";}',
670
+ 'timer_off'=> '.icon-timer_off:before {content: "\e426";}',
671
+ 'title'=> '.icon-title:before {content: "\e264";}',
672
+ 'toc'=> '.icon-toc:before {content: "\e8de";}',
673
+ 'today'=> '.icon-today:before {content: "\e8df";}',
674
+ 'toll'=> '.icon-toll:before {content: "\e8e0";}',
675
+ 'tonality'=> '.icon-tonality:before {content: "\e427";}',
676
+ 'touch_app'=> '.icon-touch_app:before {content: "\e913";}',
677
+ 'toys'=> '.icon-toys:before {content: "\e332";}',
678
+ 'track'=> '.icon-track:before {content: "\e8e1";}',
679
+ 'traffic'=> '.icon-traffic:before {content: "\e565";}',
680
+ 'train'=> '.icon-train:before {content: "\e570";}',
681
+ 'tram'=> '.icon-tram:before {content: "\e571";}',
682
+ 'transfer_within_a_station'=> '.icon-transfer_within_a_station:before {content: "\e572";}',
683
+ 'transform'=> '.icon-transform:before {content: "\e428";}',
684
+ 'translate'=> '.icon-translate:before {content: "\e8e2";}',
685
+ 'trending_down'=> '.icon-trending_down:before {content: "\e8e3";}',
686
+ 'trending_flat'=> '.icon-trending_flat:before {content: "\e8e4";}',
687
+ 'trending_up'=> '.icon-trending_up:before {content: "\e8e5";}',
688
+ 'tune'=> '.icon-tune:before {content: "\e429";}',
689
+ 'tv'=> '.icon-tv:before {content: "\e333";}',
690
+ 'unarchive'=> '.icon-unarchive:before {content: "\e169";}',
691
+ 'undo'=> '.icon-undo:before {content: "\e166";}',
692
+ 'unfold_less'=> '.icon-unfold_less:before {content: "\e5d6";}',
693
+ 'unfold_more'=> '.icon-unfold_more:before {content: "\e5d7";}',
694
+ 'update'=> '.icon-update:before {content: "\e923";}',
695
+ 'usb'=> '.icon-usb:before {content: "\e1e0";}',
696
+ 'verified_user'=> '.icon-verified_user:before {content: "\e8e8";}',
697
+ 'vertical_align_center'=> '.icon-vertical_align_center:before {content: "\e259";}',
698
+ 'vertical_align_top'=> '.icon-vertical_align_top:before {content: "\e25a";}',
699
+ 'vibration'=> '.icon-vibration:before {content: "\e52d";}',
700
+ 'video_call'=> '.icon-video_call:before {content: "\e070";}',
701
+ 'video_label'=> '.icon-video_label:before {content: "\e071";}',
702
+ 'video_library'=> '.icon-video_library:before {content: "\e04a";}',
703
+ 'videocam'=> '.icon-videocam:before {content: "\e04b";}',
704
+ 'videocam_off'=> '.icon-videocam_off:before {content: "\e04c";}',
705
+ 'videogame_asset'=> '.icon-videogame_asset:before {content: "\e338";}',
706
+ 'view_agenda'=> '.icon-view_agenda:before {content: "\e8e9";}',
707
+ 'view_array'=> '.icon-view_array:before {content: "\e8ea";}',
708
+ 'view_carousel'=> '.icon-view_carousel:before {content: "\e8eb";}',
709
+ 'view_column'=> '.icon-view_column:before {content: "\e8ec";}',
710
+ 'view_comfy'=> '.icon-view_comfy:before {content: "\e42a";}',
711
+ 'view_compact'=> '.icon-view_compact:before {content: "\e42b";}',
712
+ 'view_day'=> '.icon-view_day:before {content: "\e8ed";}',
713
+ 'view_headline'=> '.icon-view_headline:before {content: "\e8ee";}',
714
+ 'view_list'=> '.icon-view_list:before {content: "\e8ef";}',
715
+ 'view_module'=> '.icon-view_module:before {content: "\e8f0";}',
716
+ 'view_quilt'=> '.icon-view_quilt:before {content: "\e8f1";}',
717
+ 'view_stream'=> '.icon-view_stream:before {content: "\e8f2";}',
718
+ 'view_week'=> '.icon-view_week:before {content: "\e8f3";}',
719
+ 'vignette'=> '.icon-vignette:before {content: "\e435";}',
720
+ 'visibility_off'=> '.icon-visibility_off:before {content: "\e8f5";}',
721
+ 'voice_chat'=> '.icon-voice_chat:before {content: "\e62e";}',
722
+ 'voicemail'=> '.icon-voicemail:before {content: "\e0d9";}',
723
+ 'vpn_key'=> '.icon-vpn_key:before {content: "\e0da";}',
724
+ 'vpn_lock'=> '.icon-vpn_lock:before {content: "\e62f";}',
725
+ 'wallpaper'=> '.icon-wallpaper:before {content: "\e1bc";}',
726
+ 'watch'=> '.icon-watch:before {content: "\e334";}',
727
+ 'watch_later'=> '.icon-watch_later:before {content: "\e924";}',
728
+ 'wb_iridescent'=> '.icon-wb_iridescent:before {content: "\e436";}',
729
+ 'wb_sunny'=> '.icon-wb_sunny:before {content: "\e430";}',
730
+ 'wc'=> '.icon-wc:before {content: "\e63d";}',
731
+ 'web'=> '.icon-web:before {content: "\e051";}',
732
+ 'web_asset'=> '.icon-web_asset:before {content: "\e069";}',
733
+ 'weekend'=> '.icon-weekend:before {content: "\e16b";}',
734
+ 'whatshot'=> '.icon-whatshot:before {content: "\e80e";}',
735
+ 'widgets'=> '.icon-widgets:before {content: "\e1bd";}',
736
+ 'wifi'=> '.icon-wifi:before {content: "\e63e";}',
737
+ 'work'=> '.icon-work:before {content: "\e8f9";}',
738
+ 'wrap_text'=> '.icon-wrap_text:before {content: "\e25b";}',
739
+ 'youtube_searched_for'=> '.icon-youtube_searched_for:before {content: "\e8fa";}',
740
+ 'zoom_in'=> '.icon-zoom_in:before {content: "\e8ff";}',
741
+ 'zoom_out'=> '.icon-zoom_out:before {content: "\e901";}',
742
+ 'zoom_out_map'=> '.icon-zoom_out_map:before {content: "\e56b";}',
743
+ 'apple'=> '.icon-apple:before {content: "\e902";}',
744
+ 'bitcoin'=> '.icon-bitcoin:before {content: "\e907";}',
745
+ 'buffer'=> '.icon-buffer:before {content: "\e910";}',
746
+ 'digg'=> '.icon-digg:before {content: "\e919";}',
747
+ 'dribbble'=> '.icon-dribbble:before {content: "\e920";}',
748
+ 'dropbox'=> '.icon-dropbox:before {content: "\e92a";}',
749
+ 'evernote'=> '.icon-evernote:before {content: "\e92c";}',
750
+ 'facebook'=> '.icon-facebook:before {content: "\e92d";}',
751
+ 'feedly'=> '.icon-feedly:before {content: "\e92e";}',
752
+ 'github'=> '.icon-github:before {content: "\e92f";}',
753
+ 'gmail'=> '.icon-gmail:before {content: "\e930";}',
754
+ 'gplus'=> '.icon-gplus:before {content: "\e931";}',
755
+ 'instagram'=> '.icon-instagram:before {content: "\e932";}',
756
+ 'sharing-line'=> '.icon-sharing-line:before {content: "\e933";}',
757
+ 'linkedin'=> '.icon-linkedin:before {content: "\e934";}',
758
+ 'messanger'=> '.icon-messanger:before {content: "\e935";}',
759
+ 'odnoklassniki'=> '.icon-odnoklassniki:before {content: "\e936";}',
760
+ 'pinterest'=> '.icon-pinterest:before {content: "\e937";}',
761
+ 'reddit'=> '.icon-reddit:before {content: "\e938";}',
762
+ 'shopify'=> '.icon-shopify:before {content: "\e93a";}',
763
+ 'weibo'=> '.icon-weibo:before {content: "\e93a";}',
764
+ 'skype'=> '.icon-skype:before {content: "\e93b";}',
765
+ 'slack'=> '.icon-slack:before {content: "\e93c";}',
766
+ 'soundcloud'=> '.icon-soundcloud:before {content: "\e93d";}',
767
+ 'stumbleupon'=> '.icon-stumbleupon:before {content: "\e93e";}',
768
+ 'telegram'=> '.icon-telegram:before {content: "\e93f";}',
769
+ 'tumblr'=> '.icon-tumblr:before {content: "\e940";}',
770
+ 'twitch'=> '.icon-twitch:before {content: "\e941";}',
771
+ 'twitter'=> '.icon-twitter:before {content: "\e942";}',
772
+ 'viber'=> '.icon-viber:before {content: "\e943";}',
773
+ 'vk'=> '.icon-vk:before {content: "\e944";}',
774
+ 'wechat'=> '.icon-wechat:before {content: "\e945";}',
775
+ 'whatsapp'=> '.icon-whatsapp:before {content: "\e946";}',
776
+ 'youtube'=> '.icon-youtube:before {content: "\e947";}',
777
+ 'hatenabookmark'=> '.icon-hatenabookmark:before {content: "\e948";}',
778
+ 'pocket'=> '.icon-pocket:before {content: "\e949";}',
779
+ );
780
+
781
  ?>
includes/includes.php CHANGED
@@ -1,53 +1,53 @@
1
- <?php
2
- /* This file will contain all the extra code that works like a supporting.
3
- 1. Register AMP menu
4
- 1.1 AMP Header menu
5
- 1.2 Footer Menu
6
- 2. Newsletter code
7
- */
8
- // 1. AMP menu code
9
- // Registering Custom AMP menu for this plugin
10
- // 1.1 AMP Header menu
11
- if (! function_exists( 'ampforwp_menu') ) {
12
- function ampforwp_menu() {
13
- register_nav_menus(
14
- array(
15
- 'amp-menu' => __( 'AMP Menu','accelerated-mobile-pages' ),
16
- )
17
- );
18
- }
19
- add_action( 'init', 'ampforwp_menu' );
20
- }
21
-
22
- // 1.2 Footer Menu
23
- add_action( 'init', 'ampforwp_footermenu' );
24
- if ( ! function_exists( 'ampforwp_footermenu') ) {
25
- function ampforwp_footermenu() {
26
- register_nav_menus(
27
- array(
28
- 'amp-footer-menu' => __( 'AMP Footer Menu','accelerated-mobile-pages' ),
29
- )
30
- );
31
- }
32
- }
33
-
34
-
35
- // 2. Newsletter code
36
- require_once( AMPFORWP_PLUGIN_DIR . '/includes/newsletter.php' );
37
-
38
- // 3. Some Extra Styling for Admin area
39
- add_action( 'admin_enqueue_scripts', 'ampforwp_add_admin_styling' );
40
- function ampforwp_add_admin_styling(){
41
- global $redux_builder_amp;
42
- // Style file to add or modify css inside admin area
43
- wp_register_style( 'ampforwp_admin_css', untrailingslashit(AMPFORWP_PLUGIN_DIR_URI) . '/includes/admin-style.css', false, AMPFORWP_VERSION );
44
- wp_enqueue_style( 'ampforwp_admin_css' );
45
-
46
- // Admin area scripts file
47
- wp_register_script( 'ampforwp_admin_js', untrailingslashit(AMPFORWP_PLUGIN_DIR_URI) . '/includes/admin-script.js', false, AMPFORWP_VERSION );
48
-
49
- // Localize the script with new data
50
- wp_localize_script( 'ampforwp_admin_js', 'redux_data', $redux_builder_amp );
51
-
52
- wp_enqueue_script( 'ampforwp_admin_js' );
53
  } ?>
1
+ <?php
2
+ /* This file will contain all the extra code that works like a supporting.
3
+ 1. Register AMP menu
4
+ 1.1 AMP Header menu
5
+ 1.2 Footer Menu
6
+ 2. Newsletter code
7
+ */
8
+ // 1. AMP menu code
9
+ // Registering Custom AMP menu for this plugin
10
+ // 1.1 AMP Header menu
11
+ if (! function_exists( 'ampforwp_menu') ) {
12
+ function ampforwp_menu() {
13
+ register_nav_menus(
14
+ array(
15
+ 'amp-menu' => __( 'AMP Menu','accelerated-mobile-pages' ),
16
+ )
17
+ );
18
+ }
19
+ add_action( 'init', 'ampforwp_menu' );
20
+ }
21
+
22
+ // 1.2 Footer Menu
23
+ add_action( 'init', 'ampforwp_footermenu' );
24
+ if ( ! function_exists( 'ampforwp_footermenu') ) {
25
+ function ampforwp_footermenu() {
26
+ register_nav_menus(
27
+ array(
28
+ 'amp-footer-menu' => __( 'AMP Footer Menu','accelerated-mobile-pages' ),
29
+ )
30
+ );
31
+ }
32
+ }
33
+
34
+
35
+ // 2. Newsletter code
36
+ require_once( AMPFORWP_PLUGIN_DIR . '/includes/newsletter.php' );
37
+
38
+ // 3. Some Extra Styling for Admin area
39
+ add_action( 'admin_enqueue_scripts', 'ampforwp_add_admin_styling' );
40
+ function ampforwp_add_admin_styling(){
41
+ global $redux_builder_amp;
42
+ // Style file to add or modify css inside admin area
43
+ wp_register_style( 'ampforwp_admin_css', untrailingslashit(AMPFORWP_PLUGIN_DIR_URI) . '/includes/admin-style.css', false, AMPFORWP_VERSION );
44
+ wp_enqueue_style( 'ampforwp_admin_css' );
45
+
46
+ // Admin area scripts file
47
+ wp_register_script( 'ampforwp_admin_js', untrailingslashit(AMPFORWP_PLUGIN_DIR_URI) . '/includes/admin-script.js', false, AMPFORWP_VERSION );
48
+
49
+ // Localize the script with new data
50
+ wp_localize_script( 'ampforwp_admin_js', 'redux_data', $redux_builder_amp );
51
+
52
+ wp_enqueue_script( 'ampforwp_admin_js' );
53
  } ?>
includes/modules/ampforwp-blurb.php CHANGED
@@ -1,196 +1,196 @@
1
- <?php class AMPFORWP_Blurb_Widget extends WP_Widget {
2
- /*--------------------------------------------------*/
3
- /* Constructor
4
- /*--------------------------------------------------*/
5
-
6
- /**
7
- * Specifies the classname and description, instantiates the widget,
8
- * loads localization files, and includes necessary stylesheets and JavaScript.
9
- */
10
- public function __construct() {
11
-
12
- // Hooks fired when the Widget is activated and deactivated
13
- register_activation_hook( __FILE__, array( $this, 'activate' ) );
14
- register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
15
-
16
- parent::__construct(
17
- 'ampforwp-blurb',
18
- __( 'AMP Blurb Module', 'accelerated-mobile-pages' ),
19
- array( //
20
- 'classname' => 'ampforwp-blurb',
21
- 'description' => __( 'Displays Icon, headline and description. Best for showing features.', 'accelerated-mobile-pages' )
22
- )
23
- );
24
-
25
- add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
26
-
27
- // Add static written Jquery
28
- // add_action( 'admin_footer', array( $this, 'footer_scritps') );
29
-
30
-
31
- } // end constructor
32
-
33
- /*--------------------------------------------------*/
34
- /* Widget API Functions
35
- /*--------------------------------------------------*/
36
-
37
- /**
38
- * Outputs the content of the widget.
39
- *
40
- * @param array args The array of form elements
41
- * @param array instance The current instance of the widget
42
- */
43
- public function widget( $args, $instance ) {
44
- $output = "";
45
-
46
- extract( $args, EXTR_SKIP );
47
-
48
- $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : '';
49
- $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
50
-
51
- $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array();
52
-
53
-
54
- echo $before_widget;
55
-
56
- $output .= '<div class="amp-wp-content amp_cb_module amp_cb_blurb">';
57
-
58
- if ( $title ) {
59
- $output .= '<div class="amp_module_title"><span>';
60
- $output .= $title;
61
- $output .= '</span></div>';
62
- }
63
-
64
- $output .= '<div class="flex-grid">';
65
-
66
- foreach( $features as $feature ) {
67
- $output .= '<div class="clmn">';
68
- if ( $feature['image'] ) {
69
- $output .= '<img src="'. $feature['image'] .'" height="80" width="80" alt="" />';
70
- }
71
- $output .= '<div class="amp_cb_content">';
72
- $output .= '<h4>'.$feature['title'].'</h4>';
73
- $output .= '<p>'.$feature['description'].'</p>';
74
- $output .= '</div>';
75
- $output .= '</div>';
76
- }
77
- $output .= '</div></div>'; // flex-grid & amp_cb_module
78
- $sanitizer = new AMPFORWP_Content( $output, array(),
79
- apply_filters( 'ampforwp_content_sanitizers',array( 'AMP_Img_Sanitizer' => array(),'AMP_Style_Sanitizer' => array() ) ) );
80
- $sanitized_output = $sanitizer->get_amp_content();
81
-
82
- if( $sanitized_output ) {
83
- echo $sanitized_output;
84
- }
85
-
86
- echo $after_widget;
87
-
88
- } // end widget
89
-
90
- /**
91
- * Processes the widget's options to be saved.
92
- *
93
- * @param array new_instance The new instance of values to be generated via the update.
94
- * @param array old_instance The previous instance of values before the update.
95
- */
96
- public function update( $new_instance, $old_instance ) {
97
-
98
- $instance = $old_instance;
99
-
100
- $instance['title'] = strip_tags($new_instance['title']);
101
-
102
- foreach($new_instance['features'] as $feature){
103
- $feature['title'] = strip_tags($feature['title']);
104
- $feature['description'] = strip_tags($feature['description']);
105
- $feature['image'] = strip_tags($feature['image']);
106
- }
107
- $instance['features'] = $new_instance['features'];
108
-
109
- return $instance;
110
-
111
- } // end widget
112
-
113
- /**
114
- * Generates the administration form for the widget.
115
- *
116
- * @param array instance The array of keys and values for the widget.
117
- */
118
- public function form( $instance ) {
119
-
120
- $instance = wp_parse_args(
121
- (array) $instance
122
- );
123
-
124
- $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?>
125
- <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
126
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
127
-
128
-
129
- <?php
130
-
131
- $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array(); ?>
132
- <span class="ampforwp-blurb-additional">
133
- <?php
134
- $c = 0;
135
- if ( count( $features ) > 0 ) {
136
- foreach( $features as $feature ) {
137
- if ( isset( $feature['title'] ) || isset( $feature['description'] ) ) { ?>
138
- <div class="widget">
139
- <div class="widget-top"><div class="widget-title"><h3><?php echo $feature['title'];?><span class="in-widget-title"></span></h3></div>
140
- </div>
141
-
142
- <div class="widget-inside">
143
- <p>
144
- <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>"><?php _e( 'Title:' ); ?></label>
145
- <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-title'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>" type="text" value="<?php echo $feature['title']; ?>" />
146
- <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][description]'; ?>"><?php _e( 'Description:' ); ?></label>
147
-
148
- <textarea class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-description'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][description]'; ?>" rows="6" cols="50"><?php echo $feature['description']; ?></textarea> <span class="clear"></span>
149
- </p>
150
- <p>
151
- <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]'; ?>"><?php _e( 'Image:' ); ?></label>
152
- <input type="button" class="select-img-<?php echo $c;?> button left" style="width:auto;" value="Select Image" onclick="ampSelectImage('<?php echo $c;?>');"/>
153
- <input type="button" style="display:none" name="removeimg" id="remove-img-<?php echo $c;?>" class="button button-secondary remove-img-button" data-count-type="<?php echo $c;?>" value="Remove Image" onclick="removeImage('<?php echo $c;?>')">
154
- <img src="<?php echo $instance['features']["$c"]['image'] ?>" class="preview-image block-image-<?php echo $c;?>" >
155
- <input type="hidden" id="amp-img-field-<?php echo $c;?>" class="img<?php echo $c;?>" style="width:auto;" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]'; ?>" id="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]';?>'" value="<?php echo $instance['features']["$c"]['image'] ?>" />
156
- </p>
157
- <p> <a class="ampforwp-blurb-remove delete button left"><?php _e('Remove Feature','accelerated-mobile-pages')?></a> </p>
158
- </div>
159
- </div>
160
- <?php
161
- $c = $c +1;
162
- }
163
- }
164
- } ?>
165
- </span>
166
-
167
- <a class="ampforwp-blurb-add button left"> <?php _e('Add Feature','accelerated-mobile-pages'); ?> </a>
168
-
169
- <?php
170
-
171
- } // end form
172
-
173
- /*--------------------------------------------------*/
174
- /* Public Functions
175
- /*--------------------------------------------------*/
176
-
177
- /**
178
- * Registers and enqueues admin-specific JavaScript.
179
- */
180
- public function register_admin_scripts() {
181
-
182
- wp_enqueue_script('media-upload');
183
- wp_enqueue_script('thickbox');
184
- wp_enqueue_style('thickbox');
185
-
186
- wp_enqueue_script( 'ampforwp-builder-script', plugins_url('/modules/js/amp.js' , dirname(__FILE__) ) , array( 'jquery' ), false, true );
187
-
188
- } // end register_admin_scripts
189
-
190
-
191
- } // end class
192
-
193
-
194
- add_action( 'widgets_init', function(){
195
- register_widget( 'AMPFORWP_Blurb_Widget' );
196
  });
1
+ <?php class AMPFORWP_Blurb_Widget extends WP_Widget {
2
+ /*--------------------------------------------------*/
3
+ /* Constructor
4
+ /*--------------------------------------------------*/
5
+
6
+ /**
7
+ * Specifies the classname and description, instantiates the widget,
8
+ * loads localization files, and includes necessary stylesheets and JavaScript.
9
+ */
10
+ public function __construct() {
11
+
12
+ // Hooks fired when the Widget is activated and deactivated
13
+ register_activation_hook( __FILE__, array( $this, 'activate' ) );
14
+ register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
15
+
16
+ parent::__construct(
17
+ 'ampforwp-blurb',
18
+ __( 'AMP Blurb Module', 'accelerated-mobile-pages' ),
19
+ array( //
20
+ 'classname' => 'ampforwp-blurb',
21
+ 'description' => __( 'Displays Icon, headline and description. Best for showing features.', 'accelerated-mobile-pages' )
22
+ )
23
+ );
24
+
25
+ add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
26
+
27
+ // Add static written Jquery
28
+ // add_action( 'admin_footer', array( $this, 'footer_scritps') );
29
+
30
+
31
+ } // end constructor
32
+
33
+ /*--------------------------------------------------*/
34
+ /* Widget API Functions
35
+ /*--------------------------------------------------*/
36
+
37
+ /**
38
+ * Outputs the content of the widget.
39
+ *
40
+ * @param array args The array of form elements
41
+ * @param array instance The current instance of the widget
42
+ */
43
+ public function widget( $args, $instance ) {
44
+ $output = "";
45
+
46
+ extract( $args, EXTR_SKIP );
47
+
48
+ $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : '';
49
+ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
50
+
51
+ $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array();
52
+
53
+
54
+ echo $before_widget;
55
+
56
+ $output .= '<div class="amp-wp-content amp_cb_module amp_cb_blurb">';
57
+
58
+ if ( $title ) {
59
+ $output .= '<div class="amp_module_title"><span>';
60
+ $output .= $title;
61
+ $output .= '</span></div>';
62
+ }
63
+
64
+ $output .= '<div class="flex-grid">';
65
+
66
+ foreach( $features as $feature ) {
67
+ $output .= '<div class="clmn">';
68
+ if ( $feature['image'] ) {
69
+ $output .= '<img src="'. $feature['image'] .'" height="80" width="80" alt="" />';
70
+ }
71
+ $output .= '<div class="amp_cb_content">';
72
+ $output .= '<h4>'.$feature['title'].'</h4>';
73
+ $output .= '<p>'.$feature['description'].'</p>';
74
+ $output .= '</div>';
75
+ $output .= '</div>';
76
+ }
77
+ $output .= '</div></div>'; // flex-grid & amp_cb_module
78
+ $sanitizer = new AMPFORWP_Content( $output, array(),
79
+ apply_filters( 'ampforwp_content_sanitizers',array( 'AMP_Img_Sanitizer' => array(),'AMP_Style_Sanitizer' => array() ) ) );
80
+ $sanitized_output = $sanitizer->get_amp_content();
81
+
82
+ if( $sanitized_output ) {
83
+ echo $sanitized_output;
84
+ }
85
+
86
+ echo $after_widget;
87
+
88
+ } // end widget
89
+
90
+ /**
91
+ * Processes the widget's options to be saved.
92
+ *
93
+ * @param array new_instance The new instance of values to be generated via the update.
94
+ * @param array old_instance The previous instance of values before the update.
95
+ */
96
+ public function update( $new_instance, $old_instance ) {
97
+
98
+ $instance = $old_instance;
99
+
100
+ $instance['title'] = strip_tags($new_instance['title']);
101
+
102
+ foreach($new_instance['features'] as $feature){
103
+ $feature['title'] = strip_tags($feature['title']);
104
+ $feature['description'] = strip_tags($feature['description']);
105
+ $feature['image'] = strip_tags($feature['image']);
106
+ }
107
+ $instance['features'] = $new_instance['features'];
108
+
109
+ return $instance;
110
+
111
+ } // end widget
112
+
113
+ /**
114
+ * Generates the administration form for the widget.
115
+ *
116
+ * @param array instance The array of keys and values for the widget.
117
+ */
118
+ public function form( $instance ) {
119
+
120
+ $instance = wp_parse_args(
121
+ (array) $instance
122
+ );
123
+
124
+ $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?>
125
+ <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
126
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
127
+
128
+
129
+ <?php
130
+
131
+ $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array(); ?>
132
+ <span class="ampforwp-blurb-additional">
133
+ <?php
134
+ $c = 0;
135
+ if ( count( $features ) > 0 ) {
136
+ foreach( $features as $feature ) {
137
+ if ( isset( $feature['title'] ) || isset( $feature['description'] ) ) { ?>
138
+ <div class="widget">
139
+ <div class="widget-top"><div class="widget-title"><h3><?php echo $feature['title'];?><span class="in-widget-title"></span></h3></div>
140
+ </div>
141
+
142
+ <div class="widget-inside">
143
+ <p>
144
+ <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>"><?php _e( 'Title:' ); ?></label>
145
+ <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-title'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>" type="text" value="<?php echo $feature['title']; ?>" />
146
+ <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][description]'; ?>"><?php _e( 'Description:' ); ?></label>
147
+
148
+ <textarea class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-description'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][description]'; ?>" rows="6" cols="50"><?php echo $feature['description']; ?></textarea> <span class="clear"></span>
149
+ </p>
150
+ <p>
151
+ <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]'; ?>"><?php _e( 'Image:' ); ?></label>
152
+ <input type="button" class="select-img-<?php echo $c;?> button left" style="width:auto;" value="Select Image" onclick="ampSelectImage('<?php echo $c;?>');"/>
153
+ <input type="button" style="display:none" name="removeimg" id="remove-img-<?php echo $c;?>" class="button button-secondary remove-img-button" data-count-type="<?php echo $c;?>" value="Remove Image" onclick="removeImage('<?php echo $c;?>')">
154
+ <img src="<?php echo $instance['features']["$c"]['image'] ?>" class="preview-image block-image-<?php echo $c;?>" >
155
+ <input type="hidden" id="amp-img-field-<?php echo $c;?>" class="img<?php echo $c;?>" style="width:auto;" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]'; ?>" id="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][image]';?>'" value="<?php echo $instance['features']["$c"]['image'] ?>" />
156
+ </p>
157
+ <p> <a class="ampforwp-blurb-remove delete button left"><?php _e('Remove Feature','accelerated-mobile-pages')?></a> </p>
158
+ </div>
159
+ </div>
160
+ <?php
161
+ $c = $c +1;
162
+ }
163
+ }
164
+ } ?>
165
+ </span>
166
+
167
+ <a class="ampforwp-blurb-add button left"> <?php _e('Add Feature','accelerated-mobile-pages'); ?> </a>
168
+
169
+ <?php
170
+
171
+ } // end form
172
+
173
+ /*--------------------------------------------------*/
174
+ /* Public Functions
175
+ /*--------------------------------------------------*/
176
+
177
+ /**
178
+ * Registers and enqueues admin-specific JavaScript.
179
+ */
180
+ public function register_admin_scripts() {
181
+
182
+ wp_enqueue_script('media-upload');
183
+ wp_enqueue_script('thickbox');
184
+ wp_enqueue_style('thickbox');
185
+
186
+ wp_enqueue_script( 'ampforwp-builder-script', plugins_url('/modules/js/amp.js' , dirname(__FILE__) ) , array( 'jquery' ), false, true );
187
+
188
+ } // end register_admin_scripts
189
+
190
+
191
+ } // end class
192
+
193
+
194
+ add_action( 'widgets_init', function(){
195
+ register_widget( 'AMPFORWP_Blurb_Widget' );
196
  });
includes/modules/ampforwp-button.php CHANGED
@@ -1,252 +1,252 @@
1
- <?php class AMPFORWP_Button_Widget extends WP_Widget {
2
-
3
- /*--------------------------------------------------*/
4
- /* Constructor
5
- /*--------------------------------------------------*/
6
-
7
- /**
8
- * Specifies the classname and description, instantiates the widget,
9
- * loads localization files, and includes necessary stylesheets and JavaScript.
10
- */
11
- public function __construct() {
12
-
13
- // Hooks fired when the Widget is activated and deactivated
14
- register_activation_hook( __FILE__, array( $this, 'activate' ) );
15
- register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
16
-
17
- parent::__construct(
18
- 'ampforwp-button',
19
- __( 'AMP Button Module', 'accelerated-mobile-pages' ),
20
- array(
21
- 'classname' => 'ampforwp-button',
22
- 'description' => __( 'Displays Button with text and link options.', 'accelerated-mobile-pages' )
23
- )
24
- );
25
-
26
- add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
27
-
28
- // Add static written Jquery
29
- add_action( 'admin_footer', array( $this, 'footer_scritps') );
30
-
31
-
32
- } // end constructor
33
-
34
- /*--------------------------------------------------*/
35
- /* Widget API Functions
36
- /*--------------------------------------------------*/
37
-
38
- /**
39
- * Outputs the content of the widget.
40
- *
41
- * @param array args The array of form elements
42
- * @param array instance The current instance of the widget
43
- */
44
- public function widget( $args, $instance ) {
45
- $target = "";
46
- $output = "";
47
-
48
- extract( $args, EXTR_SKIP );
49
-
50
- $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Classes' );
51
- $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
52
-
53
- $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array();
54
-
55
-
56
-
57
- echo $before_widget;
58
- $output .= '<div class="amp-wp-content amp_cb_module amp_cb_btn">';
59
-
60
- foreach( $features as $feature ) {
61
-
62
- if ( $feature['radio'] == 'radio-off'){
63
- $target = "_self";
64
- } elseif( $feature['radio'] == 'radio-on' ){
65
- $target = "_blank";
66
- }
67
-
68
- if ( $feature['size'] == '1'){
69
- $size = "s_btn";
70
- } elseif( $feature['size'] == '2' ){
71
- $size = "m_btn";
72
- } elseif( $feature['size'] == '3' ){
73
- $size = "l_btn";
74
- }
75
- //Corrected the URL in button module and breaking of desing and link issue #951 & #972
76
- $output .= '<a href="'.esc_url($feature['url']).'" class="' . $size . '" target="' . $target . '" >'. $feature['title'] .'</a>';
77
- }
78
- $output .= '</div>';
79
-
80
- $sanitizer = new AMPFORWP_Content( $output, array(),
81
- apply_filters( 'ampforwp_content_sanitizers',array( 'AMP_Img_Sanitizer' => array(),'AMP_Style_Sanitizer' => array() ) ) );
82
- $sanitized_output = $sanitizer->get_amp_content();
83
-
84
- if( $sanitized_output ) {
85
- echo $sanitized_output;
86
- }
87
-
88
- echo $after_widget;
89
-
90
- } // end widget
91
-
92
- /**
93
- * Processes the widget's options to be saved.
94
- *
95
- * @param array new_instance The new instance of values to be generated via the update.
96
- * @param array old_instance The previous instance of values before the update.
97
- */
98
- public function update( $new_instance, $old_instance ) {
99
-
100
- $instance = $old_instance;
101
-
102
- $instance['title'] = strip_tags($new_instance['title']);
103
-
104
- foreach($new_instance['features'] as $feature){
105
- $feature['title'] = strip_tags($feature['title']);
106
- $feature['description'] = strip_tags($feature['description']);
107
- $feature['image'] = strip_tags($feature['image']);
108
- }
109
- $instance['features'] = $new_instance['features'];
110
-
111
- return $instance;
112
-
113
- } // end widget
114
-
115
- /**
116
- * Generates the administration form for the widget.
117
- *
118
- * @param array instance The array of keys and values for the widget.
119
- */
120
- public function form( $instance ) {
121
-
122
- $instance = wp_parse_args(
123
- (array) $instance
124
- );
125
-
126
- $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?>
127
- <p> </p>
128
-
129
-
130
- <?php
131
-
132
- $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array(); ?>
133
- <span class="ampforwp-button-additional"> <?php
134
- $c = 0; ?>
135
-
136
- <?php
137
-
138
- if ( count( $features ) > 0 ) {
139
- foreach( $features as $feature ) {
140
- if ( isset( $feature['title'] ) || isset( $feature['description'] ) ) { ?>
141
- <div class="widget">
142
- <div class="widget-top"><div class="widget-title"><h3><?php echo $feature['title'];?><span class="in-widget-title"></span></h3></div>
143
- </div>
144
-
145
- <div class="widget-inside">
146
- <div class="widget-content">
147
- <p>
148
- <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>"><?php _e( 'Button Text:' ); ?></label>
149
- <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-title'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>" type="text" value="<?php echo $feature['title']; ?>" /> </p>
150
-
151
- <p><label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][url]'; ?>"><?php _e( 'Url:' ); ?></label>
152
- <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-url'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][url]'; ?>" type="text" value="<?php echo $feature['url']; ?>" />
153
- </p>
154
-
155
-
156
- <p><label><?php _e('URL Target:'); ?> </label><br />
157
- <label class="radio_label" for="<?php echo $this->get_field_id('id') . "-on"; ?>"><?php _e('New Tab'); ?> </label>
158
- <input class="widefat" id="<?php echo $this->get_field_id('id') . "-on"; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][radio]'; ?>" type="radio" value="radio-on" <?php if ( $feature['radio'] == 'radio-on'): ?> checked <?php endif ?> />
159
-
160
- <label class="radio_label" for="<?php echo $this->get_field_id('id') . "-off"; ?>"> <?php _e('Current'); ?> </label>
161
-
162
- <input class="widefat" id="<?php echo $this->get_field_id('id') . "-off"; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][radio]'; ?>" type="radio" value="radio-off" <?php if ( $feature['radio'] == 'radio-off' || $feature['radio'] == ''): ?> checked <?php endif ?> />
163
- </p>
164
- <!-- done -->
165
- <p>
166
- <label for="<?php echo $this->get_field_id('id') . "-size"; ?>"> <?php _e('Select Size:'); ?> </label>
167
- <select id="<?php echo $this->get_field_id('id') . "-size"; ?>" class="widefat" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][size]'; ?>">
168
- <option value="1" <?php selected( $feature['size'], 1 ); ?>>Small</option>
169
- <option value="2" <?php selected( $feature['size'], 2 ); ?>>Medium</option>
170
- <option value="3" <?php selected( $feature['size'], 3 ); ?>>Large</option>
171
- </select>
172
- </p>
173
-
174
- <p> <a class="ampforwp-button-remove delete button left"><?php _e('Remove Feature','accelerated-mobile-pages')?></a> </p>
175
- </div>
176
- </div>
177
- </div>
178
- <?php
179
- $c = $c +1;
180
- }
181
- }
182
- } ?>
183
- </span>
184
-
185
- <a class="ampforwp-button-add button left"> <?php _e('Add Feature','accelerated-mobile-pages'); ?> </a>
186
- <p> </p>
187
- <?php
188
-
189
- } // end form
190
-
191
- /*--------------------------------------------------*/
192
- /* Public Functions
193
- /*--------------------------------------------------*/
194
-
195
- /**
196
- * Fired when the plugin is activated.
197
- *
198
- * @param boolean $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog.
199
- */
200
- public function activate( $network_wide ) {
201
-
202
- } // end activate
203
-
204
- /**
205
- * Fired when the plugin is deactivated.
206
- *
207
- * @param boolean $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog
208
- */
209
- public function deactivate( $network_wide ) {
210
-
211
- } // end deactivate
212
-
213
- /**
214
- * Registers and enqueues admin-specific styles.
215
- */
216
- public function register_admin_styles() {
217
-
218
- } // end register_admin_styles
219
-
220
- /**
221
- * Registers and enqueues admin-specific JavaScript.
222
- */
223
- public function register_admin_scripts() {
224
-
225
- wp_enqueue_script( 'ampforwp-builder-script', plugins_url('/modules/js/amp.js' , dirname(__FILE__) ) , array( 'jquery' ), false, true );
226
-
227
- } // end register_admin_scripts
228
-
229
- public function footer_scritps() { ?>
230
- <style>.radio_label{}</style>
231
- <?php }
232
-
233
- /**
234
- * Registers and enqueues widget-specific styles.
235
- */
236
- public function register_widget_styles() {
237
-
238
- } // end register_widget_styles
239
-
240
- /**
241
- * Registers and enqueues widget-specific scripts.
242
- */
243
- public function register_widget_scripts() {
244
-
245
- } // end register_widget_scripts
246
-
247
- } // end class
248
-
249
-
250
- add_action( 'widgets_init', function(){
251
- register_widget( 'AMPFORWP_Button_Widget' );
252
  });
1
+ <?php class AMPFORWP_Button_Widget extends WP_Widget {
2
+
3
+ /*--------------------------------------------------*/
4
+ /* Constructor
5
+ /*--------------------------------------------------*/
6
+
7
+ /**
8
+ * Specifies the classname and description, instantiates the widget,
9
+ * loads localization files, and includes necessary stylesheets and JavaScript.
10
+ */
11
+ public function __construct() {
12
+
13
+ // Hooks fired when the Widget is activated and deactivated
14
+ register_activation_hook( __FILE__, array( $this, 'activate' ) );
15
+ register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
16
+
17
+ parent::__construct(
18
+ 'ampforwp-button',
19
+ __( 'AMP Button Module', 'accelerated-mobile-pages' ),
20
+ array(
21
+ 'classname' => 'ampforwp-button',
22
+ 'description' => __( 'Displays Button with text and link options.', 'accelerated-mobile-pages' )
23
+ )
24
+ );
25
+
26
+ add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
27
+
28
+ // Add static written Jquery
29
+ add_action( 'admin_footer', array( $this, 'footer_scritps') );
30
+
31
+
32
+ } // end constructor
33
+
34
+ /*--------------------------------------------------*/
35
+ /* Widget API Functions
36
+ /*--------------------------------------------------*/
37
+
38
+ /**
39
+ * Outputs the content of the widget.
40
+ *
41
+ * @param array args The array of form elements
42
+ * @param array instance The current instance of the widget
43
+ */
44
+ public function widget( $args, $instance ) {
45
+ $target = "";
46
+ $output = "";
47
+
48
+ extract( $args, EXTR_SKIP );
49
+
50
+ $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Classes' );
51
+ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
52
+
53
+ $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array();
54
+
55
+
56
+
57
+ echo $before_widget;
58
+ $output .= '<div class="amp-wp-content amp_cb_module amp_cb_btn">';
59
+
60
+ foreach( $features as $feature ) {
61
+
62
+ if ( $feature['radio'] == 'radio-off'){
63
+ $target = "_self";
64
+ } elseif( $feature['radio'] == 'radio-on' ){
65
+ $target = "_blank";
66
+ }
67
+
68
+ if ( $feature['size'] == '1'){
69
+ $size = "s_btn";
70
+ } elseif( $feature['size'] == '2' ){
71
+ $size = "m_btn";
72
+ } elseif( $feature['size'] == '3' ){
73
+ $size = "l_btn";
74
+ }
75
+ //Corrected the URL in button module and breaking of desing and link issue #951 & #972
76
+ $output .= '<a href="'.esc_url($feature['url']).'" class="' . $size . '" target="' . $target . '" >'. $feature['title'] .'</a>';
77
+ }
78
+ $output .= '</div>';
79
+
80
+ $sanitizer = new AMPFORWP_Content( $output, array(),
81
+ apply_filters( 'ampforwp_content_sanitizers',array( 'AMP_Img_Sanitizer' => array(),'AMP_Style_Sanitizer' => array() ) ) );
82
+ $sanitized_output = $sanitizer->get_amp_content();
83
+
84
+ if( $sanitized_output ) {
85
+ echo $sanitized_output;
86
+ }
87
+
88
+ echo $after_widget;
89
+
90
+ } // end widget
91
+
92
+ /**
93
+ * Processes the widget's options to be saved.
94
+ *
95
+ * @param array new_instance The new instance of values to be generated via the update.
96
+ * @param array old_instance The previous instance of values before the update.
97
+ */
98
+ public function update( $new_instance, $old_instance ) {
99
+
100
+ $instance = $old_instance;
101
+
102
+ $instance['title'] = strip_tags($new_instance['title']);
103
+
104
+ foreach($new_instance['features'] as $feature){
105
+ $feature['title'] = strip_tags($feature['title']);
106
+ $feature['description'] = strip_tags($feature['description']);
107
+ $feature['image'] = strip_tags($feature['image']);
108
+ }
109
+ $instance['features'] = $new_instance['features'];
110
+
111
+ return $instance;
112
+
113
+ } // end widget
114
+
115
+ /**
116
+ * Generates the administration form for the widget.
117
+ *
118
+ * @param array instance The array of keys and values for the widget.
119
+ */
120
+ public function form( $instance ) {
121
+
122
+ $instance = wp_parse_args(
123
+ (array) $instance
124
+ );
125
+
126
+ $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?>
127
+ <p> </p>
128
+
129
+
130
+ <?php
131
+
132
+ $features = ( ! empty( $instance['features'] ) ) ? $instance['features'] : array(); ?>
133
+ <span class="ampforwp-button-additional"> <?php
134
+ $c = 0; ?>
135
+
136
+ <?php
137
+
138
+ if ( count( $features ) > 0 ) {
139
+ foreach( $features as $feature ) {
140
+ if ( isset( $feature['title'] ) || isset( $feature['description'] ) ) { ?>
141
+ <div class="widget">
142
+ <div class="widget-top"><div class="widget-title"><h3><?php echo $feature['title'];?><span class="in-widget-title"></span></h3></div>
143
+ </div>
144
+
145
+ <div class="widget-inside">
146
+ <div class="widget-content">
147
+ <p>
148
+ <label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>"><?php _e( 'Button Text:' ); ?></label>
149
+ <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-title'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][title]'; ?>" type="text" value="<?php echo $feature['title']; ?>" /> </p>
150
+
151
+ <p><label for="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][url]'; ?>"><?php _e( 'Url:' ); ?></label>
152
+ <input class="widefat" id="<?php echo $this->get_field_id( 'features' ) .'-'. $c.'-url'; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][url]'; ?>" type="text" value="<?php echo $feature['url']; ?>" />
153
+ </p>
154
+
155
+
156
+ <p><label><?php _e('URL Target:'); ?> </label><br />
157
+ <label class="radio_label" for="<?php echo $this->get_field_id('id') . "-on"; ?>"><?php _e('New Tab'); ?> </label>
158
+ <input class="widefat" id="<?php echo $this->get_field_id('id') . "-on"; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][radio]'; ?>" type="radio" value="radio-on" <?php if ( $feature['radio'] == 'radio-on'): ?> checked <?php endif ?> />
159
+
160
+ <label class="radio_label" for="<?php echo $this->get_field_id('id') . "-off"; ?>"> <?php _e('Current'); ?> </label>
161
+
162
+ <input class="widefat" id="<?php echo $this->get_field_id('id') . "-off"; ?>" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][radio]'; ?>" type="radio" value="radio-off" <?php if ( $feature['radio'] == 'radio-off' || $feature['radio'] == ''): ?> checked <?php endif ?> />
163
+ </p>
164
+ <!-- done -->
165
+ <p>
166
+ <label for="<?php echo $this->get_field_id('id') . "-size"; ?>"> <?php _e('Select Size:'); ?> </label>
167
+ <select id="<?php echo $this->get_field_id('id') . "-size"; ?>" class="widefat" name="<?php echo $this->get_field_name( 'features' ) . '['.$c.'][size]'; ?>">
168
+ <option value="1" <?php selected( $feature['size'], 1 ); ?>>Small</option>
169
+ <option value="2" <?php selected( $feature['size'], 2 ); ?>>Medium</option>
170
+ <option value="3" <?php selected( $feature['size'], 3 ); ?>>Large</option>
171
+ </select>
172
+ </p>
173
+
174
+ <p> <a class="ampforwp-button-remove delete button left"><?php _e('Remove Feature','accelerated-mobile-pages')?></a> </p>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ <?php
179
+ $c = $c +1;
180
+ }
181
+ }
182
+ } ?>
183
+ </span>
184
+
185
+ <a class="ampforwp-button-add button left"> <?php _e('Add Feature','accelerated-mobile-pages'); ?> </a>
186
+ <p> </p>
187
+ <?php
188
+
189
+ } // end form
190
+
191
+ /*--------------------------------------------------*/
192
+ /* Public Functions
193
+ /*--------------------------------------------------*/
194
+
195
+ /**
196
+ * Fired when the plugin is activated.
197
+ *
198
+ * @param boolean $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog.
199
+ */
200
+ public function activate( $network_wide ) {
201
+
202
+ } // end activate
203
+
204
+ /**
205
+ * Fired when the plugin is deactivated.
206
+ *
207
+ * @param boolean $network_wide True if WPMU superadmin uses "Network Activate" action, false if WPMU is disabled or plugin is activated on an individual blog
208
+ */
209
+ public function deactivate( $network_wide ) {
210
+
211
+ } // end deactivate
212
+
213
+ /**
214
+ * Registers and enqueues admin-specific styles.
215
+ */
216
+ public function register_admin_styles() {
217
+
218
+ } // end register_admin_styles
219
+
220
+ /**
221
+ * Registers and enqueues admin-specific JavaScript.
222
+ */
223
+ public function register_admin_scripts() {
224
+
225
+ wp_enqueue_script( 'ampforwp-builder-script', plugins_url('/modules/js/amp.js' , dirname(__FILE__) ) , array( 'jquery' ), false, true );
226
+
227
+ } // end register_admin_scripts
228
+
229
+ public function footer_scritps() { ?>
230
+ <style>.radio_label{}</style>
231
+ <?php }
232
+
233
+ /**
234
+ * Registers and enqueues widget-specific styles.
235
+ */
236
+ public function register_widget_styles() {
237
+
238
+ } // end register_widget_styles
239
+
240
+ /**
241
+ * Registers and enqueues widget-specific scripts.
242
+ */
243
+ public function register_widget_scripts() {
244
+
245
+ } // end register_widget_scripts
246
+
247
+ } // end class
248
+
249
+
250
+ add_action( 'widgets_init', function(){
251
+ register_widget( 'AMPFORWP_Button_Widget' );
252
  });
includes/modules/js/amp.js CHANGED
@@ -1,158 +1,158 @@
1
- jQuery(document).ready(function($) {
2
- var count = 0;
3
-
4
- //For Blurb Module
5
- jQuery(".ampforwp-blurb-add").live('click', function(e) {
6
- console.log('click');
7
-
8
- event.preventDefault();
9
- var additional = $(this).parent().parent().find('.ampforwp-blurb-additional');
10
- var container = $(this).parent().parent().parent().parent();
11
- var container_class = container.attr('id');
12
- var container_class_array = container_class.split("ampforwp-blurb-").reverse();
13
- var instance = container_class_array[0];
14
- var add = $(this).parent().parent().find('.ampforwp-blurb-add');
15
- count = additional.find('.widget-top').length;
16
-
17
- additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-blurb['+instance+'][features]['+count+'][title]">Title</label>'+
18
- '<input class="widefat" id="widget-ampforwp-blurb-'+instance+'-features-'+count+'-title" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][title]" type="text" value="Heart Of The Landing Page" />'+
19
- '<label for="widget-ampforwp-blurb['+instance+'][features]['+count+'][description]">Description</label>'+
20
- '<textarea class="widefat" id="widget-ampforwp-blurb-'+instance+'-features-'+count+'-description" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][description]" rows=\'6\' cols=\'50\'>This is a sample text which is being used for the dummy purpose to avoid confusion.</textarea> <span class="clear"></span></p>' + '<p> <label for=""> Image: </label><input type="button" class="select-img-'+count+' button left" style="width:auto;" value="Select Image" onclick="ampSelectImage('+count+');"/><input type="button" style="display:none" name="removeimg" id="remove-img-'+count+'" class="button button-secondary remove-img-button" data-count-type="'+count+'" value="Remove Image" onclick="removeImage('+count+')"><img src="http://i.imgur.com/5nPXqZG.png" class="preview-image block-image-'+count+'" >' + '<input type="hidden" id="amp-img-field-'+count+'" class="img'+count+'" style="width:auto;" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][image]" id="'+instance+'-features-'+count+'" value="http://i.imgur.com/5nPXqZG.png" /></p>' + ' <p> <a class="ampforwp-blurb-remove delete button left">Remove Feature</a></p></div></div>');
21
- });
22
- jQuery(".ampforwp-blurb-remove").live('click', function() {
23
- jQuery(this).parent().parent().parent().remove();
24
- });
25
-
26
- //For Text Module
27
- jQuery(".ampforwp-text-add").live('click', function(e) {
28
- console.log('click');
29
-
30
- event.preventDefault();
31
- var additional = $(this).parent().parent().find('.ampforwp-text-additional');
32
- var container = $(this).parent().parent().parent().parent();
33
- var container_class = container.attr('id');
34
- var container_class_array = container_class.split("ampforwp-text-").reverse();
35
- var instance = container_class_array[0];
36
- var add = $(this).parent().parent().find('.ampforwp-text-add');
37
- count = additional.find('.widget-top').length;
38
-
39
- additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-text['+instance+'][features]['+count+'][title]">Title</label>'+
40
- '<input class="widefat" id="widget-ampforwp-text-'+instance+'-features-'+count+'-title" name="widget-ampforwp-text['+instance+'][features]['+count+'][title]" type="text" value="This is the default title" />'+
41
- '<label for="widget-ampforwp-text['+instance+'][features]['+count+'][description]">Description</label>'+
42
- '<textarea class="widefat" id="widget-ampforwp-text-'+instance+'-features-'+count+'-description" name="widget-ampforwp-text['+instance+'][features]['+count+'][description]" rows=\'6\' cols=\'50\'>This is the description added by default </textarea> <span class="clear"></span></p>' + ' <p> <a class="ampforwp-text-remove delete button left">Remove Feature</a></p></div></div>' );
43
- });
44
- jQuery(".ampforwp-text-remove").live('click', function() {
45
- jQuery(this).parent().parent().parent().remove();
46
- });
47
-
48
- //For Button Module
49
- jQuery(".ampforwp-button-add").live('click', function(e) {
50
- console.log('click');
51
-
52
- event.preventDefault();
53
- var additional = $(this).parent().parent().find('.ampforwp-button-additional');
54
- var container = $(this).parent().parent().parent().parent();
55
- var container_class = container.attr('id');
56
- var container_class_array = container_class.split("ampforwp-button-").reverse();
57
- var instance = container_class_array[0];
58
- var add = $(this).parent().parent().find('.ampforwp-button-add');
59
- count = additional.find('.widget-top').length;
60
-
61
- additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-button['+instance+'][features]['+count+'][title]">Button Text</label>'+
62
-
63
- //Text Fields
64
- '<input class="widefat" id="widget-ampforwp-button-'+instance+'-features-'+count+'-title" name="widget-ampforwp-button['+instance+'][features]['+count+'][title]" type="text" value="Click Here" /></p>'+
65
-
66
- '<p><label for="widget-ampforwp-button['+instance+'][features]['+count+'][url]">Url:</label>'+
67
- '<input class="widefat" id="widget-ampforwp-button-'+instance+'-features-'+count+'-url" name="widget-ampforwp-button['+instance+'][features]['+count+'][url]" type="text" value="#" /></p>' +
68
- // Radio
69
- '<p> <label>URL Target:</label> <br />'+
70
-
71
- '<label for="widget-ampforwp-button['+instance+'][features]['+count+']'+"-on"+'">New Tab </label>'+
72
- '<input class="widefat" id="widget-ampforwp-button['+instance+'][features]['+count+']'+"-on"+'" name="widget-ampforwp-button['+instance+'][features]['+count+']'+'[radio]" type="radio" value="radio-on" />'+
73
- '<label for="widget-ampforwp-button['+instance+'][features]['+count+']'+"-off"+'">Current </label>'+
74
- '<input class="widefat" id="widget-ampforwp-button['+instance+'][features]['+count+']'+"-off"+'" name="widget-ampforwp-button['+instance+'][features]['+count+']'+'[radio]" type="radio" checked value="radio-off" /></p>'+
75
- // Select
76
- '<p> <label for="widget-ampforwp-button['+instance+']'+"-id-size"+'">Select Size:</label>'+
77
- '<select id="widget-ampforwp-button-'+instance+'-id-size" class="widefat" name="widget-ampforwp-button['+instance+'][features]['+count+'][size]"> <option value="1">Small</option> <option value="2">Medium</option> <option value="3">Large</option> </select> </p>'+
78
-
79
- '<p> <a class="ampforwp-button-remove delete button left">Remove Feature</a></p></div></div>' );
80
- });
81
-
82
-
83
- jQuery(".ampforwp-button-remove").live('click', function() {
84
- jQuery(this).parent().parent().parent().remove();
85
- });
86
-
87
- // Tiny Mce code
88
- // $(document).on('widget-updated', function(event, widget){
89
- // var widget_id = $(widget).attr('id');
90
- // $('#'+widget_id + ' .switch-tmce').hide();
91
- // });
92
-
93
- remove_button = jQuery('.remove-img-button');
94
-
95
- remove_button.on('click', function(e) {
96
-
97
- id = jQuery(this).attr('data-count-type')
98
-
99
- imageToRemove = jQuery('.block-image-'+ id);
100
-
101
- imageToRemove.attr('src','');
102
-
103
- // remove_image_button_activation( id );
104
-
105
- });
106
-
107
-
108
- function remove_image_button_activation( id ) {
109
-
110
- var currentImage = jQuery('.block-image-'+id).attr('src');
111
-
112
-
113
- console.log(id );
114
-
115
- if ( currentImage == undefined ) {
116
- jQuery('#remove-img-'+id).hide();
117
- } else {
118
- jQuery('#remove-img-'+id).show();
119
- }
120
- }
121
-
122
-
123
-
124
-
125
- });
126
-
127
- var image_field1, image_field2, image_field3;
128
-
129
- function ampSelectImage(count){
130
-
131
- image_field1 = jQuery('#amp-img-field-'+count);
132
- image_field2 = jQuery('.block-image-'+count);
133
- image_field3 = jQuery('#remove-img-'+count);
134
-
135
-
136
- imageSource = image_field2.attr('src');
137
-
138
- if ( imageSource ) {
139
- image_field3.show();
140
- }
141
-
142
- tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true');
143
- window.send_to_editor = function(html) {
144
-
145
-
146
- if(image_field1 != undefined){
147
- imgurl = jQuery("<div>" + html + "</div>").find('img').attr('src');
148
-
149
-
150
- image_field1.val(imgurl);
151
- image_field2.attr('src',imgurl);
152
- image_field2.show();
153
- image_field3.show();
154
- tb_remove();
155
- }
156
- }
157
- return false;
158
- }
1
+ jQuery(document).ready(function($) {
2
+ var count = 0;
3
+
4
+ //For Blurb Module
5
+ jQuery(".ampforwp-blurb-add").live('click', function(e) {
6
+ console.log('click');
7
+
8
+ event.preventDefault();
9
+ var additional = $(this).parent().parent().find('.ampforwp-blurb-additional');
10
+ var container = $(this).parent().parent().parent().parent();
11
+ var container_class = container.attr('id');
12
+ var container_class_array = container_class.split("ampforwp-blurb-").reverse();
13
+ var instance = container_class_array[0];
14
+ var add = $(this).parent().parent().find('.ampforwp-blurb-add');
15
+ count = additional.find('.widget-top').length;
16
+
17
+ additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-blurb['+instance+'][features]['+count+'][title]">Title</label>'+
18
+ '<input class="widefat" id="widget-ampforwp-blurb-'+instance+'-features-'+count+'-title" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][title]" type="text" value="Heart Of The Landing Page" />'+
19
+ '<label for="widget-ampforwp-blurb['+instance+'][features]['+count+'][description]">Description</label>'+
20
+ '<textarea class="widefat" id="widget-ampforwp-blurb-'+instance+'-features-'+count+'-description" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][description]" rows=\'6\' cols=\'50\'>This is a sample text which is being used for the dummy purpose to avoid confusion.</textarea> <span class="clear"></span></p>' + '<p> <label for=""> Image: </label><input type="button" class="select-img-'+count+' button left" style="width:auto;" value="Select Image" onclick="ampSelectImage('+count+');"/><input type="button" style="display:none" name="removeimg" id="remove-img-'+count+'" class="button button-secondary remove-img-button" data-count-type="'+count+'" value="Remove Image" onclick="removeImage('+count+')"><img src="http://i.imgur.com/5nPXqZG.png" class="preview-image block-image-'+count+'" >' + '<input type="hidden" id="amp-img-field-'+count+'" class="img'+count+'" style="width:auto;" name="widget-ampforwp-blurb['+instance+'][features]['+count+'][image]" id="'+instance+'-features-'+count+'" value="http://i.imgur.com/5nPXqZG.png" /></p>' + ' <p> <a class="ampforwp-blurb-remove delete button left">Remove Feature</a></p></div></div>');
21
+ });
22
+ jQuery(".ampforwp-blurb-remove").live('click', function() {
23
+ jQuery(this).parent().parent().parent().remove();
24
+ });
25
+
26
+ //For Text Module
27
+ jQuery(".ampforwp-text-add").live('click', function(e) {
28
+ console.log('click');
29
+
30
+ event.preventDefault();
31
+ var additional = $(this).parent().parent().find('.ampforwp-text-additional');
32
+ var container = $(this).parent().parent().parent().parent();
33
+ var container_class = container.attr('id');
34
+ var container_class_array = container_class.split("ampforwp-text-").reverse();
35
+ var instance = container_class_array[0];
36
+ var add = $(this).parent().parent().find('.ampforwp-text-add');
37
+ count = additional.find('.widget-top').length;
38
+
39
+ additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-text['+instance+'][features]['+count+'][title]">Title</label>'+
40
+ '<input class="widefat" id="widget-ampforwp-text-'+instance+'-features-'+count+'-title" name="widget-ampforwp-text['+instance+'][features]['+count+'][title]" type="text" value="This is the default title" />'+
41
+ '<label for="widget-ampforwp-text['+instance+'][features]['+count+'][description]">Description</label>'+
42
+ '<textarea class="widefat" id="widget-ampforwp-text-'+instance+'-features-'+count+'-description" name="widget-ampforwp-text['+instance+'][features]['+count+'][description]" rows=\'6\' cols=\'50\'>This is the description added by default </textarea> <span class="clear"></span></p>' + ' <p> <a class="ampforwp-text-remove delete button left">Remove Feature</a></p></div></div>' );
43
+ });
44
+ jQuery(".ampforwp-text-remove").live('click', function() {
45
+ jQuery(this).parent().parent().parent().remove();
46
+ });
47
+
48
+ //For Button Module
49
+ jQuery(".ampforwp-button-add").live('click', function(e) {
50
+ console.log('click');
51
+
52
+ event.preventDefault();
53
+ var additional = $(this).parent().parent().find('.ampforwp-button-additional');
54
+ var container = $(this).parent().parent().parent().parent();
55
+ var container_class = container.attr('id');
56
+ var container_class_array = container_class.split("ampforwp-button-").reverse();
57
+ var instance = container_class_array[0];
58
+ var add = $(this).parent().parent().find('.ampforwp-button-add');
59
+ count = additional.find('.widget-top').length;
60
+
61
+ additional.append('<div class="widget"><div class="widget-top"><div class="widget-title-action"> </div> <div class="widget-title"><h3> New Module<span class="in-widget-title"></span></h3></div></div><div class="widget-inside"><p><label for="widget-ampforwp-button['+instance+'][features]['+count+'][title]">Button Text</label>'+
62
+
63
+ //Text Fields
64
+ '<input class="widefat" id="widget-ampforwp-button-'+instance+'-features-'+count+'-title" name="widget-ampforwp-button['+instance+'][features]['+count+'][title]" type="text" value="Click Here" /></p>'+
65
+
66
+ '<p><label for="widget-ampforwp-button['+instance+'][features]['+count+'][url]">Url:</label>'+
67
+ '<input class="widefat" id="widget-ampforwp-button-'+instance+'-features-'+count+'-url" name="widget-ampforwp-button['+instance+'][features]['+count+'][url]" type="text" value="#" /></p>' +
68
+ // Radio
69
+ '<p> <label>URL Target:</label> <br />'+
70
+
71
+ '<label for="widget-ampforwp-button['+instance+'][features]['+count+']'+"-on"+'">New Tab </label>'+
72
+ '<input class="widefat" id="widget-ampforwp-button['+instance+'][features]['+count+']'+"-on"+'" name="widget-ampforwp-button['+instance+'][features]['+count+']'+'[radio]" type="radio" value="radio-on" />'+
73
+ '<label for="widget-ampforwp-button['+instance+'][features]['+count+']'+"-off"+'">Current </label>'+
74
+ '<input class="widefat" id="widget-ampforwp-button['+instance+'][features]['+count+']'+"-off"+'" name="widget-ampforwp-button['+instance+'][features]['+count+']'+'[radio]" type="radio" checked value="radio-off" /></p>'+
75
+ // Select
76
+ '<p> <label for="widget-ampforwp-button['+instance+']'+"-id-size"+'">Select Size:</label>'+
77
+ '<select id="widget-ampforwp-button-'+instance+'-id-size" class="widefat" name="widget-ampforwp-button['+instance+'][features]['+count+'][size]"> <option value="1">Small</option> <option value="2">Medium</option> <option value="3">Large</option> </select> </p>'+
78
+
79
+ '<p> <a class="ampforwp-button-remove delete button left">Remove Feature</a></p></div></div>' );
80
+ });
81
+
82
+
83
+ jQuery(".ampforwp-button-remove").live('click', function() {
84
+ jQuery(this).parent().parent().parent().remove();
85
+ });
86
+
87
+ // Tiny Mce code
88
+ // $(document).on('widget-updated', function(event, widget){
89
+ // var widget_id = $(widget).attr('id');
90
+ // $('#'+widget_id + ' .switch-tmce').hide();
91
+ // });
92
+
93
+ remove_button = jQuery('.remove-img-button');
94
+
95
+ remove_button.on('click', function(e) {
96
+
97
+ id = jQuery(this).attr('data-count-type')
98
+
99
+ imageToRemove = jQuery('.block-image-'+ id);
100
+
101
+ imageToRemove.attr('src','');
102
+
103
+ // remove_image_button_activation( id );
104
+
105
+ });
106
+
107
+
108
+ function remove_image_button_activation( id ) {
109
+
110
+ var currentImage = jQuery('.block-image-'+id).attr('src');
111
+
112
+
113
+ console.log(id );
114
+
115
+ if ( currentImage == undefined ) {
116
+ jQuery('#remove-img-'+id).hide();
117
+ } else {
118
+ jQuery('#remove-img-'+id).show();
119
+ }
120
+ }
121
+
122
+
123
+
124
+
125
+ });
126
+
127
+ var image_field1, image_field2, image_field3;
128
+
129
+ function ampSelectImage(count){
130
+
131
+ image_field1 = jQuery('#amp-img-field-'+count);
132
+ image_field2 = jQuery('.block-image-'+count);
133
+ image_field3 = jQuery('#remove-img-'+count);
134
+
135
+
136
+ imageSource = image_field2.attr('src');
137
+
138
+ if ( imageSource ) {
139
+ image_field3.show();
140
+ }
141
+
142
+ tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true');
143
+ window.send_to_editor = function(html) {
144
+
145
+
146
+ if(image_field1 != undefined){
147
+ imgurl = jQuery("<div>" + html + "</div>").find('img').attr('src');
148
+
149
+
150
+ image_field1.val(imgurl);
151
+ image_field2.attr('src',imgurl);
152
+ image_field2.show();
153
+ image_field3.show();
154
+ tb_remove();
155
+ }
156
+ }
157
+ return false;
158
+ }
includes/newsletter.php CHANGED
@@ -1,132 +1,132 @@
1
- <?php class ampforwp_pointers {
2
- const DISPLAY_VERSION = 'v1.0';
3
- function __construct () {
4
- add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
5
- }
6
- function admin_enqueue_scripts () {
7
- $dismissed = explode (',', get_user_meta (wp_get_current_user ()->ID, 'dismissed_wp_pointers', true));
8
- $do_tour = !in_array ('ampforwp_subscribe_pointer', $dismissed);
9
- if ($do_tour) {
10
- wp_enqueue_style ('wp-pointer');
11
- wp_enqueue_script ('wp-pointer');
12
-
13
- add_action('admin_print_footer_scripts', array($this, 'admin_print_footer_scripts'));
14
- add_action('admin_head', array($this, 'admin_head')); // Hook to admin head
15
- }
16
- }
17
- function admin_head () {
18
- ?>
19
- <style type="text/css" media="screen"> #pointer-primary { margin: 0 5px 0 0; } </style>
20
- <?php }
21
- function admin_print_footer_scripts () {
22
- global $pagenow;
23
- global $current_user;
24
- $tour = array ();
25
- $tab = isset($_GET['tab']) ? $_GET['tab'] : '';
26
- $function = '';
27
- $button2 = '';
28
- $options = array ();
29
- $show_pointer = false;
30
-
31
- if (!array_key_exists($tab, $tour)) {
32
-
33
- $show_pointer = true;
34
- $file_error = true;
35
-
36
- $id = '#toplevel_page_amp_options'; // Define ID used on page html element where we want to display pointer
37
- $content = '<h3>' . sprintf (__('You are awesome for using AMP!', 'accelerated-mobile-pages'), self::DISPLAY_VERSION) . '</h3>';
38
- $content .= __('<p>Do you want the latest on <b>AMP update</b> before others and some best resources on AMP in a single email? - Free just for users of AMP!</p>', 'accelerated-mobile-pages');
39
- $content .= __('
40
- <!-- Begin MailChimp Signup Form -->
41
- <style type="text/css">
42
- .wp-pointer-buttons{ padding:0; overflow: hidden; }
43
- .wp-pointer-content .button-secondary{ left: -25px;background: transparent;top: 5px; border: 0;position: relative; padding: 0; box-shadow: none;margin: 0;color: #0085ba;} .wp-pointer-content .button-primary{ display:none} #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
44
- </style>
45
- <div id="mc_embed_signup">
46
- <form action="//app.mailerlite.com/webforms/submit/d3w0e1" data-id="258182" data-code="d3w0e1" method="POST" target="_blank">
47
- <div id="mc_embed_signup_scroll">
48
- <div class="mc-field-group" style=" margin-left: 15px; width: 195px; float: left;">
49
- <input type="text" name="fields[name]" class="form-control" placeholder="Name" hidden value="' . esc_attr( $current_user->display_name ) . '" style="display:none">
50
-
51
- <input type="text" value="' . esc_attr( $current_user->user_email ) . '" name="fields[email]" class="form-control" placeholder="Email*" style=" width: 180px; padding: 6px 5px;">
52
-
53
- <input type="text" name="fields[company]" class="form-control" placeholder="Website" hidden style=" display:none; width: 168px; padding: 6px 5px;" value="' . esc_attr( get_home_url() ) . '">
54
-
55
- <input type="hidden" name="ml-submit" value="1" />
56
- </div>
57
- <div id="mce-responses">
58
- <div class="response" id="mce-error-response" style="display:none"></div>
59
- <div class="response" id="mce-success-response" style="display:none"></div>
60
- </div>
61
- <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
62
- <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_a631df13442f19caede5a5baf_c9a71edce6" tabindex="-1" value=""></div>
63
- <input type="submit" value="Subscribe" name="subscribe" id="pointer-close" class="button mc-newsletter-sent" style=" background: #0085ba; border-color: #006799; padding: 0px 16px; text-shadow: 0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799; height: 30px; margin-top: 1px; color: #fff; box-shadow: 0 1px 0 #006799;">
64
- </div>
65
- </form>
66
- </div>','accelerated-mobile-pages');
67
- $options = array (
68
- 'content' => $content,
69
- 'position' => array ('edge' => 'left', 'align' => 'left')
70
- );
71
- }
72
- if ($show_pointer) {
73
- $this->ampforwp_pointer_script ($id, $options, __('No Thanks', 'accelerated-mobile-pages'), $button2, $function);
74
- }
75
- }
76
- function get_admin_url($page, $tab) {
77
- $url = admin_url();
78
- $url .= $page.'?tab='.$tab;
79
- return $url;
80
- }
81
- function ampforwp_pointer_script ($id, $options, $button1, $button2=false, $function='') {
82
- ?>
83
- <script type="text/javascript">
84
- (function ($) {
85
- var wp_pointers_tour_opts = <?php echo json_encode ($options); ?>, setup;
86
- wp_pointers_tour_opts = $.extend (wp_pointers_tour_opts, {
87
- buttons: function (event, t) {
88
- button= jQuery ('<a id="pointer-close" class="button-secondary">' + '<?php echo $button1; ?>' + '</a>');
89
- button_2= jQuery ('#pointer-close.button');
90
- button.bind ('click.pointer', function () {
91
- t.element.pointer ('close');
92
- });
93
- button_2.on('click', function() {
94
- t.element.pointer ('close');
95
- } );
96
- return button;
97
- },
98
- close: function () {
99
- $.post (ajaxurl, {
100
- pointer: 'ampforwp_subscribe_pointer',
101
- action: 'dismiss-wp-pointer'
102
- });
103
- }
104
- });
105
- setup = function () {
106
- $('<?php echo $id; ?>').pointer(wp_pointers_tour_opts).pointer('open');
107
- <?php if ($button2) { ?>
108
- jQuery ('#pointer-close').after ('<a id="pointer-primary" class="button-primary">' + '<?php echo $button2; ?>' + '</a>');
109
- jQuery ('#pointer-primary').click (function () {
110
- <?php echo $function; ?>
111
- });
112
- jQuery ('#pointer-close').click (function () {
113
- $.post (ajaxurl, {
114
- pointer: 'ampforwp_subscribe_pointer',
115
- action: 'dismiss-wp-pointer'
116
- });
117
- })
118
- <?php } ?>
119
- };
120
- if (wp_pointers_tour_opts.position && wp_pointers_tour_opts.position.defer_loading) {
121
- $(window).bind('load.wp-pointers', setup);
122
- }
123
- else {
124
- setup ();
125
- }
126
- }) (jQuery);
127
- </script>
128
- <?php
129
- }
130
- }
131
- $ampforwp_pointers = new ampforwp_pointers();
132
  ?>
1
+ <?php class ampforwp_pointers {
2
+ const DISPLAY_VERSION = 'v1.0';
3
+ function __construct () {
4
+ add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
5
+ }
6
+ function admin_enqueue_scripts () {
7
+ $dismissed = explode (',', get_user_meta (wp_get_current_user ()->ID, 'dismissed_wp_pointers', true));
8
+ $do_tour = !in_array ('ampforwp_subscribe_pointer', $dismissed);
9
+ if ($do_tour) {
10
+ wp_enqueue_style ('wp-pointer');
11
+ wp_enqueue_script ('wp-pointer');
12
+
13
+ add_action('admin_print_footer_scripts', array($this, 'admin_print_footer_scripts'));
14
+ add_action('admin_head', array($this, 'admin_head')); // Hook to admin head
15
+ }
16
+ }
17
+ function admin_head () {
18
+ ?>
19
+ <style type="text/css" media="screen"> #pointer-primary { margin: 0 5px 0 0; } </style>
20
+ <?php }
21
+ function admin_print_footer_scripts () {
22
+ global $pagenow;
23
+ global $current_user;
24
+ $tour = array ();
25
+ $tab = isset($_GET['tab']) ? $_GET['tab'] : '';
26
+ $function = '';
27
+ $button2 = '';
28
+ $options = array ();
29
+ $show_pointer = false;
30
+
31
+ if (!array_key_exists($tab, $tour)) {
32
+
33
+ $show_pointer = true;
34
+ $file_error = true;
35
+
36
+ $id = '#toplevel_page_amp_options'; // Define ID used on page html element where we want to display pointer
37
+ $content = '<h3>' . sprintf (__('You are awesome for using AMP!', 'accelerated-mobile-pages'), self::DISPLAY_VERSION) . '</h3>';
38
+ $content .= __('<p>Do you want the latest on <b>AMP update</b> before others and some best resources on AMP in a single email? - Free just for users of AMP!</p>', 'accelerated-mobile-pages');
39
+ $content .= __('
40
+ <!-- Begin MailChimp Signup Form -->
41
+ <style type="text/css">
42
+ .wp-pointer-buttons{ padding:0; overflow: hidden; }
43
+ .wp-pointer-content .button-secondary{ left: -25px;background: transparent;top: 5px; border: 0;position: relative; padding: 0; box-shadow: none;margin: 0;color: #0085ba;} .wp-pointer-content .button-primary{ display:none} #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
44
+ </style>
45
+ <div id="mc_embed_signup">
46
+ <form action="//app.mailerlite.com/webforms/submit/d3w0e1" data-id="258182" data-code="d3w0e1" method="POST" target="_blank">
47
+ <div id="mc_embed_signup_scroll">
48
+ <div class="mc-field-group" style=" margin-left: 15px; width: 195px; float: left;">
49
+ <input type="text" name="fields[name]" class="form-control" placeholder="Name" hidden value="' . esc_attr( $current_user->display_name ) . '" style="display:none">
50
+
51
+ <input type="text" value="' . esc_attr( $current_user->user_email ) . '" name="fields[email]" class="form-control" placeholder="Email*" style=" width: 180px; padding: 6px 5px;">
52
+
53
+ <input type="text" name="fields[company]" class="form-control" placeholder="Website" hidden style=" display:none; width: 168px; padding: 6px 5px;" value="' . esc_attr( get_home_url() ) . '">
54
+
55
+ <input type="hidden" name="ml-submit" value="1" />
56
+ </div>
57
+ <div id="mce-responses">
58
+ <div class="response" id="mce-error-response" style="display:none"></div>
59
+ <div class="response" id="mce-success-response" style="display:none"></div>
60
+ </div>
61
+ <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
62
+ <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_a631df13442f19caede5a5baf_c9a71edce6" tabindex="-1" value=""></div>
63
+ <input type="submit" value="Subscribe" name="subscribe" id="pointer-close" class="button mc-newsletter-sent" style=" background: #0085ba; border-color: #006799; padding: 0px 16px; text-shadow: 0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799; height: 30px; margin-top: 1px; color: #fff; box-shadow: 0 1px 0 #006799;">
64
+ </div>
65
+ </form>
66
+ </div>','accelerated-mobile-pages');
67
+ $options = array (
68
+ 'content' => $content,
69
+ 'position' => array ('edge' => 'left', 'align' => 'left')
70
+ );
71
+ }
72
+ if ($show_pointer) {
73
+ $this->ampforwp_pointer_script ($id, $options, __('No Thanks', 'accelerated-mobile-pages'), $button2, $function);
74
+ }
75
+ }
76
+ function get_admin_url($page, $tab) {
77
+ $url = admin_url();
78
+ $url .= $page.'?tab='.$tab;
79
+ return $url;
80
+ }
81
+ function ampforwp_pointer_script ($id, $options, $button1, $button2=false, $function='') {
82
+ ?>
83
+ <script type="text/javascript">
84
+ (function ($) {
85
+ var wp_pointers_tour_opts = <?php echo json_encode ($options); ?>, setup;
86
+ wp_pointers_tour_opts = $.extend (wp_pointers_tour_opts, {
87
+ buttons: function (event, t) {
88
+ button= jQuery ('<a id="pointer-close" class="button-secondary">' + '<?php echo $button1; ?>' + '</a>');
89
+ button_2= jQuery ('#pointer-close.button');
90
+ button.bind ('click.pointer', function () {
91
+ t.element.pointer ('close');
92
+ });
93
+ button_2.on('click', function() {
94
+ t.element.pointer ('close');
95
+ } );
96
+ return button;
97
+ },
98
+ close: function () {
99
+ $.post (ajaxurl, {
100
+ pointer: 'ampforwp_subscribe_pointer',
101
+ action: 'dismiss-wp-pointer'
102
+ });
103
+ }
104
+ });
105
+ setup = function () {
106
+ $('<?php echo $id; ?>').pointer(wp_pointers_tour_opts).pointer('open');
107
+ <?php if ($button2) { ?>
108
+ jQuery ('#pointer-close').after ('<a id="pointer-primary" class="button-primary">' + '<?php echo $button2; ?>' + '</a>');
109
+ jQuery ('#pointer-primary').click (function () {
110
+ <?php echo $function; ?>
111
+ });
112
+ jQuery ('#pointer-close').click (function () {
113
+ $.post (ajaxurl, {
114
+ pointer: 'ampforwp_subscribe_pointer',
115
+ action: 'dismiss-wp-pointer'
116
+ });
117
+ })
118
+ <?php } ?>
119
+ };
120
+ if (wp_pointers_tour_opts.position && wp_pointers_tour_opts.position.defer_loading) {
121
+ $(window).bind('load.wp-pointers', setup);
122
+ }
123
+ else {
124
+ setup ();
125
+ }
126
+ }) (jQuery);
127
+ </script>
128
+ <?php
129
+ }
130
+ }
131
+ $ampforwp_pointers = new ampforwp_pointers();
132
  ?>
includes/onesignal-integration/amp-helper-frame.html CHANGED
@@ -1,6 +1,6 @@
1
- <html>
2
- <head></head>
3
- <body>
4
- <script src="https://cdn.onesignal.com/sdks/amp/amp-helper-frame.js"></script>
5
- </body>
6
- </html>
1
+ <html>
2
+ <head></head>
3
+ <body>
4
+ <script src="https://cdn.onesignal.com/sdks/amp/amp-helper-frame.js"></script>
5
+ </body>
6
+ </html>
includes/onesignal-integration/amp-permission-dialog.html CHANGED
@@ -1,6 +1,6 @@
1
- <html>
2
- <head></head>
3
- <body>
4
- <script src="https://cdn.onesignal.com/sdks/amp/amp-permission-dialog.js"></script>
5
- </body>
6
- </html>
1
+ <html>
2
+ <head></head>
3
+ <body>
4
+ <script src="https://cdn.onesignal.com/sdks/amp/amp-permission-dialog.js"></script>
5
+ </body>
6
+ </html>
includes/options/admin-config.php CHANGED
@@ -1,6845 +1,6850 @@
1
- <?php
2
- //Admin Panel Options
3
- if ( ! class_exists( 'Redux' ) ) {
4
- return;
5
- }
6
- // Option name where all the Redux data is stored.
7
- $opt_name = "redux_builder_amp";
8
- $comment_desc = "";
9
- $amptfad = '<strong>DID YOU KNOW?</strong></br ><a href="https://ampforwp.com/amp-theme-framework/" target="_blank">You can create your own <strong>Custom theme with AMP Theme Framework</strong></a>';
10
- // #1093 Display only If AMP Comments is Not Installed
11
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
12
- if(!is_plugin_active( 'amp-comments/amp-comments.php' )){
13
- $comment_AD_URL = "http://ampforwp.com/amp-comments/#utm_source=options-panel&utm_medium=comments-tab&utm_campaign=AMP%20Plugin";
14
- $comment_desc = '<a href="'.$comment_AD_URL.'" target="_blank"><img class="ampforwp-ad-img-banner" src="'.AMPFORWP_IMAGE_DIR . '/comments-banner.png" width="560" height="85" /></a>';
15
- }
16
- // Display only If AMP Cache is Not Installed
17
- $cache_desc ="";
18
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
19
- if(!is_plugin_active( 'amp-cache/ampforwp-cache.php' )){
20
- $cache_AD_URL = "http://ampforwp.com/amp-cache/#utm_source=options-panel&utm_medium=performance-tab&utm_campaign=AMP%20Plugin";
21
- $cache_desc = '<a href="'.$cache_AD_URL.'" target="_blank"><img class="ampforwp-ad-img-banner" src="'.AMPFORWP_IMAGE_DIR . '/amp_cache_b.png" width="560" height="85" /></a>';
22
- }
23
- // If CTA is not Activated
24
- $cta_desc = "";
25
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
26
- if(!is_plugin_active( 'AMP-cta/amp-cta.php' )){
27
- $cta_AD_URL = "http://ampforwp.com/call-to-action/#utm_source=options-panel&utm_medium=call-to-action_banner_in_notification_bar&utm_campaign=AMP%20Plugin";
28
- $cta_desc = '<a href="'.$cta_AD_URL.'" target="_blank"><img class="ampforwp-ad-img-banner" src="'.AMPFORWP_IMAGE_DIR . '/cta-banner.png" width="560" height="85" /></a>';
29
- }
30
- $all_extensions_data = array();
31
- global $all_extensions_data;
32
- $extension_listing_array = array(
33
- array(
34
- 'name'=>'ADS for WP',
35
- 'desc'=>'A Revolutionary way of adding ADS in your WordPress',
36
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
37
- 'price'=>'$29',
38
- 'url_link'=>'http://ampforwp.com/ads-for-wp/#utm_source=options-panel&utm_medium=extension-tab_advanced-amp-ads&utm_campaign=AMP%20Plugin',
39
- 'plugin_active_path'=> 'ads-for-wp/ads-for-wp.php',
40
- 'item_name'=>'ADS for WP',
41
- 'store_url'=>'https://accounts.ampforwp.com',
42
- 'is_activated'=>(is_plugin_active('ads-for-wp/ads-for-wp.php')? 1: 2),
43
- 'settingUrl'=>admin_url('edit.php?post_type=ads-for-wp-ads'),
44
- ),
45
- array(
46
- 'name'=>'Advanced AMP ADS',
47
- 'desc'=>'Add Advertisement directly in the content',
48
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
49
- 'price'=>'$29',
50
- 'url_link'=>'http://ampforwp.com/advanced-amp-ads/#utm_source=options-panel&utm_medium=extension-tab_advanced-amp-ads&utm_campaign=AMP%20Plugin',
51
- 'plugin_active_path'=> 'amp-incontent-ads/amptoolkit-incontent-ads.php',
52
- 'item_name'=>'Advanced AMP Ads',
53
- 'store_url'=>'https://accounts.ampforwp.com',
54
- 'is_activated'=>(is_plugin_active('amp-incontent-ads/amptoolkit-incontent-ads.php')? 1:2),
55
- 'settingUrl'=>'{ampforwp-incontent-ads-subsection}',
56
- ),
57
- array(
58
- 'name'=>'Contact Form 7',
59
- 'desc'=>'Add Contact Us Form in AMP.',
60
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/cf7.png',
61
- 'price'=>'$39',
62
- 'url_link'=>'http://ampforwp.com/contact-form-7/#utm_source=options-panel&utm_medium=extension-tab_cf7&utm_campaign=AMP%20Plugin',
63
- 'plugin_active_path'=> 'amp-cf7/amp-cf7.php',
64
- 'item_name'=>'Contact Form 7 for AMP',
65
- 'store_url'=>'https://accounts.ampforwp.com',
66
- 'is_activated'=>(is_plugin_active('amp-cf7/amp-cf7.php')? 1 : 2),
67
- 'settingUrl'=>'{ampforwp-cf7-subsection}',
68
- ),
69
- array(
70
- 'name'=>'Gravity Forms',
71
- 'desc'=>'Add Gravity Forms Support in AMP.',
72
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/gf.png',
73
- 'price'=>'$79',
74
- 'url_link'=>'http://ampforwp.com/gravity-forms/#utm_source=options-panel&utm_medium=extension-tab_gf&utm_campaign=AMP%20Plugin',
75
- 'plugin_active_path'=> 'amp-gravity-forms/amp-gravity-forms.php',
76
- 'item_name'=>'Gravity Forms',
77
- 'store_url'=>'https://accounts.ampforwp.com',
78
- 'is_activated'=>(is_plugin_active('amp-gravity-forms/amp-gravity-forms.php')? 1 : 2),
79
- 'settingUrl'=>'{ampforwp-gf-subsection}',
80
- ),
81
- array(
82
- 'name'=>'bbPress For AMP',
83
- 'desc'=>'Add bbPress Forum Compatibility to your AMP version',
84
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/cache-icon.png',
85
- 'price'=>'$89',
86
- 'url_link'=>'http://ampforwp.com/bbpress/#utm_source=options-panel&utm_medium=extension-tab_bbpress-for-wordpress&utm_campaign=AMP%20Plugin',
87
- 'plugin_active_path'=> 'bbpress-for-amp/bbpress-for-amp.php',
88
- 'item_name'=>'bbPress for AMP',
89
- 'store_url'=>'https://accounts.ampforwp.com',
90
- 'is_activated'=>(is_plugin_active('bbpress-for-amp/bbpress-for-amp.php')? 1 : 2),
91
- ),
92
- array(
93
- 'name'=>'Ninja Forms for AMP',
94
- 'desc'=>'Add Ninja Forms Support in AMP.',
95
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/nf.png',
96
- 'price'=>'$79',
97
- 'url_link'=>'http://ampforwp.com/ninja-forms/#utm_source=options-panel&utm_medium=extension-tab_gf&utm_campaign=AMP%20Plugin',
98
- 'plugin_active_path'=> 'amp-ninja-forms/amp-ninja-forms.php',
99
- 'item_name'=>'Ninja Forms',
100
- 'store_url'=>'https://accounts.ampforwp.com',
101
- 'is_activated'=>(is_plugin_active('amp-ninja-forms/amp-ninja-forms.php')? 1 : 2),
102
- 'settingUrl'=>'{ampforwp-nf-subsection}',
103
- ),
104
- array(
105
- 'name'=>'WP Forms for AMP',
106
- 'desc'=>'Add WP Forms Support in AMP.',
107
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/wpf.png',
108
- 'price'=>'$79',
109
- 'url_link'=>'http://ampforwp.com/wp-forms/#utm_source=options-panel&utm_medium=extension-tab_gf&utm_campaign=AMP%20Plugin',
110
- 'plugin_active_path'=> 'wp-forms-for-amp/amp-wpforms.php',
111
- 'item_name'=>'WP Forms for AMP',
112
- 'store_url'=>'https://accounts.ampforwp.com',
113
- 'is_activated'=>(is_plugin_active('wp-forms-for-amp/amp-wpforms.php')? 1 : 2),
114
- 'settingUrl'=>'{ampforwp-wpf-subsection}',
115
- ),
116
- array(
117
- 'name'=>'Email Opt-in Forms',
118
- 'desc'=>'Capture Leads with Email Subscription.',
119
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/email.png',
120
- 'price'=>'$79',
121
- 'url_link'=>'http://ampforwp.com/opt-in-forms/#utm_source=options-panel&utm_medium=extension-tab_opt-in-forms&utm_campaign=AMP%20Plugin',
122
- 'plugin_active_path'=> 'amp-optin/amp-optin.php',
123
- 'item_name'=>'Opt-in-Forms for AMP',
124
- 'store_url'=>'https://accounts.ampforwp.com',
125
- 'is_activated'=>(is_plugin_active('amp-optin/amp-optin.php')? 1 : 2),
126
- 'settingUrl'=>'{ampforwp-optin-subsection}'
127
- ),
128
- array(
129
- 'name'=>'AMP Cache',
130
- 'desc'=>'AMP Cache is a Revolutionary Cache System for AMP',
131
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/cache-icon.png',
132
- 'price'=>'$89',
133
- 'url_link'=>'http://ampforwp.com/amp-cache/#utm_source=options-panel&utm_medium=extension-tab_cache&utm_campaign=AMP%20Plugin',
134
- 'plugin_active_path'=> 'amp-cache/ampforwp-cache.php',
135
- 'item_name'=>'AMP Cache',
136
- 'store_url'=>'https://accounts.ampforwp.com',
137
- 'is_activated'=>(is_plugin_active('amp-cache/ampforwp-cache.php')? 1 : 2),
138
- 'settingUrl'=>'{opt-go-amp-cache}',
139
- ),
140
- array(
141
- 'name'=>'PWA For WordPress',
142
- 'desc'=>'Add Progressive Web App support for WordPress website',
143
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/cache-icon.png',
144
- 'price'=>'$89',
145
- 'url_link'=>'http://ampforwp.com/pwa/#utm_source=options-panel&utm_medium=extension-tab_pwa-for-wordpress&utm_campaign=AMP%20Plugin',
146
- 'plugin_active_path'=> 'pwa-for-wordpress/amp-pwa.php',
147
- 'item_name'=>'PWA For WordPress',
148
- 'store_url'=>'https://accounts.ampforwp.com',
149
- 'is_activated'=>(is_plugin_active('pwa-for-wordpress/amp-pwa.php')? 1 : 2),
150
- 'settingUrl'=>admin_url( 'admin.php?page=ampforwp-pwa' ),
151
- ),
152
- array(
153
- 'name'=>'Call To Action (CTA)',
154
- 'desc'=>'Higher Visibility & More Conversions',
155
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/mac-click.png',
156
- 'price'=>'$29',
157
- 'url_link'=>'http://ampforwp.com/call-to-action/#utm_source=options-panel&utm_medium=extension-tab_amp-cta&utm_campaign=AMP%20Plugin',
158
- 'plugin_active_path'=> 'amp-cta/amp-cta.php',
159
- 'item_name'=>'Call To Action for AMP',
160
- 'store_url'=>'https://accounts.ampforwp.com',
161
- 'is_activated'=>(is_plugin_active('amp-cta/amp-cta.php')? 1 : 2),
162
- 'settingUrl'=>'{ampforwp-cta-subsection}',
163
- ),
164
- array(
165
- 'name'=>'AMP WooCommerce Pro',
166
- 'desc'=>'Advanced WooCommerce in AMP in two clicks.',
167
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/woo.png',
168
- 'price'=>'$79',
169
- 'url_link'=>'https://ampforwp.com/woocommerce/',
170
- 'plugin_active_path'=> 'amp-woocommerce-pro/amp-woocommerce.php',
171
- 'item_name'=>'WooCommerce',
172
- 'store_url'=>'https://accounts.ampforwp.com',
173
- 'is_activated'=>(is_plugin_active('amp-woocommerce-pro/amp-woocommerce.php')? 1 : 2),
174
- 'settingUrl'=>'{ampforwp-wcp-subsection}',
175
- ),
176
-
177
- array(
178
- 'name'=> 'EDD for AMP',
179
- 'desc'=> 'EDD compatibility with AMP',
180
- 'img_src'=> AMPFORWP_IMAGE_DIR . '/click.png',
181
- 'price'=> '$19',
182
- 'url_link'=>'https://ampforwp.com/edd-for-amp/',
183
- 'plugin_active_path'=> 'edd-for-amp/edd-for-amp.php',
184
- 'item_name'=>'EDD for AMP',
185
- 'store_url'=>'https://accounts.ampforwp.com',
186
- 'is_activated'=>(is_plugin_active('edd-for-amp/edd-for-amp.php')? 1 : 2),
187
- ),
188
-
189
- array(
190
- 'name'=>'AMP Layouts',
191
- 'desc'=>'layout system built for AMP that makes easy to create your own AMP templates.',
192
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/email.png',
193
- 'price'=>'$89',
194
- 'url_link'=>'https://ampforwp.com/amp-layouts/',
195
- 'plugin_active_path'=> 'amp-layouts/amp-layouts.php',
196
- 'item_name'=>'AMP Layouts',
197
- 'store_url'=>'https://accounts.ampforwp.com',
198
- 'is_activated'=>(is_plugin_active('amp-layouts/amp-layouts.php')? 1 : 2),
199
- 'settingUrl'=>'{amp-theme-settings}',
200
- ),
201
-
202
- array(
203
- 'name'=>'Newspaper AMP Theme',
204
- 'desc'=>'Advanced News Magazine theme built for AMP.',
205
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
206
- 'price'=>'$49',
207
- 'url_link'=>'https://ampforwp.com/themes/newspaper/',
208
- 'plugin_active_path'=> 'amp-newspaper-theme/ampforwp-custom-theme.php',
209
- 'item_name'=>'Newspaper Theme for AMP',
210
- 'store_url'=>'https://accounts.ampforwp.com',
211
- 'is_activated'=>(is_plugin_active('amp-newspaper-theme/ampforwp-custom-theme.php')? 1 : 2),
212
- 'settingUrl'=>'{ampforwp-theme-subsection}',
213
- ),
214
-
215
- array(
216
- 'name'=>'ACF for AMP',
217
- 'desc'=>'Easily add ACF support in AMP.',
218
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/acf.png',
219
- 'price'=>'$29',
220
- 'url_link'=>'http://ampforwp.com/acf-amp/#utm_source=options-panel&utm_medium=extension-tab_opt-in-forms&utm_campaign=AMP%20Plugin',
221
- 'plugin_active_path'=> 'acf-for-amp-v2/amp-acf.php',
222
- 'item_name'=>'ACF for AMP',
223
- 'store_url'=>'https://accounts.ampforwp.com',
224
- 'is_activated'=>(is_plugin_active('acf-for-amp-v2/amp-acf.php')? 1 : 2),
225
- 'settingUrl'=>admin_url('edit.php?post_type=amp_acf'),
226
- ),
227
- array(
228
- 'name'=>'AMP Comments',
229
- 'desc'=>'You can now allow the same comment functionality on AMP.',
230
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
231
- 'price'=>'$29.99',
232
- 'url_link'=>'https://ampforwp.com/amp-comments/',
233
- 'plugin_active_path'=> 'amp-comments/amp-comments.php',
234
- 'item_name'=>'AMP Comments',
235
- 'store_url'=>'https://accounts.ampforwp.com',
236
- 'is_activated'=>(is_plugin_active('amp-comments/amp-comments.php')? 1: 2),
237
- 'settingUrl'=>'{ampforwp-cmt-subsection}',
238
- ),
239
- array(
240
- 'name'=>'Star Ratings',
241
- 'desc'=>'Star Review Ratings for AMP.',
242
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/star.png',
243
- 'price'=>'$19',
244
- 'url_link'=>'http://ampforwp.com/amp-ratings/#utm_source=options-panel&utm_medium=extension-tab_amp-ratings&utm_campaign=AMP%20Plugin',
245
- 'plugin_active_path'=> 'amp-rating/amp-rating.php',
246
- 'item_name'=>'AMP Rating',
247
- 'store_url'=>'https://accounts.ampforwp.com',
248
- 'is_activated'=>(is_plugin_active('amp-rating/amp-rating.php')? 1 : 2),
249
- 'settingUrl'=>'{ampforwp-ratings-subsection}',
250
- ),
251
- array(
252
- 'name'=>'Custom Post Type',
253
- 'desc'=>'Enable Custom Post type support in AMP.',
254
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/comments.png',
255
- 'price'=>'$19',
256
- 'url_link'=>'http://ampforwp.com/custom-post-type/#utm_source=options-panel&utm_medium=extension-tab_custom-post-type&utm_campaign=AMP%20Plugin',
257
- 'plugin_active_path'=> 'amp-custom-post-type/amp-custom-post-type.php',
258
- 'item_name'=>'Custom Post Type Support for AMP',
259
- 'store_url'=>'https://accounts.ampforwp.com',
260
- 'is_activated'=>(is_plugin_active('amp-custom-post-type/amp-custom-post-type.php')? 1 : 2),
261
- 'settingUrl'=>'{ampforwp-cpt-subsection}',
262
- ),
263
- array(
264
- 'name'=>'Structured Data for WP',
265
- 'desc'=>'Structured Data for your site and for AMP',
266
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
267
- 'price'=>'$29',
268
- 'url_link'=>'https://ampforwp.com/structuredata-for-wp/',
269
- 'plugin_active_path'=> 'structured-data-for-wp/structured-data-for-wp.php',
270
- 'item_name'=>'Structured Data for WP',
271
- 'store_url'=>'https://accounts.ampforwp.com',
272
- 'is_activated'=>(is_plugin_active('structured-data-for-wp/structured-data-for-wp.php')? 1: 2),
273
- //'settingUrl'=>'',
274
- ),
275
- array(
276
- 'name'=>'Polylang For AMP',
277
- 'desc'=>'Polylang compatibility with AMP',
278
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
279
- 'price'=>'$19',
280
- 'url_link'=>'https://ampforwp.com/polylang-for-amp/',
281
- 'plugin_active_path'=> 'polylang-for-amp/amp_polylang.php',
282
- 'item_name'=>'Polylang For AMP',
283
- 'store_url'=>'https://accounts.ampforwp.com',
284
- 'is_activated'=>(is_plugin_active('polylang-for-amp/amp_polylang.php')? 1: 2),
285
- ),
286
- array(
287
- 'name'=>'WPML For AMP',
288
- 'desc'=>'WPML compatibility with AMP',
289
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
290
- 'price'=>'$19',
291
- 'url_link'=>'https://ampforwp.com/wpml-for-amp/',
292
- 'plugin_active_path'=> 'wpml-for-amp/wpml_for_amp.php',
293
- 'item_name'=>'WPML For AMP',
294
- 'store_url'=>'https://accounts.ampforwp.com',
295
- 'is_activated'=>(is_plugin_active('wpml-for-amp/wpml_for_amp.php')? 1: 2),
296
- ),
297
- array(
298
- 'name'=>'AMP Teaser',
299
- 'desc'=>'AMP Teaser automatically clips the content based on your selection',
300
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/click.png',
301
- 'price'=>'$29',
302
- 'url_link'=>'https://ampforwp.com/amp-teaser/',
303
- 'plugin_active_path'=> 'amp-teaser/amp-teaser.php',
304
- 'item_name'=>'AMP Teaser',
305
- 'store_url'=>'https://accounts.ampforwp.com',
306
- 'is_activated'=>(is_plugin_active('amp-teaser/amp-teaser.php')? 1: 2),
307
- 'settingUrl'=>'{ampforwp-teaser-subsection}',
308
- ),
309
- array(
310
- 'name'=>'View All Extensions',
311
- 'desc'=>'See all the extensions available for AMP',
312
- 'img_src'=>AMPFORWP_IMAGE_DIR . '/comments.png',
313
- 'price'=>'FREE',
314
- 'url_link'=>'https://ampforwp.com/extensions/#utm_source=options-panel&utm_medium=extension-tab_amp-more-comingsoon&utm_campaign=AMP%20Plugin',
315
- 'plugin_active_path'=> '',
316
- 'item_name'=>'',
317
- 'store_url'=>'',
318
- 'is_activated'=>2,
319
- 'settingUrl'=>'',
320
- ),
321
- );
322
-
323
- $extension_listing_array = apply_filters( 'ampforwp_extension_lists_filter', $extension_listing_array );
324
- $all_extensions_data = $extension_listing_array;
325
- $ampforwp_extension_list_html = '';
326
- $ampforwp_nameOfUser = "";
327
- $ampforwp_is_productActivated = false;
328
- function ampforwp_sort_extension_array($a, $b){
329
- if ($a['is_activated'] == $b['is_activated']) {
330
- return 0;
331
- }
332
- return ($a['is_activated'] < $b['is_activated']) ? -1 : 1;
333
- }
334
- usort($extension_listing_array, 'ampforwp_sort_extension_array');
335
- foreach ($extension_listing_array as $key => $extension) {
336
- $currentStatus = "";
337
-
338
- $onclickUrl = '<a href="'.$extension['url_link'].'" target="_blank">';
339
- $onclickUrlclose = '</a>';
340
- $settingPageUrl = '';
341
- $pluginReview = '<div class="extension_btn">From: '.$extension['price'].'</div>';
342
- if($extension['plugin_active_path'] != "" && is_plugin_active($extension['plugin_active_path']) ){
343
- $ampforwp_is_productActivated = true;
344
- $currentStatus = "not-active invalid";
345
- $pathExploded = explode("/", $extension['plugin_active_path']);
346
- $pathExploded = $pathExploded[0];
347
- if(isset($extension['settingUrl']) && $extension['settingUrl']!=""){
348
-
349
- $settingPageUrl = '<div class="extension-menu-call"><a href="'.$extension['settingUrl'].'" class="amp_extension_settings"><i class="dashicons-before dashicons-admin-generic"></i> Settings</a></div>';
350
- }
351
-
352
- $amplicense = '';
353
- $onclickUrl = $amp_license_response = $allResponseData = $onclickUrlclose= '';
354
- $allResponseData = array('success'=>'',
355
- 'license'=> '',
356
- 'item_name'=> '',
357
- 'expires'=> '',
358
- 'customer_name'=> '',
359
- 'customer_email'=> '',
360
- );
361
- $selectedOption = get_option('redux_builder_amp',true);
362
- if(isset($selectedOption['amp-license'][$pathExploded])){
363
- $amplicense = $selectedOption['amp-license'][$pathExploded]['license'];
364
- }
365
- $verify = '<button type="button" id="'.$pathExploded.'" class="redux-ampforwp-ext-activate">Activate</button>';
366
- if(isset($selectedOption['amp-license'][$pathExploded]['status']) && $selectedOption['amp-license'][$pathExploded]['status']==='valid'){
367
- $currentStatus = 'active valid';
368
- $verify = '<button type="button" id="'.$pathExploded.'" class="redux-ampforwp-ext-deactivate">Deactivate</button>';
369
- if($ampforwp_nameOfUser=="" && isset($selectedOption['amp-license'][$pathExploded]['all_data']['customer_name'])){
370
- $ampforwp_nameOfUser = $selectedOption['amp-license'][$pathExploded]['all_data']['customer_name'];
371
- }
372
-
373
- if(isset($selectedOption['amp-license'][$pathExploded]['all_data']) && $selectedOption['amp-license'][$pathExploded]['all_data']!=""){
374
- $allResponseData = $selectedOption['amp-license'][$pathExploded]['all_data'];
375
- $remainingExpiresDays = floor( ( strtotime($allResponseData['expires'] )- time() )/( 60*60*24 ) );
376
- if($remainingExpiresDays>0){
377
- $amp_license_response = $remainingExpiresDays." Days Remaining. <a href='https://accounts.ampforwp.com/order/?edd_license_key=".$amplicense."&download_id=".$allResponseData['item_name']."'>Renew License</a>";
378
- }else{ $amp_license_response = "Expired! <a href='https://accounts.ampforwp.com/order/?edd_license_key=".$amplicense."&download_id=".$allResponseData['item_name']."'>Renew your license</a>"; }
379
- }
380
- }
381
-
382
- $pluginReview = '<input id="redux_builder_amp_amp-license_'.$pathExploded.'_license" type="text" value="'. str_replace(substr($amplicense, 0, strlen($amplicense)-4), '**', $amplicense).'" onclick="return false;">
383
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][license]" type="hidden" value="'. $amplicense.'">
384
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][item_name]" type="hidden" value="'.$extension['item_name'].'">
385
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][store_url]" type="hidden" value="'.$extension['store_url'].'">
386
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][plugin_active_path]" type="hidden" value="'.$extension['plugin_active_path'].'">
387
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][name]" type="hidden" value="'.$extension['name'].'">
388
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][status]" type="hidden" value="'.$selectedOption['amp-license'][$pathExploded]['status'].'">';
389
- $pluginReview .= '<input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][success]" type="hidden" value="'.$allResponseData['success'].'">
390
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][license]" type="hidden" value="'.$allResponseData['license'].'">
391
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][item_name]" type="hidden" value="'.$allResponseData['item_name'].'">
392
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][expires]" type="hidden" value="'.$allResponseData['expires'].'">
393
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][customer_name]" type="hidden" value="'.$allResponseData['customer_name'].'">
394
- <input name="redux_builder_amp[amp-license]['.$pathExploded.'][all_data][customer_email]" type="hidden" value="'.$allResponseData['customer_email'].'">
395
- ';
396
-
397
- $pluginReview .= $verify. "<br/>".$amp_license_response;
398
- if(isset($selectedOption['amp-license'][$pathExploded]['message']) && $selectedOption['amp-license'][$pathExploded]['message']!=""){
399
- $pluginReview .= "<div class='afw-license-response-message'>".$selectedOption['amp-license'][$pathExploded]['message']."</div>";
400
- }
401
-
402
- }
403
- $secondPageClickClass = '';
404
- if($extension['is_activated']==1 && strpos($ampforwp_extension_list_html, "Your Installed Extensions")===false){
405
- $ampforwp_extension_list_html .= "<h3 style='display:block;'>Your Installed Extensions</h3><ul>";
406
- }elseif($extension['is_activated']==2 && strpos($ampforwp_extension_list_html, "All Extensions")===false){
407
- $ampforwp_extension_list_html .= "</ul><h3 style='display:block;'>All Extensions</h3><ul>";
408
- $secondPageClickClass = 'goToSecondPage';
409
- }
410
- $ampforwp_extension_list_html .= '<li class="first '.$currentStatus.' '.$secondPageClickClass.'" data-ext-details=\''.json_encode($extension).'\'>
411
- '.$onclickUrl.'
412
- <div class="align_left"><img src="'.$extension['img_src'].'" /></div>
413
- <div class="extension_desc">
414
- <h2>'.$extension['name'].'</h2>
415
- <p>'.$extension['desc'].'</p>
416
- '.$pluginReview.'
417
- </div>
418
- '.$onclickUrlclose.' '.$settingPageUrl.'</li>';
419
- }
420
-
421
- $extension_listing = '
422
- <div class="extension_listing">
423
- <p style="font-size:13px">Take your AMP to the next level with these premium extensions which gives you advanced features.</p>
424
-
425
-
426
- '.$ampforwp_extension_list_html.'
427
-
428
- </ul>
429
- </div>
430
- ';
431
-
432
- // #2267
433
- function ampforwp_check_extensions(){
434
- global $all_extensions_data;
435
- if($all_extensions_data){
436
- foreach ($all_extensions_data as $extension ) {
437
- $is_extension_active = $extension['is_activated'];
438
- if( 1 === $is_extension_active){
439
- return true;
440
- }
441
- }
442
- }
443
-
444
- return false;
445
- }
446
-
447
- $freepro_listing = '
448
- <div class="fp-wr">
449
- <div class="fp-img">
450
- <img src="'.AMPFORWP_IMAGE_DIR . '/Bitmap.png" />
451
- <span class="ov"></span>
452
- </div>
453
- <div class="fp-cnt">
454
- <h1>Upgrade to Pro</h1>
455
- <p>Take your AMP to the next level with more beautiful themes, great extensions and more powerful features.</p>
456
- <a class="buy" href="#upgrade">BUY NOW</a>
457
- </div>
458
- <div class="pvf">
459
- <div class="ext">
460
- <div class="ex-1 e-1">
461
- <img src="'.AMPFORWP_IMAGE_DIR . '/ex-1.png" />
462
- <h4>Extensions</h4>
463
- <p>Includes a suite of advanced features like Ads, Email Optin, Contact Forms, E-Commerce, CTA, Cache and 15+ premium extensions.</p>
464
- </div>
465
- <div class="ex-1 e-2">
466
- <img src="'.AMPFORWP_IMAGE_DIR . '/ex-2.png" />
467
- <h4>Designs</h4>
468
- <p>Wide Variety of AMP Theme Designs included with AMP Layouts. We are dedicated to release 2-3 new designs every month.</p>
469
- </div>
470
- <div class="ex-1 e-3">
471
- <img src="'.AMPFORWP_IMAGE_DIR . '/ex-3.png" />
472
- <h4>Dedicated Support</h4>
473
- <p>Get private ticketing help from our full-time staff who helps you with the technical issues.</p>
474
- </div>
475
- </div><!-- /. ext -->
476
- <div class="pvf-cnt">
477
- <div class="pvf-tlt">
478
- <h2>Compare Pro vs. Free Version</h2>
479
- <span>See what you\'ll get with the professional version</span>
480
- </div>
481
- <div class="pvf-cmp">
482
- <div class="fr">
483
- <h1>FREE</h1>
484
- <div class="fr-fe">
485
- <div class="fe-1">
486
- <h4>Continious Development</h4>
487
- <p>We take bug reports and feature requests seriously. We’re continiously developing & improve this product for last 2 years with passion and love.</p>
488
- </div>
489
- <div class="fe-1">
490
- <h4>300+ Features</h4>
491
- <p>We\'re constantly expanding the plugin and make it more useful. We have wide variety of features which will fit any use-case.</p>
492
- </div>
493
- <div class="fe-1">
494
- <h4>Design</h4>
495
- <p>We have 4 Built in themes for AMP which elevates your AMP exeprience.</p>
496
- </div>
497
- <div class="fe-1">
498
- <h4>Technical Support</h4>
499
- <p>We have a full time team which helps you with each and every issue regarding AMP.</p>
500
- </div>
501
- </div><!-- /. fr-fe -->
502
- </div><!-- /. fr -->
503
- <div class="pr">
504
- <h1>PRO</h1>
505
- <div class="pr-fe">
506
- <span>Everything in Free, and:</span>
507
- <div class="fet">
508
- <div class="fe-2">
509
- <div class="fe-t">
510
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
511
- <h4>Advertisement</h4>
512
- </div>
513
- <p>Advanced Ad slots, Incontent ads & Supports all Ad networks.</p>
514
- </div>
515
- <div class="fe-2">
516
- <div class="fe-t">
517
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
518
- <h4>AMP Cache</h4>
519
- </div>
520
- <p>Revolutionary cache system for AMP which makes it insanely fast.</p>
521
- </div>
522
- <div class="fe-2">
523
- <div class="fe-t">
524
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
525
- <h4>Contact Forms</h4>
526
- </div>
527
- <p>Gravity Forms and Contact form 7 Support for the AMP.</p>
528
- </div>
529
- <div class="fe-2">
530
- <div class="fe-t">
531
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
532
- <h4>E-Commerce</h4>
533
- </div>
534
- <p>WooCommerce & Easy Digital Downloads Support.</p>
535
- </div>
536
- <div class="fe-2">
537
- <div class="fe-t">
538
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
539
- <h4>Email Optin</h4>
540
- </div>
541
- <p>Native Email optin forms to capture email with 17+ company integrations.</p>
542
- </div>
543
- <div class="fe-2">
544
- <div class="fe-t">
545
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
546
- <h4>Call To Action</h4>
547
- </div>
548
- <p>Get your message, product or offering to your visitors.</p>
549
- </div>
550
- <div class="fe-2">
551
- <div class="fe-t">
552
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
553
- <h4>Localization</h4>
554
- </div>
555
- <p>Integrates with WPML, Polylang and WeGlot to provide localization.</p>
556
- </div>
557
- <div class="fe-2">
558
- <div class="fe-t">
559
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
560
- <h4>Structured Data</h4>
561
- </div>
562
- <p>Advanced Schema integration in AMP and WordPress.</p>
563
- </div>
564
- <div class="fe-2">
565
- <div class="fe-t">
566
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
567
- <h4>Advanced Custom Field</h4>
568
- </div>
569
- <p>Built-in tools to help you impliment ACF easily in AMP.</p>
570
- </div>
571
- <div class="fe-2">
572
- <div class="fe-t">
573
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
574
- <h4>Ratings</h4>
575
- </div>
576
- <p>Easily add Rating to the posts. Supports 3 popular rating plugins.</p>
577
- </div>
578
- <div class="fe-2">
579
- <div class="fe-t">
580
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
581
- <h4>Design Catalogue</h4>
582
- </div>
583
- <p>AMP Layouts has 6 pre-built designs, We are constantly adding every week.</p>
584
- </div>
585
- <div class="fe-2">
586
- <div class="fe-t">
587
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
588
- <h4>Dedicated Support</h4>
589
- </div>
590
- <p>With a Dedicated person helping you with the extension setup and questions.</p>
591
- </div>
592
- <div class="fe-2">
593
- <div class="fe-t">
594
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
595
- <h4>Continious Updates</h4>
596
- </div>
597
- <p>We\'re continiously updating our premium features and releasing them.</p>
598
- </div>
599
- <div class="fe-2">
600
- <div class="fe-t">
601
- <img src="'.AMPFORWP_IMAGE_DIR . '/tick.png" />
602
- <h4>Innovation</h4>
603
- </div>
604
- <p>Be the first one to get the innovative features that we build in the future.</p>
605
- </div>
606
- </div><!-- /. fet -->
607
- <div class="pr-btn">
608
- <a href="#upgrade">Upgrade to Pro</a>
609
- </div><!-- /. pr-btn -->
610
- </div><!-- /. pr-fe -->
611
- </div><!-- /.pr -->
612
- </div><!-- /. pvf-cmp -->
613
- </div><!-- /. pvf-cnt -->
614
- <div id="upgrade" class="amp-upg">
615
- <div class="upg-t">
616
- <h2>Let\'s Upgrade Your AMP</h2>
617
- <span>Choose your plan and upgrade in minutes!</span>
618
- </div>
619
- <div class="pri-lst">
620
- <div class="pri-tb">
621
- <a href="https://accounts.ampforwp.com/order?edd_action=add_to_cart&download_id=24570&edd_options[price_id]=1&utm_medium=freevspro&utm_campaign=AMP%20Plugin">
622
- <h5>PERSONAL</h5>
623
- <span class="amt"><sup>$</sup>149</span>
624
- <span class="bil">Billed Annually</span>
625
- <span class="s">1 Site License</span>
626
- <span class="e">E-mail support</span>
627
- <span class="f">Pro Features</span>
628
- <span class="sv">Save $800+</span>
629
- <span class="pri-by">Buy Now</span>
630
- </a>
631
- </div>
632
- <div class="pri-tb rec">
633
- <a href="https://accounts.ampforwp.com/order?edd_action=add_to_cart&download_id=24570&edd_options[price_id]=2&utm_medium=freevspro&utm_campaign=AMP%20Plugin">
634
- <h5>MULTIPLE</h5>
635
- <span class="amt"><sup>$</sup>199</span>
636
- <span class="bil">Billed Annually</span>
637
- <span class="s">3 Site License</span>
638
- <span class="e">E-mail support</span>
639
- <span class="f">Pro Features</span>
640
- <span class="sv">Save 55%</span>
641
- <span class="pri-by">Buy Now</span>
642
- <span class="rcm">RECOMMENDED</span>
643
- </a>
644
- </div>
645
- <div class="pri-tb">
646
- <a href="https://accounts.ampforwp.com/order?edd_action=add_to_cart&download_id=24570&edd_options[price_id]=3&utm_medium=freevspro&utm_campaign=AMP%20Plugin">
647
- <h5>WEBMASTER</h5>
648
- <span class="amt"><sup>$</sup>249</span>
649
- <span class="bil">Billed Annually</span>
650
- <span class="s">10 Site License</span>
651
- <span class="e">E-mail support</span>
652
- <span class="f">Pro Features</span>
653
- <span class="sv">Save 83%</span>
654
- <span class="pri-by">Buy Now</span>
655
- </a>
656
- </div>
657
- <div class="pri-tb">
658
- <a href="https://accounts.ampforwp.com/order?edd_action=add_to_cart&download_id=24570&edd_options[price_id]=4&utm_medium=freevspro&utm_campaign=AMP%20Plugin">
659
- <h5>FREELANCER</h5>
660
- <span class="amt"><sup>$</sup>299</span>
661
- <span class="bil">Billed Annually</span>
662
- <span class="s">25 Site License</span>
663
- <span class="e">E-mail support</span>
664
- <span class="f">Pro Features</span>
665
- <span class="sv">Save 90%</span>
666
- <span class="pri-by">Buy Now</span>
667
- </a>
668
- </div>
669
- <div class="pri-tb">
670
- <a href="https://accounts.ampforwp.com/order?edd_action=add_to_cart&download_id=24570&edd_options[price_id]=5&utm_medium=freevspro&utm_campaign=AMP%20Plugin">
671
- <h5>AGENCY</h5>
672
- <span class="amt"><sup>$</sup>499</span>
673
- <span class="bil">Billed Annually</span>
674
- <span class="s">Unlimited</span>
675
- <span class="e">E-mail support</span>
676
- <span class="f">Pro Features</span>
677
- <span class="sv">UNLIMITED</span>
678
- <span class="pri-by">Buy Now</span>
679
- </a>
680
- </div>
681
- </div><!-- /.pri-lst -->
682
- <div class="tru-us">
683
- <img src="'.AMPFORWP_IMAGE_DIR . '/rating.png" />
684
- <h2>Trusted by more that 130000+ Users!</h2>
685
- <p>More than 130k Websites, Blogs & E-Commerce website are powered by our AMP making it the #1 Rated AMP plugin in WordPress Community.</p>
686
- <a href="https://wordpress.org/support/plugin/accelerated-mobile-pages/reviews/?filter=5" target="_blank">Read The Reviews</a>
687
- </div>
688
- </div><!--/ .amp-upg -->
689
- <div class="ampfaq">
690
- <h4>Frequently Asked Questions</h4>
691
- <div class="faq-lst">
692
- <div class="lt">
693
- <ul>
694
- <li>
695
- <span>Is there a setup fee?</span>
696
- <p>No. There are no setup fees on any of our plans</p>
697
- </li>
698
- <li>
699
- <span>what\'s the time span for your contracts?</span>
700
- <p>All the plans are year-to-year which are subscribed annually.</p>
701
- </li>
702
- <li>
703
- <span>What payment methods are accepted?</span>
704
- <p>All the plans are year-to-year which are subscribed annually.</p>
705
- </li>
706
- <li>
707
- <span>Do you offer support if I need help?</span>
708
- <p>Yes! Top-notch customer support for our paid customers is key for a quality product, so we’ll do our very best to resolve any issues you encounter via our support page.</p>
709
- </li>
710
- </ul>
711
- </div>
712
- <div class="rt">
713
- <ul>
714
- <li>
715
- <span>Can I cancel my membership at any time?</span>
716
- <p>Yes. You can cancel your membership by contacting us.</p>
717
- </li>
718
- <li>
719
- <span>Can I change my plan later on?</span>
720
- <p>Yes. You can upgrade or downgrade your plan by contacting us.</p>
721
- </li>
722
- <li>
723
- <span>Do you offer refunds?</span>
724
- <p>You are fully protected by our 100% Money Back Guarantee Unconditional. If during the next 14 days you experience an issue that makes the plugin unusable and we are unable to resolve it, we’ll happily offer a full refund.</p>
725
- </li>
726
- <li>
727
- <span>Do I get updates for the premium plugin?</span>
728
- <p>All the plans are year-to-year which are subscribed annually.</p>
729
- </li>
730
- </ul>
731
- </div>
732
- </div><!-- /.faq-lst -->
733
- <div class="f-cnt">
734
- <span>I have other pre-sale questions, can you help?</span>
735
- <p>All the plans are year-to-year which are subscribed annually.</p>
736
- <a href="https://ampforwp.com/support/?utm_medium=freevspro&utm_campaign=AMP%20Plugin#contact">Contact a Human</a>
737
- </div><!-- /.f-cnt -->
738
- </div><!-- /.faq -->
739
- </div><!-- /. pvf -->
740
- </div><!-- /. fp-wr -->';
741
-
742
-
743
- $gettingstarted_extension_listing = '
744
- <div class="extension_listing getting_started_listing">
745
- <p style="font-size:13px">Take your AMP to the next level with these premium extensions which gives you advanced features.</p>
746
- <ul>
747
- <li class="first"><a href="http://ampforwp.com/advanced-amp-ads/#utm_source=options-panel&utm_medium=gettingstarted-amp-ads&utm_campaign=AMP%20Plugin" target="_blank">
748
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/click.png" /></div>
749
- <div class="extension_desc">
750
- <h2>Advanced AMP ADS</h2>
751
- <p>Add Advertisement directly in the content</p>
752
- <div class="extension_btn">From: $29</div>
753
- </div>
754
- </a></li>
755
- <li class="second"><a href="http://ampforwp.com/opt-in-forms/#utm_source=options-panel&utm_medium=gettingstarted_opt-in-forms&utm_campaign=AMP%20Plugin" target="_blank">
756
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/email.png" /></div>
757
- <div class="extension_desc">
758
- <h2>Email Opt-in Forms</h2>
759
- <p>Capture Leads with Email Subscription.</p>
760
- <div class="extension_btn">From: $79</div>
761
- </div>
762
- </a></li>
763
- <li class="first"><a href="http://ampforwp.com/call-to-action/#utm_source=options-panel&utm_medium=gettingstarted_amp-cta&utm_campaign=AMP%20Plugin" target="_blank">
764
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/mac-click.png" /></div>
765
- <div class="extension_desc">
766
- <h2>Call To Action (CTA)</h2>
767
- <p>Higher Visibility & More Conversions</p>
768
- <div class="extension_btn">From: $29</div>
769
- </div>
770
- </a></li>
771
- <li class="second"><a href="http://ampforwp.com/custom-post-type/#utm_source=options-panel&utm_medium=gettingstarted_custom-post-type&utm_campaign=AMP%20Plugin" target="_blank">
772
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/comments.png" /></div>
773
- <div class="extension_desc">
774
- <h2>Custom Post Type</h2>
775
- <p>Enable Custom Post type support in AMP.</p>
776
- <div class="extension_btn">From: $19</div>
777
- </div>
778
- </a></li>
779
-
780
- <li class="first"><a href="http://ampforwp.com/acf-amp/#utm_source=options-panel&utm_medium=gettingstarted_acf&utm_campaign=AMP%20Plugin" target="_blank">
781
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/acf.png" /></div>
782
- <div class="extension_desc">
783
- <h2>Advanced Custom Fields</h2>
784
- <p>Easily add ACF support in AMP.</p>
785
- <div class="extension_btn">From: $29</div>
786
- </div>
787
- </a></li>
788
- <li class="second"><a href="http://ampforwp.com/doubleclick-for-publishers/#utm_source=options-panel&utm_medium=gettingstarted_doubleclick&utm_campaign=AMP%20Plugin" target="_blank">
789
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/dfp.png" /></div>
790
- <div class="extension_desc">
791
- <h2>DoubleClick For Publishers</h2>
792
- <p>Enable DFP Support for AMP.</p>
793
- <div class="extension_btn">From: $19</div>
794
- </div>
795
- </a></li>
796
-
797
-
798
- <li class="first"><a href="http://ampforwp.com/amp-ratings/#utm_source=options-panel&utm_medium=gettingstarted_amp-ratings&utm_campaign=AMP%20Plugin" target="_blank">
799
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/star.png" /></div>
800
- <div class="extension_desc">
801
- <h2>Star Ratings</h2>
802
- <p>Star Review Ratings for AMP.</p>
803
- <div class="extension_btn">From: $19</div>
804
- </div>
805
- </a></li>
806
- <li class="second"><a href="https://ampforwp.com/woocommerce/" target="_blank">
807
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/woo.png" /></div>
808
- <div class="extension_desc">
809
- <h2>AMP WooCommerce Pro</h2>
810
- <p>Advanced WooCommerce in AMP in two clicks.</p>
811
- <div class="extension_btn">From: $79</div>
812
- </div>
813
- </a></li>
814
-
815
- <li class="first"><a href="http://ampforwp.com/amp-category-base-remove-support/#utm_source=options-panel&utm_medium=gettingstarted_amp-category-base-remove-support&utm_campaign=AMP%20Plugin" target="_blank">
816
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/puzzel.png" /></div>
817
- <div class="extension_desc">
818
- <h2>Category Base Removal</h2>
819
- <p>Remove Category Base Support in AMP</p>
820
- <div class="extension_btn">FREE</div>
821
- </div>
822
- </a></li>
823
- <li class="second"><a href="https://ampforwp.com/extensions/#utm_source=options-panel&utm_medium=gettingstarted_amp-more-comingsoon&utm_campaign=AMP%20Plugin" target="_blank">
824
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/comments.png" /></div>
825
- <div class="extension_desc">
826
- <h2>View All Extensions</h2>
827
- <p>See all the extensions available for AMP</p>
828
- <div class="extension_btn">View All</div> </div>
829
- </a></li>
830
-
831
-
832
- </ul>
833
- </div>
834
- ';
835
-
836
-
837
- $single_extension_listing = '
838
- <div class="extension_listing single_ex_listing">
839
- <h3>Increase the Revenue, Leads and Conversation with these Handpicked extensions</h3>
840
- <ul>
841
- <li class="first"><a href="http://ampforwp.com/advanced-amp-ads/#utm_source=options-panel&utm_medium=gettingstarted-amp-ads&utm_campaign=AMP%20Plugin" target="_blank">
842
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/click.png" /></div>
843
- <div class="extension_desc">
844
- <h2>Advanced AMP ADS</h2>
845
- <p>Add Advertisement directly in the content</p>
846
- <div class="extension_btn">View Details</div>
847
- </div>
848
- </a></li>
849
- <li class="second"><a href="http://ampforwp.com/opt-in-forms/#utm_source=options-panel&utm_medium=gettingstarted_opt-in-forms&utm_campaign=AMP%20Plugin" target="_blank">
850
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/email.png" /></div>
851
- <div class="extension_desc">
852
- <h2>Email Opt-in Forms</h2>
853
- <p>Capture Leads with Email Subscription.</p>
854
- <div class="extension_btn">View Details</div>
855
- </div>
856
- </a></li>
857
- <li class="first"><a href="http://ampforwp.com/call-to-action/#utm_source=options-panel&utm_medium=gettingstarted_amp-cta&utm_campaign=AMP%20Plugin" target="_blank">
858
- <div class="align_left"><img src="'.AMPFORWP_IMAGE_DIR . '/mac-click.png" /></div>
859
- <div class="extension_desc">
860
- <h2>Call To Action (CTA)</h2>
861
- <p>Higher Visibility & More Conversions</p>
862
- <div class="extension_btn">View Details</div>
863
- </div>
864
- </a></li>
865
- </ul>
866
- </div>
867
- ';
868
-
869
- $upcomingLayoutsDesign = '';
870
- $layouts = array();
871
- if( is_admin() ){
872
- $layouts = ampforwp_upcomming_layouts_demo();
873
- }
874
- if(is_array($layouts)){
875
- foreach($layouts as $k=>$val){
876
- $upcomingLayoutsDesign .= '<div class="amp_layout_upcomming">
877
- <div class="amppb_ad-layout-layout">
878
- <div class="amppb_ad-layout-wrapper">
879
- <div class="amppb_ad-layout_pro"><a href="https://ampforwp.com/amp-layouts/" target="_blank">PRO</a></div>
880
- <h4 class="amppb_ad-layout-title">'.$val['name'].'</h4>
881
- <div class="amppb_ad-layout-screenshot"> <img src="'.$val['image'].'" onclick="window.open(\''.$val['link'].'\')"> </div>
882
- <div class="amppb_ad-layout-button">
883
- <a target="_blank" href="'.$val['link'].'" class="button">View Theme</a>
884
- </div>
885
- </div>
886
- </div>
887
- </div>';
888
- }
889
- }
890
- // GDPR iso codes
891
- $eu_iso_codes = array(
892
- 'al' => 'Albania',
893
- 'ad' => 'Andorra',
894
- 'at' => 'Austria',
895
- 'by' => 'Belarus',
896
- 'be' => 'Belgium',
897
- 'ba' => 'Bosnia and Herzegovina',
898
- 'bg' => 'Bulgaria',
899
- 'hr' => 'Croatia',
900
- 'cy' => 'Cyprus',
901
- 'cz' => 'Czech Republic',
902
- 'dk' => 'Denmark',
903
- 'ee' => 'Estonia',
904
- 'fo' => 'Faroe Islands',
905
- 'fi' => 'Finland',
906
- 'fr' => 'France',
907
- 'de' => 'Germany',
908
- 'gi' => 'Gibraltar',
909
- 'gr' => 'Greece',
910
- 'hu' => 'Hungary',
911
- 'is' => 'Iceland',
912
- 'ie' => 'Ireland',
913
- 'im' => 'Isle of Man',
914
- 'it' => 'Italy',
915
- 'xs' => 'Kosovo',
916
- 'lv' => 'Latvia',
917
- 'lt' => 'Lithuania',
918
- 'lu' => 'Luxembourg',
919
- 'mk' => 'The former Yugoslav Republic of Macedonia',
920
- 'mt' => 'Malta',
921
- 'md' => 'Moldova',
922
- 'mc' => 'Monaco',
923
- 'me' => 'Montenegro',
924
- 'nl' => 'Netherlands',
925
- 'no' => 'Norway',
926
- 'pl' => 'Poland',
927
- 'pt' => 'Portugal',
928
- 'ro' => 'Romania',
929
- 'ru' => 'Russia',
930
- 'rs' => 'Serbia',
931
- 'sk' => 'Slovakia',
932
- 'si' => 'Slovenia',
933
- 'es' => 'Spain',
934
- 'se' => 'Sweden',
935
- 'ch' => 'Switzerland',
936
- 'ua' => 'Ukraine',
937
- 'uk' => 'United Kingdom',
938
- 'rs'=> 'Yugoslavia',
939
- );
940
-
941
- // All the possible arguments for Redux.
942
- //$amp_redux_header = '<span id="name"><span style="color: #4dbefa;">U</span>ltimate <span style="color: #4dbefa;">W</span>idgets</span>';
943
- $proDetailsProvide = '<a class="premium_features_btn_txt" href="https://ampforwp.com/membership/#utm_source=options-panel&utm_medium=view_pro_features_btn&utm_campaign=AMP%20Plugin" target="_blank">'.__('Get more out of AMP','accelerated-mobile-pages').'</a> <a class="premium_features_btn" href="https://ampforwp.com/membership/#utm_source=options-panel&utm_medium=view_pro_features_btn&utm_campaign=AMP%20Plugin" target="_blank">Get PRO Version</a> ';
944
- if($ampforwp_nameOfUser!=""){
945
- $proDetailsProvide = "<span class='extension-menu-call'><span class='activated-plugins'>Hello, ".$ampforwp_nameOfUser."</span> <a class='' href='".admin_url('admin.php?page=amp_options&tabid=opt-go-premium')."'><i class='dashicons-before dashicons-admin-generic'></i></a></span>";
946
- }elseif($ampforwp_is_productActivated){
947
- $proDetailsProvide = "<span class='extension-menu-call'>One more Step <a class='premium_features_btn' href='".admin_url('admin.php?tabid=opt-go-premium&page=amp_options')."'>Enter license here</a></span>";
948
- }
949
- $args = array(
950
- // TYPICAL -> Change these values as you need/desire
951
- 'opt_name' => 'redux_builder_amp', // This is where your data is stored in the database and also becomes your global variable name.
952
- 'display_name' => __( 'AMPforWP Options','accelerated-mobile-pages' ), // Name that appears at the top of your panel
953
- 'menu_type' => 'menu', //Specify if the admin menu should appear or not. Options: menu or submenu (Under appearance only)
954
- 'allow_sub_menu' => true, // Show the sections below the admin menu item or not
955
- 'menu_title' => __( 'AMP', 'accelerated-mobile-pages' ),
956
- 'page_title' => __('Accelerated Mobile Pages Options','accelerated-mobile-pages'),
957
- 'display_version' => AMPFORWP_VERSION,
958
- 'update_notice' => false,
959
- 'intro_text' => $proDetailsProvide,
960
- 'global_variable' => '', // Set a different name for your global variable other than the opt_name
961
- 'dev_mode' => false, // Show the time the page took to load, etc
962
- 'customizer' => false, // Enable basic customizer support,
963
- 'async_typography' => false, // Enable async for fonts,
964
- 'disable_save_warn' => true,
965
- 'open_expanded' => false,
966
- // OPTIONAL -> Give you extra features
967
- 'page_priority' => null, // Order where the menu appears in the admin area. If there is any conflict, something will not show. Warning.
968
- 'page_parent' => 'themes.php', // For a full list of options, visit: http://codex.wordpress.org/Function_Reference/add_submenu_page#Parameters
969
- 'page_permissions' => 'manage_options', // Permissions needed to access the options panel.
970
- 'last_tab' => '', // Force your panel to always open to a specific tab (by id)
971
- 'page_icon' => 'icon-themes', // Icon displayed in the admin panel next to your menu_title
972
- 'page_slug' => 'amp_options', // Page slug used to denote the panel
973
- 'save_defaults' => true, // On load save the defaults to DB before user clicks save or not
974
- 'default_show' => false, // If true, shows the default value next to each field that is not the default value.
975
- 'default_mark' => '', // What to print by the field's title if the value shown is default. Suggested: *
976
- 'admin_bar' => false,
977
- 'admin_bar_icon' => 'dashicons-admin-generic',
978
- // CAREFUL -> These options are for advanced use only
979
- 'output' => false, // Global shut-off for dynamic CSS output by the framework. Will also disable google fonts output
980
- 'output_tag' => false, // Allows dynamic CSS to be generated for customizer and google fonts, but stops the dynamic CSS from going to the head
981
- //'domain' => 'redux-framework', // Translation domain key. Don't change this unless you want to retranslate all of Redux.
982
- 'footer_credit' => false, // Disable the footer credit of Redux. Please leave if you can help it.
983
- 'footer_text' => "",
984
- 'show_import_export' => true,
985
- 'system_info' => true,
986
-
987
- );
988
-
989
-
990
- Redux::setArgs( "redux_builder_amp", $args );
991
-
992
-
993
-
994
-
995
- $tabs = array(
996
- array(
997
- 'id' => 'redux-help-tab-1',
998
- 'title' => __( 'Theme Information 1', 'accelerated-mobile-pages' ),
999
- 'content' => __( '<p>This is the tab content, HTML is allowed.</p>', 'accelerated-mobile-pages' )
1000
- ),
1001
- array(
1002
- 'id' => 'redux-help-tab-2',
1003
- 'title' => __( 'Theme Information 2', 'accelerated-mobile-pages' ),
1004
- 'content' => __( '<p>This is the tab content, HTML is allowed.</p>', 'accelerated-mobile-pages' )
1005
- )
1006
- );
1007
- Redux::setHelpTab( $opt_name, $tabs );
1008
-
1009
- // Set the help sidebar
1010
- $content = __( '<p>This is the sidebar content, HTML is allowed.</p>', 'admin_folder' );
1011
- Redux::setHelpSidebar( $opt_name, $content );
1012
-
1013
-
1014
- /*
1015
- * <--- END HELP TABS
1016
- */
1017
-
1018
- /*
1019
- *
1020
- * ---> START SECTIONS
1021
- *
1022
- */
1023
-
1024
- Redux::setSection( $opt_name, array(
1025
- 'title' => __( 'Basic Field', 'accelerated-mobile-pages' ),
1026
- 'id' => 'basic',
1027
- 'desc' => __( 'Basic field with no subsections.', 'accelerated-mobile-pages' ),
1028
- 'icon' => 'el el-home',
1029
- 'fields' => array(
1030
- array(
1031
- 'id' => 'opt-blank',
1032
- 'title' => __( 'Example Text', 'accelerated-mobile-pages' ),
1033
- 'desc' => __( 'Example description.', 'accelerated-mobile-pages' ),
1034
- 'tooltip-subtitle' => __( 'Example subtitle.', 'accelerated-mobile-pages' ),
1035
- )
1036
- )
1037
- ) );
1038
-
1039
- Redux::setSection( $opt_name, array(
1040
- 'title' => __( 'Settings', 'accelerated-mobile-pages' ),
1041
- 'id' => 'basic',
1042
- 'desc' => __( '<div class="amp-faq">Thank you for using Accelerated Mobile Pages plugin. '. ' ' .
1043
-
1044
- sprintf( __( ' <h2 style="width: 150px;float: right;
1045
- padding: 8px 11px;background: #4CAF50;
1046
- font-size: 13px;margin: -24px 0 0 10px;
1047
- border-radius: 5px;line-height: 22px;position:relative;top:30px"><a style="color: #fff;text-decoration: none;" href="https://wordpress.org/support/view/plugin-reviews/accelerated-mobile-pages?rate=5#postform">Like this plugin? <br /> Leave a 5 Star Rating</a></h2>We are actively working on updating the plugin. We have built user friendly options which allows you to make changes on your AMP version.', 'accelerated-mobile-pages' ), 'accelerated-mobile-pages' )
1048
- . '<div style="width:100%;margin:20px 0px 10px 0px" class="getstarted_wrapper">
1049
- <div class="getstarted_options">
1050
- <p><b>Getting Started</b></p>
1051
- <ul class="getstarted_ul">
1052
- <li><a href="https://ampforwp.com/tutorials/article-categories/installation-updating/" target="_blank">Installation & Setup</a></li>
1053
- <li><a href="https://ampforwp.com/tutorials/article-categories/settings-options/" target="_blank">Settings & Options</a></li>
1054
- <li><a href="https://ampforwp.com/tutorials/article-categories/setup-amp/" target="_blank">Setup AMP</a></li>
1055
- <li><a href="https://ampforwp.com/tutorials/article-categories/page-builder/" target="_blank">Page Builder</a></li>
1056
- </ul>
1057
- </div>
1058
- <div class="getstarted_options">
1059
- <p><b>Useful Links</b></p>
1060
- <ul class="getstarted_ul">
1061
- <li><a href="https://ampforwp.com/tutorials/article-categories/extension/" target="_blank">Extensions & Themes Docs</a></li>
1062
- <li><a href="https://ampforwp.com/tutorials/article-categories/extending/" target="_blank">Developers Docs</a></li>
1063
- <li><a href="https://ampforwp.com/amp-theme-framework/" target="_blank">Create a Custom Theme for AMP</a></li>
1064
- <li><a href="https://ampforwp.com/tutorials/article-categories/how-to/" target="_blank">General How To\'s</a></li>
1065
- </ul>
1066
- </div>
1067
- <div class="clear"></div>
1068
- </div>'
1069
- . '<p><strong>' . __( '1. <a href="https://ampforwp.com/priority-support/" target="_blank">Fixing AMP Validation Errors</a>: ', 'accelerated-mobile-pages' ) . '</strong>' . __( 'We will personally take care that your website’s AMP version is perfectly validated. We will make sure that your AMP version gets approved and indexed by Google Webmaster Tools properly and we will even keep an eye on AMP updates from Google and implement them into your website.' ) . '</p>'
1070
- . '<p><strong>' . __( '2. <a href="https://ampforwp.com/help/#support-forum" target="_blank">Community Support Forum</a>: ', 'accelerated-mobile-pages' ) . '</strong>' . __( 'We have a special community support forum where you can ask us questions and get help about your AMP related questions. Delivering a good user experience means alot to us and so we try our best to reply each and every question that gets asked.' ) . '</p>'
1071
- . '<p><strong>' . __( '3. <a href="https://ampforwp.com/help/#contact" target="_blank">Hire Us / Other queries</a>: ', 'accelerated-mobile-pages' ) . '</strong>' . __( 'We try to answer each and every email, so remember to give us some time. For any other queries, please use the contact form. Please be descriptive as possible.' ) . '</p>'
1072
- . '<p><strong>' . __( '4. <a href="http://ampforwp.com/new/" target="_blank"> What\'s New in this Version?</a>: ', 'accelerated-mobile-pages' ) . '</strong>' . __( 'If you want to know whats new in the latest version of the plugin, then please use this link. ') . '</p>'
1073
-
1074
- . '</p></div>
1075
- <br /><p><h3>Take AMP to the Next Level with Premium Extensions</h3></p>
1076
- ' .$gettingstarted_extension_listing
1077
-
1078
- , 'accelerated-mobile-pages' ),
1079
- 'icon' => 'el el-cogs'
1080
- ) );
1081
-
1082
- function ampforwp_default_logo_settings($param=""){
1083
- $custom_logo_id = '';
1084
- $image = '';
1085
- $value = '';
1086
- $custom_logo_id = get_theme_mod( 'custom_logo' );
1087
- $image = wp_get_attachment_image_src( $custom_logo_id , 'full');
1088
- if( $image ){
1089
- return $image[0];
1090
- }
1091
- return $value;
1092
- }
1093
- function ampforwp_custom_logo_dimensions_options(){
1094
- $selectedOption = get_option('redux_builder_amp',true);
1095
- $opCheck = $selectedOption['ampforwp-custom-logo-dimensions'];
1096
- if($opCheck==1){
1097
- return 'prescribed';
1098
- }else{
1099
- return 'flexible';
1100
- }
1101
- }
1102
- function ampforwp_get_cpt_generated_post_types() {
1103
- $options = '';
1104
- $options = get_option('ampforwp_cpt_generated_post_types');
1105
- return $options;
1106
- }
1107
- $amp_cpt_option = array();
1108
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
1109
- $ampforwp_cpt_plugin_check = is_plugin_active( 'amp-custom-post-type/amp-custom-post-type.php' );
1110
- if ( false == $ampforwp_cpt_plugin_check ) {
1111
- $amp_cpt_option = array(
1112
- 'id' => 'ampforwp-custom-type',
1113
- 'type' => 'select',
1114
- 'title' => __('Custom Post Types', 'accelerated-mobile-pages'),
1115
- 'tooltip-subtitle' => __('Enable AMP Support on Custom Post Types', 'accelerated-mobile-pages'),
1116
- 'multi' => true,
1117
- //'data' => 'post_type',
1118
- 'options' => ampforwp_get_cpt_generated_post_types(),
1119
- );
1120
- }
1121
-
1122
- // AMP to WP Default value
1123
- function ampforwp_amp2wp_default(){
1124
- $default = 0;
1125
- $theme = '';
1126
- $theme = wp_get_theme(); // gets the current theme
1127
-
1128
- if ( 'AMP WordPress Theme' == $theme->name || 'AMP WordPress Theme' == $theme->parent_theme ) {
1129
- $default = 1;
1130
- }
1131
- return $default;
1132
- }
1133
-
1134
- Redux::setSection( $opt_name, array(
1135
- 'title' => __( 'General', 'accelerated-mobile-pages' ),
1136
- // 'desc' => __( 'For full documentation on this field, visit: ', 'accelerated-mobile-pages' ) . '<a href="http://docs.reduxframework.com/core/fields/text/" target="_blank">http://docs.reduxframework.com/core/fields/text/</a>',
1137
- 'id' => 'opt-text-subsection',
1138
- 'subsection' => true,
1139
- 'fields' => array(
1140
- array(
1141
- 'id' => 'amp-logo',
1142
- 'type' => 'section',
1143
- 'title' => __('Branding', 'accelerated-mobile-pages'),
1144
- 'indent' => true,
1145
- 'layout_type' => 'accordion',
1146
- 'accordion-open'=> 1,
1147
- ),
1148
-
1149
- array(
1150
- 'id' => 'opt-media',
1151
- 'type' => 'media',
1152
- 'url' => true,
1153
- 'title' => __('Logo', 'accelerated-mobile-pages'),
1154
- 'tooltip-subtitle'=>__('Upload a logo for the AMP version. (Recommended logo size: 190x36)', 'accelerated-mobile-pages'),
1155
- 'default' => array('url' => ampforwp_default_logo_settings() ),
1156
- ),
1157
- array(
1158
- 'id' => 'ampforwp-custom-logo-dimensions',
1159
- 'title' => __('Resize', 'accelerated-mobile-pages'),
1160
- 'type' => 'switch',
1161
- 'default' => 0,
1162
- ),
1163
- array(
1164
- 'id' => 'ampforwp-custom-logo-dimensions-options',
1165
- 'title' => __('Resize Method', 'accelerated-mobile-pages'),
1166
- 'type' => 'select',
1167
- 'class' => 'child_opt child_opt_arrow',
1168
- 'default' => '100',
1169
- 'options' => array(
1170
- 'flexible' => 'Flexible Width',
1171
- 'prescribed' => 'Fixed Width'
1172
- ),
1173
- 'default' => ampforwp_custom_logo_dimensions_options(),
1174
- 'required'=>array('ampforwp-custom-logo-dimensions','=','1'),
1175
- ),
1176
- array(
1177
- 'id' => 'ampforwp-custom-logo-dimensions-slider',
1178
- 'title' => __('Resize Your Logo', 'accelerated-mobile-pages'),
1179
- 'type' => 'amp_slider',
1180
- 'class' => 'child_opt',
1181
- 'default' => '100',
1182
- 'min' => 0,
1183
- 'max' => 100,
1184
- 'required'=>array('ampforwp-custom-logo-dimensions-options','=','flexible'),
1185
- ),
1186
- array(
1187
- 'class' => 'child_opt',
1188
- 'id' => 'opt-media-width',
1189
- 'type' => 'text',
1190
- 'title' => __('Logo Width', 'accelerated-mobile-pages'),
1191
- 'tooltip-subtitle' => __('Default width is 190 pixels', 'accelerated-mobile-pages'),
1192
- 'default' => '190',
1193
- 'required'=>array('ampforwp-custom-logo-dimensions-options','=','prescribed'),
1194
- ),
1195
- array(
1196
- 'class' => 'child_opt',
1197
- 'id' => 'opt-media-height',
1198
- 'type' => 'text',
1199
- 'title' => __('Logo Height', 'accelerated-mobile-pages'),
1200
- 'tooltip-subtitle' => __('Default height is 36 pixels', 'accelerated-mobile-pages'),
1201
- 'default' => '36',
1202
- 'required'=>array('ampforwp-custom-logo-dimensions-options','=','prescribed'),
1203
-
1204
- ),
1205
- array(
1206
- 'id' => 'amp-support',
1207
- 'type' => 'section',
1208
- 'title' => __('AMP Support', 'accelerated-mobile-pages'),
1209
- 'indent' => true,
1210
- 'layout_type' => 'accordion',
1211
- 'accordion-open'=> 1,
1212
- ),
1213
- array(
1214
- 'id' =>'amp-on-off-for-all-posts',
1215
- 'type' => 'switch',
1216
- 'title' => __('Posts', 'accelerated-mobile-pages'),
1217
- 'tooltip-subtitle' => __('Enable AMP Support on Posts', 'accelerated-mobile-pages'),
1218
- 'default' => 1,
1219
- // 'desc' => __( 'Re-Save permalink if you make changes in this option, please have a look <a href="https://ampforwp.com/flush-rewrite-urls/">here</a> on how to do it', 'accelerated-mobile-pages' ),
1220
- ),
1221
- array(
1222
- 'id' =>'amp-on-off-for-all-pages',
1223
- 'type' => 'switch',
1224
- 'title' => __('Pages', 'accelerated-mobile-pages'),
1225
- 'tooltip-subtitle' => __('Enable AMP Support on Pages.', 'accelerated-mobile-pages'),
1226
- 'default' => 1,
1227
- // 'tooltip-subtitle' => __( '<a href="https://ampforwp.com/flush-rewrite-urls/">Re-Save permalink</a> if you make changes in this option, please have a look here on how to do it', 'accelerated-mobile-pages' ),
1228
- ),
1229
- array(
1230
- 'id' => 'ampforwp-homepage-on-off-support',
1231
- 'type' => 'switch',
1232
- 'title' => __('Homepage', 'accelerated-mobile-pages'),
1233
- 'tooltip-subtitle' => __('Enable AMP Support on Homepage.', 'accelerated-mobile-pages'),
1234
- 'default' => '1'
1235
- ),
1236
- array(
1237
- 'id' =>'amp-frontpage-select-option',
1238
- 'type' => 'switch',
1239
- 'title' => __('Custom Front Page', 'accelerated-mobile-pages'),
1240
- 'default' => 0,
1241
- 'tooltip-subtitle' => __('Set Custom Front Page as Homepage', 'accelerated-mobile-pages'),
1242
- 'true' => 'true',
1243
- 'false' => 'false',
1244
- 'required' => array('ampforwp-homepage-on-off-support','=','1'),
1245
- // 'desc' => __( 'Re-Save permalink if front page or custom post page\'s pagination is not working. Please have a look <a href="https://ampforwp.com/flush-rewrite-urls/">here</a> on how to do it', 'accelerated-mobile-pages' ),
1246
- ),
1247
- array(
1248
- 'id' => 'amp-frontpage-select-option-pages',
1249
- 'type' => 'select',
1250
- 'class' => 'child_opt child_opt_arrow',
1251
- 'title' => __('Select Page as Front Page', 'accelerated-mobile-pages'),
1252
- 'required' => array('amp-frontpage-select-option', '=' , '1'),
1253
- // Must provide key => value pairs for select options
1254
- 'data' => 'page',
1255
- 'args' => array(
1256
- 'post_type' => 'page',
1257
- 'posts_per_page' => 500
1258
- ),
1259
- 'default' => '2',
1260
- ),
1261
- array(
1262
- 'id' => 'ampforwp-title-on-front-page',
1263
- 'type' => 'switch',
1264
- 'class' => 'child_opt',
1265
- 'url' => true,
1266
- 'title' => __('Title on Static Front Page', 'accelerated-mobile-pages'),
1267
- 'tooltip-subtitle' => __('Enable/Disable display of title on the Static Front Page.', 'accelerated-mobile-pages'),
1268
- 'default' => 0,
1269
- 'required' => array('amp-frontpage-select-option', '=' , '1'),
1270
- ),
1271
-
1272
- array(
1273
- 'id' => 'ampforwp-archive-support',
1274
- 'type' => 'switch',
1275
- 'title' => __('Archives [Category & Tags]', 'accelerated-mobile-pages'),
1276
- 'tooltip-subtitle' => __('Enable AMP Support on Archives.', 'accelerated-mobile-pages'),
1277
- 'default' => '0'
1278
- ),
1279
- $amp_cpt_option,
1280
- array(
1281
- 'id' => 'ampforwp-amp-convert-to-wp',
1282
- 'type' => 'switch',
1283
- 'title' => __('Convert AMP to WP theme (Beta)', 'accelerated-mobile-pages'),
1284
- 'tooltip-subtitle' => __('It makes your AMP & Non-AMP Same! (AMP will output AMP Compatible code, while WordPress will have the WP code but with the same design)', 'accelerated-mobile-pages'),
1285
- 'default' => ampforwp_amp2wp_default(),
1286
- 'required' => array('amp-design-selector', '=' , '4'),
1287
- ),
1288
- array(
1289
- 'id' => 'ampforwp-amp-takeover',
1290
- 'type' => 'switch',
1291
- 'title' => __('AMP Takeover (Beta)', 'accelerated-mobile-pages'),
1292
- 'tooltip-subtitle' => __('Make your non-amp to load the AMP (AMP & NON-AMP both will be AMP with same design)', 'accelerated-mobile-pages'),
1293
- 'default' => '0'
1294
- ),
1295
-
1296
- // array(
1297
- // 'id' => 'amp-ad-places',
1298
- // 'type' => 'select',
1299
- // 'title' => __( 'Ads on Page', 'accelerated-mobile-pages' ),
1300
- // 'tooltip-subtitle' => __( 'select your preferece for Ads on Post Types', 'accelerated-mobile-pages' ),
1301
- // 'options' => array(
1302
- // '1' => __('Only on Posts', 'accelerated-mobile-pages' ),
1303
- // '2' => __('Only on Pages', 'accelerated-mobile-pages' ),
1304
- // '3' => __('on Both', 'accelerated-mobile-pages' ),
1305
- // ),
1306
- // 'default' => '3'
1307
- // ),
1308
-
1309
- )
1310
- ) );//END
1311
-
1312
- // AMP Content Page Builder SECTION
1313
- Redux::setSection( $opt_name, array(
1314
- 'title' => __( 'Page Builder', 'accelerated-mobile-pages' ),
1315
- 'class' =>'',
1316
- 'id' => 'amp-content-builder',
1317
- 'class' => 'ampforwp-new-element',
1318
- 'subsection' => true,
1319
- 'fields' => array(
1320
- array(
1321
- 'id' => 'ampforwp-page-builder-info',
1322
- 'type' => 'raw',
1323
- 'desc' => '<div style="background: #FFF9C4;
1324
- display: inline-block;
1325
- padding: 10px 20px;
1326
- margin-top: 0px;
1327
- left: 0;
1328
- line-height: 1.6;
1329
- position: absolute;
1330
- left: 0px;
1331
- top: 15px;
1332
- font-size: 15px;"><b>Introducing AMP Page Builder 3.0</b>, Re-Engineered in Vue.js! <br /> <a href="https://ampforwp.com/tutorials/article/amp-page-builder-installation/" target="_blank">Learn how to use this Feature</a></div>
1333
-
1334
- <iframe style="position: absolute;left: 0px;margin-top: 67px;" width="600" height="400" src="https://www.youtube.com/embed/QTbkn2rHyqM" frameborder="0" allowfullscreen></iframe>
1335
-
1336
- ',
1337
- ),
1338
- )
1339
- )
1340
-
1341
- ) ;
1342
-
1343
- $AD_URL = "http://ampforwp.com/advanced-amp-ads/#utm_source=options-panel&utm_medium=advertisement-tab&utm_campaign=AMP%20Plugin";
1344
- $desc = '';
1345
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
1346
- if(!is_plugin_active( 'amp-incontent-ads/amptoolkit-incontent-ads.php' ) ){
1347
-
1348
- $desc = '<a href="'.$AD_URL.'" target="_blank"><img class="ampforwp-ad-img-banner" src="'.AMPFORWP_IMAGE_DIR . '/amp-ads-retina.png" width="560" height="85" /></a>';
1349
- }
1350
-
1351
- // ADS SECTION
1352
- Redux::setSection( $opt_name, array(
1353
- 'title' => __( 'Advertisement', 'accelerated-mobile-pages' ),
1354
- 'desc' => $desc,
1355
- 'id' => 'amp-ads',
1356
- 'subsection' => true,
1357
- 'fields' => array(
1358
- array(
1359
- 'id' => 'amp-ads_1',
1360
- 'type' => 'section',
1361
- 'title' => __('Advertisement Positions', 'accelerated-mobile-pages'),
1362
- 'indent' => true,
1363
- 'layout_type' => 'accordion',
1364
- 'accordion-open'=> 1,
1365
- ),
1366
- // Ad 1 Starts
1367
- array(
1368
- 'id' =>'enable-amp-ads-1',
1369
- 'type' => 'switch',
1370
- 'title' => __('AD #1', 'accelerated-mobile-pages'),
1371
- 'default' => 0,
1372
- 'desc' => __('Below the Header (SiteWide)', 'accelerated-mobile-pages'),
1373
- 'true' => 'Enabled',
1374
- 'false' => 'Disabled',
1375
- ),
1376
- array(
1377
- 'class' => 'child_opt child_opt_arrow',
1378
- 'id' => 'enable-amp-ads-select-1',
1379
- 'type' => 'select',
1380
- 'title' => __('AD Size', 'accelerated-mobile-pages'),
1381
- 'required' => array('enable-amp-ads-1', '=' , '1'),
1382
- // Must provide key => value pairs for select options
1383
- 'options' => array(
1384
- '1' => __('300x250','accelerated-mobile-pages'),
1385
- '2' => __('336x280','accelerated-mobile-pages'),
1386
- '3' => __('728x90','accelerated-mobile-pages'),
1387
- '4' => __('300x600','accelerated-mobile-pages'),
1388
- '5' => __('320x100','accelerated-mobile-pages'),
1389
- '6' => __('200x50','accelerated-mobile-pages'),
1390
- '7' => __('320x50','accelerated-mobile-pages'), ),
1391
- 'default' => '2',
1392
- ),
1393
- array(
1394
- 'class' => 'child_opt',
1395
- 'id' =>'enable-amp-ads-text-feild-client-1',
1396
- 'type' => 'text',
1397
- 'required' => array('enable-amp-ads-1', '=' , '1'),
1398
- 'title' => __('Data AD Client', 'accelerated-mobile-pages'),
1399
- 'tooltip-subtitle' => __('Enter the Data Ad Client (data-ad-client) from the adsense ad